/******/ // The require scope /******/ var __webpack_require__ = {}; /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // EXPORTS __webpack_require__.d(__webpack_exports__, { zj: () => (/* reexport */ getConfig), SD: () => (/* reexport */ getContext), V6: () => (/* reexport */ getElement), $K: () => (/* reexport */ getServerContext), vT: () => (/* reexport */ getServerState), jb: () => (/* reexport */ privateApis), yT: () => (/* reexport */ splitTask), M_: () => (/* reexport */ store), hb: () => (/* reexport */ useCallback), vJ: () => (/* reexport */ useEffect), ip: () => (/* reexport */ useInit), Nf: () => (/* reexport */ useLayoutEffect), Kr: () => (/* reexport */ useMemo), li: () => (/* reexport */ hooks_module_A), J0: () => (/* reexport */ hooks_module_h), FH: () => (/* reexport */ useWatch), v4: () => (/* reexport */ withScope) }); ;// CONCATENATED MODULE: ./node_modules/preact/dist/preact.module.js var preact_module_n,preact_module_l,preact_module_u,preact_module_t,i,preact_module_o,r,preact_module_f,e,preact_module_c,s,a,h={},v=[],p=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,y=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function w(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,o,r,f={};for(r in u)"key"==r?i=u[r]:"ref"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?preact_module_n.call(arguments,2):t),"function"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return g(l,f,i,o,null)}function g(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++preact_module_u:r,__i:-1,__u:0};return null==r&&null!=preact_module_l.vnode&&preact_module_l.vnode(f),f}function m(){return{current:null}}function b(n){return n.children}function k(n,l){this.props=n,this.context=l}function x(n,l){if(null==l)return n.__?x(n.__,n.__i+1):null;for(var u;lu&&i.sort(preact_module_f));P.__r=0}function S(n,l,u,t,i,o,r,f,e,c,s){var a,p,y,d,w,_=t&&t.__k||v,g=l.length;for(u.__d=e,$(u,l,_),e=u.__d,a=0;a0?g(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i).__=n,i.__b=n.__b+1,o=null,-1!==(f=i.__i=L(i,u,r,s))&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,"function"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f==r-1?a--:f==r+1?a++:(f>r?a--:a++,i.__u|=65536))):i=n.__k[t]=null;if(s)for(t=0;t(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f2&&(e.children=arguments.length>3?preact_module_n.call(arguments,2):t),g(l.type,e,i||l.key,o||l.ref,null)}function G(n,l){var u={__c:l="__cC"+a++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}preact_module_n=v.slice,preact_module_l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},preact_module_u=0,preact_module_t=function(n){return null!=n&&null==n.constructor},k.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=d({},this.state),"function"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},k.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},k.prototype.render=b,i=[],r="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,preact_module_f=function(n,l){return n.__v.__b-l.__v.__b},P.__r=0,e=0,preact_module_c=F(!1),s=F(!0),a=0; ;// CONCATENATED MODULE: ./node_modules/preact/devtools/dist/devtools.module.js var devtools_module_i;function devtools_module_t(o,e){return n.__a&&n.__a(e),o}null!=(devtools_module_i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0)&&devtools_module_i.__PREACT_DEVTOOLS__&&devtools_module_i.__PREACT_DEVTOOLS__.attachPreact("10.24.0",preact_module_l,{Fragment:b,Component:k}); ;// CONCATENATED MODULE: ./node_modules/preact/debug/dist/debug.module.js var debug_module_o={};function debug_module_r(){debug_module_o={}}function debug_module_a(e){return e.type===b?"Fragment":"function"==typeof e.type?e.type.displayName||e.type.name:"string"==typeof e.type?e.type:"#text"}var debug_module_i=[],debug_module_s=[];function debug_module_c(){return debug_module_i.length>0?debug_module_i[debug_module_i.length-1]:null}var l=!0;function debug_module_u(e){return"function"==typeof e.type&&e.type!=b}function debug_module_f(n){for(var e=[n],t=n;null!=t.__o;)e.push(t.__o),t=t.__o;return e.reduce(function(n,e){n+=" in "+debug_module_a(e);var t=e.__source;return t?n+=" (at "+t.fileName+":"+t.lineNumber+")":l&&console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons."),l=!1,n+"\n"},"")}var debug_module_d="function"==typeof WeakMap;function debug_module_p(n){var e=[];return n.__k?(n.__k.forEach(function(n){n&&"function"==typeof n.type?e.push.apply(e,debug_module_p(n)):n&&"string"==typeof n.type&&e.push(n.type)}),e):e}function debug_module_h(n){return n?"function"==typeof n.type?null==n.__?null!=n.__e&&null!=n.__e.parentNode?n.__e.parentNode.localName:"":debug_module_h(n.__):n.type:""}var debug_module_v=k.prototype.setState;function debug_module_y(n){return"table"===n||"tfoot"===n||"tbody"===n||"thead"===n||"td"===n||"tr"===n||"th"===n}k.prototype.setState=function(n,e){return null==this.__v&&null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+debug_module_f(debug_module_c())),debug_module_v.call(this,n,e)};var debug_module_m=/^(address|article|aside|blockquote|details|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|main|menu|nav|ol|p|pre|search|section|table|ul)$/,debug_module_b=k.prototype.forceUpdate;function debug_module_w(n){var e=n.props,t=debug_module_a(n),o="";for(var r in e)if(e.hasOwnProperty(r)&&"children"!==r){var i=e[r];"function"==typeof i&&(i="function "+(i.displayName||i.name)+"() {}"),i=Object(i)!==i||i.toString?i+"":Object.prototype.toString.call(i),o+=" "+r+"="+JSON.stringify(i)}var s=e.children;return"<"+t+o+(s&&s.length?">..":" />")}k.prototype.forceUpdate=function(n){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+debug_module_f(debug_module_c())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+debug_module_f(this.__v)),debug_module_b.call(this,n)},preact_module_l.__m=function(n,e){var t=n.type,o=e.map(function(n){return n.localName});console.error("Expected a DOM node of type "+t+" but found "+o.join(", ")+"as available DOM-node(s), this is caused by the SSR'd HTML containing different DOM-nodes compared to the hydrated one.\n\n"+debug_module_f(n))},function(){!function(){var n=preact_module_l.__b,t=preact_module_l.diffed,o=preact_module_l.__,r=preact_module_l.vnode,a=preact_module_l.__r;preact_module_l.diffed=function(n){debug_module_u(n)&&debug_module_s.pop(),debug_module_i.pop(),t&&t(n)},preact_module_l.__b=function(e){debug_module_u(e)&&debug_module_i.push(e),n&&n(e)},preact_module_l.__=function(n,e){debug_module_s=[],o&&o(n,e)},preact_module_l.vnode=function(n){n.__o=debug_module_s.length>0?debug_module_s[debug_module_s.length-1]:null,r&&r(n)},preact_module_l.__r=function(n){debug_module_u(n)&&debug_module_s.push(n),a&&a(n)}}();var n=!1,t=preact_module_l.__b,r=preact_module_l.diffed,c=preact_module_l.vnode,l=preact_module_l.__r,v=preact_module_l.__e,b=preact_module_l.__,g=preact_module_l.__h,E=debug_module_d?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null,k=[];preact_module_l.__e=function(n,e,t,o){if(e&&e.__c&&"function"==typeof n.then){var r=n;n=new Error("Missing Suspense. The throwing component was: "+debug_module_a(e));for(var i=e;i;i=i.__)if(i.__c&&i.__c.__c){n=r;break}if(n instanceof Error)throw n}try{(o=o||{}).componentStack=debug_module_f(e),v(n,e,t,o),"function"!=typeof n.then&&setTimeout(function(){throw n})}catch(n){throw n}},preact_module_l.__=function(n,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var t;switch(e.nodeType){case 1:case 11:case 9:t=!0;break;default:t=!1}if(!t){var o=debug_module_a(n);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+o+" />, "+e+");")}b&&b(n,e)},preact_module_l.__b=function(e){var r=e.type;if(n=!0,void 0===r)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+debug_module_w(e)+"\n\n"+debug_module_f(e));if(null!=r&&"object"==typeof r){if(void 0!==r.__k&&void 0!==r.__e)throw new Error("Invalid type passed to createElement(): "+r+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+debug_module_a(e)+" = "+debug_module_w(r)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+debug_module_f(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(r)?"array":r))}if(void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+debug_module_w(e)+"\n\n"+debug_module_f(e));if("string"==typeof e.type)for(var i in e.props)if("o"===i[0]&&"n"===i[1]&&"function"!=typeof e.props[i]&&null!=e.props[i])throw new Error("Component's \""+i+'" property should be a function, but got ['+typeof e.props[i]+"] instead\n"+debug_module_w(e)+"\n\n"+debug_module_f(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&E&&!E.lazyPropTypes.has(e.type)){var s="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var c=e.type();E.lazyPropTypes.set(e.type,!0),console.warn(s+"Component wrapped in lazy() is "+debug_module_a(c))}catch(n){console.warn(s+"We will log the wrapped component's name once it is loaded.")}}var l=e.props;e.type.__f&&delete(l=function(n,e){for(var t in e)n[t]=e[t];return n}({},l)).ref,function(n,e,t,r,a){Object.keys(n).forEach(function(t){var i;try{i=n[t](e,t,r,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(n){i=n}i&&!(i.message in debug_module_o)&&(debug_module_o[i.message]=!0,console.error("Failed prop type: "+i.message+(a&&"\n"+a()||"")))})}(e.type.propTypes,l,0,debug_module_a(e),function(){return debug_module_f(e)})}t&&t(e)};var T,_=0;preact_module_l.__r=function(e){l&&l(e),n=!0;var t=e.__c;if(t===T?_++:_=1,_>=25)throw new Error("Too many re-renders. This is limited to prevent an infinite loop which may lock up your browser. The component causing this is: "+debug_module_a(e));T=t},preact_module_l.__h=function(e,t,o){if(!e||!n)throw new Error("Hook can only be invoked from render methods.");g&&g(e,t,o)};var O=function(n,e){return{get:function(){var t="get"+n+e;k&&k.indexOf(t)<0&&(k.push(t),console.warn("getting vnode."+n+" is deprecated, "+e))},set:function(){var t="set"+n+e;k&&k.indexOf(t)<0&&(k.push(t),console.warn("setting vnode."+n+" is not allowed, "+e))}}},I={nodeName:O("nodeName","use vnode.type"),attributes:O("attributes","use vnode.props"),children:O("children","use vnode.props.children")},M=Object.create({},I);preact_module_l.vnode=function(n){var e=n.props;if(null!==n.type&&null!=e&&("__source"in e||"__self"in e)){var t=n.props={};for(var o in e){var r=e[o];"__source"===o?n.__source=r:"__self"===o?n.__self=r:t[o]=r}}n.__proto__=M,c&&c(n)},preact_module_l.diffed=function(e){var t,o=e.type,i=e.__;if(e.__k&&e.__k.forEach(function(n){if("object"==typeof n&&n&&void 0===n.type){var t=Object.keys(n).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+t+"}.\n\n"+debug_module_f(e))}}),e.__c===T&&(_=0),"string"==typeof o&&(debug_module_y(o)||"p"===o||"a"===o||"button"===o)){var s=debug_module_h(i);if(""!==s&&debug_module_y(o))"table"===o&&"td"!==s&&debug_module_y(s)?(console.log(s,i.__e),console.error("Improper nesting of table. Your should not have a table-node parent."+debug_module_w(e)+"\n\n"+debug_module_f(e))):"thead"!==o&&"tfoot"!==o&&"tbody"!==o||"table"===s?"tr"===o&&"thead"!==s&&"tfoot"!==s&&"tbody"!==s?console.error("Improper nesting of table. Your should have a parent."+debug_module_w(e)+"\n\n"+debug_module_f(e)):"td"===o&&"tr"!==s?console.error("Improper nesting of table. Your parent."+debug_module_w(e)+"\n\n"+debug_module_f(e)):"th"===o&&"tr"!==s&&console.error("Improper nesting of table. Your ."+debug_module_w(e)+"\n\n"+debug_module_f(e)):console.error("Improper nesting of table. Your should have a
should have a
should have a
parent."+debug_module_w(e)+"\n\n"+debug_module_f(e));else if("p"===o){var c=debug_module_p(e).filter(function(n){return debug_module_m.test(n)});c.length&&console.error("Improper nesting of paragraph. Your

