You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

743 lines
21 KiB

1 year ago
  1. /******/ (function() { // webpackBootstrap
  2. /******/ "use strict";
  3. /******/ // The require scope
  4. /******/ var __webpack_require__ = {};
  5. /******/
  6. /************************************************************************/
  7. /******/ /* webpack/runtime/compat get default export */
  8. /******/ !function() {
  9. /******/ // getDefaultExport function for compatibility with non-harmony modules
  10. /******/ __webpack_require__.n = function(module) {
  11. /******/ var getter = module && module.__esModule ?
  12. /******/ function() { return module['default']; } :
  13. /******/ function() { return module; };
  14. /******/ __webpack_require__.d(getter, { a: getter });
  15. /******/ return getter;
  16. /******/ };
  17. /******/ }();
  18. /******/
  19. /******/ /* webpack/runtime/define property getters */
  20. /******/ !function() {
  21. /******/ // define getter functions for harmony exports
  22. /******/ __webpack_require__.d = function(exports, definition) {
  23. /******/ for(var key in definition) {
  24. /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
  25. /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
  26. /******/ }
  27. /******/ }
  28. /******/ };
  29. /******/ }();
  30. /******/
  31. /******/ /* webpack/runtime/hasOwnProperty shorthand */
  32. /******/ !function() {
  33. /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
  34. /******/ }();
  35. /******/
  36. /******/ /* webpack/runtime/make namespace object */
  37. /******/ !function() {
  38. /******/ // define __esModule on exports
  39. /******/ __webpack_require__.r = function(exports) {
  40. /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  41. /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  42. /******/ }
  43. /******/ Object.defineProperty(exports, '__esModule', { value: true });
  44. /******/ };
  45. /******/ }();
  46. /******/
  47. /************************************************************************/
  48. var __webpack_exports__ = {};
  49. // ESM COMPAT FLAG
  50. __webpack_require__.r(__webpack_exports__);
  51. // EXPORTS
  52. __webpack_require__.d(__webpack_exports__, {
  53. DotTip: function() { return /* reexport */ dot_tip; },
  54. store: function() { return /* reexport */ store; }
  55. });
  56. // NAMESPACE OBJECT: ./node_modules/@wordpress/nux/build-module/store/actions.js
  57. var actions_namespaceObject = {};
  58. __webpack_require__.r(actions_namespaceObject);
  59. __webpack_require__.d(actions_namespaceObject, {
  60. disableTips: function() { return disableTips; },
  61. dismissTip: function() { return dismissTip; },
  62. enableTips: function() { return enableTips; },
  63. triggerGuide: function() { return triggerGuide; }
  64. });
  65. // NAMESPACE OBJECT: ./node_modules/@wordpress/nux/build-module/store/selectors.js
  66. var selectors_namespaceObject = {};
  67. __webpack_require__.r(selectors_namespaceObject);
  68. __webpack_require__.d(selectors_namespaceObject, {
  69. areTipsEnabled: function() { return selectors_areTipsEnabled; },
  70. getAssociatedGuide: function() { return getAssociatedGuide; },
  71. isTipVisible: function() { return isTipVisible; }
  72. });
  73. ;// CONCATENATED MODULE: external ["wp","deprecated"]
  74. var external_wp_deprecated_namespaceObject = window["wp"]["deprecated"];
  75. var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject);
  76. ;// CONCATENATED MODULE: external ["wp","data"]
  77. var external_wp_data_namespaceObject = window["wp"]["data"];
  78. ;// CONCATENATED MODULE: ./node_modules/@wordpress/nux/build-module/store/reducer.js
  79. /**
  80. * WordPress dependencies
  81. */
  82. /**
  83. * Reducer that tracks which tips are in a guide. Each guide is represented by
  84. * an array which contains the tip identifiers contained within that guide.
  85. *
  86. * @param {Array} state Current state.
  87. * @param {Object} action Dispatched action.
  88. *
  89. * @return {Array} Updated state.
  90. */
  91. function guides(state = [], action) {
  92. switch (action.type) {
  93. case 'TRIGGER_GUIDE':
  94. return [...state, action.tipIds];
  95. }
  96. return state;
  97. }
  98. /**
  99. * Reducer that tracks whether or not tips are globally enabled.
  100. *
  101. * @param {boolean} state Current state.
  102. * @param {Object} action Dispatched action.
  103. *
  104. * @return {boolean} Updated state.
  105. */
  106. function areTipsEnabled(state = true, action) {
  107. switch (action.type) {
  108. case 'DISABLE_TIPS':
  109. return false;
  110. case 'ENABLE_TIPS':
  111. return true;
  112. }
  113. return state;
  114. }
  115. /**
  116. * Reducer that tracks which tips have been dismissed. If the state object
  117. * contains a tip identifier, then that tip is dismissed.
  118. *
  119. * @param {Object} state Current state.
  120. * @param {Object} action Dispatched action.
  121. *
  122. * @return {Object} Updated state.
  123. */
  124. function dismissedTips(state = {}, action) {
  125. switch (action.type) {
  126. case 'DISMISS_TIP':
  127. return {
  128. ...state,
  129. [action.id]: true
  130. };
  131. case 'ENABLE_TIPS':
  132. return {};
  133. }
  134. return state;
  135. }
  136. const preferences = (0,external_wp_data_namespaceObject.combineReducers)({
  137. areTipsEnabled,
  138. dismissedTips
  139. });
  140. /* harmony default export */ var reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
  141. guides,
  142. preferences
  143. }));
  144. ;// CONCATENATED MODULE: ./node_modules/@wordpress/nux/build-module/store/actions.js
  145. /**
  146. * Returns an action object that, when dispatched, presents a guide that takes
  147. * the user through a series of tips step by step.
  148. *
  149. * @param {string[]} tipIds Which tips to show in the guide.
  150. *
  151. * @return {Object} Action object.
  152. */
  153. function triggerGuide(tipIds) {
  154. return {
  155. type: 'TRIGGER_GUIDE',
  156. tipIds
  157. };
  158. }
  159. /**
  160. * Returns an action object that, when dispatched, dismisses the given tip. A
  161. * dismissed tip will not show again.
  162. *
  163. * @param {string} id The tip to dismiss.
  164. *
  165. * @return {Object} Action object.
  166. */
  167. function dismissTip(id) {
  168. return {
  169. type: 'DISMISS_TIP',
  170. id
  171. };
  172. }
  173. /**
  174. * Returns an action object that, when dispatched, prevents all tips from
  175. * showing again.
  176. *
  177. * @return {Object} Action object.
  178. */
  179. function disableTips() {
  180. return {
  181. type: 'DISABLE_TIPS'
  182. };
  183. }
  184. /**
  185. * Returns an action object that, when dispatched, makes all tips show again.
  186. *
  187. * @return {Object} Action object.
  188. */
  189. function enableTips() {
  190. return {
  191. type: 'ENABLE_TIPS'
  192. };
  193. }
  194. ;// CONCATENATED MODULE: ./node_modules/rememo/rememo.js
  195. /** @typedef {(...args: any[]) => *[]} GetDependants */
  196. /** @typedef {() => void} Clear */
  197. /**
  198. * @typedef {{
  199. * getDependants: GetDependants,
  200. * clear: Clear
  201. * }} EnhancedSelector
  202. */
  203. /**
  204. * Internal cache entry.
  205. *
  206. * @typedef CacheNode
  207. *
  208. * @property {?CacheNode|undefined} [prev] Previous node.
  209. * @property {?CacheNode|undefined} [next] Next node.
  210. * @property {*[]} args Function arguments for cache entry.
  211. * @property {*} val Function result.
  212. */
  213. /**
  214. * @typedef Cache
  215. *
  216. * @property {Clear} clear Function to clear cache.
  217. * @property {boolean} [isUniqueByDependants] Whether dependants are valid in
  218. * considering cache uniqueness. A cache is unique if dependents are all arrays
  219. * or objects.
  220. * @property {CacheNode?} [head] Cache head.
  221. * @property {*[]} [lastDependants] Dependants from previous invocation.
  222. */
  223. /**
  224. * Arbitrary value used as key for referencing cache object in WeakMap tree.
  225. *
  226. * @type {{}}
  227. */
  228. var LEAF_KEY = {};
  229. /**
  230. * Returns the first argument as the sole entry in an array.
  231. *
  232. * @template T
  233. *
  234. * @param {T} value Value to return.
  235. *
  236. * @return {[T]} Value returned as entry in array.
  237. */
  238. function arrayOf(value) {
  239. return [value];
  240. }
  241. /**
  242. * Returns true if the value passed is object-like, or false otherwise. A value
  243. * is object-like if it can support property assignment, e.g. object or array.
  244. *
  245. * @param {*} value Value to test.
  246. *
  247. * @return {boolean} Whether value is object-like.
  248. */
  249. function isObjectLike(value) {
  250. return !!value && 'object' === typeof value;
  251. }
  252. /**
  253. * Creates and returns a new cache object.
  254. *
  255. * @return {Cache} Cache object.
  256. */
  257. function createCache() {
  258. /** @type {Cache} */
  259. var cache = {
  260. clear: function () {
  261. cache.head = null;
  262. },
  263. };
  264. return cache;
  265. }
  266. /**
  267. * Returns true if entries within the two arrays are strictly equal by
  268. * reference from a starting index.
  269. *
  270. * @param {*[]} a First array.
  271. * @param {*[]} b Second array.
  272. * @param {number} fromIndex Index from which to start comparison.
  273. *
  274. * @return {boolean} Whether arrays are shallowly equal.
  275. */
  276. function isShallowEqual(a, b, fromIndex) {
  277. var i;
  278. if (a.length !== b.length) {
  279. return false;
  280. }
  281. for (i = fromIndex; i < a.length; i++) {
  282. if (a[i] !== b[i]) {
  283. return false;
  284. }
  285. }
  286. return true;
  287. }
  288. /**
  289. * Returns a memoized selector function. The getDependants function argument is
  290. * called before the memoized selector and is expected to return an immutable
  291. * reference or array of references on which the selector depends for computing
  292. * its own return value. The memoize cache is preserved only as long as those
  293. * dependant references remain the same. If getDependants returns a different
  294. * reference(s), the cache is cleared and the selector value regenerated.
  295. *
  296. * @template {(...args: *[]) => *} S
  297. *
  298. * @param {S} selector Selector function.
  299. * @param {GetDependants=} getDependants Dependant getter returning an array of
  300. * references used in cache bust consideration.
  301. */
  302. /* harmony default export */ function rememo(selector, getDependants) {
  303. /** @type {WeakMap<*,*>} */
  304. var rootCache;
  305. /** @type {GetDependants} */
  306. var normalizedGetDependants = getDependants ? getDependants : arrayOf;
  307. /**
  308. * Returns the cache for a given dependants array. When possible, a WeakMap
  309. * will be used to create a unique cache for each set of dependants. This
  310. * is feasible due to the nature of WeakMap in allowing garbage collection
  311. * to occur on entries where the key object is no longer referenced. Since
  312. * WeakMap requires the key to be an object, this is only possible when the
  313. * dependant is object-like. The root cache is created as a hierarchy where
  314. * each top-level key is the first entry in a dependants set, the value a
  315. * WeakMap where each key is the next dependant, and so on. This continues
  316. * so long as the dependants are object-like. If no dependants are object-
  317. * like, then the cache is shared across all invocations.
  318. *
  319. * @see isObjectLike
  320. *
  321. * @param {*[]} dependants Selector dependants.
  322. *
  323. * @return {Cache} Cache object.
  324. */
  325. function getCache(dependants) {
  326. var caches = rootCache,
  327. isUniqueByDependants = true,
  328. i,
  329. dependant,
  330. map,
  331. cache;
  332. for (i = 0; i < dependants.length; i++) {
  333. dependant = dependants[i];
  334. // Can only compose WeakMap from object-like key.
  335. if (!isObjectLike(dependant)) {
  336. isUniqueByDependants = false;
  337. break;
  338. }
  339. // Does current segment of cache already have a WeakMap?
  340. if (caches.has(dependant)) {
  341. // Traverse into nested WeakMap.
  342. caches = caches.get(dependant);
  343. } else {
  344. // Create, set, and traverse into a new one.
  345. map = new WeakMap();
  346. caches.set(dependant, map);
  347. caches = map;
  348. }
  349. }
  350. // We use an arbitrary (but consistent) object as key for the last item
  351. // in the WeakMap to serve as our running cache.
  352. if (!caches.has(LEAF_KEY)) {
  353. cache = createCache();
  354. cache.isUniqueByDependants = isUniqueByDependants;
  355. caches.set(LEAF_KEY, cache);
  356. }
  357. return caches.get(LEAF_KEY);
  358. }
  359. /**
  360. * Resets root memoization cache.
  361. */
  362. function clear() {
  363. rootCache = new WeakMap();
  364. }
  365. /* eslint-disable jsdoc/check-param-names */
  366. /**
  367. * The augmented selector call, considering first whether dependants have
  368. * changed before passing it to underlying memoize function.
  369. *
  370. * @param {*} source Source object for derivation.
  371. * @param {...*} extraArgs Additional arguments to pass to selector.
  372. *
  373. * @return {*} Selector result.
  374. */
  375. /* eslint-enable jsdoc/check-param-names */
  376. function callSelector(/* source, ...extraArgs */) {
  377. var len = arguments.length,
  378. cache,
  379. node,
  380. i,
  381. args,
  382. dependants;
  383. // Create copy of arguments (avoid leaking deoptimization).
  384. args = new Array(len);
  385. for (i = 0; i < len; i++) {
  386. args[i] = arguments[i];
  387. }
  388. dependants = normalizedGetDependants.apply(null, args);
  389. cache = getCache(dependants);
  390. // If not guaranteed uniqueness by dependants (primitive type), shallow
  391. // compare against last dependants and, if references have changed,
  392. // destroy cache to recalculate result.
  393. if (!cache.isUniqueByDependants) {
  394. if (
  395. cache.lastDependants &&
  396. !isShallowEqual(dependants, cache.lastDependants, 0)
  397. ) {
  398. cache.clear();
  399. }
  400. cache.lastDependants = dependants;
  401. }
  402. node = cache.head;
  403. while (node) {
  404. // Check whether node arguments match arguments
  405. if (!isShallowEqual(node.args, args, 1)) {
  406. node = node.next;
  407. continue;
  408. }
  409. // At this point we can assume we've found a match
  410. // Surface matched node to head if not already
  411. if (node !== cache.head) {
  412. // Adjust siblings to point to each other.
  413. /** @type {CacheNode} */ (node.prev).next = node.next;
  414. if (node.next) {
  415. node.next.prev = node.prev;
  416. }
  417. node.next = cache.head;
  418. node.prev = null;
  419. /** @type {CacheNode} */ (cache.head).prev = node;
  420. cache.head = node;
  421. }
  422. // Return immediately
  423. return node.val;
  424. }
  425. // No cached value found. Continue to insertion phase:
  426. node = /** @type {CacheNode} */ ({
  427. // Generate the result from original function
  428. val: selector.apply(null, args),
  429. });
  430. // Avoid including the source object in the cache.
  431. args[0] = null;
  432. node.args = args;
  433. // Don't need to check whether node is already head, since it would
  434. // have been returned above already if it was
  435. // Shift existing head down list
  436. if (cache.head) {
  437. cache.head.prev = node;
  438. node.next = cache.head;
  439. }
  440. cache.head = node;
  441. return node.val;
  442. }
  443. callSelector.getDependants = normalizedGetDependants;
  444. callSelector.clear = clear;
  445. clear();
  446. return /** @type {S & EnhancedSelector} */ (callSelector);
  447. }
  448. ;// CONCATENATED MODULE: ./node_modules/@wordpress/nux/build-module/store/selectors.js
  449. /**
  450. * External dependencies
  451. */
  452. /**
  453. * An object containing information about a guide.
  454. *
  455. * @typedef {Object} NUXGuideInfo
  456. * @property {string[]} tipIds Which tips the guide contains.
  457. * @property {?string} currentTipId The guide's currently showing tip.
  458. * @property {?string} nextTipId The guide's next tip to show.
  459. */
  460. /**
  461. * Returns an object describing the guide, if any, that the given tip is a part
  462. * of.
  463. *
  464. * @param {Object} state Global application state.
  465. * @param {string} tipId The tip to query.
  466. *
  467. * @return {?NUXGuideInfo} Information about the associated guide.
  468. */
  469. const getAssociatedGuide = rememo((state, tipId) => {
  470. for (const tipIds of state.guides) {
  471. if (tipIds.includes(tipId)) {
  472. const nonDismissedTips = tipIds.filter(tId => !Object.keys(state.preferences.dismissedTips).includes(tId));
  473. const [currentTipId = null, nextTipId = null] = nonDismissedTips;
  474. return {
  475. tipIds,
  476. currentTipId,
  477. nextTipId
  478. };
  479. }
  480. }
  481. return null;
  482. }, state => [state.guides, state.preferences.dismissedTips]);
  483. /**
  484. * Determines whether or not the given tip is showing. Tips are hidden if they
  485. * are disabled, have been dismissed, or are not the current tip in any
  486. * guide that they have been added to.
  487. *
  488. * @param {Object} state Global application state.
  489. * @param {string} tipId The tip to query.
  490. *
  491. * @return {boolean} Whether or not the given tip is showing.
  492. */
  493. function isTipVisible(state, tipId) {
  494. if (!state.preferences.areTipsEnabled) {
  495. return false;
  496. }
  497. if (state.preferences.dismissedTips?.hasOwnProperty(tipId)) {
  498. return false;
  499. }
  500. const associatedGuide = getAssociatedGuide(state, tipId);
  501. if (associatedGuide && associatedGuide.currentTipId !== tipId) {
  502. return false;
  503. }
  504. return true;
  505. }
  506. /**
  507. * Returns whether or not tips are globally enabled.
  508. *
  509. * @param {Object} state Global application state.
  510. *
  511. * @return {boolean} Whether tips are globally enabled.
  512. */
  513. function selectors_areTipsEnabled(state) {
  514. return state.preferences.areTipsEnabled;
  515. }
  516. ;// CONCATENATED MODULE: ./node_modules/@wordpress/nux/build-module/store/index.js
  517. /**
  518. * WordPress dependencies
  519. */
  520. /**
  521. * Internal dependencies
  522. */
  523. const STORE_NAME = 'core/nux';
  524. /**
  525. * Store definition for the nux namespace.
  526. *
  527. * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
  528. *
  529. * @type {Object}
  530. */
  531. const store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, {
  532. reducer: reducer,
  533. actions: actions_namespaceObject,
  534. selectors: selectors_namespaceObject,
  535. persist: ['preferences']
  536. });
  537. // Once we build a more generic persistence plugin that works across types of stores
  538. // we'd be able to replace this with a register call.
  539. (0,external_wp_data_namespaceObject.registerStore)(STORE_NAME, {
  540. reducer: reducer,
  541. actions: actions_namespaceObject,
  542. selectors: selectors_namespaceObject,
  543. persist: ['preferences']
  544. });
  545. ;// CONCATENATED MODULE: external ["wp","element"]
  546. var external_wp_element_namespaceObject = window["wp"]["element"];
  547. ;// CONCATENATED MODULE: external ["wp","compose"]
  548. var external_wp_compose_namespaceObject = window["wp"]["compose"];
  549. ;// CONCATENATED MODULE: external ["wp","components"]
  550. var external_wp_components_namespaceObject = window["wp"]["components"];
  551. ;// CONCATENATED MODULE: external ["wp","i18n"]
  552. var external_wp_i18n_namespaceObject = window["wp"]["i18n"];
  553. ;// CONCATENATED MODULE: external ["wp","primitives"]
  554. var external_wp_primitives_namespaceObject = window["wp"]["primitives"];
  555. ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close.js
  556. /**
  557. * WordPress dependencies
  558. */
  559. const close_close = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
  560. xmlns: "http://www.w3.org/2000/svg",
  561. viewBox: "0 0 24 24"
  562. }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
  563. d: "M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"
  564. }));
  565. /* harmony default export */ var library_close = (close_close);
  566. ;// CONCATENATED MODULE: ./node_modules/@wordpress/nux/build-module/components/dot-tip/index.js
  567. /**
  568. * WordPress dependencies
  569. */
  570. /**
  571. * Internal dependencies
  572. */
  573. function onClick(event) {
  574. // Tips are often nested within buttons. We stop propagation so that clicking
  575. // on a tip doesn't result in the button being clicked.
  576. event.stopPropagation();
  577. }
  578. function DotTip({
  579. position = 'middle right',
  580. children,
  581. isVisible,
  582. hasNextTip,
  583. onDismiss,
  584. onDisable
  585. }) {
  586. const anchorParent = (0,external_wp_element_namespaceObject.useRef)(null);
  587. const onFocusOutsideCallback = (0,external_wp_element_namespaceObject.useCallback)(event => {
  588. if (!anchorParent.current) {
  589. return;
  590. }
  591. if (anchorParent.current.contains(event.relatedTarget)) {
  592. return;
  593. }
  594. onDisable();
  595. }, [onDisable, anchorParent]);
  596. if (!isVisible) {
  597. return null;
  598. }
  599. return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Popover, {
  600. className: "nux-dot-tip",
  601. position: position,
  602. focusOnMount: true,
  603. role: "dialog",
  604. "aria-label": (0,external_wp_i18n_namespaceObject.__)('Editor tips'),
  605. onClick: onClick,
  606. onFocusOutside: onFocusOutsideCallback
  607. }, (0,external_wp_element_namespaceObject.createElement)("p", null, children), (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
  608. variant: "link",
  609. onClick: onDismiss
  610. }, hasNextTip ? (0,external_wp_i18n_namespaceObject.__)('See next tip') : (0,external_wp_i18n_namespaceObject.__)('Got it'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
  611. className: "nux-dot-tip__disable",
  612. icon: library_close,
  613. label: (0,external_wp_i18n_namespaceObject.__)('Disable tips'),
  614. onClick: onDisable
  615. }));
  616. }
  617. /* harmony default export */ var dot_tip = ((0,external_wp_compose_namespaceObject.compose)((0,external_wp_data_namespaceObject.withSelect)((select, {
  618. tipId
  619. }) => {
  620. const {
  621. isTipVisible,
  622. getAssociatedGuide
  623. } = select(store);
  624. const associatedGuide = getAssociatedGuide(tipId);
  625. return {
  626. isVisible: isTipVisible(tipId),
  627. hasNextTip: !!(associatedGuide && associatedGuide.nextTipId)
  628. };
  629. }), (0,external_wp_data_namespaceObject.withDispatch)((dispatch, {
  630. tipId
  631. }) => {
  632. const {
  633. dismissTip,
  634. disableTips
  635. } = dispatch(store);
  636. return {
  637. onDismiss() {
  638. dismissTip(tipId);
  639. },
  640. onDisable() {
  641. disableTips();
  642. }
  643. };
  644. }))(DotTip));
  645. ;// CONCATENATED MODULE: ./node_modules/@wordpress/nux/build-module/index.js
  646. /**
  647. * WordPress dependencies
  648. */
  649. external_wp_deprecated_default()('wp.nux', {
  650. since: '5.4',
  651. hint: 'wp.components.Guide can be used to show a user guide.',
  652. version: '6.2'
  653. });
  654. (window.wp = window.wp || {}).nux = __webpack_exports__;
  655. /******/ })()
  656. ;