should not have "+c.join(", ")+"as child-elements."+debug_module_w(e)+"\n\n"+debug_module_f(e))}else"a"!==o&&"button"!==o||-1!==debug_module_p(e).indexOf(o)&&console.error("Improper nesting of interactive content. Your <"+o+"> should not have other "+("a"===o?"anchor":"button")+" tags as child-elements."+debug_module_w(e)+"\n\n"+debug_module_f(e))}if(n=!1,r&&r(e),null!=e.__k)for(var l=[],u=0;u=u.__.length&&u.__.push({}),u.__[n]}function hooks_module_h(n){return hooks_module_o=1,hooks_module_p(hooks_module_D,n)}function hooks_module_p(n,u,i){var o=hooks_module_d(hooks_module_t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):hooks_module_D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=hooks_module_r,!hooks_module_r.u)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!c||c.call(this,n,t,r))};hooks_module_r.u=!0;var c=hooks_module_r.shouldComponentUpdate,e=hooks_module_r.componentWillUpdate;hooks_module_r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},hooks_module_r.shouldComponentUpdate=f}return o.__N||o.__}function hooks_module_y(n,u){var i=hooks_module_d(hooks_module_t++,3);!hooks_module_c.__s&&hooks_module_C(i.__H,u)&&(i.__=n,i.i=u,hooks_module_r.__H.__h.push(i))}function hooks_module_(n,u){var i=hooks_module_d(hooks_module_t++,4);!hooks_module_c.__s&&hooks_module_C(i.__H,u)&&(i.__=n,i.i=u,hooks_module_r.__h.push(i))}function hooks_module_A(n){return hooks_module_o=5,hooks_module_T(function(){return{current:n}},[])}function hooks_module_F(n,t,r){hooks_module_o=6,hooks_module_(function(){return"function"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function hooks_module_T(n,r){var u=hooks_module_d(hooks_module_t++,7);return hooks_module_C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function hooks_module_q(n,t){return hooks_module_o=8,hooks_module_T(function(){return n},t)}function hooks_module_x(n){var u=hooks_module_r.context[n.__c],i=hooks_module_d(hooks_module_t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(hooks_module_r)),u.props.value):n.__}function hooks_module_P(n,t){hooks_module_c.useDebugValue&&hooks_module_c.useDebugValue(t?t(n):n)}function hooks_module_b(n){var u=hooks_module_d(hooks_module_t++,10),i=hooks_module_h();return u.__=n,hooks_module_r.componentDidCatch||(hooks_module_r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function hooks_module_g(){var n=hooks_module_d(hooks_module_t++,11);if(!n.__){for(var u=hooks_module_r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__="P"+i[0]+"-"+i[1]++}return n.__}function hooks_module_j(){for(var n;n=hooks_module_f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(hooks_module_z),n.__H.__h.forEach(hooks_module_B),n.__H.__h=[]}catch(t){n.__H.__h=[],hooks_module_c.__e(t,n.__v)}}hooks_module_c.__b=function(n){hooks_module_r=null,hooks_module_e&&hooks_module_e(n)},hooks_module_c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),hooks_module_s&&hooks_module_s(n,t)},hooks_module_c.__r=function(n){hooks_module_a&&hooks_module_a(n),hooks_module_t=0;var i=(hooks_module_r=n.__c).__H;i&&(hooks_module_u===hooks_module_r?(i.__h=[],hooks_module_r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.i=n.__N=void 0})):(i.__h.forEach(hooks_module_z),i.__h.forEach(hooks_module_B),i.__h=[],hooks_module_t=0)),hooks_module_u=hooks_module_r},hooks_module_c.diffed=function(n){hooks_module_v&&hooks_module_v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==hooks_module_f.push(t)&&hooks_module_i===hooks_module_c.requestAnimationFrame||((hooks_module_i=hooks_module_c.requestAnimationFrame)||hooks_module_w)(hooks_module_j)),t.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.i=void 0})),hooks_module_u=hooks_module_r=null},hooks_module_c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(hooks_module_z),n.__h=n.__h.filter(function(n){return!n.__||hooks_module_B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],hooks_module_c.__e(r,n.__v)}}),hooks_module_l&&hooks_module_l(n,t)},hooks_module_c.unmount=function(n){hooks_module_m&&hooks_module_m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{hooks_module_z(n)}catch(n){t=n}}),r.__H=void 0,t&&hooks_module_c.__e(t,r.__v))};var hooks_module_k="function"==typeof requestAnimationFrame;function hooks_module_w(n){var t,r=function(){clearTimeout(u),hooks_module_k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);hooks_module_k&&(t=requestAnimationFrame(r))}function hooks_module_z(n){var t=hooks_module_r,u=n.__c;"function"==typeof u&&(n.__c=void 0,u()),hooks_module_r=t}function hooks_module_B(n){var t=hooks_module_r;n.__c=n.__(),hooks_module_r=t}function hooks_module_C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function hooks_module_D(n,t){return"function"==typeof t?t(n):t} ;// CONCATENATED MODULE: ./node_modules/@preact/signals-core/dist/signals-core.module.js var signals_core_module_i=Symbol.for("preact-signals");function signals_core_module_t(){if(!(signals_core_module_s>1)){var i,t=!1;while(void 0!==signals_core_module_h){var r=signals_core_module_h;signals_core_module_h=void 0;signals_core_module_f++;while(void 0!==r){var o=r.o;r.o=void 0;r.f&=-3;if(!(8&r.f)&&signals_core_module_c(r))try{r.c()}catch(r){if(!t){i=r;t=!0}}r=o}}signals_core_module_f=0;signals_core_module_s--;if(t)throw i}else signals_core_module_s--}function signals_core_module_r(i){if(signals_core_module_s>0)return i();signals_core_module_s++;try{return i()}finally{signals_core_module_t()}}var signals_core_module_o=void 0;function signals_core_module_n(i){var t=signals_core_module_o;signals_core_module_o=void 0;try{return i()}finally{signals_core_module_o=t}}var signals_core_module_h=void 0,signals_core_module_s=0,signals_core_module_f=0,signals_core_module_v=0;function signals_core_module_e(i){if(void 0!==signals_core_module_o){var t=i.n;if(void 0===t||t.t!==signals_core_module_o){t={i:0,S:i,p:signals_core_module_o.s,n:void 0,t:signals_core_module_o,e:void 0,x:void 0,r:t};if(void 0!==signals_core_module_o.s)signals_core_module_o.s.n=t;signals_core_module_o.s=t;i.n=t;if(32&signals_core_module_o.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=signals_core_module_o.s;t.n=void 0;signals_core_module_o.s.n=t;signals_core_module_o.s=t}return t}}}function signals_core_module_u(i){this.v=i;this.i=0;this.n=void 0;this.t=void 0}signals_core_module_u.prototype.brand=signals_core_module_i;signals_core_module_u.prototype.h=function(){return!0};signals_core_module_u.prototype.S=function(i){if(this.t!==i&&void 0===i.e){i.x=this.t;if(void 0!==this.t)this.t.e=i;this.t=i}};signals_core_module_u.prototype.U=function(i){if(void 0!==this.t){var t=i.e,r=i.x;if(void 0!==t){t.x=r;i.e=void 0}if(void 0!==r){r.e=t;i.x=void 0}if(i===this.t)this.t=r}};signals_core_module_u.prototype.subscribe=function(i){var t=this;return signals_core_module_E(function(){var r=t.value,n=signals_core_module_o;signals_core_module_o=void 0;try{i(r)}finally{signals_core_module_o=n}})};signals_core_module_u.prototype.valueOf=function(){return this.value};signals_core_module_u.prototype.toString=function(){return this.value+""};signals_core_module_u.prototype.toJSON=function(){return this.value};signals_core_module_u.prototype.peek=function(){var i=signals_core_module_o;signals_core_module_o=void 0;try{return this.value}finally{signals_core_module_o=i}};Object.defineProperty(signals_core_module_u.prototype,"value",{get:function(){var i=signals_core_module_e(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(signals_core_module_f>100)throw new Error("Cycle detected");this.v=i;this.i++;signals_core_module_v++;signals_core_module_s++;try{for(var r=this.t;void 0!==r;r=r.x)r.t.N()}finally{signals_core_module_t()}}}});function signals_core_module_d(i){return new signals_core_module_u(i)}function signals_core_module_c(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function signals_core_module_a(i){for(var t=i.s;void 0!==t;t=t.n){var r=t.S.n;if(void 0!==r)t.r=r;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function signals_core_module_l(i){var t=i.s,r=void 0;while(void 0!==t){var o=t.p;if(-1===t.i){t.S.U(t);if(void 0!==o)o.n=t.n;if(void 0!==t.n)t.n.p=o}else r=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=o}i.s=r}function signals_core_module_y(i){signals_core_module_u.call(this,void 0);this.x=i;this.s=void 0;this.g=signals_core_module_v-1;this.f=4}(signals_core_module_y.prototype=new signals_core_module_u).h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===signals_core_module_v)return!0;this.g=signals_core_module_v;this.f|=1;if(this.i>0&&!signals_core_module_c(this)){this.f&=-2;return!0}var i=signals_core_module_o;try{signals_core_module_a(this);signals_core_module_o=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}signals_core_module_o=i;signals_core_module_l(this);this.f&=-2;return!0};signals_core_module_y.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}signals_core_module_u.prototype.S.call(this,i)};signals_core_module_y.prototype.U=function(i){if(void 0!==this.t){signals_core_module_u.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};signals_core_module_y.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(signals_core_module_y.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var i=signals_core_module_e(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function signals_core_module_w(i){return new signals_core_module_y(i)}function signals_core_module_(i){var r=i.u;i.u=void 0;if("function"==typeof r){signals_core_module_s++;var n=signals_core_module_o;signals_core_module_o=void 0;try{r()}catch(t){i.f&=-2;i.f|=8;signals_core_module_g(i);throw t}finally{signals_core_module_o=n;signals_core_module_t()}}}function signals_core_module_g(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;signals_core_module_(i)}function signals_core_module_p(i){if(signals_core_module_o!==this)throw new Error("Out-of-order effect");signals_core_module_l(this);signals_core_module_o=i;this.f&=-2;if(8&this.f)signals_core_module_g(this);signals_core_module_t()}function signals_core_module_b(i){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32}signals_core_module_b.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if("function"==typeof t)this.u=t}finally{i()}};signals_core_module_b.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1;this.f&=-9;signals_core_module_(this);signals_core_module_a(this);signals_core_module_s++;var i=signals_core_module_o;signals_core_module_o=this;return signals_core_module_p.bind(this,i)};signals_core_module_b.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=signals_core_module_h;signals_core_module_h=this}};signals_core_module_b.prototype.d=function(){this.f|=8;if(!(1&this.f))signals_core_module_g(this)};function signals_core_module_E(i){var t=new signals_core_module_b(i);try{t.c()}catch(i){t.d();throw i}return t.d.bind(t)} ;// CONCATENATED MODULE: ./node_modules/@preact/signals/dist/signals.module.js var signals_module_v,signals_module_s;function signals_module_l(n,i){preact_module_l[n]=i.bind(null,preact_module_l[n]||function(){})}function signals_module_d(n){if(signals_module_s)signals_module_s();signals_module_s=n&&n.S()}function signals_module_p(n){var r=this,f=n.data,o=useSignal(f);o.value=f;var e=hooks_module_T(function(){var n=r.__v;while(n=n.__)if(n.__c){n.__c.__$f|=4;break}r.__$u.c=function(){var n;if(!preact_module_t(e.peek())&&3===(null==(n=r.base)?void 0:n.nodeType))r.base.data=e.peek();else{r.__$f|=1;r.setState({})}};return signals_core_module_w(function(){var n=o.value.value;return 0===n?0:!0===n?"":n||""})},[]);return e.value}signals_module_p.displayName="_st";Object.defineProperties(signals_core_module_u.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:signals_module_p},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}});signals_module_l("__b",function(n,r){if("string"==typeof r.type){var i,t=r.props;for(var f in t)if("children"!==f){var o=t[f];if(o instanceof signals_core_module_u){if(!i)r.__np=i={};i[f]=o;t[f]=o.peek()}}}n(r)});signals_module_l("__r",function(n,r){signals_module_d();var i,t=r.__c;if(t){t.__$f&=-2;if(void 0===(i=t.__$u))t.__$u=i=function(n){var r;signals_core_module_E(function(){r=this});r.c=function(){t.__$f|=1;t.setState({})};return r}()}signals_module_v=t;signals_module_d(i);n(r)});signals_module_l("__e",function(n,r,i,t){signals_module_d();signals_module_v=void 0;n(r,i,t)});signals_module_l("diffed",function(n,r){signals_module_d();signals_module_v=void 0;var i;if("string"==typeof r.type&&(i=r.__e)){var t=r.__np,f=r.props;if(t){var o=i.U;if(o)for(var e in o){var u=o[e];if(void 0!==u&&!(e in t)){u.d();o[e]=void 0}}else i.U=o={};for(var a in t){var c=o[a],s=t[a];if(void 0===c){c=signals_module_(i,a,s,f);o[a]=c}else c.o(s,f)}}}n(r)});function signals_module_(n,r,i,t){var f=r in n&&void 0===n.ownerSVGElement,o=signals_core_module_d(i);return{o:function(n,r){o.value=n;t=r},d:signals_core_module_E(function(){var i=o.value.value;if(t[r]!==i){t[r]=i;if(f)n[r]=i;else if(i)n.setAttribute(r,i);else n.removeAttribute(r)}})}}signals_module_l("unmount",function(n,r){if("string"==typeof r.type){var i=r.__e;if(i){var t=i.U;if(t){i.U=void 0;for(var f in t){var o=t[f];if(o)o.d()}}}}else{var e=r.__c;if(e){var u=e.__$u;if(u){e.__$u=void 0;u.d()}}}n(r)});signals_module_l("__h",function(n,r,i,t){if(t<3||9===t)r.__$f|=2;n(r,i,t)});k.prototype.shouldComponentUpdate=function(n,r){var i=this.__$u;if(!(i&&void 0!==i.s||4&this.__$f))return!0;if(3&this.__$f)return!0;for(var t in r)return!0;for(var f in n)if("__source"!==f&&n[f]!==this.props[f])return!0;for(var o in this.props)if(!(o in n))return!0;return!1};function useSignal(n){return hooks_module_T(function(){return signals_core_module_d(n)},[])}function useComputed(n){var r=f(n);r.current=n;signals_module_v.__$f|=4;return t(function(){return u(function(){return r.current()})},[])}function useSignalEffect(n){var r=f(n);r.current=n;o(function(){return c(function(){return r.current()})},[])} ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/namespaces.js const namespaceStack = []; const getNamespace = () => namespaceStack.slice(-1)[0]; const setNamespace = namespace => { namespaceStack.push(namespace); }; const resetNamespace = () => { namespaceStack.pop(); }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/scopes.js /** * External dependencies */ /** * Internal dependencies */ // Store stacks for the current scope and the default namespaces and export APIs // to interact with them. const scopeStack = []; const getScope = () => scopeStack.slice(-1)[0]; const setScope = scope => { scopeStack.push(scope); }; const resetScope = () => { scopeStack.pop(); }; // Wrap the element props to prevent modifications. const immutableMap = new WeakMap(); const immutableError = () => { throw new Error('Please use `data-wp-bind` to modify the attributes of an element.'); }; const immutableHandlers = { get(target, key, receiver) { const value = Reflect.get(target, key, receiver); return !!value && typeof value === 'object' ? deepImmutable(value) : value; }, set: immutableError, deleteProperty: immutableError }; const deepImmutable = target => { if (!immutableMap.has(target)) { immutableMap.set(target, new Proxy(target, immutableHandlers)); } return immutableMap.get(target); }; /** * Retrieves the context inherited by the element evaluating a function from the * store. The returned value depends on the element and the namespace where the * function calling `getContext()` exists. * * @param namespace Store namespace. By default, the namespace where the calling * function exists is used. * @return The context content. */ const getContext = namespace => { const scope = getScope(); if (true) { if (!scope) { throw Error('Cannot call `getContext()` when there is no scope. If you are using an async function, please consider using a generator instead. If you are using some sort of async callbacks, like `setTimeout`, please wrap the callback with `withScope(callback)`.'); } } return scope.context[namespace || getNamespace()]; }; /** * Retrieves a representation of the element where a function from the store * is being evalutated. Such representation is read-only, and contains a * reference to the DOM element, its props and a local reactive state. * * @return Element representation. */ const getElement = () => { const scope = getScope(); if (true) { if (!scope) { throw Error('Cannot call `getElement()` when there is no scope. If you are using an async function, please consider using a generator instead. If you are using some sort of async callbacks, like `setTimeout`, please wrap the callback with `withScope(callback)`.'); } } const { ref, attributes } = scope; return Object.freeze({ ref: ref.current, attributes: deepImmutable(attributes) }); }; /** * Retrieves the part of the inherited context defined and updated from the * server. * * The object returned is read-only, and includes the context defined in PHP * with `wp_interactivity_data_wp_context()`, including the corresponding * inherited properties. When `actions.navigate()` is called, this object is * updated to reflect the changes in the new visited page, without affecting the * context returned by `getContext()`. Directives can subscribe to those changes * to update the context if needed. * * @example * ```js * store('...', { * callbacks: { * updateServerContext() { * const context = getContext(); * const serverContext = getServerContext(); * // Override some property with the new value that came from the server. * context.overridableProp = serverContext.overridableProp; * }, * }, * }); * ``` * * @param namespace Store namespace. By default, the namespace where the calling * function exists is used. * @return The server context content. */ const getServerContext = namespace => { const scope = getScope(); if (true) { if (!scope) { throw Error('Cannot call `getServerContext()` when there is no scope. If you are using an async function, please consider using a generator instead. If you are using some sort of async callbacks, like `setTimeout`, please wrap the callback with `withScope(callback)`.'); } } return scope.serverContext[namespace || getNamespace()]; }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/utils.js /** * External dependencies */ /** * Internal dependencies */ /** * Executes a callback function after the next frame is rendered. * * @param callback The callback function to be executed. * @return A promise that resolves after the callback function is executed. */ const afterNextFrame = callback => { return new Promise(resolve => { const done = () => { clearTimeout(timeout); window.cancelAnimationFrame(raf); setTimeout(() => { callback(); resolve(); }); }; const timeout = setTimeout(done, 100); const raf = window.requestAnimationFrame(done); }); }; /** * Returns a promise that resolves after yielding to main. * * @return Promise */ const splitTask = () => { return new Promise(resolve => { // TODO: Use scheduler.yield() when available. setTimeout(resolve, 0); }); }; /** * Creates a Flusher object that can be used to flush computed values and notify listeners. * * Using the mangled properties: * this.c: this._callback * this.x: this._compute * https://github.com/preactjs/signals/blob/main/mangle.json * * @param compute The function that computes the value to be flushed. * @param notify The function that notifies listeners when the value is flushed. * @return The Flusher object with `flush` and `dispose` properties. */ function createFlusher(compute, notify) { let flush = () => undefined; const dispose = signals_core_module_E(function () { flush = this.c.bind(this); this.x = compute; this.c = notify; return compute(); }); return { flush, dispose }; } /** * Custom hook that executes a callback function whenever a signal is triggered. * Version of `useSignalEffect` with a `useEffect`-like execution. This hook * implementation comes from this PR, but we added short-cirtuiting to avoid * infinite loops: https://github.com/preactjs/signals/pull/290 * * @param callback The callback function to be executed. */ function utils_useSignalEffect(callback) { hooks_module_y(() => { let eff = null; let isExecuting = false; const notify = async () => { if (eff && !isExecuting) { isExecuting = true; await afterNextFrame(eff.flush); isExecuting = false; } }; eff = createFlusher(callback, notify); return eff.dispose; }, []); } /** * Returns the passed function wrapped with the current scope so it is * accessible whenever the function runs. This is primarily to make the scope * available inside hook callbacks. * * Asyncronous functions should use generators that yield promises instead of awaiting them. * See the documentation for details: https://developer.wordpress.org/block-editor/reference-guides/packages/packages-interactivity/packages-interactivity-api-reference/#the-store * * @param func The passed function. * @return The wrapped function. */ function withScope(func) { const scope = getScope(); const ns = getNamespace(); if (func?.constructor?.name === 'GeneratorFunction') { return async (...args) => { const gen = func(...args); let value; let it; while (true) { setNamespace(ns); setScope(scope); try { it = gen.next(value); } finally { resetScope(); resetNamespace(); } try { value = await it.value; } catch (e) { setNamespace(ns); setScope(scope); gen.throw(e); } finally { resetScope(); resetNamespace(); } if (it.done) { break; } } return value; }; } return (...args) => { setNamespace(ns); setScope(scope); try { return func(...args); } finally { resetNamespace(); resetScope(); } }; } /** * Accepts a function that contains imperative code which runs whenever any of * the accessed _reactive_ properties (e.g., values from the global state or the * context) is modified. * * This hook makes the element's scope available so functions like * `getElement()` and `getContext()` can be used inside the passed callback. * * @param callback The hook callback. */ function useWatch(callback) { utils_useSignalEffect(withScope(callback)); } /** * Accepts a function that contains imperative code which runs only after the * element's first render, mainly useful for intialization logic. * * This hook makes the element's scope available so functions like * `getElement()` and `getContext()` can be used inside the passed callback. * * @param callback The hook callback. */ function useInit(callback) { hooks_module_y(withScope(callback), []); } /** * Accepts a function that contains imperative, possibly effectful code. The * effects run after browser paint, without blocking it. * * This hook is equivalent to Preact's `useEffect` and makes the element's scope * available so functions like `getElement()` and `getContext()` can be used * inside the passed callback. * * @param callback Imperative function that can return a cleanup * function. * @param inputs If present, effect will only activate if the * values in the list change (using `===`). */ function useEffect(callback, inputs) { hooks_module_y(withScope(callback), inputs); } /** * Accepts a function that contains imperative, possibly effectful code. Use * this to read layout from the DOM and synchronously re-render. * * This hook is equivalent to Preact's `useLayoutEffect` and makes the element's * scope available so functions like `getElement()` and `getContext()` can be * used inside the passed callback. * * @param callback Imperative function that can return a cleanup * function. * @param inputs If present, effect will only activate if the * values in the list change (using `===`). */ function useLayoutEffect(callback, inputs) { hooks_module_(withScope(callback), inputs); } /** * Returns a memoized version of the callback that only changes if one of the * inputs has changed (using `===`). * * This hook is equivalent to Preact's `useCallback` and makes the element's * scope available so functions like `getElement()` and `getContext()` can be * used inside the passed callback. * * @param callback Callback function. * @param inputs If present, the callback will only be updated if the * values in the list change (using `===`). * * @return The callback function. */ function useCallback(callback, inputs) { return hooks_module_q(withScope(callback), inputs); } /** * Pass a factory function and an array of inputs. `useMemo` will only recompute * the memoized value when one of the inputs has changed. * * This hook is equivalent to Preact's `useMemo` and makes the element's scope * available so functions like `getElement()` and `getContext()` can be used * inside the passed factory function. * * @param factory Factory function that returns that value for memoization. * @param inputs If present, the factory will only be run to recompute if * the values in the list change (using `===`). * * @return The memoized value. */ function useMemo(factory, inputs) { return hooks_module_T(withScope(factory), inputs); } /** * Creates a root fragment by replacing a node or an array of nodes in a parent element. * For wrapperless hydration. * See https://gist.github.com/developit/f4c67a2ede71dc2fab7f357f39cff28c * * @param parent The parent element where the nodes will be replaced. * @param replaceNode The node or array of nodes to replace in the parent element. * @return The created root fragment. */ const createRootFragment = (parent, replaceNode) => { replaceNode = [].concat(replaceNode); const sibling = replaceNode[replaceNode.length - 1].nextSibling; function insert(child, root) { parent.insertBefore(child, root || sibling); } return parent.__k = { nodeType: 1, parentNode: parent, firstChild: replaceNode[0], childNodes: replaceNode, insertBefore: insert, appendChild: insert, removeChild(c) { parent.removeChild(c); } }; }; /** * Transforms a kebab-case string to camelCase. * * @param str The kebab-case string to transform to camelCase. * @return The transformed camelCase string. */ function kebabToCamelCase(str) { return str.replace(/^-+|-+$/g, '').toLowerCase().replace(/-([a-z])/g, function (_match, group1) { return group1.toUpperCase(); }); } const logged = new Set(); /** * Shows a warning with `message` if environment is not `production`. * * Based on the `@wordpress/warning` package. * * @param message Message to show in the warning. */ const warn = message => { if (true) { if (logged.has(message)) { return; } // eslint-disable-next-line no-console console.warn(message); // Throwing an error and catching it immediately to improve debugging // A consumer can use 'pause on caught exceptions' try { throw Error(message); } catch (e) { // Do nothing. } logged.add(message); } }; /** * Checks if the passed `candidate` is a plain object with just the `Object` * prototype. * * @param candidate The item to check. * @return Whether `candidate` is a plain object. */ const isPlainObject = candidate => Boolean(candidate && typeof candidate === 'object' && candidate.constructor === Object); ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/proxies/registry.js /** * Proxies for each object. */ const objToProxy = new WeakMap(); const proxyToObj = new WeakMap(); /** * Namespaces for each created proxy. */ const proxyToNs = new WeakMap(); /** * Object types that can be proxied. */ const supported = new Set([Object, Array]); /** * Returns a proxy to the passed object with the given handlers, assigning the * specified namespace to it. If a proxy for the passed object was created * before, that proxy is returned. * * @param namespace The namespace that will be associated to this proxy. * @param obj The object to proxify. * @param handlers Handlers that the proxy will use. * * @throws Error if the object cannot be proxified. Use {@link shouldProxy} to * check if a proxy can be created for a specific object. * * @return The created proxy. */ const createProxy = (namespace, obj, handlers) => { if (!shouldProxy(obj)) { throw Error('This object cannot be proxified.'); } if (!objToProxy.has(obj)) { const proxy = new Proxy(obj, handlers); objToProxy.set(obj, proxy); proxyToObj.set(proxy, obj); proxyToNs.set(proxy, namespace); } return objToProxy.get(obj); }; /** * Returns the proxy for the given object. If there is no associated proxy, the * function returns `undefined`. * * @param obj Object from which to know the proxy. * @return Associated proxy or `undefined`. */ const getProxyFromObject = obj => objToProxy.get(obj); /** * Gets the namespace associated with the given proxy. * * Proxies have a namespace assigned upon creation. See {@link createProxy}. * * @param proxy Proxy. * @return Namespace. */ const getNamespaceFromProxy = proxy => proxyToNs.get(proxy); /** * Checks if a given object can be proxied. * * @param candidate Object to know whether it can be proxied. * @return True if the passed instance can be proxied. */ const shouldProxy = candidate => { if (typeof candidate !== 'object' || candidate === null) { return false; } return !proxyToNs.has(candidate) && supported.has(candidate.constructor); }; /** * Returns the target object for the passed proxy. If the passed object is not a registered proxy, the * function returns `undefined`. * * @param proxy Proxy from which to know the target. * @return The target object or `undefined`. */ const getObjectFromProxy = proxy => proxyToObj.get(proxy); ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/proxies/signals.js /** * External dependencies */ /** * Internal dependencies */ /** * Identifier for property computeds not associated to any scope. */ const NO_SCOPE = {}; /** * Structure that manages reactivity for a property in a state object. It uses * signals to keep track of property value or getter modifications. */ class PropSignal { /** * Proxy that holds the property this PropSignal is associated with. */ /** * Relation of computeds by scope. These computeds are read-only signals * that depend on whether the property is a value or a getter and, * therefore, can return different values depending on the scope in which * the getter is accessed. */ /** * Signal with the value assigned to the related property. */ /** * Signal with the getter assigned to the related property. */ /** * Structure that manages reactivity for a property in a state object, using * signals to keep track of property value or getter modifications. * * @param owner Proxy that holds the property this instance is associated * with. */ constructor(owner) { this.owner = owner; this.computedsByScope = new WeakMap(); } /** * Changes the internal value. If a getter was set before, it is set to * `undefined`. * * @param value New value. */ setValue(value) { this.update({ value }); } /** * Changes the internal getter. If a value was set before, it is set to * `undefined`. * * @param getter New getter. */ setGetter(getter) { this.update({ get: getter }); } /** * Returns the computed that holds the result of evaluating the prop in the * current scope. * * These computeds are read-only signals that depend on whether the property * is a value or a getter and, therefore, can return different values * depending on the scope in which the getter is accessed. * * @return Computed that depends on the scope. */ getComputed() { const scope = getScope() || NO_SCOPE; if (!this.valueSignal && !this.getterSignal) { this.update({}); } if (!this.computedsByScope.has(scope)) { const callback = () => { const getter = this.getterSignal?.value; return getter ? getter.call(this.owner) : this.valueSignal?.value; }; setNamespace(getNamespaceFromProxy(this.owner)); this.computedsByScope.set(scope, signals_core_module_w(withScope(callback))); resetNamespace(); } return this.computedsByScope.get(scope); } /** * Update the internal signals for the value and the getter of the * corresponding prop. * * @param param0 * @param param0.get New getter. * @param param0.value New value. */ update({ get, value }) { if (!this.valueSignal) { this.valueSignal = signals_core_module_d(value); this.getterSignal = signals_core_module_d(get); } else if (value !== this.valueSignal.peek() || get !== this.getterSignal.peek()) { signals_core_module_r(() => { this.valueSignal.value = value; this.getterSignal.value = get; }); } } } ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/proxies/state.js /** * External dependencies */ /** * Internal dependencies */ /** * Set of built-in symbols. */ const wellKnownSymbols = new Set(Object.getOwnPropertyNames(Symbol).map(key => Symbol[key]).filter(value => typeof value === 'symbol')); /** * Relates each proxy with a map of {@link PropSignal} instances, representing * the proxy's accessed properties. */ const proxyToProps = new WeakMap(); /** * Checks wether a {@link PropSignal | `PropSignal`} instance exists for the * given property in the passed proxy. * * @param proxy Proxy of a state object or array. * @param key The property key. * @return `true` when it exists; false otherwise. */ const hasPropSignal = (proxy, key) => proxyToProps.has(proxy) && proxyToProps.get(proxy).has(key); const readOnlyProxies = new WeakSet(); /** * Returns the {@link PropSignal | `PropSignal`} instance associated with the * specified prop in the passed proxy. * * The `PropSignal` instance is generated if it doesn't exist yet, using the * `initial` parameter to initialize the internal signals. * * @param proxy Proxy of a state object or array. * @param key The property key. * @param initial Initial data for the `PropSignal` instance. * @return The `PropSignal` instance. */ const getPropSignal = (proxy, key, initial) => { if (!proxyToProps.has(proxy)) { proxyToProps.set(proxy, new Map()); } key = typeof key === 'number' ? `${key}` : key; const props = proxyToProps.get(proxy); if (!props.has(key)) { const ns = getNamespaceFromProxy(proxy); const prop = new PropSignal(proxy); props.set(key, prop); if (initial) { const { get, value } = initial; if (get) { prop.setGetter(get); } else { const readOnly = readOnlyProxies.has(proxy); prop.setValue(shouldProxy(value) ? proxifyState(ns, value, { readOnly }) : value); } } } return props.get(key); }; /** * Relates each proxied object (i.e., the original object) with a signal that * tracks changes in the number of properties. */ const objToIterable = new WeakMap(); /** * When this flag is `true`, it avoids any signal subscription, overriding state * props' "reactive" behavior. */ let peeking = false; /** * Handlers for reactive objects and arrays in the state. */ const stateHandlers = { get(target, key, receiver) { /* * The property should not be reactive for the following cases: * 1. While using the `peek` function to read the property. * 2. The property exists but comes from the Object or Array prototypes. * 3. The property key is a known symbol. */ if (peeking || !target.hasOwnProperty(key) && key in target || typeof key === 'symbol' && wellKnownSymbols.has(key)) { return Reflect.get(target, key, receiver); } // At this point, the property should be reactive. const desc = Object.getOwnPropertyDescriptor(target, key); const prop = getPropSignal(receiver, key, desc); const result = prop.getComputed().value; /* * Check if the property is a synchronous function. If it is, set the * default namespace. Synchronous functions always run in the proper scope, * which is set by the Directives component. */ if (typeof result === 'function') { const ns = getNamespaceFromProxy(receiver); return (...args) => { setNamespace(ns); try { return result.call(receiver, ...args); } finally { resetNamespace(); } }; } return result; }, set(target, key, value, receiver) { if (readOnlyProxies.has(receiver)) { return false; } setNamespace(getNamespaceFromProxy(receiver)); try { return Reflect.set(target, key, value, receiver); } finally { resetNamespace(); } }, defineProperty(target, key, desc) { if (readOnlyProxies.has(getProxyFromObject(target))) { return false; } const isNew = !(key in target); const result = Reflect.defineProperty(target, key, desc); if (result) { const receiver = getProxyFromObject(target); const prop = getPropSignal(receiver, key); const { get, value } = desc; if (get) { prop.setGetter(get); } else { const ns = getNamespaceFromProxy(receiver); prop.setValue(shouldProxy(value) ? proxifyState(ns, value) : value); } if (isNew && objToIterable.has(target)) { objToIterable.get(target).value++; } /* * Modify the `length` property value only if the related * `PropSignal` exists, which means that there are subscriptions to * this property. */ if (Array.isArray(target) && proxyToProps.get(receiver)?.has('length')) { const length = getPropSignal(receiver, 'length'); length.setValue(target.length); } } return result; }, deleteProperty(target, key) { if (readOnlyProxies.has(getProxyFromObject(target))) { return false; } const result = Reflect.deleteProperty(target, key); if (result) { const prop = getPropSignal(getProxyFromObject(target), key); prop.setValue(undefined); if (objToIterable.has(target)) { objToIterable.get(target).value++; } } return result; }, ownKeys(target) { if (!objToIterable.has(target)) { objToIterable.set(target, signals_core_module_d(0)); } /* *This subscribes to the signal while preventing the minifier from * deleting this line in production. */ objToIterable._ = objToIterable.get(target).value; return Reflect.ownKeys(target); } }; /** * Returns the proxy associated with the given state object, creating it if it * does not exist. * * @param namespace The namespace that will be associated to this proxy. * @param obj The object to proxify. * @param options Options. * @param options.readOnly Read-only. * * @throws Error if the object cannot be proxified. Use {@link shouldProxy} to * check if a proxy can be created for a specific object. * * @return The associated proxy. */ const proxifyState = (namespace, obj, options) => { const proxy = createProxy(namespace, obj, stateHandlers); if (options?.readOnly) { readOnlyProxies.add(proxy); } return proxy; }; /** * Reads the value of the specified property without subscribing to it. * * @param obj The object to read the property from. * @param key The property key. * @return The property value. */ const peek = (obj, key) => { peeking = true; try { return obj[key]; } finally { peeking = false; } }; /** * Internal recursive implementation for {@link deepMerge | `deepMerge`}. * * @param target The target object. * @param source The source object containing new values and props. * @param override Whether existing props should be overwritten or not (`true` * by default). */ const deepMergeRecursive = (target, source, override = true) => { if (isPlainObject(target) && isPlainObject(source)) { let hasNewKeys = false; for (const key in source) { const isNew = !(key in target); hasNewKeys = hasNewKeys || isNew; const desc = Object.getOwnPropertyDescriptor(source, key); if (typeof desc?.get === 'function' || typeof desc?.set === 'function') { if (override || isNew) { Object.defineProperty(target, key, { ...desc, configurable: true, enumerable: true }); const proxy = getProxyFromObject(target); if (desc?.get && proxy && hasPropSignal(proxy, key)) { const propSignal = getPropSignal(proxy, key); propSignal.setGetter(desc.get); } } } else if (isPlainObject(source[key])) { if (isNew) { target[key] = {}; } deepMergeRecursive(target[key], source[key], override); } else if (override || isNew) { Object.defineProperty(target, key, desc); const proxy = getProxyFromObject(target); if (desc?.value && proxy && hasPropSignal(proxy, key)) { const propSignal = getPropSignal(proxy, key); propSignal.setValue(desc.value); } } } if (hasNewKeys && objToIterable.has(target)) { objToIterable.get(target).value++; } } }; /** * Recursively update prop values inside the passed `target` and nested plain * objects, using the values present in `source`. References to plain objects * are kept, only updating props containing primitives or arrays. Arrays are * replaced instead of merged or concatenated. * * If the `override` parameter is set to `false`, then all values in `target` * are preserved, and only new properties from `source` are added. * * @param target The target object. * @param source The source object containing new values and props. * @param override Whether existing props should be overwritten or not (`true` * by default). */ const deepMerge = (target, source, override = true) => signals_core_module_r(() => deepMergeRecursive(getObjectFromProxy(target) || target, source, override)); ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/proxies/store.js /** * Internal dependencies */ /** * External dependencies */ /** * Identifies the store proxies handling the root objects of each store. */ const storeRoots = new WeakSet(); /** * Handlers for store proxies. */ const storeHandlers = { get: (target, key, receiver) => { const result = Reflect.get(target, key); const ns = getNamespaceFromProxy(receiver); /* * Check if the proxy is the store root and no key with that name exist. In * that case, return an empty object for the requested key. */ if (typeof result === 'undefined' && storeRoots.has(receiver)) { const obj = {}; Reflect.set(target, key, obj); return proxifyStore(ns, obj, false); } /* * Check if the property is a function. If it is, add the store * namespace to the stack and wrap the function with the current scope. * The `withScope` util handles both synchronous functions and generator * functions. */ if (typeof result === 'function') { setNamespace(ns); const scoped = withScope(result); resetNamespace(); return scoped; } // Check if the property is an object. If it is, proxyify it. if (isPlainObject(result) && shouldProxy(result)) { return proxifyStore(ns, result, false); } return result; } }; /** * Returns the proxy associated with the given store object, creating it if it * does not exist. * * @param namespace The namespace that will be associated to this proxy. * @param obj The object to proxify. * * @param isRoot Whether the passed object is the store root object. * @throws Error if the object cannot be proxified. Use {@link shouldProxy} to * check if a proxy can be created for a specific object. * * @return The associated proxy. */ const proxifyStore = (namespace, obj, isRoot = true) => { const proxy = createProxy(namespace, obj, storeHandlers); if (proxy && isRoot) { storeRoots.add(proxy); } return proxy; }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/proxies/context.js const contextObjectToProxy = new WeakMap(); const contextObjectToFallback = new WeakMap(); const contextProxies = new WeakSet(); const descriptor = Reflect.getOwnPropertyDescriptor; // TODO: Use the proxy registry to avoid multiple proxies on the same object. const contextHandlers = { get: (target, key) => { const fallback = contextObjectToFallback.get(target); // Always subscribe to prop changes in the current context. const currentProp = target[key]; /* * Return the value from `target` if it exists, or from `fallback` * otherwise. This way, in the case the property doesn't exist either in * `target` or `fallback`, it also subscribes to changes in the parent * context. */ return key in target ? currentProp : fallback[key]; }, set: (target, key, value) => { const fallback = contextObjectToFallback.get(target); // If the property exists in the current context, modify it. Otherwise, // add it to the current context. const obj = key in target || !(key in fallback) ? target : fallback; obj[key] = value; return true; }, ownKeys: target => [...new Set([...Object.keys(contextObjectToFallback.get(target)), ...Object.keys(target)])], getOwnPropertyDescriptor: (target, key) => descriptor(target, key) || descriptor(contextObjectToFallback.get(target), key) }; /** * Wrap a context object with a proxy to reproduce the context stack. The proxy * uses the passed `inherited` context as a fallback to look up for properties * that don't exist in the given context. Also, updated properties are modified * where they are defined, or added to the main context when they don't exist. * * @param current Current context. * @param inherited Inherited context, used as fallback. * * @return The wrapped context object. */ const proxifyContext = (current, inherited = {}) => { if (contextProxies.has(current)) { throw Error('This object cannot be proxified.'); } // Update the fallback object reference when it changes. contextObjectToFallback.set(current, inherited); if (!contextObjectToProxy.has(current)) { const proxy = new Proxy(current, contextHandlers); contextObjectToProxy.set(current, proxy); contextProxies.add(proxy); } return contextObjectToProxy.get(current); }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/proxies/index.js /** * Internal dependencies */ ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/store.js /** * Internal dependencies */ /** * External dependencies */ const stores = new Map(); const rawStores = new Map(); const storeLocks = new Map(); const storeConfigs = new Map(); const serverStates = new Map(); /** * Get the defined config for the store with the passed namespace. * * @param namespace Store's namespace from which to retrieve the config. * @return Defined config for the given namespace. */ const getConfig = namespace => storeConfigs.get(namespace || getNamespace()) || {}; /** * Get the part of the state defined and updated from the server. * * The object returned is read-only, and includes the state defined in PHP with * `wp_interactivity_state()`. When using `actions.navigate()`, this object is * updated to reflect the changes in its properites, without affecting the state * returned by `store()`. Directives can subscribe to those changes to update * the state if needed. * * @example * ```js * const { state } = store('myStore', { * callbacks: { * updateServerState() { * const serverState = getServerState(); * // Override some property with the new value that came from the server. * state.overridableProp = serverState.overridableProp; * }, * }, * }); * ``` * * @param namespace Store's namespace from which to retrieve the server state. * @return The server state for the given namespace. */ const getServerState = namespace => { const ns = namespace || getNamespace(); if (!serverStates.has(ns)) { serverStates.set(ns, proxifyState(ns, {}, { readOnly: true })); } return serverStates.get(ns); }; const universalUnlock = 'I acknowledge that using a private store means my plugin will inevitably break on the next store release.'; /** * Extends the Interactivity API global store adding the passed properties to * the given namespace. It also returns stable references to the namespace * content. * * These props typically consist of `state`, which is the reactive part of the * store ― which means that any directive referencing a state property will be * re-rendered anytime it changes ― and function properties like `actions` and * `callbacks`, mostly used for event handlers. These props can then be * referenced by any directive to make the HTML interactive. * * @example * ```js * const { state } = store( 'counter', { * state: { * value: 0, * get double() { return state.value * 2; }, * }, * actions: { * increment() { * state.value += 1; * }, * }, * } ); * ``` * * The code from the example above allows blocks to subscribe and interact with * the store by using directives in the HTML, e.g.: * * ```html *

* *
* ``` * @param namespace The store namespace to interact with. * @param storePart Properties to add to the store namespace. * @param options Options for the given namespace. * * @return A reference to the namespace content. */ function store(namespace, { state = {}, ...block } = {}, { lock = false } = {}) { if (!stores.has(namespace)) { // Lock the store if the passed lock is different from the universal // unlock. Once the lock is set (either false, true, or a given string), // it cannot change. if (lock !== universalUnlock) { storeLocks.set(namespace, lock); } const rawStore = { state: proxifyState(namespace, isPlainObject(state) ? state : {}), ...block }; const proxifiedStore = proxifyStore(namespace, rawStore); rawStores.set(namespace, rawStore); stores.set(namespace, proxifiedStore); } else { // Lock the store if it wasn't locked yet and the passed lock is // different from the universal unlock. If no lock is given, the store // will be public and won't accept any lock from now on. if (lock !== universalUnlock && !storeLocks.has(namespace)) { storeLocks.set(namespace, lock); } else { const storeLock = storeLocks.get(namespace); const isLockValid = lock === universalUnlock || lock !== true && lock === storeLock; if (!isLockValid) { if (!storeLock) { throw Error('Cannot lock a public store'); } else { throw Error('Cannot unlock a private store with an invalid lock code'); } } } const target = rawStores.get(namespace); deepMerge(target, block); deepMerge(target.state, state); } return stores.get(namespace); } const parseServerData = (dom = document) => { var _dom$getElementById; const jsonDataScriptTag = // Preferred Script Module data passing form (_dom$getElementById = dom.getElementById('wp-script-module-data-@wordpress/interactivity')) !== null && _dom$getElementById !== void 0 ? _dom$getElementById : // Legacy form dom.getElementById('wp-interactivity-data'); if (jsonDataScriptTag?.textContent) { try { return JSON.parse(jsonDataScriptTag.textContent); } catch {} } return {}; }; const populateServerData = data => { if (isPlainObject(data?.state)) { Object.entries(data.state).forEach(([namespace, state]) => { const st = store(namespace, {}, { lock: universalUnlock }); deepMerge(st.state, state, false); deepMerge(getServerState(namespace), state); }); } if (isPlainObject(data?.config)) { Object.entries(data.config).forEach(([namespace, config]) => { storeConfigs.set(namespace, config); }); } }; // Parse and populate the initial state and config. const data = parseServerData(); populateServerData(data); ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/hooks.js // eslint-disable-next-line eslint-comments/disable-enable-pair /* eslint-disable react-hooks/exhaustive-deps */ /** * External dependencies */ /** * Internal dependencies */ // Main context. const context = G({ client: {}, server: {} }); // WordPress Directives. const directiveCallbacks = {}; const directivePriorities = {}; /** * Register a new directive type in the Interactivity API runtime. * * @example * ```js * directive( * 'alert', // Name without the `data-wp-` prefix. * ( { directives: { alert }, element, evaluate } ) => { * const defaultEntry = alert.find( entry => entry.suffix === 'default' ); * element.props.onclick = () => { alert( evaluate( defaultEntry ) ); } * } * ) * ``` * * The previous code registers a custom directive type for displaying an alert * message whenever an element using it is clicked. The message text is obtained * from the store under the inherited namespace, using `evaluate`. * * When the HTML is processed by the Interactivity API, any element containing * the `data-wp-alert` directive will have the `onclick` event handler, e.g., * * ```html *
* *
* ``` * Note that, in the previous example, the directive callback gets the path * value (`state.alert`) from the directive entry with suffix `default`. A * custom suffix can also be specified by appending `--` to the directive * attribute, followed by the suffix, like in the following HTML snippet: * * ```html *
* *
* ``` * * This could be an hypothetical implementation of the custom directive used in * the snippet above. * * @example * ```js * directive( * 'color', // Name without prefix and suffix. * ( { directives: { color: colors }, ref, evaluate } ) => * colors.forEach( ( color ) => { * if ( color.suffix = 'text' ) { * ref.style.setProperty( * 'color', * evaluate( color.text ) * ); * } * if ( color.suffix = 'background' ) { * ref.style.setProperty( * 'background-color', * evaluate( color.background ) * ); * } * } ); * } * ) * ``` * * @param name Directive name, without the `data-wp-` prefix. * @param callback Function that runs the directive logic. * @param options Options object. * @param options.priority Option to control the directive execution order. The * lesser, the highest priority. Default is `10`. */ const directive = (name, callback, { priority = 10 } = {}) => { directiveCallbacks[name] = callback; directivePriorities[name] = priority; }; // Resolve the path to some property of the store object. const resolve = (path, namespace) => { if (!namespace) { warn(`Namespace missing for "${path}". The value for that path won't be resolved.`); return; } let resolvedStore = stores.get(namespace); if (typeof resolvedStore === 'undefined') { resolvedStore = store(namespace, undefined, { lock: universalUnlock }); } const current = { ...resolvedStore, context: getScope().context[namespace] }; try { // TODO: Support lazy/dynamically initialized stores return path.split('.').reduce((acc, key) => acc[key], current); } catch (e) {} }; // Generate the evaluate function. const getEvaluate = ({ scope }) => (entry, ...args) => { let { value: path, namespace } = entry; if (typeof path !== 'string') { throw new Error('The `value` prop should be a string path'); } // If path starts with !, remove it and save a flag. const hasNegationOperator = path[0] === '!' && !!(path = path.slice(1)); setScope(scope); const value = resolve(path, namespace); const result = typeof value === 'function' ? value(...args) : value; resetScope(); return hasNegationOperator ? !result : result; }; // Separate directives by priority. The resulting array contains objects // of directives grouped by same priority, and sorted in ascending order. const getPriorityLevels = directives => { const byPriority = Object.keys(directives).reduce((obj, name) => { if (directiveCallbacks[name]) { const priority = directivePriorities[name]; (obj[priority] = obj[priority] || []).push(name); } return obj; }, {}); return Object.entries(byPriority).sort(([p1], [p2]) => parseInt(p1) - parseInt(p2)).map(([, arr]) => arr); }; // Component that wraps each priority level of directives of an element. const Directives = ({ directives, priorityLevels: [currentPriorityLevel, ...nextPriorityLevels], element, originalProps, previousScope }) => { // Initialize the scope of this element. These scopes are different per each // level because each level has a different context, but they share the same // element ref, state and props. const scope = hooks_module_A({}).current; scope.evaluate = hooks_module_q(getEvaluate({ scope }), []); const { client, server } = hooks_module_x(context); scope.context = client; scope.serverContext = server; /* eslint-disable react-hooks/rules-of-hooks */ scope.ref = previousScope?.ref || hooks_module_A(null); /* eslint-enable react-hooks/rules-of-hooks */ // Create a fresh copy of the vnode element and add the props to the scope, // named as attributes (HTML Attributes). element = E(element, { ref: scope.ref }); scope.attributes = element.props; // Recursively render the wrapper for the next priority level. const children = nextPriorityLevels.length > 0 ? _(Directives, { directives, priorityLevels: nextPriorityLevels, element, originalProps, previousScope: scope }) : element; const props = { ...originalProps, children }; const directiveArgs = { directives, props, element, context, evaluate: scope.evaluate }; setScope(scope); for (const directiveName of currentPriorityLevel) { const wrapper = directiveCallbacks[directiveName]?.(directiveArgs); if (wrapper !== undefined) { props.children = wrapper; } } resetScope(); return props.children; }; // Preact Options Hook called each time a vnode is created. const old = preact_module_l.vnode; preact_module_l.vnode = vnode => { if (vnode.props.__directives) { const props = vnode.props; const directives = props.__directives; if (directives.key) { vnode.key = directives.key.find(({ suffix }) => suffix === 'default').value; } delete props.__directives; const priorityLevels = getPriorityLevels(directives); if (priorityLevels.length > 0) { vnode.props = { directives, priorityLevels, originalProps: props, type: vnode.type, element: _(vnode.type, props), top: true }; vnode.type = Directives; } } if (old) { old(vnode); } }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/directives.js // eslint-disable-next-line eslint-comments/disable-enable-pair /* eslint-disable react-hooks/exhaustive-deps */ /** * External dependencies */ /** * Internal dependencies */ /** * Recursively clone the passed object. * * @param source Source object. * @return Cloned object. */ function deepClone(source) { if (isPlainObject(source)) { return Object.fromEntries(Object.entries(source).map(([key, value]) => [key, deepClone(value)])); } if (Array.isArray(source)) { return source.map(i => deepClone(i)); } return source; } const newRule = /(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g; const ruleClean = /\/\*[^]*?\*\/| +/g; const ruleNewline = /\n+/g; const empty = ' '; /** * Convert a css style string into a object. * * Made by Cristian Bote (@cristianbote) for Goober. * https://unpkg.com/browse/goober@2.1.13/src/core/astish.js * * @param val CSS string. * @return CSS object. */ const cssStringToObject = val => { const tree = [{}]; let block, left; while (block = newRule.exec(val.replace(ruleClean, ''))) { if (block[4]) { tree.shift(); } else if (block[3]) { left = block[3].replace(ruleNewline, empty).trim(); tree.unshift(tree[0][left] = tree[0][left] || {}); } else { tree[0][block[1]] = block[2].replace(ruleNewline, empty).trim(); } } return tree[0]; }; /** * Creates a directive that adds an event listener to the global window or * document object. * * @param type 'window' or 'document' */ const getGlobalEventDirective = type => { return ({ directives, evaluate }) => { directives[`on-${type}`].filter(({ suffix }) => suffix !== 'default').forEach(entry => { const eventName = entry.suffix.split('--', 1)[0]; useInit(() => { const cb = event => evaluate(entry, event); const globalVar = type === 'window' ? window : document; globalVar.addEventListener(eventName, cb); return () => globalVar.removeEventListener(eventName, cb); }); }); }; }; /** * Creates a directive that adds an async event listener to the global window or * document object. * * @param type 'window' or 'document' */ const getGlobalAsyncEventDirective = type => { return ({ directives, evaluate }) => { directives[`on-async-${type}`].filter(({ suffix }) => suffix !== 'default').forEach(entry => { const eventName = entry.suffix.split('--', 1)[0]; useInit(() => { const cb = async event => { await splitTask(); evaluate(entry, event); }; const globalVar = type === 'window' ? window : document; globalVar.addEventListener(eventName, cb, { passive: true }); return () => globalVar.removeEventListener(eventName, cb); }); }); }; }; /* harmony default export */ const directives = (() => { // data-wp-context directive('context', ({ directives: { context }, props: { children }, context: inheritedContext }) => { const { Provider } = inheritedContext; const defaultEntry = context.find(({ suffix }) => suffix === 'default'); const { client: inheritedClient, server: inheritedServer } = hooks_module_x(inheritedContext); const ns = defaultEntry.namespace; const client = hooks_module_A(proxifyState(ns, {})); const server = hooks_module_A(proxifyState(ns, {}, { readOnly: true })); // No change should be made if `defaultEntry` does not exist. const contextStack = hooks_module_T(() => { const result = { client: { ...inheritedClient }, server: { ...inheritedServer } }; if (defaultEntry) { const { namespace, value } = defaultEntry; // Check that the value is a JSON object. Send a console warning if not. if (!isPlainObject(value)) { warn(`The value of data-wp-context in "${namespace}" store must be a valid stringified JSON object.`); } deepMerge(client.current, deepClone(value), false); deepMerge(server.current, deepClone(value)); result.client[namespace] = proxifyContext(client.current, inheritedClient[namespace]); result.server[namespace] = proxifyContext(server.current, inheritedServer[namespace]); } return result; }, [defaultEntry, inheritedClient, inheritedServer]); return _(Provider, { value: contextStack }, children); }, { priority: 5 }); // data-wp-watch--[name] directive('watch', ({ directives: { watch }, evaluate }) => { watch.forEach(entry => { useWatch(() => { let start; if (false) {} const result = evaluate(entry); if (false) {} return result; }); }); }); // data-wp-init--[name] directive('init', ({ directives: { init }, evaluate }) => { init.forEach(entry => { // TODO: Replace with useEffect to prevent unneeded scopes. useInit(() => { let start; if (false) {} const result = evaluate(entry); if (false) {} return result; }); }); }); // data-wp-on--[event] directive('on', ({ directives: { on }, element, evaluate }) => { const events = new Map(); on.filter(({ suffix }) => suffix !== 'default').forEach(entry => { const event = entry.suffix.split('--')[0]; if (!events.has(event)) { events.set(event, new Set()); } events.get(event).add(entry); }); events.forEach((entries, eventType) => { const existingHandler = element.props[`on${eventType}`]; element.props[`on${eventType}`] = event => { entries.forEach(entry => { if (existingHandler) { existingHandler(event); } let start; if (false) {} evaluate(entry, event); if (false) {} }); }; }); }); // data-wp-on-async--[event] directive('on-async', ({ directives: { 'on-async': onAsync }, element, evaluate }) => { const events = new Map(); onAsync.filter(({ suffix }) => suffix !== 'default').forEach(entry => { const event = entry.suffix.split('--')[0]; if (!events.has(event)) { events.set(event, new Set()); } events.get(event).add(entry); }); events.forEach((entries, eventType) => { const existingHandler = element.props[`on${eventType}`]; element.props[`on${eventType}`] = event => { if (existingHandler) { existingHandler(event); } entries.forEach(async entry => { await splitTask(); evaluate(entry, event); }); }; }); }); // data-wp-on-window--[event] directive('on-window', getGlobalEventDirective('window')); // data-wp-on-document--[event] directive('on-document', getGlobalEventDirective('document')); // data-wp-on-async-window--[event] directive('on-async-window', getGlobalAsyncEventDirective('window')); // data-wp-on-async-document--[event] directive('on-async-document', getGlobalAsyncEventDirective('document')); // data-wp-class--[classname] directive('class', ({ directives: { class: classNames }, element, evaluate }) => { classNames.filter(({ suffix }) => suffix !== 'default').forEach(entry => { const className = entry.suffix; const result = evaluate(entry); const currentClass = element.props.class || ''; const classFinder = new RegExp(`(^|\\s)${className}(\\s|$)`, 'g'); if (!result) { element.props.class = currentClass.replace(classFinder, ' ').trim(); } else if (!classFinder.test(currentClass)) { element.props.class = currentClass ? `${currentClass} ${className}` : className; } useInit(() => { /* * This seems necessary because Preact doesn't change the class * names on the hydration, so we have to do it manually. It doesn't * need deps because it only needs to do it the first time. */ if (!result) { element.ref.current.classList.remove(className); } else { element.ref.current.classList.add(className); } }); }); }); // data-wp-style--[style-prop] directive('style', ({ directives: { style }, element, evaluate }) => { style.filter(({ suffix }) => suffix !== 'default').forEach(entry => { const styleProp = entry.suffix; const result = evaluate(entry); element.props.style = element.props.style || {}; if (typeof element.props.style === 'string') { element.props.style = cssStringToObject(element.props.style); } if (!result) { delete element.props.style[styleProp]; } else { element.props.style[styleProp] = result; } useInit(() => { /* * This seems necessary because Preact doesn't change the styles on * the hydration, so we have to do it manually. It doesn't need deps * because it only needs to do it the first time. */ if (!result) { element.ref.current.style.removeProperty(styleProp); } else { element.ref.current.style[styleProp] = result; } }); }); }); // data-wp-bind--[attribute] directive('bind', ({ directives: { bind }, element, evaluate }) => { bind.filter(({ suffix }) => suffix !== 'default').forEach(entry => { const attribute = entry.suffix; const result = evaluate(entry); element.props[attribute] = result; /* * This is necessary because Preact doesn't change the attributes on the * hydration, so we have to do it manually. It only needs to do it the * first time. After that, Preact will handle the changes. */ useInit(() => { const el = element.ref.current; /* * We set the value directly to the corresponding HTMLElement instance * property excluding the following special cases. We follow Preact's * logic: https://github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L110-L129 */ if (attribute === 'style') { if (typeof result === 'string') { el.style.cssText = result; } return; } else if (attribute !== 'width' && attribute !== 'height' && attribute !== 'href' && attribute !== 'list' && attribute !== 'form' && /* * The value for `tabindex` follows the parsing rules for an * integer. If that fails, or if the attribute isn't present, then * the browsers should "follow platform conventions to determine if * the element should be considered as a focusable area", * practically meaning that most elements get a default of `-1` (not * focusable), but several also get a default of `0` (focusable in * order after all elements with a positive `tabindex` value). * * @see https://html.spec.whatwg.org/#tabindex-value */ attribute !== 'tabIndex' && attribute !== 'download' && attribute !== 'rowSpan' && attribute !== 'colSpan' && attribute !== 'role' && attribute in el) { try { el[attribute] = result === null || result === undefined ? '' : result; return; } catch (err) {} } /* * aria- and data- attributes have no boolean representation. * A `false` value is different from the attribute not being * present, so we can't remove it. * We follow Preact's logic: https://github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L131C24-L136 */ if (result !== null && result !== undefined && (result !== false || attribute[4] === '-')) { el.setAttribute(attribute, result); } else { el.removeAttribute(attribute); } }); }); }); // data-wp-ignore directive('ignore', ({ element: { type: Type, props: { innerHTML, ...rest } } }) => { // Preserve the initial inner HTML. const cached = hooks_module_T(() => innerHTML, []); return _(Type, { dangerouslySetInnerHTML: { __html: cached }, ...rest }); }); // data-wp-text directive('text', ({ directives: { text }, element, evaluate }) => { const entry = text.find(({ suffix }) => suffix === 'default'); if (!entry) { element.props.children = null; return; } try { const result = evaluate(entry); element.props.children = typeof result === 'object' ? null : result.toString(); } catch (e) { element.props.children = null; } }); // data-wp-run directive('run', ({ directives: { run }, evaluate }) => { run.forEach(entry => evaluate(entry)); }); // data-wp-each--[item] directive('each', ({ directives: { each, 'each-key': eachKey }, context: inheritedContext, element, evaluate }) => { if (element.type !== 'template') { return; } const { Provider } = inheritedContext; const inheritedValue = hooks_module_x(inheritedContext); const [entry] = each; const { namespace, suffix } = entry; const list = evaluate(entry); return list.map(item => { const itemProp = suffix === 'default' ? 'item' : kebabToCamelCase(suffix); const itemContext = proxifyContext(proxifyState(namespace, {}), inheritedValue.client[namespace]); const mergedContext = { client: { ...inheritedValue.client, [namespace]: itemContext }, server: { ...inheritedValue.server } }; // Set the item after proxifying the context. mergedContext.client[namespace][itemProp] = item; const scope = { ...getScope(), context: mergedContext.client, serverContext: mergedContext.server }; const key = eachKey ? getEvaluate({ scope })(eachKey[0]) : item; return _(Provider, { value: mergedContext, key }, element.props.content); }); }, { priority: 20 }); directive('each-child', () => null, { priority: 1 }); }); ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/constants.js const directivePrefix = 'wp'; ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/vdom.js /** * External dependencies */ /** * Internal dependencies */ const ignoreAttr = `data-${directivePrefix}-ignore`; const islandAttr = `data-${directivePrefix}-interactive`; const fullPrefix = `data-${directivePrefix}-`; const namespaces = []; const currentNamespace = () => { var _namespaces; return (_namespaces = namespaces[namespaces.length - 1]) !== null && _namespaces !== void 0 ? _namespaces : null; }; const isObject = item => Boolean(item && typeof item === 'object' && item.constructor === Object); // Regular expression for directive parsing. const directiveParser = new RegExp(`^data-${directivePrefix}-` + // ${p} must be a prefix string, like 'wp'. // Match alphanumeric characters including hyphen-separated // segments. It excludes underscore intentionally to prevent confusion. // E.g., "custom-directive". '([a-z0-9]+(?:-[a-z0-9]+)*)' + // (Optional) Match '--' followed by any alphanumeric charachters. It // excludes underscore intentionally to prevent confusion, but it can // contain multiple hyphens. E.g., "--custom-prefix--with-more-info". '(?:--([a-z0-9_-]+))?$', 'i' // Case insensitive. ); // Regular expression for reference parsing. It can contain a namespace before // the reference, separated by `::`, like `some-namespace::state.somePath`. // Namespaces can contain any alphanumeric characters, hyphens, underscores or // forward slashes. References don't have any restrictions. const nsPathRegExp = /^([\w_\/-]+)::(.+)$/; const hydratedIslands = new WeakSet(); /** * Recursive function that transforms a DOM tree into vDOM. * * @param root The root element or node to start traversing on. * @return The resulting vDOM tree. */ function toVdom(root) { const treeWalker = document.createTreeWalker(root, 205 // TEXT + CDATA_SECTION + COMMENT + PROCESSING_INSTRUCTION + ELEMENT ); function walk(node) { const { nodeType } = node; // TEXT_NODE (3) if (nodeType === 3) { return [node.data]; } // CDATA_SECTION_NODE (4) if (nodeType === 4) { var _nodeValue; const next = treeWalker.nextSibling(); node.replaceWith(new window.Text((_nodeValue = node.nodeValue) !== null && _nodeValue !== void 0 ? _nodeValue : '')); return [node.nodeValue, next]; } // COMMENT_NODE (8) || PROCESSING_INSTRUCTION_NODE (7) if (nodeType === 8 || nodeType === 7) { const next = treeWalker.nextSibling(); node.remove(); return [null, next]; } const elementNode = node; const { attributes } = elementNode; const localName = elementNode.localName; const props = {}; const children = []; const directives = []; let ignore = false; let island = false; for (let i = 0; i < attributes.length; i++) { const attributeName = attributes[i].name; const attributeValue = attributes[i].value; if (attributeName[fullPrefix.length] && attributeName.slice(0, fullPrefix.length) === fullPrefix) { if (attributeName === ignoreAttr) { ignore = true; } else { var _regexResult$, _regexResult$2; const regexResult = nsPathRegExp.exec(attributeValue); const namespace = (_regexResult$ = regexResult?.[1]) !== null && _regexResult$ !== void 0 ? _regexResult$ : null; let value = (_regexResult$2 = regexResult?.[2]) !== null && _regexResult$2 !== void 0 ? _regexResult$2 : attributeValue; try { const parsedValue = JSON.parse(value); value = isObject(parsedValue) ? parsedValue : value; } catch {} if (attributeName === islandAttr) { island = true; const islandNamespace = // eslint-disable-next-line no-nested-ternary typeof value === 'string' ? value : typeof value?.namespace === 'string' ? value.namespace : null; namespaces.push(islandNamespace); } else { directives.push([attributeName, namespace, value]); } } } else if (attributeName === 'ref') { continue; } props[attributeName] = attributeValue; } if (ignore && !island) { return [_(localName, { ...props, innerHTML: elementNode.innerHTML, __directives: { ignore: true } })]; } if (island) { hydratedIslands.add(elementNode); } if (directives.length) { props.__directives = directives.reduce((obj, [name, ns, value]) => { const directiveMatch = directiveParser.exec(name); if (directiveMatch === null) { warn(`Found malformed directive name: ${name}.`); return obj; } const prefix = directiveMatch[1] || ''; const suffix = directiveMatch[2] || 'default'; obj[prefix] = obj[prefix] || []; obj[prefix].push({ namespace: ns !== null && ns !== void 0 ? ns : currentNamespace(), value, suffix }); return obj; }, {}); } // @ts-expect-error Fixed in upcoming preact release https://github.com/preactjs/preact/pull/4334 if (localName === 'template') { props.content = [...elementNode.content.childNodes].map(childNode => toVdom(childNode)); } else { let child = treeWalker.firstChild(); if (child) { while (child) { const [vnode, nextChild] = walk(child); if (vnode) { children.push(vnode); } child = nextChild || treeWalker.nextSibling(); } treeWalker.parentNode(); } } // Restore previous namespace. if (island) { namespaces.pop(); } return [_(localName, props, children)]; } return walk(treeWalker.currentNode); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/init.js /** * External dependencies */ /** * Internal dependencies */ // Keep the same root fragment for each interactive region node. const regionRootFragments = new WeakMap(); const getRegionRootFragment = region => { if (!region.parentElement) { throw Error('The passed region should be an element with a parent.'); } if (!regionRootFragments.has(region)) { regionRootFragments.set(region, createRootFragment(region.parentElement, region)); } return regionRootFragments.get(region); }; // Initial vDOM regions associated with its DOM element. const initialVdom = new WeakMap(); // Initialize the router with the initial DOM. const init = async () => { const nodes = document.querySelectorAll(`[data-${directivePrefix}-interactive]`); for (const node of nodes) { if (!hydratedIslands.has(node)) { await splitTask(); const fragment = getRegionRootFragment(node); const vdom = toVdom(node); initialVdom.set(node, vdom); await splitTask(); D(vdom, fragment); } } }; ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/index.js /** * External dependencies */ /** * Internal dependencies */ const requiredConsent = 'I acknowledge that using private APIs means my theme or plugin will inevitably break in the next version of WordPress.'; const privateApis = lock => { if (lock === requiredConsent) { return { directivePrefix: directivePrefix, getRegionRootFragment: getRegionRootFragment, initialVdom: initialVdom, toVdom: toVdom, directive: directive, getNamespace: getNamespace, h: _, cloneElement: E, render: B, proxifyState: proxifyState, parseServerData: parseServerData, populateServerData: populateServerData, batch: signals_core_module_r }; } throw new Error('Forbidden access.'); }; directives(); init(); ;// CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/debug.js /** * External dependencies */ var __webpack_exports__getConfig = __webpack_exports__.zj; var __webpack_exports__getContext = __webpack_exports__.SD; var __webpack_exports__getElement = __webpack_exports__.V6; var __webpack_exports__getServerContext = __webpack_exports__.$K; var __webpack_exports__getServerState = __webpack_exports__.vT; var __webpack_exports__privateApis = __webpack_exports__.jb; var __webpack_exports__splitTask = __webpack_exports__.yT; var __webpack_exports__store = __webpack_exports__.M_; var __webpack_exports__useCallback = __webpack_exports__.hb; var __webpack_exports__useEffect = __webpack_exports__.vJ; var __webpack_exports__useInit = __webpack_exports__.ip; var __webpack_exports__useLayoutEffect = __webpack_exports__.Nf; var __webpack_exports__useMemo = __webpack_exports__.Kr; var __webpack_exports__useRef = __webpack_exports__.li; var __webpack_exports__useState = __webpack_exports__.J0; var __webpack_exports__useWatch = __webpack_exports__.FH; var __webpack_exports__withScope = __webpack_exports__.v4; export { __webpack_exports__getConfig as getConfig, __webpack_exports__getContext as getContext, __webpack_exports__getElement as getElement, __webpack_exports__getServerContext as getServerContext, __webpack_exports__getServerState as getServerState, __webpack_exports__privateApis as privateApis, __webpack_exports__splitTask as splitTask, __webpack_exports__store as store, __webpack_exports__useCallback as useCallback, __webpack_exports__useEffect as useEffect, __webpack_exports__useInit as useInit, __webpack_exports__useLayoutEffect as useLayoutEffect, __webpack_exports__useMemo as useMemo, __webpack_exports__useRef as useRef, __webpack_exports__useState as useState, __webpack_exports__useWatch as useWatch, __webpack_exports__withScope as withScope };