diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fcdd6a9c2..b110fb1ea 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: python: - "3.12" plone: - - "6.1-dev" + - "6.2-dev" steps: - uses: actions/checkout@v6 diff --git a/.meta.toml b/.meta.toml index 8e99b66d4..4b8aef344 100644 --- a/.meta.toml +++ b/.meta.toml @@ -7,7 +7,7 @@ commit-id = "2.3.1" [pyproject] codespell_ignores = "foo,bar" -codespell_skip = "*.min.js,*.min.js.map,*.min.css.map,*.svg,yarn.lock,*.json,*/tiles.xml" +codespell_skip = "*.config.js,*.min.js,*.min.js.map,*.min.css.map,*.svg,yarn.lock,*.json,*/tiles.xml" [gitignore] extra_lines = """ diff --git a/constraints.txt b/constraints.txt index a030e9531..b43c39a3f 100644 --- a/constraints.txt +++ b/constraints.txt @@ -1 +1 @@ --c https://dist.plone.org/release/6.0-dev/constraints.txt \ No newline at end of file +-c https://dist.plone.org/release/6.2-dev/constraints.txt diff --git a/news/+layoutwidget.bugfix b/news/+layoutwidget.bugfix new file mode 100644 index 000000000..0d25af677 --- /dev/null +++ b/news/+layoutwidget.bugfix @@ -0,0 +1 @@ +Update LayoutWidget to use latest z3c.form extendable attributes. @petschki diff --git a/package.json b/package.json index 98c5da884..45a84d398 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "GPL-2.0-only", "dependencies": { "@patternslib/patternslib": "^9.10.2", - "@plone/mockup": "^5.5.0" + "@plone/mockup": "^5.5.1" }, "devDependencies": { "@patternslib/dev": "3.8.1", diff --git a/pyproject.toml b/pyproject.toml index dc8c2d550..26d583cf9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -72,7 +72,7 @@ target-version = ["py38"] [tool.codespell] ignore-words-list = "discreet,assertin,thet,foo,bar" -skip = "*.po,*.min.js,*.min.js.map,*.min.css.map,*.svg,yarn.lock,*.json,*/tiles.xml" +skip = "*.po,*.config.js,*.min.js,*.min.js.map,*.min.css.map,*.svg,yarn.lock,*.json,*/tiles.xml" ## # Add extra configuration options in .meta.toml: # [pyproject] diff --git a/resources/js/mosaic.pattern.js b/resources/js/mosaic.pattern.js index 8092faa90..22904fa37 100644 --- a/resources/js/mosaic.pattern.js +++ b/resources/js/mosaic.pattern.js @@ -53,7 +53,6 @@ export default Base.extend({ // extend options self.options = { ...self.default, - ...JSON.parse(JSON.stringify(self.options.data)), ...self.options, }; diff --git a/resources/scss/mosaic.tinymce.scss b/resources/scss/mosaic.tinymce.scss index 324851a50..3630b0877 100644 --- a/resources/scss/mosaic.tinymce.scss +++ b/resources/scss/mosaic.tinymce.scss @@ -9,6 +9,7 @@ div.mce-content-body[contenteditable="true"] { border: none; border-radius: 0; + padding: 0; &::after { // special fix when only one floating image is in editor diff --git a/src/plone/app/mosaic/browser/static/chunks/14393.ed1149bd11ecf6619ce4.min.js b/src/plone/app/mosaic/browser/static/chunks/14393.ed1149bd11ecf6619ce4.min.js new file mode 100644 index 000000000..883bb53dd --- /dev/null +++ b/src/plone/app/mosaic/browser/static/chunks/14393.ed1149bd11ecf6619ce4.min.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkplone_mosaic=self.webpackChunkplone_mosaic||[]).push([[14393],{8633:function(t,e,n){var o=n(2511),r=n.n(o),i=n(23352);r().fn.safeClone=function(){return this.clone()},Array.prototype.forEach||(Array.prototype.forEach=function(t,e){var n,o;if(null===this)throw new TypeError(" this is null or not defined");var r=Object(this),i=r.length>>>0;if("function"!=typeof t)throw new TypeError(t+" is not a function");for(arguments.length>1&&(n=e),o=0;o0===t)&&(e?o.top<=0+n&&o.bottom>=0+n:o.top>=0&&o.left>=0&&o.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&o.right<=(window.innerWidth||document.documentElement.clientWidth))}var u={jqueryPlugin:function(t){return function(e,n){return 0===this.length?this:("object"==typeof e&&(n=e,e=void 0),"function"==typeof t?a.call(this,t,e,n):s.call(this,t,e,n))}},escapeRegExp:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isObject:l,extend:function(t){if(!l(t))return t;for(var e,n,o=1,r=arguments.length;o!n.test(t));o.length?e.setAttribute("class",o.join(" ")):e.removeAttribute("class")}}},hideOrShow:(t,e,n,o)=>{t=i.A.to_element_array(t);const a={none:{hide:"hide",show:"show"},fade:{hide:"fadeOut",show:"fadeIn"},slide:{hide:"slideUp",show:"slideDown"}},s="css"===n.transition||"none"===n.transition?null:n.effect.duration,l=t=>{t.classList.remove("in-progress"),t.classList.add(e?"visible":"hidden"),r()(t).trigger("pat-update",{pattern:o,action:"attribute-changed",dom:t,transition:"complete"})};for(const c of t)if(c.classList.remove("visible"),c.classList.remove("hidden"),c.classList.remove("in-progress"),s){const t=a[n.transition];c.classList.add("in-progress"),r()(c).trigger("pat-update",{pattern:o,action:"attribute-changed",dom:c,transition:"start"}),r()(c)[e?t.show:t.hide]({duration:s,easing:n.effect.easing,complete:()=>l(c)})}else"css"!==n.transition&&i.A[e?"show":"hide"](c),l(c)},addURLQueryParameter:function(t,e,n){var o=new RegExp("(\\?|\\&)"+e+"=.*?(?=(&|$))"),r=t.toString().split("#"),i=r[0],a=r[1],s=i;return s=o.test(i)?i.replace(o,"$1"+e+"="+n):/\?.+$/.test(i)?i+"&"+e+"="+n:i+"?"+e+"="+n,a&&(s+="#"+a),s},removeDuplicateObjects:function(t){const e=function(t,e){return this[t]===e};return t.reduce(function(t,n){let o=!1;for(const r of t)o=Object.keys(r).length===Object.keys(n).length&&0===Object.entries(r).filter(t=>!e.bind(n)(t[0],t[1])).length;return o||t.push(n),t},[])},mergeStack:function(t,e){const n=[];for(let t=0;tt?t:i])}return n},isElementInViewport:d,hasValue:function(t){return"INPUT"===t.tagName?"checkbox"===t.type||"radio"===t.type?t.checked:""!==t.value:"SELECT"===t.tagName?-1!==t.selectedIndex:"TEXTAREA"===t.tagName&&""!==t.value},parseTime:function(t){var e=/^(\d+(?:\.\d+)?)\s*(\w*)/.exec(t);if(!e)throw new Error("Invalid time");var n=parseFloat(e[1]);switch(e[2]){case"s":return Math.round(1e3*n);case"m":return Math.round(1e3*n*60);default:return Math.round(n)}},parseLength:function(t,e=null){const n=/^(\d+(?:\.\d+)?)\s*(\%?\w*)/.exec(t);if(!n)throw new Error("Invalid length");const o=parseFloat(n[1]);switch(n[2]){case"px":default:return Math.round(o);case"%":return e?e/100*Math.round(o):0;case"vw":return Math.round(o*window.innerWidth/100);case"vh":return Math.round(o*window.innerHeight/100);case"vmin":return Math.round(o*Math.min(window.innerWidth,window.innerHeight)/100);case"vmax":return Math.round(o*Math.max(window.innerWidth,window.innerHeight)/100)}},findRelatives:function(t){var e=r()(t),n=r()(t),o=r()();if(n=(n=n.add(e.closest("label"))).add(e.closest("fieldset")),t.id&&(o=r()("label[for='"+t.id+"']")),!o.length){var i=e.closest("form");i.length||(i=r()(document.body)),o=i.find("label[for='"+t.name+"']")}return n=n.add(o)},get_bounds:function(t){const e=t.getBoundingClientRect();return{x:parseInt(Math.round(e.x),10)||0,y:parseInt(Math.round(e.y),10)||0,top:parseInt(Math.round(e.top),10)||0,bottom:parseInt(Math.round(e.bottom),10)||0,left:parseInt(Math.round(e.left),10)||0,right:parseInt(Math.round(e.right),10)||0,width:parseInt(Math.round(e.width),10)||0,height:parseInt(Math.round(e.height),10)||0}},checkInputSupport:function(t,e){let n=!1;const o=document.createElement("input");return o.setAttribute("type",t),n=o.type==t,void 0!==e&&(o.setAttribute("value",e),n=o.value!==e),n},checkCSSFeature:(t,e,n="div")=>{let o=void 0!==(n=document.createElement(n)).style[t];return o&&void 0!==e&&(n.style[t]=e,o=n.style[t]===e),o},animation_frame:()=>new Promise(window.requestAnimationFrame),timeout:t=>new Promise(e=>setTimeout(e,t)),debounce:(t,e,n={timer:null},o=!0)=>(n.last_run=0,function(){const r=arguments;!o&&n.timer&&Date.now()-n.last_run<=e||(clearTimeout(n.timer),n.last_run=Date.now(),n.timer=setTimeout(()=>{t.apply(this,r)},e))}),isIE:()=>!!document.documentMode,jqToNode:t=>(t.jquery&&(t=t[0]),t),ensureArray:(t,e)=>!!(NodeList.prototype.isPrototypeOf(t)||Array.isArray(t)||t.jquery)?e?[...t]:t:[t],localized_isodate:t=>{const e=t.getDate().toString().padStart(2,"0"),n=(t.getMonth()+1).toString().padStart(2,"0");return`${t.getFullYear().toString()}-${n}-${e}`},escape_html:t=>{if(!t)return"";const e=document.createElement("div");return e.appendChild(document.createTextNode(t)),e.innerHTML.replace(/"/g,""")},unescape_html:t=>{if(!t)return"";return(new DOMParser).parseFromString(t,"text/html").documentElement.textContent.replace(/"/g,'"')},is_iso_date_time:(t,e=!1)=>(e?/^\d{4}-[01]\d-[0-3]\d(T[0-2]\d:[0-5]\d)?$/:/^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d$/).test(t),is_iso_date:t=>/^\d{4}-[01]\d-[0-3]\d$/.test(t),date_diff:(t,e)=>{const n=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),o=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate());return Math.floor((n-o)/864e5)},threshold_list:(t=0)=>{let e=[];for(let n=1;n<=t;n++)e.push(n/t);return e.push(0),e.sort()},is_option_truthy:t=>![void 0,null,"none",!1,"false",""].includes(t),elementInViewport:t=>(console.warn("Deprecated. Use utils.isElementInViewport"),d(t))};e.A=u},22819:function(t,e){var n,o;Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),n=this,o=function(){},r=function(){return n.apply(this instanceof o&&t?this:t,e.concat(Array.prototype.slice.call(arguments)))};return o.prototype=this.prototype,r.prototype=new o,r});var r={DEBUG:10,INFO:20,WARN:30,ERROR:40,FATAL:50};function i(){}function a(t,e){this._loggers={},this.name=t||"",this._parent=e||null,e||(this._enabled=!0,this._level=r.WARN)}function s(t){o=t}i.prototype={output:function(t,e,n){t&&n.unshift(t+":"),e<=r.DEBUG?console.debug.apply(console,n):e<=r.INFO?console.info.apply(console,n):e<=r.WARN?console.warn.apply(console,n):console.error.apply(console,n)}},a.prototype={getLogger:function(t){for(var e=t.split("."),n=this,o=this.name?[this.name]:[];e.length;){var r=e.shift();o.push(r),r in n._loggers||(n._loggers[r]=new a(o.join("."),n)),n=n._loggers[r]}return n},_getFlag:function(t){var e=this;for(t="_"+t;null!==e;){if(void 0!==e[t])return e[t];e=e._parent}return null},setEnabled:function(t){this._enabled=!!t},isEnabled:function(){this._getFlag("enabled")},setLevel:function(t){"number"==typeof t?this._level=t:"string"==typeof t&&(t=t.toUpperCase())in r&&(this._level=r[t])},getLevel:function(){return this._getFlag("level")},log:function(t,e){!e.length||!this._getFlag("enabled")||t{let t;if(window.crypto.randomUUID)t=window.crypto.randomUUID();else{const e=new Uint32Array(4);t=window.crypto.getRandomValues(e).join("")}return t};const a=r.A.getLogger("core dom"),s="__patternslib__data_prefix__",l="__patternslib__style__display",c="input, select, textarea, button",d=t=>(t?.jquery||t instanceof NodeList?t=[...t]:t instanceof Array==!1&&(t=[t]),t=t.filter(t=>t instanceof Node)),u=t=>t=(t=d(t)).filter(t=>t instanceof Element),p=(t,e)=>{const n=u(t),o=new WeakSet,r=[];for(const t of n){t.matches(e)&&!o.has(t)&&(r.push(t),o.add(t));for(const n of t.querySelectorAll(e))o.has(n)||(r.push(n),o.add(n))}return r};function f(t,e,n=!1,o=!1){let r=window.getComputedStyle(t).getPropertyValue(e);return(n||o)&&(r=parseFloat(r)||0),n&&!o&&(r=parseInt(Math.round(r),10)),r}const h=(t,e=document.body)=>{e===window&&(e=document.body);const n=Math.abs(t.getBoundingClientRect().left+e.scrollLeft-e.getBoundingClientRect().left-b.get_css_value(e,"border-left-width",!0));return{top:Math.abs(t.getBoundingClientRect().top+e.scrollTop-e.getBoundingClientRect().top-b.get_css_value(e,"border-top-width",!0)),left:n}},g=(t,e,n)=>t[`${s}${e}`]||n,m=(t,e,n)=>{t[`${s}${e}`]=n},b={document_ready:t=>{const e=i(),n=()=>{"loading"!==document.readyState&&(o.A.remove_event_listener(document,e),setTimeout(t,1))};o.A.add_event_listener(document,"readystatechange",e,n),n()},to_element_array:u,to_node_array:d,toNodeArray:d,querySelectorAllAndMe:p,wrap:(t,e)=>{t.parentNode.insertBefore(e,t),e.appendChild(t)},hide:t=>{"none"!==t.style.display&&(t.style.display&&(t[l]=t.style.display),t.style.display="none")},show:t=>{const e=t[l]||null;t.style.display=e,delete t[l]},find_inputs:t=>p(t,c),find_parents:(t,e)=>{const n=[];let o=t;for(;o;)o=o.parentNode?.closest?.(e),o&&n.push(o);return n},find_scoped:(t,e)=>(0===e.indexOf("#")?document:t).querySelectorAll(e),get_parents:t=>{const e=[];let n=t?.parentNode;for(;n;)e.push(n),n=n?.parentNode,n=n instanceof HTMLElement?n:null;return e},acquire_attribute:(t,e,n=!1,o=!1)=>{let r=t;const i=[];for(;r;){const t=r.getAttribute(e);if(t||n&&""===t){if(!o)return t;i.push(t)}r=r.parentElement}if(o)return i},is_visible:t=>t.offsetWidth>0&&t.offsetHeight>0,is_input:t=>/^(?:input|select|textarea|button)$/i.test(t.nodeName),is_button:t=>t.matches("\n button,\n input[type=image],\n input[type=button],\n input[type=reset],\n input[type=submit]\n "),create_from_string:t=>document.createRange().createContextualFragment(t.trim()),get_css_value:f,find_scroll_container:(t,e,n=document.body)=>{for(;t&&t!==document.body;){if(!e||"y"===e){let e=f(t,"overflow-y");if(["auto","scroll"].includes(e))return t}if(!e||"x"===e){let e=f(t,"overflow-x");if(["auto","scroll"].includes(e))return t}t=t.parentElement}return n},get_scroll_x:t=>void 0!==t.scrollLeft?t.scrollLeft:t.scrollX,get_scroll_y:t=>void 0!==t.scrollTop?t.scrollTop:t.scrollY,get_relative_position:h,scroll_to_element:(t,e,n=0,o="top")=>{const r=h(t,e),i={behavior:"auto"};"top"!==o&&"both"!==o||(i.top=r.top-n),"left"!==o&&"both"!==o||(i.left=r.left-n),e.scrollTo(i)},scroll_to_top:(t=document.body,e=0)=>{t.scrollTo({top:0-e,behavior:"auto"})},scroll_to_bottom:(t=document.body,e=0)=>{const n=(t===window?document.body:t).scrollHeight;t.scrollTo({top:n-e,behavior:"auto"})},get_data:g,set_data:m,delete_data:(t,e)=>{delete t[`${s}${e}`]},template:(t,e={})=>(a.warn("Using dom.template is not recommended due to a problem with Content-Security-Policy."),new Function("return `"+t+"`;").call(e)),get_visible_ratio:(t,e)=>{if(!t)return 0;const n=t.getBoundingClientRect(),o=e!==window?e.getBoundingClientRect():{top:0,bottom:window.innerHeight};let r=0;if(n.topo.top){const t=n.bottom-n.top;r=(Math.min(n.bottom,o.bottom)-Math.max(n.top,o.top))/t}return r},escape_css_id:t=>`#${CSS.escape(t.split("#")[1])}`,element_uuid:t=>(g(t,"uuid",!1)||m(t,"uuid",i()),g(t,"uuid")),find_form:t=>t.closest(".pat-subform")||t.form||t.querySelector(c)?.form||t.closest("form")};var v=b},23505:function(t,e){var n,o;Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),n=this,o=function(){},r=function(){return n.apply(this instanceof o&&t?this:t,e.concat(Array.prototype.slice.call(arguments)))};return o.prototype=this.prototype,r.prototype=new o,r});var r={DEBUG:10,INFO:20,WARN:30,ERROR:40,FATAL:50};function i(){}function a(t,e){this._loggers={},this.name=t||"",this._parent=e||null,e||(this._enabled=!0,this._level=r.WARN)}function s(t){o=t}i.prototype={output:function(t,e,n){t&&n.unshift(t+":"),e<=r.DEBUG?console.debug.apply(console,n):e<=r.INFO?console.info.apply(console,n):e<=r.WARN?console.warn.apply(console,n):console.error.apply(console,n)}},a.prototype={getLogger:function(t){for(var e=t.split("."),n=this,o=this.name?[this.name]:[];e.length;){var r=e.shift();o.push(r),r in n._loggers||(n._loggers[r]=new a(o.join("."),n)),n=n._loggers[r]}return n},_getFlag:function(t){var e=this;for(t="_"+t;null!==e;){if(void 0!==e[t])return e[t];e=e._parent}return null},setEnabled:function(t){this._enabled=!!t},isEnabled:function(){this._getFlag("enabled")},setLevel:function(t){"number"==typeof t?this._level=t:"string"==typeof t&&(t=t.toUpperCase())in r&&(this._level=r[t])},getLevel:function(){return this._getFlag("level")},log:function(t,e){!e.length||!this._getFlag("enabled")||t{const n=t?[t]:r.keys();for(const t of n){if(!t?.removeEventListener)return;const n=r.get(t);if(!n)return;let i;i=e?[...n.entries()].filter(t=>o.A.regexp_from_wildcard(e).test(t[0])):n.entries();for(const e of i||[])t.removeEventListener(e[1][0],e[1][1],e[1][2]),r.get(t).delete(e[0]),r.get(t).size||r.delete(t)}};class a extends CustomEvent{constructor(t){super("pat-update",{bubbles:!0,cancelable:!0,detail:t})}}e.A={add_event_listener:(t,e,n,o,a={})=>{if(!t?.addEventListener)return;i(t,n),r.has(t)||r.set(t,new Map);let s=o;!0===a?.once&&(s=e=>{r.get(t)?.delete(n),o(e)}),r.get(t).set(n,[e,s,a.capture?a:void 0]),t.addEventListener(e,s,a)},remove_event_listener:i,await_event:(t,e)=>new Promise(n=>t.addEventListener(e,n,{once:!0})),await_pattern_init:t=>new Promise((e,n)=>{t.one("init",n=>{n.target===t.el&&(i(t.el,`basepattern-one--not-init.${t.name}.patterns`),e())}),t.one("not-init",e=>{e.target===t.el&&(i(t.el,`basepattern-one--init.${t.name}.patterns`),n())})}).catch(()=>{throw new Error(`Pattern "${t.name}" not initialized.`)}),generic_event:t=>new Event(t,{bubbles:!0,cancelable:!0}),update_event:t=>new a(t),blur_event:()=>new Event("blur",{bubbles:!1,cancelable:!1}),click_event:()=>new Event("click",{bubbles:!0,cancelable:!0}),change_event:()=>new Event("change",{bubbles:!0,cancelable:!1}),focus_event:()=>new Event("focus",{bubbles:!1,cancelable:!1}),input_event:()=>new Event("input",{bubbles:!0,cancelable:!1}),mousedown_event:()=>new Event("mousedown",{bubbles:!0,cancelable:!0}),mouseup_event:()=>new Event("mouseup",{bubbles:!0,cancelable:!0}),scroll_event:()=>new Event("scroll",{bubbles:!0,cancelable:!1}),submit_event:({submitter:t}={submitter:void 0})=>{const e=new Event("submit",{bubbles:!0,cancelable:!0});return e.submitter=t,e},dragstart_event:()=>new Event("dragstart",{bubbles:!0,cancelable:!0}),dragend_event:()=>new Event("dragend",{bubbles:!0,cancelable:!0})}},59329:function(t,e,n){var o=n(2511),r=n.n(o),i=n(23352),a=n(23505),s=n(8633);const l=a.A.getLogger("registry"),c=/patterns-disable=([^&]+)/g,d=/patterns-dont-catch/g,u={};let p,f=!1;for(;null!==(p=c.exec(window.location.search));)u[p[1]]=!0,l.info("Pattern disabled via url config:",p[1]);for(;null!==(p=d.exec(window.location.search));)f=!0,l.info("I will not catch init exceptions");void 0===window.__patternslib_registry&&(window.__patternslib_registry={});const h=window.__patternslib_registry;void 0===window.__patternslib_registry_initialized&&(window.__patternslib_registry_initialized=!1);const g={patterns:h,init(){i.A.document_ready(()=>{window.__patternslib_registry_initialized||(window.__patternslib_registry_initialized=!0,l.debug("Loaded: "+Object.keys(g.patterns).sort().join(", ")),g.scan(document.body),l.debug("Finished initial scan."))})},clear(){for(const t in g.patterns)delete g.patterns[t]},transformPattern(t,e){if(u[t])return void l.debug(`Skipping disabled pattern: ${t}.`);const n=g.patterns[t],o=n.transform||n.prototype?.transform;if(o)try{o(r()(e))}catch(e){if(f)throw e;l.error(`Transform error for pattern ${t}.`,e)}},initPattern(t,e,n){const o=r()(e),i=g.patterns[t],s=a.A.getLogger(`pat.${t}`);if(e.matches(i.trigger)){s.debug("Initialising.",e);try{i.init?i.init(o,null,n):new i(o,null,n),s.debug("done.")}catch(t){if(f)throw t;s.error("Caught error:",t)}}},orderPatterns(t){return t.includes("validation")&&(t.splice(t.indexOf("validation"),1),t.unshift("validation")),t.includes("clone-code")&&(t.splice(t.indexOf("clone-code"),1),t.unshift("clone-code")),t},scan(t,e,n){if(!t)return;if("string"==typeof t)t=document.querySelector(t);else{if(t instanceof Text)return;t.jquery&&(t=t[0])}const o=[];e=this.orderPatterns(e||Object.keys(g.patterns));for(const n of e){this.transformPattern(n,t);const e=g.patterns[n];e.trigger&&o.unshift(e.trigger)}const r=o.map(t=>t.trim().replace(/,$/,"")).join(",");if(!r)return;let a=i.A.querySelectorAllAndMe(t,r);a=a.filter(t=>!t?.closest?.(".disable-patterns")&&!t?.parentNode?.closest?.("pre")&&!t?.closest?.(".cant-touch-this"));for(const t of a.reverse())for(const o of e)this.initPattern(o,t,n);document.body.classList.add("patterns-loaded")},register(t,e){if(!(e=e||t.name))return l.error("Pattern lacks a name.",t),!1;let n=window.__patternslib_patterns_blacklist;if(Array.isArray(n)||(n=[]),n.includes(e))return l.warn(`Pattern name ${e} is blacklisted.`),!1;if(g.patterns[e])return l.debug(`Already have a pattern called ${e}.`),!1;if(g.patterns[e]=t,t.jquery_plugin){const n=("pat-"+e).replace(/-([a-zA-Z])/g,function(t,e){return e.toUpperCase()});r().fn[n]=s.A.jqueryPlugin(t),r().fn[n.replace(/^pat/,"pattern")]=r().fn[n]}return l.debug(`Registered pattern ${e}`,t),window.__patternslib_registry_initialized&&(g.scan(document.body,[e]),l.debug(`Re-scanned dom with newly registered pattern ${e}.`)),!0}};e.A=g},59994:function(t,e,n){var o=n(2511),r=n.n(o);const i=n(22819).A.getLogger("core utils");var a=function(t){var e=this;e.className="spinner-border";return t||(t={}),e.options=r().extend({},{backdrop:null,zIndex:10005},t),e.init=function(){e.$el=r()("."+e.className),0===e.$el.length&&(e.$el=r()("
"),e.$el.addClass(e.className).hide().appendTo("body"))},e.show=function(t){e.init(),e.$el.show(),e.$el.css("position","absolute"),e.$el.css("top","50%"),e.$el.css("left","50%");var n=e.options.zIndex;"function"==typeof n?n=Math.max(n(),10005):(n=10005,r()(".modal-wrapper,.-modal-backdrop").each(function(){n=Math.max(n,r()(this).css("zIndex")||10005)}),n+=1),e.$el.css("zIndex",n),void 0===t&&(t=!0),e.options.backdrop&&(e.options.backdrop.closeOnClick=t,e.options.backdrop.closeOnEsc=t,e.options.backdrop.init(),e.options.backdrop.show())},e.hide=function(){e.init(),e.$el.hide()},e},s=function(t){return void 0===t&&(t="id"),t+Math.floor(65536*(1+Math.random())).toString(16).substring(1)},l={dragAndDrop:function(){return"draggable"in document.createElement("span")},fileApi:function(){return"undefined"!=typeof FileReader},history:function(){return!(!window.history||!window.history.pushState)}},c={get:function(t){if(window.localStorage){var e=window.localStorage[t];return"string"==typeof e?JSON.parse(e):void 0}},set:function(t,e){window.localStorage&&(window.localStorage[t]=JSON.stringify(e))}};const d=new Map;e.A={bool:function(t){return"string"==typeof t&&(t=t.trim(t).toLowerCase()),-1===["false",!1,"0",0,"",void 0,null].indexOf(t)},escapeHTML:function(t){return r()("
").text(t).html()},removeHTML:function(t){return t.replace(/<[^>]+>/gi,"")},featureSupport:l,generateId:s,getAuthenticator:function(){var t=r()('input[name="_authenticator"]');return 0===t.length?(t=r()('a[href*="_authenticator"]')).length>0?t.attr("href").split("_authenticator=")[1]:"":t.val()},getWindow:function(){var t=window;return t.parent!==window&&(t=t.parent),t},Loading:a,loading:new a,parseBodyTag:function(t){return r()(/]*>[^]*<\/body>/im.exec(t)[0].replace("","
")).eq(0).html()},QueryHelper:function(t){var e=this;return e.options=r().extend({},{pattern:null,vocabularyUrl:null,searchParam:"SearchableText",pathOperator:"plone.app.querystring.operation.string.path",attributes:["UID","Title","Description","getURL","portal_type"],batchSize:10,baseCriteria:[],sort_on:"is_folderish",sort_order:"reverse",pathDepth:1},t),e.pattern=e.options.pattern,void 0!==e.pattern&&null!==e.pattern||(e.pattern={browsing:!1,basePath:"/"}),e.options.url&&!e.options.vocabularyUrl?e.options.vocabularyUrl=e.options.url:e.pattern.vocabularyUrl&&(e.options.vocabularyUrl=e.pattern.vocabularyUrl),e.valid=Boolean(e.options.vocabularyUrl),e.getBatch=function(t){return{page:t||1,size:e.options.batchSize}},e.getCurrentPath=function(){var t,n=e.pattern;"function"==typeof(t=e.currentPath?e.currentPath:n.currentPath)&&(t=t());var o=t;return o||(o=n.basePath?n.basePath:n.options.basePath?n.options.basePath:"/"),o},e.getCriterias=function(t,n){void 0===n&&(n={});var o=[];return(n=r().extend({},{useBaseCriteria:!0,additionalCriterias:[]},n)).useBaseCriteria&&(o=e.options.baseCriteria.slice(0)),t&&(t+="*",o.push({i:e.options.searchParam,o:"plone.app.querystring.operation.string.contains",v:t})),n.searchPath?o.push({i:"path",o:e.options.pathOperator,v:n.searchPath+"::"+e.options.pathDepth}):e.pattern.browsing&&o.push({i:"path",o:e.options.pathOperator,v:e.getCurrentPath()+"::"+e.options.pathDepth}),o=o.concat(n.additionalCriterias)},e.getQueryData=function(t,n){var o={query:JSON.stringify({criteria:e.getCriterias(t),sort_on:e.options.sort_on,sort_order:e.options.sort_order}),attributes:JSON.stringify(e.options.attributes)};return n&&(o.batch=JSON.stringify(e.getBatch(n))),o},e.getUrl=function(){var t=e.options.vocabularyUrl;return-1===t.indexOf("?")?t+="?":t+="&",t+r().param(e.getQueryData())},e.selectAjax=function(){return{url:e.options.vocabularyUrl,dataType:"JSON",quietMillis:100,data:function(t,n){return e.getQueryData(t,n)},results:function(t,e){var n=10*en.abort(),5e3);const r=await fetch(`${e}/${t}`,{signal:n.signal});o=await r.text()}catch(n){i.warn(`Loading icon "${t}" from URL ${e} failed.`),console.warn(n)}}if(!o){t=e;try{n.e(7202).then(n.bind(n,7202));const e=await n.e(66298).then(n.t.bind(n,66298,19)),r=e[t]?.split?.("/");r[0].includes("bootstrap-icons")&&(o=await n(59145)(`./${r[1]}`),o=o?.default)}catch(t){i.warn(`Loading icon "${e}" failed from fallback.`),console.warn(t)}}return o}()),i.debug(`Loading icon "${e}"`)),await d.get(o)},setId:function(t,e){void 0===e&&(e="id");var n=t.attr("id");return n=void 0===n?s(e):n.replace(/\./g,"-"),t.attr("id",n),n},storage:c}},71553:function(t,e,n){n.d(e,{A:function(){return u}});var o=n(2511),r=n.n(o),i=n(59329),a=n(23505),s={getOptions(t,e,n){n=n||{},0===t.length||r().nodeName(t[0],"body")||(n=this.getOptions(t.parent(),e,n));let o={};if(0!==t.length&&(o=t.data("pat-"+e),o&&"string"==typeof o)){const t={};r().each(o.split(";"),function(e,n){(n=n.split(":")).reverse();let o=n.pop();o=o.replace(/^\s+|\s+$/g,""),n.reverse();let r=n.join(":");r=r.replace(/^\s+|\s+$/g,""),t[o]=r}),o=t}return r().extend(!0,{},n,o)}};const l=a.A.getLogger("Patternslib Base"),c=function(t,e,n){t.jquery||(t=r()(t));const o=this.prototype.name,l=a.A.getLogger(`pat.${o}`);let c=t.data(`pattern-${o}`);if(void 0===c&&i.A.patterns[o])try{t.data(`pattern-${o}`,"initializing"),e="mockup"===this.prototype.parser?s.getOptions(t,o,e):e,c=new i.A.patterns[o](t,e,n)}catch(t){l.error(`Failed while initializing ${o} pattern.`,t)}return c},d=async function(t,e,n){t?.jquery&&0===t.length||!t?l.warn("No element given to pattern."):(t.jquery||(t=r()(t)),this.$el=t,this.el=t[0],this.options=r().extend(!0,{},this.defaults||{},e||{}),this.emit("pre-init"),await this.init(t,e,n),this.$el.data(`pattern-${this.name}`,this),this.el[`pattern-${this.name}`]=this,this.emit("init"))};d.prototype={constructor:d,on(t,e){this.$el.on(`${t}.${this.name}.patterns`,e)},one(t,e){this.$el.one(`${t}.${this.name}.patterns`,e)},emit(t,e){void 0===e&&(e=[]),this.$el.trigger(`${t}.${this.name}.patterns`,e)}},d.extend=function(t){const e=this;let n;if(!t)throw new Error("Pattern configuration properties required when calling Base.extend");n=Object.hasOwnProperty.call(t,"constructor")?t.constructor:function(){e.apply(this,arguments)},n.extend=d.extend,n.init=c,n.jquery_plugin=!0,n.trigger=t.trigger,n.parser=t?.parser||null;var o=function(){this.constructor=n};return o.prototype=e.prototype,n.prototype=new o,r().extend(!0,n.prototype,t),n.__super__=e.prototype,t.name?t.trigger?!1!==t.autoregister&&i.A.register(n,t.name):l.warn(`The pattern ${t.name} does not have a trigger attribute, it will not be registered.`):l.warn("This pattern without a name attribute will not be registered!"),n};var u=d},97049:function(t,e,n){n.d(e,{A:function(){return G}});var o=n(2511),r=n.n(o);r().fn.safeClone=function(){return this.clone()},Array.prototype.forEach||(Array.prototype.forEach=function(t,e){var n,o;if(null===this)throw new TypeError(" this is null or not defined");var r=Object(this),i=r.length>>>0;if("function"!=typeof t)throw new TypeError(t+" is not a function");for(arguments.length>1&&(n=e),o=0;o0===t)&&(e?o.top<=0+n&&o.bottom>=0+n:o.top>=0&&o.left>=0&&o.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&o.right<=(window.innerWidth||document.documentElement.clientWidth))}var d={jqueryPlugin:function(t){return function(e,n){return 0===this.length?this:("object"==typeof e&&(n=e,e=void 0),"function"==typeof t?i.call(this,t,e,n):a.call(this,t,e,n))}},escapeRegExp:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isObject:s,extend:function(t){if(!s(t))return t;for(var e,n,o=1,r=arguments.length;o!n.test(t));o.length?e.setAttribute("class",o.join(" ")):e.removeAttribute("class")}}},hideOrShow:(t,e,n,o)=>{t=k.toNodeArray(t);const i={none:{hide:"hide",show:"show"},fade:{hide:"fadeOut",show:"fadeIn"},slide:{hide:"slideUp",show:"slideDown"}},a="css"===n.transition||"none"===n.transition?null:n.effect.duration,s=t=>{t.classList.remove("in-progress"),t.classList.add(e?"visible":"hidden"),r()(t).trigger("pat-update",{pattern:o,action:"attribute-changed",dom:t,transition:"complete"})};for(const l of t)if(l.classList.remove("visible"),l.classList.remove("hidden"),l.classList.remove("in-progress"),a){const t=i[n.transition];l.classList.add("in-progress"),r()(l).trigger("pat-update",{pattern:o,action:"attribute-changed",dom:l,transition:"start"}),r()(l)[e?t.show:t.hide]({duration:a,easing:n.effect.easing,complete:()=>s(l)})}else"css"!==n.transition&&k[e?"show":"hide"](l),s(l)},addURLQueryParameter:function(t,e,n){var o=new RegExp("(\\?|\\&)"+e+"=.*?(?=(&|$))"),r=t.toString().split("#"),i=r[0],a=r[1],s=i;return s=o.test(i)?i.replace(o,"$1"+e+"="+n):/\?.+$/.test(i)?i+"&"+e+"="+n:i+"?"+e+"="+n,a&&(s+="#"+a),s},removeDuplicateObjects:function(t){const e=function(t,e){return this[t]===e};return t.reduce(function(t,n){let o=!1;for(const r of t)o=Object.keys(r).length===Object.keys(n).length&&0===Object.entries(r).filter(t=>!e.bind(n)(t[0],t[1])).length;return o||t.push(n),t},[])},mergeStack:function(t,e){const n=[];for(let t=0;tt?t:i])}return n},isElementInViewport:c,hasValue:function(t){return"INPUT"===t.tagName?"checkbox"===t.type||"radio"===t.type?t.checked:""!==t.value:"SELECT"===t.tagName?-1!==t.selectedIndex:"TEXTAREA"===t.tagName&&""!==t.value},parseTime:function(t){var e=/^(\d+(?:\.\d+)?)\s*(\w*)/.exec(t);if(!e)throw new Error("Invalid time");var n=parseFloat(e[1]);switch(e[2]){case"s":return Math.round(1e3*n);case"m":return Math.round(1e3*n*60);default:return Math.round(n)}},parseLength:function(t,e=null){const n=/^(\d+(?:\.\d+)?)\s*(\%?\w*)/.exec(t);if(!n)throw new Error("Invalid length");const o=parseFloat(n[1]);switch(n[2]){case"px":default:return Math.round(o);case"%":return e?e/100*Math.round(o):0;case"vw":return Math.round(o*window.innerWidth/100);case"vh":return Math.round(o*window.innerHeight/100);case"vmin":return Math.round(o*Math.min(window.innerWidth,window.innerHeight)/100);case"vmax":return Math.round(o*Math.max(window.innerWidth,window.innerHeight)/100)}},findRelatives:function(t){var e=r()(t),n=r()(t),o=r()();if(n=(n=n.add(e.closest("label"))).add(e.closest("fieldset")),t.id&&(o=r()("label[for='"+t.id+"']")),!o.length){var i=e.closest("form");i.length||(i=r()(document.body)),o=i.find("label[for='"+t.name+"']")}return n=n.add(o)},get_bounds:function(t){const e=t.getBoundingClientRect();return{x:parseInt(Math.round(e.x),10)||0,y:parseInt(Math.round(e.y),10)||0,top:parseInt(Math.round(e.top),10)||0,bottom:parseInt(Math.round(e.bottom),10)||0,left:parseInt(Math.round(e.left),10)||0,right:parseInt(Math.round(e.right),10)||0,width:parseInt(Math.round(e.width),10)||0,height:parseInt(Math.round(e.height),10)||0}},checkInputSupport:function(t,e){let n=!1;const o=document.createElement("input");return o.setAttribute("type",t),n=o.type==t,void 0!==e&&(o.setAttribute("value",e),n=o.value!==e),n},checkCSSFeature:(t,e,n="div")=>{let o=void 0!==(n=document.createElement(n)).style[t];return o&&void 0!==e&&(n.style[t]=e,o=n.style[t]===e),o},animation_frame:()=>new Promise(window.requestAnimationFrame),timeout:t=>new Promise(e=>setTimeout(e,t)),debounce:(t,e,n={timer:null},o=!0)=>(n.last_run=0,function(){const r=arguments;!o&&n.timer&&Date.now()-n.last_run<=e||(clearTimeout(n.timer),n.last_run=Date.now(),n.timer=setTimeout(()=>{t.apply(this,r)},e))}),isIE:()=>!!document.documentMode,jqToNode:t=>(t.jquery&&(t=t[0]),t),ensureArray:(t,e)=>!!(NodeList.prototype.isPrototypeOf(t)||Array.isArray(t)||t.jquery)?e?[...t]:t:[t],localized_isodate:t=>{const e=t.getDate().toString().padStart(2,"0"),n=(t.getMonth()+1).toString().padStart(2,"0");return`${t.getFullYear().toString()}-${n}-${e}`},escape_html:t=>{if(!t)return"";const e=document.createElement("div");return e.appendChild(document.createTextNode(t)),e.innerHTML.replace(/"/g,""")},unescape_html:t=>{if(!t)return"";return(new DOMParser).parseFromString(t,"text/html").documentElement.textContent.replace(/"/g,'"')},is_iso_date_time:(t,e=!1)=>(e?/^\d{4}-[01]\d-[0-3]\d(T[0-2]\d:[0-5]\d)?$/:/^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d$/).test(t),is_iso_date:t=>/^\d{4}-[01]\d-[0-3]\d$/.test(t),date_diff:(t,e)=>{const n=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),o=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate());return Math.floor((n-o)/864e5)},threshold_list:(t=0)=>{let e=[];for(let n=1;n<=t;n++)e.push(n/t);return e.push(0),e.sort()},is_option_truthy:t=>![void 0,null,"none",!1,"false",""].includes(t),elementInViewport:t=>(console.warn("Deprecated. Use utils.isElementInViewport"),c(t))},u=d;const p=new Map,f=(t,e)=>{const n=t?[t]:p.keys();for(const t of n){if(!t?.removeEventListener)return;const n=p.get(t);if(!n)return;let o;o=e?[...n.entries()].filter(t=>u.regexp_from_wildcard(e).test(t[0])):n.entries();for(const e of o||[])t.removeEventListener(e[1][0],e[1][1],e[1][2]),p.get(t).delete(e[0]),p.get(t).size||p.delete(t)}};class h extends CustomEvent{constructor(t){super("pat-update",{bubbles:!0,cancelable:!0,detail:t})}}var g={add_event_listener:(t,e,n,o,r={})=>{if(!t?.addEventListener)return;f(t,n),p.has(t)||p.set(t,new Map);let i=o;!0===r?.once&&(i=e=>{p.get(t)?.delete(n),o(e)}),p.get(t).set(n,[e,i,r.capture?r:void 0]),t.addEventListener(e,i,r)},remove_event_listener:f,await_event:(t,e)=>new Promise(n=>t.addEventListener(e,n,{once:!0})),await_pattern_init:t=>new Promise((e,n)=>{t.one("init",n=>{n.target===t.el&&(f(t.el,`basepattern-one--not-init.${t.name}.patterns`),e())}),t.one("not-init",e=>{e.target===t.el&&(f(t.el,`basepattern-one--init.${t.name}.patterns`),n())})}).catch(()=>{throw new Error(`Pattern "${t.name}" not initialized.`)}),generic_event:t=>new Event(t,{bubbles:!0,cancelable:!0}),update_event:t=>new h(t),blur_event:()=>new Event("blur",{bubbles:!1,cancelable:!1}),click_event:()=>new Event("click",{bubbles:!0,cancelable:!0}),change_event:()=>new Event("change",{bubbles:!0,cancelable:!1}),focus_event:()=>new Event("focus",{bubbles:!1,cancelable:!1}),input_event:()=>new Event("input",{bubbles:!0,cancelable:!1}),mousedown_event:()=>new Event("mousedown",{bubbles:!0,cancelable:!0}),mouseup_event:()=>new Event("mouseup",{bubbles:!0,cancelable:!0}),scroll_event:()=>new Event("scroll",{bubbles:!0,cancelable:!1}),submit_event:({submitter:t}={submitter:void 0})=>{const e=new Event("submit",{bubbles:!0,cancelable:!0});return e.submitter=t,e},dragstart_event:()=>new Event("dragstart",{bubbles:!0,cancelable:!0}),dragend_event:()=>new Event("dragend",{bubbles:!0,cancelable:!0})},m=n(22819);var b=()=>{let t;if(window.crypto.randomUUID)t=window.crypto.randomUUID();else{const e=new Uint32Array(4);t=window.crypto.getRandomValues(e).join("")}return t};const v=m.A.getLogger("core dom"),w="__patternslib__data_prefix__",y="__patternslib__style__display",_="input, select, textarea, button",$=(t,e)=>{if(!t||!t.querySelectorAll)return[];const n=[...t.querySelectorAll(e)];return t.matches(e)&&n.unshift(t),n};function x(t,e,n=!1,o=!1){let r=window.getComputedStyle(t).getPropertyValue(e);return(n||o)&&(r=parseFloat(r)||0),n&&!o&&(r=parseInt(Math.round(r),10)),r}const A=(t,e=document.body)=>{e===window&&(e=document.body);const n=Math.abs(t.getBoundingClientRect().left+e.scrollLeft-e.getBoundingClientRect().left-O.get_css_value(e,"border-left-width",!0));return{top:Math.abs(t.getBoundingClientRect().top+e.scrollTop-e.getBoundingClientRect().top-O.get_css_value(e,"border-top-width",!0)),left:n}},E=(t,e,n)=>t[`${w}${e}`]||n,M=(t,e,n)=>{t[`${w}${e}`]=n},O={document_ready:t=>{const e=b(),n=()=>{"loading"!==document.readyState&&(g.remove_event_listener(document,e),setTimeout(t,1))};g.add_event_listener(document,"readystatechange",e,n),n()},toNodeArray:t=>(t.jquery||t instanceof NodeList?t=[...t]:t instanceof Array==!1&&(t=[t]),t),querySelectorAllAndMe:$,wrap:(t,e)=>{t.parentNode.insertBefore(e,t),e.appendChild(t)},hide:t=>{"none"!==t.style.display&&(t.style.display&&(t[y]=t.style.display),t.style.display="none")},show:t=>{const e=t[y]||null;t.style.display=e,delete t[y]},find_inputs:t=>$(t,_),find_parents:(t,e)=>{const n=[];let o=t;for(;o;)o=o.parentNode?.closest?.(e),o&&n.push(o);return n},find_scoped:(t,e)=>(0===e.indexOf("#")?document:t).querySelectorAll(e),get_parents:t=>{const e=[];let n=t?.parentNode;for(;n;)e.push(n),n=n?.parentNode,n=n instanceof HTMLElement?n:null;return e},acquire_attribute:(t,e,n=!1,o=!1)=>{let r=t;const i=[];for(;r;){const t=r.getAttribute(e);if(t||n&&""===t){if(!o)return t;i.push(t)}r=r.parentElement}if(o)return i},is_visible:t=>t.offsetWidth>0&&t.offsetHeight>0,is_input:t=>/^(?:input|select|textarea|button)$/i.test(t.nodeName),is_button:t=>t.matches("\n button,\n input[type=image],\n input[type=button],\n input[type=reset],\n input[type=submit]\n "),create_from_string:t=>document.createRange().createContextualFragment(t.trim()),get_css_value:x,find_scroll_container:(t,e,n=document.body)=>{for(;t&&t!==document.body;){if(!e||"y"===e){let e=x(t,"overflow-y");if(["auto","scroll"].includes(e))return t}if(!e||"x"===e){let e=x(t,"overflow-x");if(["auto","scroll"].includes(e))return t}t=t.parentElement}return n},get_scroll_x:t=>void 0!==t.scrollLeft?t.scrollLeft:t.scrollX,get_scroll_y:t=>void 0!==t.scrollTop?t.scrollTop:t.scrollY,get_relative_position:A,scroll_to_element:(t,e,n=0,o="top")=>{const r=A(t,e),i={behavior:"auto"};"top"!==o&&"both"!==o||(i.top=r.top-n),"left"!==o&&"both"!==o||(i.left=r.left-n),e.scrollTo(i)},scroll_to_top:(t=document.body,e=0)=>{t.scrollTo({top:0-e,behavior:"auto"})},scroll_to_bottom:(t=document.body,e=0)=>{const n=(t===window?document.body:t).scrollHeight;t.scrollTo({top:n-e,behavior:"auto"})},get_data:E,set_data:M,delete_data:(t,e)=>{delete t[`${w}${e}`]},template:(t,e={})=>(v.warn("Using dom.template is not recommended due to a problem with Content-Security-Policy."),new Function("return `"+t+"`;").call(e)),get_visible_ratio:(t,e)=>{if(!t)return 0;const n=t.getBoundingClientRect(),o=e!==window?e.getBoundingClientRect():{top:0,bottom:window.innerHeight};let r=0;if(n.topo.top){const t=n.bottom-n.top;r=(Math.min(n.bottom,o.bottom)-Math.max(n.top,o.top))/t}return r},escape_css_id:t=>`#${CSS.escape(t.split("#")[1])}`,element_uuid:t=>(E(t,"uuid",!1)||M(t,"uuid",b()),E(t,"uuid")),find_form:t=>t.closest(".pat-subform")||t.form||t.querySelector(_)?.form||t.closest("form")};var k=O;const N=m.A.getLogger("registry"),C=/patterns-disable=([^&]+)/g,L=/patterns-dont-catch/g,S={};let T,j=!1;for(;null!==(T=C.exec(window.location.search));)S[T[1]]=!0,N.info("Pattern disabled via url config:",T[1]);for(;null!==(T=L.exec(window.location.search));)j=!0,N.info("I will not catch init exceptions");void 0===window.__patternslib_registry&&(window.__patternslib_registry={});const I=window.__patternslib_registry;void 0===window.__patternslib_registry_initialized&&(window.__patternslib_registry_initialized=!1);const P={patterns:I,init(){k.document_ready(()=>{window.__patternslib_registry_initialized||(window.__patternslib_registry_initialized=!0,N.debug("Loaded: "+Object.keys(P.patterns).sort().join(", ")),P.scan(document.body),N.debug("Finished initial scan."))})},clear(){for(const t in P.patterns)delete P.patterns[t]},transformPattern(t,e){if(S[t])return void N.debug(`Skipping disabled pattern: ${t}.`);const n=P.patterns[t],o=n.transform||n.prototype?.transform;if(o)try{o(r()(e))}catch(e){if(j)throw e;N.error(`Transform error for pattern ${t}.`,e)}},initPattern(t,e,n){const o=r()(e),i=P.patterns[t],a=m.A.getLogger(`pat.${t}`);if(e.matches(i.trigger)){a.debug("Initialising.",e);try{i.init?i.init(o,null,n):new i(o,null,n),a.debug("done.")}catch(t){if(j)throw t;a.error("Caught error:",t)}}},orderPatterns(t){return t.includes("validation")&&(t.splice(t.indexOf("validation"),1),t.unshift("validation")),t.includes("clone-code")&&(t.splice(t.indexOf("clone-code"),1),t.unshift("clone-code")),t},scan(t,e,n){if(!t)return;if("string"==typeof t)t=document.querySelector(t);else{if(t instanceof Text)return;t.jquery&&(t=t[0])}const o=[];e=this.orderPatterns(e||Object.keys(P.patterns));for(const n of e){this.transformPattern(n,t);const e=P.patterns[n];e.trigger&&o.unshift(e.trigger)}const r=o.map(t=>t.trim().replace(/,$/,"")).join(",");if(!r)return;let i=k.querySelectorAllAndMe(t,r);i=i.filter(t=>!t?.closest?.(".disable-patterns")&&!t?.parentNode?.closest?.("pre")&&!t?.closest?.(".cant-touch-this"));for(const t of i.reverse())for(const o of e)this.initPattern(o,t,n);document.body.classList.add("patterns-loaded")},register(t,e){if(!(e=e||t.name))return N.error("Pattern lacks a name.",t),!1;let n=window.__patternslib_patterns_blacklist;if(Array.isArray(n)||(n=[]),n.includes(e))return N.warn(`Pattern name ${e} is blacklisted.`),!1;if(P.patterns[e])return N.debug(`Already have a pattern called ${e}.`),!1;if(P.patterns[e]=t,t.jquery_plugin){const n=("pat-"+e).replace(/-([a-zA-Z])/g,function(t,e){return e.toUpperCase()});r().fn[n]=u.jqueryPlugin(t),r().fn[n.replace(/^pat/,"pattern")]=r().fn[n]}return N.debug(`Registered pattern ${e}`,t),window.__patternslib_registry_initialized&&(P.scan(document.body,[e]),N.debug(`Re-scanned dom with newly registered pattern ${e}.`)),!0}};var F=P,U={getOptions(t,e,n){n=n||{},0===t.length||r().nodeName(t[0],"body")||(n=this.getOptions(t.parent(),e,n));let o={};if(0!==t.length&&(o=t.data("pat-"+e),o&&"string"==typeof o)){const t={};r().each(o.split(";"),function(e,n){(n=n.split(":")).reverse();let o=n.pop();o=o.replace(/^\s+|\s+$/g,""),n.reverse();let r=n.join(":");r=r.replace(/^\s+|\s+$/g,""),t[o]=r}),o=t}return r().extend(!0,{},n,o)}};const R=m.A.getLogger("Patternslib Base"),D=function(t,e,n){t.jquery||(t=r()(t));const o=this.prototype.name,i=m.A.getLogger(`pat.${o}`);let a=t.data(`pattern-${o}`);if(void 0===a&&F.patterns[o])try{t.data(`pattern-${o}`,"initializing"),e="mockup"===this.prototype.parser?U.getOptions(t,o,e):e,a=new F.patterns[o](t,e,n)}catch(t){i.error(`Failed while initializing ${o} pattern.`,t)}return a},q=async function(t,e,n){t?.jquery&&0===t.length||!t?R.warn("No element given to pattern."):(t.jquery||(t=r()(t)),this.$el=t,this.el=t[0],this.options=r().extend(!0,{},this.defaults||{},e||{}),this.emit("pre-init"),await this.init(t,e,n),this.$el.data(`pattern-${this.name}`,this),this.el[`pattern-${this.name}`]=this,this.emit("init"))};q.prototype={constructor:q,on(t,e){this.$el.on(`${t}.${this.name}.patterns`,e)},one(t,e){this.$el.one(`${t}.${this.name}.patterns`,e)},emit(t,e){void 0===e&&(e=[]),this.$el.trigger(`${t}.${this.name}.patterns`,e)}},q.extend=function(t){const e=this;let n;if(!t)throw new Error("Pattern configuration properties required when calling Base.extend");n=Object.hasOwnProperty.call(t,"constructor")?t.constructor:function(){e.apply(this,arguments)},n.extend=q.extend,n.init=D,n.jquery_plugin=!0,n.trigger=t.trigger,n.parser=t?.parser||null;var o=function(){this.constructor=n};return o.prototype=e.prototype,n.prototype=new o,r().extend(!0,n.prototype,t),n.__super__=e.prototype,t.name?t.trigger?!1!==t.autoregister&&F.register(n,t.name):R.warn(`The pattern ${t.name} does not have a trigger attribute, it will not be registered.`):R.warn("This pattern without a name attribute will not be registered!"),n};var B=q,z=n(40705),W=n.n(z),H=B.extend({name:"backdrop",trigger:".pat-backdrop",parser:"mockup",defaults:{zIndex:null,opacity:.8,className:"plone-backdrop",classActiveName:"plone-backdrop-active",closeOnEsc:!0,closeOnClick:!0},init:function(){var t=this;t.$backdrop=r()("> ."+t.options.className,t.$el),0===t.$backdrop.length&&(t.$backdrop=r()("
").hide().appendTo(t.$el).addClass(t.options.className),null!==t.options.zIndex&&t.$backdrop.css("z-index",t.options.zIndex)),!0===t.options.closeOnEsc&&r()(document).on("keydown",function(e,n){t.$el.is("."+t.options.classActiveName)&&27===e.keyCode&&t.hide()}),!0===t.options.closeOnClick&&t.$backdrop.on("click",function(){t.$el.is("."+t.options.classActiveName)&&t.hide()})},show:function(){var t=this;t.$el.hasClass(t.options.classActiveName)||(t.emit("show"),t.$backdrop.css("opacity","0").show(),t.$el.addClass(t.options.classActiveName),t.$backdrop.animate({opacity:t.options.opacity},500),t.emit("shown"))},hide:function(){var t=this;t.$el.hasClass(t.options.classActiveName)&&(t.emit("hide"),t.$backdrop.animate({opacity:"0"},500).hide(),t.$el.removeClass(t.options.classActiveName),t.emit("hidden"))}}),J=n(59994);var Q=function(){var t=this;t.baseUrl=r()("body").attr("data-i18ncatalogurl"),t.currentLanguage=r()("html").attr("lang")||"en",t.storage=null,t.catalogs={},t.ttl=864e5,Date.now||(Date.now=function(){return(new Date).valueOf()});try{"localStorage"in window&&null!==window.localStorage&&"JSON"in window&&null!==window.JSON&&(t.storage=window.localStorage)}catch{console.log("Failed to set local storage")}t.configure=function(e){for(var n in e)t[n]=e[n]},t._setCatalog=function(e,n,o){e in t.catalogs||(t.catalogs[e]={}),t.catalogs[e][n]=o},t._storeCatalog=function(e,n,o){var r=e+"-"+n;null!==t.storage&&null!==o&&(t.storage.setItem(r,JSON.stringify(o)),t.storage.setItem(r+"-updated",Date.now()))},t.getUrl=function(e,n){return t.baseUrl+"?domain="+e+"&language="+n},t.loadCatalog=function(e,n){if(void 0===n&&(n=t.currentLanguage),null!==t.storage){var o=e+"-"+n;if(o in t.storage&&Date.now()-parseInt(t.storage.getItem(o+"-updated"),10) input[type="submit"], .formControls > button',content:"#content",automaticallyAddButtonActions:!0,loadLinksWithinModal:!0,prependContent:".portalMessage",onRender:null,templateOptions:{className:"modal fade",classDialog:"modal-dialog",classModal:"modal-content",classHeaderName:"modal-header",classBodyName:"modal-body",classFooterName:"modal-footer",classWrapperName:"modal-wrapper",classWrapperInnerName:"modal-wrapper-inner",classActiveName:"show",classPrependName:"",classContentName:"",template:'
'},actions:{},actionOptions:{eventType:"click",disableAjaxFormSubmit:!1,target:null,ajaxUrl:null,modalFunction:null,isForm:!1,timeout:5e3,displayInModal:!0,reloadWindowOnClose:!0,error:".portalMessage.error, .alert-danger",formFieldError:".field.error",onSuccess:null,onError:null,onFormError:null,onTimeout:null,redirectOnResponse:!1,redirectToUrl:function(t,e){var n;return(n=/1||(n=/1?n[1].split('"')[0]:(n=/1?n[1]:""}},form:function(t){var e=this,n=e.$modal;e.options.automaticallyAddButtonActions&&(t[e.options.buttons]={}),t.a={},r().each(t,function(t,o){var i=W().union(W().keys(e.options.actionOptions),["templateOptions"]),a=r().extend(!0,{},e.options.actionOptions,W().pick(o,i));o.templateOptions=r().extend(!0,o.templateOptions,e.options.templateOptions);var s=W().union(W().keys(e.options.actionOptions),["actions","actionOptions"]),l=r().extend(!0,W().omit(o,s),e.options);r()(t,r()("."+o.templateOptions.classBodyName,n)).each(function(){var t=r()(this);t.on(a.eventType,function(n){n.stopPropagation(),n.preventDefault(),e.loading.show(!1),null!==a.modalFunction?e[a.modalFunction]():r().nodeName(t[0],"input")||r().nodeName(t[0],"button")||!0===o.isForm?e.options.handleFormAction.apply(e,[t,a,l]):(null!==o.ajaxUrl||r().nodeName(t[0],"a"))&&e.options.handleLinkAction.apply(e,[t,a,l])})})})},handleFormAction:function(t,e,n){var o,i,a=this,s={};if(s[t.attr("name")]=t.attr("value"),o=r().nodeName(t[0],"form")?t:t.parents("form:not(.disableAutoSubmit)"),i=null!==e.ajaxUrl?"function"==typeof e.ajaxUrl?e.ajaxUrl.apply(a,[t,e]):e.ajaxUrl:t.parents("form").attr("action"),e.disableAjaxFormSubmit)return t.attr("name")&&t.attr("value")&&o.append(r()('')),void o.trigger("submit");o.on("submit",function(t){t.preventDefault()}),o.trigger("submit"),a.loading.show(!1),o.ajaxSubmit({timeout:e.timeout,data:s,url:i,error:function(t,n,o){a.loading.hide(),"timeout"===n&&e.onTimeout?e.onTimeout.apply(a,t,o):e.onError?"string"==typeof e.onError?window[e.onError](t,n,o):e.onError(t,n,o):console.log("error happened",n," do something"),a.emit("formActionError",[t,n,o])},success:function(o,i,s,l){a.loading.hide(),0===r()(e.error,o).length&&0===r()(e.formFieldError,o).length?!0!==e.redirectOnResponse?(e.onSuccess&&("string"==typeof e.onSuccess?window[e.onSuccess](a,o,i,s,l):e.onSuccess(a,o,i,s,l)),!0===e.displayInModal?a.redraw(o,n):(t.trigger("destroy.plone-modal.patterns"),e.reloadWindowOnClose&&a.reloadWindow()),a.emit("formActionSuccess",[o,i,s,l])):"function"==typeof e.redirectToUrl?window.parent.location.href=e.redirectToUrl.apply(a,[t,o,e]):window.parent.location.href=e.redirectToUrl:e.onFormError?"string"==typeof e.onFormError?window[e.onFormError](a,o,i,s,l):e.onFormError(a,o,i,s,l):a.redraw(o,n)}})},handleLinkAction:function(t,e,n){var o,i=this;t.hasClass("pat-plone-modal")||(o=e.ajaxUrl?"function"==typeof e.ajaxUrl?e.ajaxUrl.apply(i,[t,e]):e.ajaxUrl:t.attr("href"),!1!==e.displayInModal?r().ajax({url:o}).fail(function(t,n,o){"timeout"===n&&e.onTimeout?e.onTimeout(i.$modal,t,o):e.onError?e.onError(t,n,o):window.alert(Y("There was an error loading modal.")),i.emit("linkActionError",[t,n,o])}).done(function(t,o,r){i.redraw(t,n),e.onSuccess&&("string"==typeof e.onSuccess?window[e.onSuccess](i,t,o,r):e.onSuccess(i,t,o,r)),i.emit("linkActionSuccess",[t,o,r])}).always(function(){i.loading.hide()}):"_blank"===t.attr("target")?(window.open(o,"_blank"),i.loading.hide()):window.location=o)},render:function(t){var e=this;if(e.emit("before-render"),e.$raw){var n=e.$raw.clone(),o={title:"",prepend:"
",content:"",modalSizeClass:t.modalSizeClass,buttons:'
',options:t.templateOptions,closeButtonLabel:Y("Close")};if(null===t.title){var i=r()(t.titleSelector,n);o.title=i.html(),r()(t.titleSelector,n).remove()}else o.title=t.title;t.prependContent&&(o.prepend=r()("
").append(r()(t.prependContent,n).clone()).html(),r()(t.prependContent,n).remove()),t.content?o.content=r()(t.content,n).html():o.content=n.html(),e.$modal=r()(W().template(e.options.templateOptions.template)(o)),e.$modalDialog=r()("> ."+e.options.templateOptions.classDialog,e.$modal),e.$modalContent=r()("> ."+e.options.templateOptions.classModal,e.$modalDialog),r()("form",e.$modal).on("keydown",function(t){"Enter"===t.key&&"TEXTAREA"!==t.target.nodeName&&(t.preventDefault(),r()("input[type=submit], button[type=submit], button:not(type)",this).eq(0).trigger("click"))}),r()(t.buttons,e.$modal).each(function(){var t=r()(this);t.on("click",function(t){t.stopPropagation(),t.preventDefault()}).clone().appendTo(r()(".pattern-modal-buttons",e.$modal)).off("click").on("click",function(e){e.stopPropagation(),e.preventDefault(),t.trigger("click")}),t.hide()}),e.emit("before-events-setup"),e.$modal[0].querySelectorAll('.modal-header > .modal-close,\n .modal-footer > .pattern-modal-buttons > .modal-close,\n .modal-footer [name="form.buttons.Cancel" i]').forEach(t=>{r()(t).off("click").on("click",t=>{t.stopPropagation(),t.preventDefault(),r()(t.target).trigger("destroy.plone-modal.patterns")})}),t.form&&t.form.apply(e,[t.actions]),e.$modal.addClass(e.options.templateOptions.className).on("destroy.plone-modal.patterns",function(t){t.stopPropagation(),e.hide()}).on("resize.plone-modal.patterns",function(t){t.stopPropagation(),t.preventDefault(),e.positionModal()}).appendTo(e.$wrapperInner),e.options.loadLinksWithinModal&&e.$modal.on("click",function(t){t.stopPropagation(),r().nodeName(t.target,"a")&&t.preventDefault(),e.$modal.trigger("modal-click")}),e.$modal.data("pattern-"+e.name,e),e.emit("after-render"),t.onRender&&("string"==typeof t.onRender?window[t.onRender](e):t.onRender(e))}}},reloadWindow:function(){window.parent.location.reload()},init:function(){n.e(73530).then(n.bind(n,73530));var t=this;t.options.loadLinksWithinModal=r().parseJSON(t.options.loadLinksWithinModal),!0===t.options.backdropOptions.closeOnEsc&&r()(document).on("keydown",function(e){t.$el.is("."+t.options.templateOptions.classActiveName)&&"Esc"===e.key&&t.hide()}),r()(window.parent).resize(function(){t.positionModal()}),t.options.triggers&&r().each(t.options.triggers,function(e,n){var o=n.substring(0,n.indexOf(" ")),i=n.substring(n.indexOf(" "),n.length);r()(i||t.$el).on(o,function(e){e.stopPropagation(),e.preventDefault(),t.show()})}),t.$el.is("a")&&(t.$el.attr("href")&&!t.options.image&&(!t.options.target&&"#"===t.$el.attr("href").substr(0,1)&&t.$el.attr("href").length>1&&(t.options.target=t.$el.attr("href"),t.options.content=""),t.options.ajaxUrl||"#"===t.$el.attr("href").substr(0,1)||(t.options.ajaxUrl=function(){return t.$el.attr("href")})),t.$el.on("click",function(e){e.stopPropagation(),e.preventDefault(),t.show()})),t.initModal()},createAjaxModal:function(){var t=this;t.emit("before-ajax"),t.loading.show();var e=t.options.ajaxUrl;"function"==typeof e&&(e=e.apply(t,[t.options])),t.ajaxXHR=r().ajax({url:e,type:t.options.ajaxType}).done(function(e,n,o){t.ajaxXHR=void 0,t.$raw=r()("
").append(r()(J.A.parseBodyTag(e))),t.emit("after-ajax",t,n,o),t._show()}).fail(function(e,n,o){var r=t.options.actionOptions;"timeout"===n&&r.onTimeout?r.onTimeout(t.$modal,e,o):r.onError?r.onError(e,n,o):(window.alert(Y("There was an error loading modal.")),t.hide()),t.emit("linkActionError",[e,n,o])}).always(function(){t.loading.hide()})},createTargetModal:function(){var t=this;t.$raw=r()(t.options.target).clone(),t._show()},createBasicModal:function(){var t=this;t.$raw=r()("
").html(t.$el.clone()),t._show()},createHtmlModal:function(){var t=this,e=r()(t.options.html);t.$raw=e,t._show()},createImageModal:function(){var t=this;t.$wrapper.addClass("image-modal");var e=t.$el.attr("href"),n=t.$el.attr("data-modal-srcset")||"",o=r().trim(t.$el.context.innerText)||"Image";t.$raw=r()("

"+o+'

'),t._show()},initModal:function(){var t=this;t.options.ajaxUrl?t.createModal=t.createAjaxModal:t.options.target?t.createModal=t.createTargetModal:t.options.html?t.createModal=t.createHtmlModal:t.options.image?t.createModal=t.createImageModal:t.createModal=t.createBasicModal},findPosition:function(t,e,n,o,r,i,a){var s,l,c,d,u={};return d=c=s=c="auto","left"===t?(c=n+"px",o>i&&(c="0px"),u.left=c):"right"===t?(d=n+"px",o>i&&(d="0px"),u.right=d,u.left="auto"):(c=i/2-o/2-n+"px",o>i&&(c="0px"),u.left=c),"top"===e?(s=n+"px",r>a&&(s="0px"),u.top=s):"bottom"===e?(l=n+"px",r>a&&(l="0px"),u.bottom=l,u.top="auto"):(s=a/2-r/2-n+"px",r>a&&(s="0px"),u.top=s),u},modalInitialized:function(){return null!==this.$modal&&void 0!==this.$modal},activateFocusTrap:function(){var t=this;const e=t.$modal[0];var n=e.querySelector(`.${t.options.templateOptions.classBodyName}`).querySelectorAll('select, input:not([type="hidden"]), textarea, button, a'),o=e.querySelector(`.${t.options.templateOptions.classFooterName}`).querySelectorAll('select, input:not([type="hidden"]), textarea, button, a'),r=[];for(const t of[...n,...o])k.is_visible(t)&&r.push(t);0===r.length&&(r=e.querySelectorAll(".modal-title"));var i=0!==r.length?r[0]:null,a=0!==r.length?r[r.length-1]:null,s=e.querySelector(".modal-close");e.addEventListener("keydown",t=>{if("Tab"===t.key){t.preventDefault();var e=t.target,n=r.indexOf(e);if(n>=0&&n=r.length?s.focus():r[o].focus()}else t.shiftKey&&a?a.focus():i&&i.focus()}}),!0===t.options.backdropOptions.closeOnClick&&e.addEventListener("click",e=>{e.target.closest(`.${t.options.templateOptions.classModal}`)||t.hide()}),i&&["INPUT","SELECT","TEXTAREA"].includes(i.nodeName)&&i.focus()},positionModal:function(){var t=this;if(!t.modalInitialized())return;t.$modal.removeAttr("style"),t.$wrapper.parent().is("body")&&t.$wrapper.height(r()(window.parent).height());var e="function"==typeof t.options.margin?t.options.margin():t.options.margin;let n={position:"absolute"};"0"!==e&&(n.padding=e),t.$modal.css(n),t.$modalDialog.css({width:t.options.width,height:t.options.height}),t.$modalContent.css({width:t.options.width});var o=t.options.position.split(" "),i=o[0],a=o[1],s=t.$modalDialog.outerWidth(!0),l=t.$modalDialog.outerHeight(!0),c=t.$wrapperInner.width(),d=t.$wrapperInner.height(),u=t.findPosition(i,a,e,s,l,c,d);for(var p in u)t.$modalDialog.css(p,u[p])},render:function(t){var e=this;e.emit("render"),e.options.render.apply(e,[t]),e.emit("rendered")},show:function(){var t=this;t.backdrop=t.createBackdrop(),t.createModal()},createBackdrop:function(){var t=this,e=new H(t.$el.parents(t.options.backdrop),t.options.backdropOptions),n=t.options.backdropOptions.zIndex||1041;return r()(t.options.zIndexSelector).each(function(){n=Math.max(n,parseInt(r()(this).css("zIndex"))+1||1041)}),t.$wrapper=r()("
").hide().css({"z-index":n,"overflow-y":"auto",position:"fixed",height:"100%",width:"100%",bottom:"0",left:"0",right:"0",top:"0"}).addClass(t.options.templateOptions.classWrapperName).insertBefore(e.$backdrop).on("click",function(n){t.options.backdropOptions.closeOnClick&&(n.stopPropagation(),n.preventDefault(),e.hide())}),e.on("hidden",function(){void 0!==t.$modal&&t.$modal.hasClass(t.options.templateOptions.classActiveName)&&t.hide()}),t.loading=new J.A.Loading({backdrop:e}),t.$wrapperInner=r()("
").addClass(t.options.classWrapperInnerName).css({position:"absolute",bottom:"0",left:"0",right:"0",top:"0"}).appendTo(t.$wrapper),e},_show:function(){var t=this;t.render.apply(t,[t.options]),t.emit("show"),t.backdrop.show(),t.$wrapper.show(),t.loading.hide(),t.$el.addClass(t.options.templateOptions.classActiveName),t.$modal.addClass(t.options.templateOptions.classActiveName),F.scan(t.$modal),t.positionModal(),r()(window.parent).on("resize.plone-modal.patterns",function(){t.positionModal()}),r()("body").addClass("modal-open"),t.emit("shown"),t.activateFocusTrap()},hide:function(){var t=this;t.ajaxXHR&&t.ajaxXHR.abort(),t.emit("hide"),t._suppressHide&&!window.confirm(t._suppressHide)||(t.loading.hide(),t.$el.removeClass(t.options.templateOptions.classActiveName),void 0!==t.$modal&&(t.$modal.remove(),t.initModal()),t.$wrapper.remove(),r()(".modal",r()("body")).length<1&&(t._suppressHide=void 0,t.backdrop.hide(),r()("body").removeClass("modal-open"),r()(window.parent).off("resize.plone-modal.patterns")),t.emit("hidden"),t.$el.focus())},redraw:function(t,e){var n=this;n.emit("beforeDraw"),n.$modal.remove(),n.$raw=r()("
").append(r()(J.A.parseBodyTag(t))),n.render.apply(n,[e||n.options]),n.$modal.addClass(n.options.templateOptions.classActiveName),n.positionModal(),F.scan(n.$modal),n.emit("afterDraw"),n.activateFocusTrap()}}))}}]); +//# sourceMappingURL=14393.ed1149bd11ecf6619ce4.min.js.map \ No newline at end of file diff --git a/src/plone/app/mosaic/browser/static/chunks/14393.ed1149bd11ecf6619ce4.min.js.map b/src/plone/app/mosaic/browser/static/chunks/14393.ed1149bd11ecf6619ce4.min.js.map new file mode 100644 index 000000000..72e9d05f2 --- /dev/null +++ b/src/plone/app/mosaic/browser/static/chunks/14393.ed1149bd11ecf6619ce4.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chunks/14393.ed1149bd11ecf6619ce4.min.js","mappings":"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","sources":["webpack://plone-mosaic/./node_modules/@patternslib/patternslib/src/core/utils.js","webpack://plone-mosaic/./node_modules/@plone/mockup/node_modules/@patternslib/patternslib/src/core/logging.js","webpack://plone-mosaic/./node_modules/@patternslib/patternslib/src/core/uuid.js","webpack://plone-mosaic/./node_modules/@patternslib/patternslib/src/core/dom.js","webpack://plone-mosaic/./node_modules/@patternslib/patternslib/src/core/logging.js","webpack://plone-mosaic/./node_modules/@patternslib/patternslib/src/core/events.js","webpack://plone-mosaic/./node_modules/@patternslib/patternslib/src/core/registry.js","webpack://plone-mosaic/./node_modules/@plone/mockup/src/core/utils.js","webpack://plone-mosaic/./node_modules/@patternslib/patternslib/src/core/mockup-parser.js","webpack://plone-mosaic/./node_modules/@patternslib/patternslib/src/core/base.js","webpack://plone-mosaic/./node_modules/@plone/mockup/node_modules/@patternslib/patternslib/src/core/utils.js","webpack://plone-mosaic/./node_modules/@plone/mockup/node_modules/@patternslib/patternslib/src/core/events.js","webpack://plone-mosaic/./node_modules/@plone/mockup/node_modules/@patternslib/patternslib/src/core/uuid.js","webpack://plone-mosaic/./node_modules/@plone/mockup/node_modules/@patternslib/patternslib/src/core/dom.js","webpack://plone-mosaic/./node_modules/@plone/mockup/node_modules/@patternslib/patternslib/src/core/registry.js","webpack://plone-mosaic/./node_modules/@plone/mockup/node_modules/@patternslib/patternslib/src/core/mockup-parser.js","webpack://plone-mosaic/./node_modules/@plone/mockup/node_modules/@patternslib/patternslib/src/core/base.js","webpack://plone-mosaic/./node_modules/@plone/mockup/src/pat/backdrop/backdrop.js","webpack://plone-mosaic/./node_modules/@plone/mockup/src/core/i18n.js","webpack://plone-mosaic/./node_modules/@plone/mockup/src/core/i18n-wrapper.js","webpack://plone-mosaic/./node_modules/@plone/mockup/src/pat/modal/modal.js"],"sourcesContent":["import $ from \"jquery\";\nimport dom from \"./dom\";\n\nconst _MS_PER_DAY = 1000 * 60 * 60 * 24; // Milliseconds per day.\n\n$.fn.safeClone = function () {\n var $clone = this.clone();\n return $clone;\n};\n\n// Production steps of ECMA-262, Edition 5, 15.4.4.18\n// Reference: http://es5.github.io/#x15.4.4.18\nif (!Array.prototype.forEach) {\n Array.prototype.forEach = function (callback, thisArg) {\n var T, k;\n if (this === null) {\n throw new TypeError(\" this is null or not defined\");\n }\n // 1. Let O be the result of calling ToObject passing the |this| value as the argument.\n var O = Object(this);\n // 2. Let lenValue be the result of calling the Get internal method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== \"function\") {\n throw new TypeError(callback + \" is not a function\");\n }\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n // 6. Let k be 0\n k = 0;\n // 7. Repeat, while k < len\n while (k < len) {\n var kValue;\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal method of O with argument Pk.\n kValue = O[k];\n // ii. Call the Call internal method of callback with T as the this value and\n // argument list containing kValue, k, and O.\n callback.call(T, kValue, k, O);\n }\n // d. Increase k by 1.\n k++;\n }\n // 8. return undefined\n };\n}\n\nvar singleBoundJQueryPlugin = function (pattern, method, options) {\n /* This is a jQuery plugin for patterns which are invoked ONCE FOR EACH\n * matched element in the DOM.\n *\n * This is how the Mockup-type patterns behave. They are constructor\n * functions which need to be invoked once per jQuery-wrapped DOM node\n * for all DOM nodes on which the pattern applies.\n */\n var $this = this;\n $this.each(function () {\n var pat,\n $el = $(this);\n pat = pattern.init($el, options);\n if (method) {\n if (pat[method] === undefined) {\n $.error(\n \"Method \" + method + \" does not exist on jQuery.\" + pattern.name\n );\n return false;\n }\n if (method.charAt(0) === \"_\") {\n $.error(\"Method \" + method + \" is private on jQuery.\" + pattern.name);\n return false;\n }\n pat[method].apply(pat, [options]);\n }\n });\n return $this;\n};\n\nvar pluralBoundJQueryPlugin = function (pattern, method, options) {\n /* This is a jQuery plugin for patterns which are invoked ONCE FOR ALL\n * matched elements in the DOM.\n *\n * This is how the vanilla Patternslib-type patterns behave. They are\n * simple objects with an init method and this method gets called once\n * with a list of jQuery-wrapped DOM nodes on which the pattern\n * applies.\n */\n var $this = this;\n if (method) {\n if (pattern[method]) {\n return pattern[method].apply($this, [$this].concat([options]));\n } else {\n $.error(\"Method \" + method + \" does not exist on jQuery.\" + pattern.name);\n }\n } else {\n pattern.init.apply($this, [$this].concat([options]));\n }\n return $this;\n};\n\nvar jqueryPlugin = function (pattern) {\n return function (method, options) {\n var $this = this;\n if ($this.length === 0) {\n return $this;\n }\n if (typeof method === \"object\") {\n options = method;\n method = undefined;\n }\n if (typeof pattern === \"function\") {\n return singleBoundJQueryPlugin.call(this, pattern, method, options);\n } else {\n return pluralBoundJQueryPlugin.call(this, pattern, method, options);\n }\n };\n};\n\n// Is a given variable an object?\nfunction isObject(obj) {\n var type = typeof obj;\n return type === \"function\" || (type === \"object\" && !!obj);\n}\n\n// Extend a given object with all the properties in passed-in object(s).\nfunction extend(obj) {\n if (!isObject(obj)) return obj;\n var source, prop;\n for (var i = 1, length = arguments.length; i < length; i++) {\n source = arguments[i];\n for (prop in source) {\n if (hasOwnProperty.call(source, prop)) {\n obj[prop] = source[prop];\n }\n }\n }\n return obj;\n}\n// END: Taken from Underscore.js until here.\n\nfunction findLabel(input) {\n var $label;\n for (\n var label = input.parentNode;\n label && label.nodeType !== 11;\n label = label.parentNode\n ) {\n if (label.tagName === \"LABEL\") {\n return label;\n }\n }\n if (input.id) {\n $label = $('label[for=\"' + input.id + '\"]');\n }\n if ($label && $label.length === 0 && input.form) {\n $label = $('label[for=\"' + input.name + '\"]', input.form);\n }\n if ($label && $label.length) {\n return $label[0];\n } else {\n return null;\n }\n}\n\n// Taken from http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\nfunction escapeRegExp(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n}\n\n/**\n * Create a RegExp object of a wildcard search string.\n *\n * @param {string} wildcard: A search string which can contain wildcards \"*\".\n * The wildcard \"*\" can be anywhere in the string and\n * can also be used multiple times. If no wildcard is\n * present the search string is used for an exact match.\n\n * @returns {RegExp}: A RegExp object which can be used to match strings.\n */\nfunction regexp_from_wildcard(wildcard) {\n let regexp = wildcard.replace(/[\\-\\[\\]{}()+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n regexp = regexp.replace(/[*]/g, \".*\");\n regexp = new RegExp(`^${regexp}$`);\n return regexp;\n}\n\n/**\n * Remove classes from a list of targets if they match a specific pattern.\n *\n * @param {Node, NodeList} targets: Dom Node or NodeList where the classes should be removed.\n * @param {string} classes: String matching classes to be removed.\n * You can add a \"*\" as wildcard to search for classes to be removed.\n * E.g. \"icon-*-alert\" to remove any of \"icon-1-alert icon-2-alert\".\n *\n * @returns {undefined}: This method directly operates on the targets.\n */\nfunction removeWildcardClass(targets, classes) {\n targets = utils.ensureArray(targets);\n\n if (classes.indexOf(\"*\") === -1) {\n for (const target of targets) {\n target.classList.remove(classes);\n }\n } else {\n const matcher = regexp_from_wildcard(classes);\n for (const target of targets) {\n const class_list = (target.getAttribute(\"class\") || \"\").split(/\\s+/);\n if (!class_list.length) {\n continue;\n }\n const ok = class_list.filter((it) => !matcher.test(it));\n if (ok.length) {\n target.setAttribute(\"class\", ok.join(\" \"));\n } else {\n target.removeAttribute(\"class\");\n }\n }\n }\n}\n\nfunction hasValue(el) {\n if (el.tagName === \"INPUT\") {\n if (el.type === \"checkbox\" || el.type === \"radio\") {\n return el.checked;\n }\n return el.value !== \"\";\n }\n if (el.tagName === \"SELECT\") {\n return el.selectedIndex !== -1;\n }\n if (el.tagName === \"TEXTAREA\") {\n return el.value !== \"\";\n }\n return false;\n}\n\nconst hideOrShow = (elements, visible, options, pattern_name) => {\n elements = dom.to_element_array(elements);\n\n const transitions = {\n none: { hide: \"hide\", show: \"show\" },\n fade: { hide: \"fadeOut\", show: \"fadeIn\" },\n slide: { hide: \"slideUp\", show: \"slideDown\" },\n };\n\n const duration =\n options.transition === \"css\" || options.transition === \"none\"\n ? null\n : options.effect.duration;\n\n const on_complete = (el) => {\n el.classList.remove(\"in-progress\");\n el.classList.add(visible ? \"visible\" : \"hidden\");\n $(el).trigger(\"pat-update\", {\n pattern: pattern_name,\n action: \"attribute-changed\",\n dom: el,\n transition: \"complete\",\n });\n };\n\n for (const el of elements) {\n el.classList.remove(\"visible\");\n el.classList.remove(\"hidden\");\n el.classList.remove(\"in-progress\");\n\n if (duration) {\n const t = transitions[options.transition];\n el.classList.add(\"in-progress\");\n $(el).trigger(\"pat-update\", {\n pattern: pattern_name,\n action: \"attribute-changed\",\n dom: el,\n transition: \"start\",\n });\n $(el)[visible ? t.show : t.hide]({\n duration: duration,\n easing: options.effect.easing,\n complete: () => on_complete(el),\n });\n } else {\n if (options.transition !== \"css\") {\n dom[visible ? \"show\" : \"hide\"](el);\n }\n on_complete(el);\n }\n }\n};\n\nfunction addURLQueryParameter(fullURL, param, value) {\n /* Using a positive lookahead (?=\\=) to find the given parameter,\n * preceded by a ? or &, and followed by a = with a value after\n * than (using a non-greedy selector) and then followed by\n * a & or the end of the string.\n *\n * Taken from http://stackoverflow.com/questions/7640270/adding-modify-query-string-get-variables-in-a-url-with-javascript\n */\n var val = new RegExp(\"(\\\\?|\\\\&)\" + param + \"=.*?(?=(&|$))\"),\n parts = fullURL.toString().split(\"#\"),\n url = parts[0],\n hash = parts[1],\n qstring = /\\?.+$/,\n newURL = url;\n // Check if the parameter exists\n if (val.test(url)) {\n // if it does, replace it, using the captured group\n // to determine & or ? at the beginning\n newURL = url.replace(val, \"$1\" + param + \"=\" + value);\n } else if (qstring.test(url)) {\n // otherwise, if there is a query string at all\n // add the param to the end of it\n newURL = url + \"&\" + param + \"=\" + value;\n } else {\n // if there's no query string, add one\n newURL = url + \"?\" + param + \"=\" + value;\n }\n if (hash) {\n newURL += \"#\" + hash;\n }\n return newURL;\n}\n\nfunction removeDuplicateObjects(objs) {\n /* Given an array of objects, remove any duplicate objects which might\n * be present.\n */\n const comparator = function (k, v) {\n return this[k] === v;\n };\n\n return objs.reduce(function (list, next_obj) {\n let is_duplicate = false;\n for (const obj of list) {\n is_duplicate =\n Object.keys(obj).length === Object.keys(next_obj).length &&\n Object.entries(obj).filter(\n (it) => !comparator.bind(next_obj)(it[0], it[1])\n ).length === 0;\n }\n if (!is_duplicate) {\n list.push(next_obj);\n }\n return list;\n }, []);\n}\n\nfunction mergeStack(stack, length) {\n /* Given a list of lists of objects (which for brevity we call a stack),\n * return a list of objects where each object is the merge of all the\n * corresponding original objects at that particular index.\n *\n * If a certain sub-list doesn't have an object at that particular\n * index, the last object in that list is merged.\n */\n const results = [];\n for (let i = 0; i < length; i++) {\n results.push({});\n }\n for (const frame of stack) {\n const frame_length = frame.length - 1;\n for (let x = 0; x < length; x++) {\n results[x] = $.extend(\n results[x] || {},\n frame[x > frame_length ? frame_length : x]\n );\n }\n }\n return results;\n}\n\nfunction isElementInViewport(el, partial = false, offset = 0) {\n /* returns true if element is visible to the user ie. is in the viewport.\n * Setting partial parameter to true, will only check if a part of the element is visible\n * in the viewport, specifically that some part of that element is touching the top part\n * of the viewport. This only applies to the vertical direction, ie. doesnt check partial\n * visibility for horizontal scrolling\n * some code taken from:\n * http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport/7557433#7557433\n */\n if (el instanceof $) {\n el = el[0];\n }\n\n const rec = el.getBoundingClientRect();\n const rec_values = [rec.top, rec.bottom, rec.left, rec.right];\n\n if (rec_values.every((val) => val === 0)) {\n // if every property of rec is 0, the element is invisible;\n return false;\n } else if (partial) {\n // when using getBoundingClientRect() (in the vertical case)\n // negative means above top of viewport, positive means below top of viewport\n // therefore for part of the element to be touching or crossing the top of the viewport\n // rec.top must <= 0 and rec.bottom must >= 0\n // an optional tolerance offset can be added for when the desired element is not exactly\n // toucing the top of the viewport but needs to be considered as touching.\n return (\n rec.top <= 0 + offset && rec.bottom >= 0 + offset\n //(rec.top >= 0+offset && rec.top <= window.innerHeight) // this checks if the element\n // touches bottom part of viewport\n // XXX do we want to include a check for the padding of an element?\n // using window.getComputedStyle(target).paddingTop\n );\n } else {\n // this will return true if the entire element is completely in the viewport\n return (\n rec.top >= 0 &&\n rec.left >= 0 &&\n rec.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rec.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n }\n}\n\n/* parseTime - Parse a duration from a string and return the parsed time in milliseconds.\n *\n * @param {String} time - A duration/time string like ``1ms``, ``1s`` or ``1m``.\n *\n * @returns {Number} - A integer which represents the parsed time in milliseconds.\n */\nfunction parseTime(time) {\n var m = /^(\\d+(?:\\.\\d+)?)\\s*(\\w*)/.exec(time);\n if (!m) {\n throw new Error(\"Invalid time\");\n }\n var amount = parseFloat(m[1]);\n switch (m[2]) {\n case \"s\":\n return Math.round(amount * 1000);\n case \"m\":\n return Math.round(amount * 1000 * 60);\n case \"ms\":\n default:\n return Math.round(amount);\n }\n}\n\n/*\n\n * parseLength - Parse a length from a string and return the parsed length in\n * pixels.\n\n * @param {String} length - A length string like `1px` or `25%`. Lengths without a unit are treated as pixels.\n * @param {Number} reference_length - The reference length to use for percentage lengths.\n *\n * @returns {Number} - A integer which represents the parsed length in pixels.\n *\n * @throws {Error} - If the length string is invalid.\n *\n * @example\n * parseLength(\"1px\"); // 1\n * parseLength(\"10%\", 100); // 10\n *\n */\nfunction parseLength(length, reference_length = null) {\n const m = /^(\\d+(?:\\.\\d+)?)\\s*(\\%?\\w*)/.exec(length);\n if (!m) {\n throw new Error(\"Invalid length\");\n }\n const amount = parseFloat(m[1]);\n switch (m[2]) {\n case \"px\":\n return Math.round(amount);\n case \"%\":\n if (!reference_length) {\n return 0;\n }\n return (reference_length / 100) * Math.round(amount);\n case \"vw\":\n return Math.round((amount * window.innerWidth) / 100);\n case \"vh\":\n return Math.round((amount * window.innerHeight) / 100);\n case \"vmin\":\n return Math.round(\n (amount * Math.min(window.innerWidth, window.innerHeight)) / 100\n );\n case \"vmax\":\n return Math.round(\n (amount * Math.max(window.innerWidth, window.innerHeight)) / 100\n );\n default:\n return Math.round(amount);\n }\n}\n\n// Return a jQuery object with elements related to an input element.\nfunction findRelatives(el) {\n var $el = $(el),\n $relatives = $(el),\n $label = $();\n\n $relatives = $relatives.add($el.closest(\"label\"));\n $relatives = $relatives.add($el.closest(\"fieldset\"));\n\n if (el.id) $label = $(\"label[for='\" + el.id + \"']\");\n if (!$label.length) {\n var $form = $el.closest(\"form\");\n if (!$form.length) $form = $(document.body);\n $label = $form.find(\"label[for='\" + el.name + \"']\");\n }\n $relatives = $relatives.add($label);\n return $relatives;\n}\n\nfunction get_bounds(el) {\n // Return bounds of an element with it's values rounded and converted to ints.\n const bounds = el.getBoundingClientRect();\n return {\n x: parseInt(Math.round(bounds.x), 10) || 0,\n y: parseInt(Math.round(bounds.y), 10) || 0,\n top: parseInt(Math.round(bounds.top), 10) || 0,\n bottom: parseInt(Math.round(bounds.bottom), 10) || 0,\n left: parseInt(Math.round(bounds.left), 10) || 0,\n right: parseInt(Math.round(bounds.right), 10) || 0,\n width: parseInt(Math.round(bounds.width), 10) || 0,\n height: parseInt(Math.round(bounds.height), 10) || 0,\n };\n}\n\nfunction checkInputSupport(type, invalid_value) {\n /* Check input type support.\n * See: https://stackoverflow.com/a/10199306/1337474\n */\n let support = false;\n const input = document.createElement(\"input\");\n input.setAttribute(\"type\", type);\n support = input.type == type;\n\n if (invalid_value !== undefined) {\n // Check for input type UI support\n input.setAttribute(\"value\", invalid_value);\n support = input.value !== invalid_value;\n }\n return support;\n}\n\nconst checkCSSFeature = (attribute, value, tag = \"div\") => {\n /* Check for browser support of specific CSS feature.\n */\n tag = document.createElement(tag);\n let supported = tag.style[attribute] !== undefined;\n if (supported && value !== undefined) {\n tag.style[attribute] = value;\n supported = tag.style[attribute] === value;\n }\n return supported;\n};\n\nconst animation_frame = () => {\n // Return promise to await next repaint cycle\n // Use it in your async function like so: ``await utils.animation_frame()``\n // From: http://www.albertlobo.com/fractals/async-await-requestanimationframe-buddhabrot\n return new Promise(window.requestAnimationFrame);\n};\n\nconst timeout = (ms) => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds.\n * From: https://underscorejs.org/#debounce\n *\n * @param {Function} func - The function to debounce.\n * @param {Number} ms - The time in milliseconds to debounce.\n * @param {Object} timer - A module-global timer as an object.\n * @param {Boolean} [postpone=true] - If true, the function will only be called\n * at the end, after it stops being called for N milliseconds. If false, the\n * function will be called no more than each [ms] milliseconds, ensuring that\n * the function isn't postponed for for too long.\n *\n * @returns {Function} - The debounced function.\n */\nconst debounce = (func, ms, timer = { timer: null }, postpone = true) => {\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds.\n // From: https://underscorejs.org/#debounce\n //\n // Make sure to initialize ``debounce`` only once per to-be-debounced\n // function to not reinitialize the timer each time and debounce not being\n // able to cancel previouse runs.\n //\n // Pass a module-global timer as an object ``{ timer: null }`` if you want\n // to also cancel debounced functions from other pattern-invocations.\n timer.last_run = 0;\n return function () {\n const args = arguments;\n if (!postpone && timer.timer && Date.now() - timer.last_run <= ms) {\n return;\n }\n clearTimeout(timer.timer);\n timer.last_run = Date.now();\n timer.timer = setTimeout(() => {\n func.apply(this, args);\n }, ms);\n };\n};\n\n// TODO: Remove in next major release.\nconst isIE = () => {\n // See: https://stackoverflow.com/a/9851769/1337474\n // Internet Explorer 6-11\n // eslint-disable-next-line no-constant-binary-expression\n return /*@cc_on!@*/false || !!document.documentMode;\n};\n\nconst jqToNode = (el) => {\n // Return a DOM node if a jQuery node was passed.\n if (el.jquery) {\n el = el[0];\n }\n return el;\n};\n\n/**\n * Always return an iterable object.\n *\n * @param {any} it: The object which needs to be wrapped in an array or returned as is if it is iterable.\n * @param {boolean} force_array: If the object is iterable but not an Array, convert it to an array (e.g. For jQuery items or NodeList objects).\n *\n * @returns {Array}: Returns the object wrapped in an Array, expanded to an Array or as-is if it is already iterable.\n */\nconst ensureArray = (it, force_array) => {\n // Ensure to return always an array\n const array_like = !!(\n NodeList.prototype.isPrototypeOf(it) || // eslint-disable-line no-prototype-builtins\n Array.isArray(it) ||\n it.jquery\n );\n return array_like ? (force_array ? [...it] : it) : [it];\n};\n\nconst localized_isodate = (date) => {\n // Return a iso date (date only) in the current timezone instead of a\n // UTC ISO 8601 date+time component which toISOString returns.\n\n const day = date.getDate().toString().padStart(2, \"0\");\n const month = (date.getMonth() + 1).toString().padStart(2, \"0\");\n const year = date.getFullYear().toString();\n\n return `${year}-${month}-${day}`;\n};\n\n/**\n * Replace HTML reserved characters with html entities to add HTML for user\n * editing to e.g. a textarea or a contenteditable.\n *\n * See:\n * https://stackoverflow.com/a/22706073/1337474\n * https://developer.mozilla.org/en-US/docs/Glossary/Entity#reserved_characters\n *\n * @param {string} html - The HTML string to encode.\n *\n * @returns {string} - Returns the escaped html string:\n * ``&`` will be replaced with ``&``.\n * ``<`` will be repalced with ``<``,\n * ``>`` will be replaced with ``>``,\n * ``\"`` will be replaced with ``"``.\n */\nconst escape_html = (html) => {\n if (!html) {\n return \"\";\n }\n const el = document.createElement(\"div\");\n el.appendChild(document.createTextNode(html));\n // Return escaped html and also replace quotes.\n return el.innerHTML.replace(/\"/g, \""\");\n};\n\n/**\n * Return unescaped, raw HTML from an escaped HTML string.\n *\n * See:\n * https://stackoverflow.com/a/34064434/1337474\n * https://developer.mozilla.org/en-US/docs/Glossary/Entity#reserved_characters\n *\n * @param {string} escaped_html - The HTML string to decode.\n *\n * @returns {string} - Returns the escaped html string:\n * ``&`` will be replaced with ``&``,\n * ``<`` will be repalced with ``<``,\n * ``>`` will be replaced with ``>``,\n * ``"`` will be replaced with ``\"``.\n */\nconst unescape_html = (escaped_html) => {\n if (!escaped_html) {\n return \"\";\n }\n const doc = new DOMParser().parseFromString(escaped_html, \"text/html\");\n // Return unescaped html and also unescape quote named entities.\n return doc.documentElement.textContent.replace(/"/g, '\"');\n};\n\n/**\n * Return true, if the given value is a valid ISO 8601 date/time string with or without an optional time component.\n *\n * @param {String} value - The date/time value to be checked.\n * @param {Boolean} [optional_time=false] - True, if time component is optional.\n * @return {Boolean} - True, if the given value is a valid Date string. False if not.\n */\nconst is_iso_date_time = (value, optional_time = false) => {\n const re_date_time = optional_time\n ? /^\\d{4}-[01]\\d-[0-3]\\d(T[0-2]\\d:[0-5]\\d)?$/\n : /^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d$/;\n return re_date_time.test(value);\n};\n\n/**\n * Return true, if the given value is a valid ISO 8601 date string and without a time component.\n *\n * @param {String} value - The date value to be checked.\n * @return {Boolean} - True, if the given value is a valid ISO 8601 date string without a time component. False if not.\n */\nconst is_iso_date = (value) => {\n const re_date_time = /^\\d{4}-[01]\\d-[0-3]\\d$/;\n return re_date_time.test(value);\n};\n\n/**\n * Return the number of days between two dates.\n * Based on: https://stackoverflow.com/a/15289883/1337474\n *\n * @param {Date} date_1 - First date to compare. We will substract date_2 from date_1.\n * @param {Date} date_2 - Second date to compare.\n * @return {Number} - The number of days between the two dates.\n */\nconst date_diff = (date_1, date_2) => {\n // Discard the time and time-zone information.\n const utc_1 = Date.UTC(date_1.getFullYear(), date_1.getMonth(), date_1.getDate());\n const utc_2 = Date.UTC(date_2.getFullYear(), date_2.getMonth(), date_2.getDate());\n\n return Math.floor((utc_1 - utc_2) / _MS_PER_DAY);\n};\n\n/**\n * Build intersection observer threshold list.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#building_the_array_of_threshold_ratios\n *\n * @param {Number} num_steps - The number of steps to use.\n *\n * @returns {Array} - Returns the threshold list.\n */\nconst threshold_list = (num_steps = 0) => {\n let thresholds = [];\n\n for (let i = 1.0; i <= num_steps; i++) {\n thresholds.push(i / num_steps);\n }\n thresholds.push(0);\n return thresholds.sort();\n};\n\n/**\n * is_option_truthy - Check if an Pattern option is set.\n *\n * An option is set if it is not one of:\n * - undefined\n * - null\n * - \"none\"\n * - \"\"\n *\n * @param {String} option - The option to check.\n *\n * @returns {Boolean} - Returns true if the option is set, false otherwise.\n *\n * @example\n *\n * is_option_truthy() // false\n * is_option_truthy(undefined) // false\n * is_option_truthy(null) // false\n * is_option_truthy(\"\") // false\n * is_option_truthy(\"none\") // false\n * is_option_truthy(\"false\") // false\n * is_option_truthy(\"foo\") // true\n * is_option_truthy(true) // true\n * is_option_truthy(0) // true\n *\n */\nconst is_option_truthy = (option) => {\n return ![undefined, null, \"none\", false, \"false\", \"\"].includes(option);\n};\n\nvar utils = {\n jqueryPlugin: jqueryPlugin,\n escapeRegExp: escapeRegExp,\n isObject: isObject,\n extend: extend,\n findLabel: findLabel,\n regexp_from_wildcard: regexp_from_wildcard,\n removeWildcardClass: removeWildcardClass,\n hideOrShow: hideOrShow,\n addURLQueryParameter: addURLQueryParameter,\n removeDuplicateObjects: removeDuplicateObjects,\n mergeStack: mergeStack,\n isElementInViewport: isElementInViewport,\n hasValue: hasValue,\n parseTime: parseTime,\n parseLength: parseLength,\n findRelatives: findRelatives,\n get_bounds: get_bounds,\n checkInputSupport: checkInputSupport,\n checkCSSFeature: checkCSSFeature,\n animation_frame: animation_frame,\n timeout: timeout,\n debounce: debounce,\n isIE: isIE,\n jqToNode: jqToNode,\n ensureArray: ensureArray,\n localized_isodate: localized_isodate,\n escape_html: escape_html,\n unescape_html: unescape_html,\n is_iso_date_time: is_iso_date_time,\n is_iso_date: is_iso_date,\n date_diff: date_diff,\n threshold_list: threshold_list,\n is_option_truthy: is_option_truthy,\n //getCSSValue: dom.get_css_value, // BBB: moved to dom. TODO: Remove in upcoming version.\n elementInViewport: (el) => {\n // BBB: Remove with next major version.\n console.warn(\"Deprecated. Use utils.isElementInViewport\");\n return isElementInViewport(el);\n },\n};\n\nexport default utils;\n","/**\n * Patterns logging - minimal logging framework\n *\n * Copyright 2012 Simplon B.V.\n */\n\n// source: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind\nif (!Function.prototype.bind) {\n Function.prototype.bind = function (oThis) {\n if (typeof this !== \"function\") {\n // closest thing possible to the ECMAScript 5 internal IsCallable function\n throw new TypeError(\n \"Function.prototype.bind - what is trying to be bound is not callable\"\n );\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function () {},\n fBound = function () {\n return fToBind.apply(\n this instanceof fNOP && oThis ? this : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments))\n );\n };\n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n\nvar root, // root logger instance\n writer; // writer instance, used to output log entries\n\nvar Level = {\n DEBUG: 10,\n INFO: 20,\n WARN: 30,\n ERROR: 40,\n FATAL: 50,\n};\n\nfunction ConsoleWriter() {}\n\nConsoleWriter.prototype = {\n output: function (log_name, level, messages) {\n if (log_name) messages.unshift(log_name + \":\");\n if (level <= Level.DEBUG) console.debug.apply(console, messages);\n else if (level <= Level.INFO) console.info.apply(console, messages);\n else if (level <= Level.WARN) console.warn.apply(console, messages);\n else console.error.apply(console, messages);\n },\n};\n\nfunction Logger(name, parent) {\n this._loggers = {};\n this.name = name || \"\";\n this._parent = parent || null;\n if (!parent) {\n this._enabled = true;\n this._level = Level.WARN;\n }\n}\n\nLogger.prototype = {\n getLogger: function (name) {\n var path = name.split(\".\"),\n root = this,\n route = this.name ? [this.name] : [];\n while (path.length) {\n var entry = path.shift();\n route.push(entry);\n if (!(entry in root._loggers))\n root._loggers[entry] = new Logger(route.join(\".\"), root);\n root = root._loggers[entry];\n }\n return root;\n },\n\n _getFlag: function (flag) {\n var context = this;\n flag = \"_\" + flag;\n while (context !== null) {\n if (context[flag] !== undefined) return context[flag];\n context = context._parent;\n }\n return null;\n },\n\n setEnabled: function (state) {\n this._enabled = !!state;\n },\n\n isEnabled: function () {\n this._getFlag(\"enabled\");\n },\n\n setLevel: function (level) {\n if (typeof level === \"number\") this._level = level;\n else if (typeof level === \"string\") {\n level = level.toUpperCase();\n if (level in Level) this._level = Level[level];\n }\n },\n\n getLevel: function () {\n return this._getFlag(\"level\");\n },\n\n log: function (level, messages) {\n if (\n !messages.length ||\n !this._getFlag(\"enabled\") ||\n level < this._getFlag(\"level\")\n )\n return;\n messages = Array.prototype.slice.call(messages);\n writer.output(this.name, level, messages);\n },\n\n debug: function () {\n this.log(Level.DEBUG, arguments);\n },\n\n info: function () {\n this.log(Level.INFO, arguments);\n },\n\n warn: function () {\n this.log(Level.WARN, arguments);\n },\n\n error: function () {\n this.log(Level.ERROR, arguments);\n },\n\n fatal: function () {\n this.log(Level.FATAL, arguments);\n },\n};\n\nfunction getWriter() {\n return writer;\n}\n\nfunction setWriter(w) {\n writer = w;\n}\n\nsetWriter(new ConsoleWriter());\n\nroot = new Logger();\n\nvar logconfig = /loglevel(|-[^=]+)=([^&]+)/g,\n match;\n\nwhile ((match = logconfig.exec(window.location.search)) !== null) {\n var logger = match[1] === \"\" ? root : root.getLogger(match[1].slice(1));\n logger.setLevel(match[2].toUpperCase());\n}\n\nvar api = {\n Level: Level,\n getLogger: root.getLogger.bind(root),\n setEnabled: root.setEnabled.bind(root),\n isEnabled: root.isEnabled.bind(root),\n setLevel: root.setLevel.bind(root),\n getLevel: root.getLevel.bind(root),\n debug: root.debug.bind(root),\n info: root.info.bind(root),\n warn: root.warn.bind(root),\n error: root.error.bind(root),\n fatal: root.fatal.bind(root),\n getWriter: getWriter,\n setWriter: setWriter,\n};\n\nexport default api;\n","/**\n * Get a universally unique id (uuid).\n *\n * @returns {String} - The uuid.\n */\nconst create_uuid = () => {\n let uuid;\n if (window.crypto.randomUUID) {\n // Create a real UUID\n // window.crypto.randomUUID does only exist in browsers with secure\n // context.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID\n uuid = window.crypto.randomUUID();\n } else {\n // Create a sufficiently unique ID\n const array = new Uint32Array(4);\n uuid = window.crypto.getRandomValues(array).join(\"\");\n }\n return uuid;\n};\nexport default create_uuid;\n","/* Utilities for DOM traversal or navigation */\nimport events from \"./events\";\nimport logging from \"./logging\";\nimport create_uuid from \"./uuid\";\n\nconst logger = logging.getLogger(\"core dom\");\n\nconst DATA_PREFIX = \"__patternslib__data_prefix__\";\nconst DATA_STYLE_DISPLAY = \"__patternslib__style__display\";\n\nconst INPUT_SELECTOR = \"input, select, textarea, button\";\n\n/**\n * Wait for the document to be ready.\n *\n * @param {Function} fn - The function to call when the document is ready.\n */\nconst document_ready = (fn) => {\n const event_id = create_uuid();\n\n const _ready = () => {\n if (document.readyState !== \"loading\") {\n // Remove the event listener for this callback.\n events.remove_event_listener(document, event_id);\n // call on next available tick\n setTimeout(fn, 1);\n }\n };\n\n // Listen for the document to be ready and call _ready() when it is.\n events.add_event_listener(document, \"readystatechange\", event_id, _ready);\n\n // Also check the ready state immediately in case we missed the event.\n _ready();\n};\n\n/**\n * Return an array of DOM nodes.\n *\n * @param {Node|NodeList|jQuery} nodes - The object which should be returned as array.\n *\n * @returns {Array} - An array of DOM nodes.\n */\nconst to_node_array = (nodes) => {\n if (nodes?.jquery || nodes instanceof NodeList) {\n nodes = [...nodes];\n } else if (nodes instanceof Array === false) {\n nodes = [nodes];\n }\n // Filter for DOM nodes only.\n nodes = nodes.filter((node) => node instanceof Node);\n return nodes;\n};\n\n/**\n * Return an array of DOM elements.\n *\n * @param {Node|NodeList|jQuery} nodes - The object which should be returned as array.\n *\n * @returns {Array} - An array of DOM elements.\n */\nconst to_element_array = (nodes) => {\n nodes = to_node_array(nodes);\n // Filter for DOM elements only.\n nodes = nodes.filter((node) => node instanceof Element);\n return nodes;\n};\n\n/**\n * Like querySelectorAll but including the element where it starts from.\n * Returns an Array, not a NodeList\n *\n * @param {Element|NodeList|Array} el - The DOM element, NodeList or array of elements to start the search from.\n * @param {string} selector - The CSS selector to search for.\n *\n * @returns {Array} - The DOM elements found.\n */\nconst querySelectorAllAndMe = (el, selector) => {\n // Ensure we have a list of DOM elements.\n const roots = to_element_array(el);\n const seen = new WeakSet();\n const all = [];\n\n for (const root of roots) {\n if (root.matches(selector) && !seen.has(root)) {\n all.push(root);\n seen.add(root);\n }\n for (const match of root.querySelectorAll(selector)) {\n if (!seen.has(match)) {\n all.push(match);\n seen.add(match);\n }\n }\n }\n return all;\n};\n\n/**\n * Wrap a element with a wrapper element.\n *\n * The element to be wrapped will be moved into the wrapper element and the\n * wrapper element is placed just before the old element was.\n *\n * @param {Node} el - The DOM node to wrap.\n * @param {Node} wrapper - The wrapper element.\n */\nconst wrap = (el, wrapper) => {\n // See: https://stackoverflow.com/a/13169465/1337474\n el.parentNode.insertBefore(wrapper, el);\n wrapper.appendChild(el);\n};\n\n/**\n * Hides the element with ``display: none`` and stores the current display value.\n *\n * @param {Node} el - The DOM node to hide.\n */\nconst hide = (el) => {\n if (el.style.display === \"none\") {\n // Nothing to do.\n return;\n }\n if (el.style.display) {\n el[DATA_STYLE_DISPLAY] = el.style.display;\n }\n el.style.display = \"none\";\n};\n\n/**\n * Shows element by removing ``display: none`` and restoring the display value\n * to whatever it was before.\n *\n * @param {Node} el - The DOM node to show.\n */\nconst show = (el) => {\n const val = el[DATA_STYLE_DISPLAY] || null;\n el.style.display = val;\n delete el[DATA_STYLE_DISPLAY];\n};\n\n/**\n * Test, if a element is visible or not.\n *\n * @param {Node} el - The DOM node to test.\n * @returns {Boolean} - True if the element is visible.\n */\nconst is_visible = (el) => {\n // Check, if element is visible in DOM.\n // https://stackoverflow.com/a/19808107/1337474\n return el.offsetWidth > 0 && el.offsetHeight > 0;\n};\n\n/**\n * Test, if a element is a input-type element.\n *\n * This is taken from Sizzle/jQuery at:\n * https://github.com/jquery/sizzle/blob/f2a2412e5e8a5d9edf168ae3b6633ac8e6bd9f2e/src/sizzle.js#L139\n * https://github.com/jquery/sizzle/blob/f2a2412e5e8a5d9edf168ae3b6633ac8e6bd9f2e/src/sizzle.js#L1773\n *\n * @param {Node} el - The DOM node to test.\n * @returns {Boolean} - True if the element is a input-type element.\n */\nconst is_input = (el) => {\n const re_input = /^(?:input|select|textarea|button)$/i;\n return re_input.test(el.nodeName);\n};\n\n/**\n * Test, if a element is a button-like input type.\n *\n * @param {Node} el - The DOM node to test.\n * @returns {Boolean} - True if the element is a input-type element.\n */\nconst is_button = (el) => {\n return el.matches(`\n button,\n input[type=image],\n input[type=button],\n input[type=reset],\n input[type=submit]\n `);\n};\n\n/**\n * Return all direct parents of ``el`` matching ``selector``.\n * This matches against all parents but not the element itself.\n * The order of elements is from the search starting point up to higher\n * DOM levels.\n *\n * @param {Node} el - The DOM node to start the search from.\n * @param {String} selector - CSS selector to match against.\n * @returns {Array} - List of matching DOM nodes.\n */\nconst find_parents = (el, selector) => {\n const ret = [];\n let parent = el;\n while (parent) {\n parent = parent.parentNode?.closest?.(selector);\n if (parent) ret.push(parent);\n }\n return ret;\n};\n\n/**\n * Find an element in the whole DOM tree if the selector is an ID selector,\n * otherwise use the given element as the starting point.\n *\n * @param {Node} el - The DOM node to start the search from.\n * @param {String} selector - The CSS selector to search for.\n *\n * @returns {NodeList} - The DOM nodes found.\n *\n */\nconst find_scoped = (el, selector) => {\n // If the selector starts with an object id do a global search,\n // otherwise do a local search.\n return (selector.indexOf(\"#\") === 0 ? document : el).querySelectorAll(selector);\n};\n\n/**\n * Return all HTMLElement parents of el, starting from the direct parent of el.\n * The document itself is excluded because it's not a real DOM node.\n *\n * @param {Node} el - The DOM node to start the search from.\n *\n * @returns {Array} - The DOM nodes found.\n */\nconst get_parents = (el) => {\n // Return all HTMLElement parents of el, starting from the direct parent of el.\n const parents = [];\n let parent = el?.parentNode;\n while (parent) {\n parents.push(parent);\n parent = parent?.parentNode;\n parent = parent instanceof HTMLElement ? parent : null;\n }\n return parents;\n};\n\n/**\n * Return the value of the first attribute found in the list of parents.\n *\n * @param {Node} el - The DOM element to start the acquisition search for the given attribute.\n * @param {string} attribute - Name of the attribute to search for.\n * @param {Boolean} include_empty - Also return empty values.\n * @param {Boolean} include_all - Return a list of attribute values found in all parents.\n *\n * @returns {*} - Returns the value of the searched attribute or a list of all attributes.\n */\nconst acquire_attribute = (\n el,\n attribute,\n include_empty = false,\n include_all = false\n) => {\n let _el = el;\n const ret = []; // array for ``include_all`` mode.\n while (_el) {\n const val = _el.getAttribute(attribute);\n if (val || (include_empty && val === \"\")) {\n if (!include_all) {\n return val;\n }\n ret.push(val);\n }\n _el = _el.parentElement;\n }\n if (include_all) {\n return ret;\n }\n};\n\n/**\n * Return a DocumentFragment from a given string.\n *\n * @param {String} string - The HTML structure as a string.\n *\n * @returns {DocumentFragment} - The DOM nodes as a DocumentFragment.\n */\nconst create_from_string = (string) => {\n // See: https://davidwalsh.name/convert-html-stings-dom-nodes\n return document.createRange().createContextualFragment(string.trim());\n};\n\n/**\n * Return a CSS property value for a given DOM node.\n * For length-values, relative values are converted to pixels.\n * Optionally parse as pixels, if applicable.\n *\n * Note: The element must be attached to the body to make CSS caluclations work.\n *\n * @param {Node} el - DOM node.\n * @param {String} property - CSS property to query on DOM node.\n * @param {Boolean} [as_pixels=false] - Convert value to pixels, if applicable.\n * @param {Boolean} [as_float=false] - Convert value to float, if applicable.\n *\n * @returns {(String|Number)} - The CSS value to return.\n */\nfunction get_css_value(el, property, as_pixels = false, as_float = false) {\n let value = window.getComputedStyle(el).getPropertyValue(property);\n if (as_pixels || as_float) {\n value = parseFloat(value) || 0.0;\n }\n if (as_pixels && !as_float) {\n value = parseInt(Math.round(value), 10);\n }\n return value;\n}\n\n/**\n * Find a scrollable element up in the DOM tree.\n *\n * Note: Setting the ``overflow`` shorthand property also sets the individual overflow-y and overflow-y properties.\n *\n * @param {Node} el - The DOM element to start the search on.\n * @param {String} [direction=] - Not given: Search for any scrollable element up in the DOM tree.\n * ``x``: Search for a horizontally scrollable element.\n * ``y``: Search for a vertically scrollable element.\n * @param {(Node|null)} [fallback=document.body] - Fallback, if no scroll container can be found.\n * The default is to use document.body.\n *\n * @returns {Node} - Return the first scrollable element.\n * If no other element could be found, document.body would be returned.\n */\nconst find_scroll_container = (el, direction, fallback = document.body) => {\n while (el && el !== document.body) {\n if (!direction || direction === \"y\") {\n let overflow_y = get_css_value(el, \"overflow-y\");\n if ([\"auto\", \"scroll\"].includes(overflow_y)) {\n return el;\n }\n }\n if (!direction || direction === \"x\") {\n let overflow_x = get_css_value(el, \"overflow-x\");\n if ([\"auto\", \"scroll\"].includes(overflow_x)) {\n return el;\n }\n }\n el = el.parentElement;\n }\n return fallback;\n};\n\n/**\n * Get the horizontal scroll position.\n *\n * @param {Node} scroll_reference - The element to get the scroll position from.\n *\n * @returns {number} The horizontal scroll position.\n */\nconst get_scroll_x = (scroll_reference) => {\n // scroll_listener == window: window.scrollX\n // scroll_listener == html: html.scrollLeft == window.scrollX\n // scroll_listener == DOM node: node.scrollLeft\n return typeof scroll_reference.scrollLeft !== \"undefined\"\n ? scroll_reference.scrollLeft\n : scroll_reference.scrollX;\n};\n\n/**\n * Get the vertical scroll position.\n *\n * @param {Node} scroll_reference - The element to get the scroll position from.\n *\n * @returns {number} The vertical scroll position.\n */\nconst get_scroll_y = (scroll_reference) => {\n // scroll_listener == window: window.scrollY\n // scroll_listener == html: html.scrollTop == window.scrollY\n // scroll_listener == DOM node: node.scrollTop\n return typeof scroll_reference.scrollTop !== \"undefined\"\n ? scroll_reference.scrollTop\n : scroll_reference.scrollY;\n};\n\n/**\n * Get the elements position relative to another element.\n *\n * @param {Node} el - The DOM element to get the position for.\n * @param {Node} [reference_el=document.body] - The DOM element to get the position relative to.\n *\n * @returns {{top: number, left: number}} - The position of the element relative to the other element.\n */\nconst get_relative_position = (el, reference_el = document.body) => {\n // Get the reference element to which against we calculate\n // the relative position of the target.\n // In case of a scroll container of window, we do not have\n // getBoundingClientRect method, so get the body instead.\n if (reference_el === window) {\n reference_el = document.body;\n }\n\n // Calculate absolute [¹] position difference between\n // scroll_container and scroll_target.\n // Substract the container's border from the scrolling\n // value, as this one isn't respected by\n // getBoundingClientRect [²] and would lead to covered\n // items [³].\n // ¹) so that it doesn't make a difference, if the element\n // is below or above the scrolling container. We just need\n // to know the absolute difference.\n // ²) Calculations are based from the viewport.\n // ³) See:\n // https://docs.microsoft.com/en-us/previous-versions//hh781509(v=vs.85)\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect\n const left = Math.abs(\n el.getBoundingClientRect().left +\n reference_el.scrollLeft -\n reference_el.getBoundingClientRect().left -\n dom.get_css_value(reference_el, \"border-left-width\", true)\n );\n const top = Math.abs(\n el.getBoundingClientRect().top +\n reference_el.scrollTop -\n reference_el.getBoundingClientRect().top -\n dom.get_css_value(reference_el, \"border-top-width\", true)\n );\n\n return { top, left };\n};\n\n/**\n * Scroll to a given element.\n * The element will be scrolled to the top of the scroll container.\n *\n * @param {Node} el - The element which should be scrolled to.\n * @param {Node} scroll_container - The element which is scrollable.\n * @param {number} [offset=0] - Optional offset in pixels to stop scrolling before the target position. Can also be a negative number.\n * @param {string} [direction=\"top\"] - The direction to scroll to. Can be either \"top\", \"left\" or \"both\".\n */\nconst scroll_to_element = (el, scroll_container, offset = 0, direction = \"top\") => {\n // Get the position of the element relative to the scroll container.\n const position = get_relative_position(el, scroll_container);\n\n const options = { behavior: \"auto\" };\n if (direction === \"top\" || direction === \"both\") {\n options.top = position.top - offset;\n }\n if (direction === \"left\" || direction === \"both\") {\n options.left = position.left - offset;\n }\n\n // Scroll to the target position.\n scroll_container.scrollTo(options);\n};\n\n/**\n * Scroll to the top of a scrolling container.\n *\n * @param {Node} [scroll_container = document.body] - The element which is scrollable.\n * @param {number} [offset=0] - Optional offset in pixels to stop scrolling before the target position. Can also be a negative number.\n */\nconst scroll_to_top = (scroll_container = document.body, offset = 0) => {\n // Just scroll up, period.\n scroll_container.scrollTo({ top: 0 - offset, behavior: \"auto\" });\n};\n\n/**\n * Scroll to the bottom of a scrolling container.\n *\n * @param {Node} [scroll_container = document.body] - The element which is scrollable.\n * @param {number} [offset=0] - Optional offset in pixels to stop scrolling before the target position. Can also be a negative number.\n */\nconst scroll_to_bottom = (scroll_container = document.body, offset = 0) => {\n // Just scroll up, period.\n //\n const top = (scroll_container === window ? document.body : scroll_container)\n .scrollHeight;\n scroll_container.scrollTo({ top: top - offset, behavior: \"auto\" });\n};\n\n/**\n * Get data stored directly on the node instance.\n * We are using a prefix to make sure the data doesn't collide with other attributes.\n *\n * @param el {Node} - The DOM node from which we want to retrieve the data.\n * @param name {String} - The name of the variable. Note - this is stored on\n * the DOM node prefixed with the DATA_PREFIX.\n * @param default_value {Any} - Optional default value.\n * @returns {Any} - The value which is stored on the DOM node.\n */\nconst get_data = (el, name, default_value) => {\n return el[`${DATA_PREFIX}${name}`] || default_value;\n};\n\n/**\n * Set and store data directly on the node instance.\n * We are using a prefix to make sure the data doesn't collide with other attributes.\n *\n * @param el {Node} - The DOM node which we want to store the data on.\n * @param name {String} - The name of the variable. Note - this is stored on\n * the DOM node prefixed with the DATA_PREFIX.\n * @param value {Any} - The value we want to store on the DOM node.\n */\nconst set_data = (el, name, value) => {\n el[`${DATA_PREFIX}${name}`] = value;\n};\n\n/**\n * Delete a variable from the node instance.\n * We are using a prefix to make sure the data doesn't collide with other attributes.\n *\n * @param el {Node} - The DOM node which we want to delete the variable from.\n * @param name {String} - The name of the variable. Note - this is stored on\n * the DOM node prefixed with the DATA_PREFIX.\n */\nconst delete_data = (el, name) => {\n delete el[`${DATA_PREFIX}${name}`];\n};\n\n/**\n * Simple template engine, based on JS template literal\n *\n * NOTE: This uses eval and would break if Content-Security-Policy does not\n * allow 'unsafe-eval'.\n * Because of this CSR problem the use of this method is not recommended.\n *\n * Please note: You cannot pass a template literal as template_string.\n * JavaScript itself would try to expand it and would fail.\n *\n * See: https://stackoverflow.com/a/37217166/1337474\n *\n * @param {String} template_string - The template string as a JavaScript template literal.\n * For each variable in the template you have to use ``this``.\n * E.g. if you pass ``{message: \"ok\"}`` as template_variables, you can use it like so:\n * `

${this.message}

`\n * @param {Object} template_variables - Object literal with all the variables which should be used in the template.\n *\n * @returns {String} - Returns the a string as template expanded with the template_variables.\n */\nconst template = (template_string, template_variables = {}) => {\n logger.warn(\n \"Using dom.template is not recommended due to a problem with Content-Security-Policy.\"\n );\n return new Function(\"return `\" + template_string + \"`;\").call(template_variables);\n};\n\n/**\n * Get the visible ratio of an element compared to container.\n * If no container is given, the viewport is used.\n *\n * Note: currently only vertical ratio is supported.\n *\n * @param {Node} el - The element to get the visible ratio from.\n * @param {Node} [container] - The container to compare the element to.\n * @returns {number} - The visible ratio of the element.\n * 0 means the element is not visible.\n * 1 means the element is fully visible.\n */\nconst get_visible_ratio = (el, container) => {\n if (!el) {\n return 0;\n }\n\n const rect = el.getBoundingClientRect();\n const container_rect =\n container !== window\n ? container.getBoundingClientRect()\n : {\n top: 0,\n bottom: window.innerHeight,\n };\n\n let visible_ratio = 0;\n if (rect.top < container_rect.bottom && rect.bottom > container_rect.top) {\n const rect_height = rect.bottom - rect.top;\n const visible_height =\n Math.min(rect.bottom, container_rect.bottom) -\n Math.max(rect.top, container_rect.top);\n visible_ratio = visible_height / rect_height;\n }\n\n return visible_ratio;\n};\n\n/**\n * Get an escaped CSS selector for a given id string.\n *\n * id selectors should - but don't have to - start with a letter.\n * If the id starts with a number or a dash, it should be escaped.\n * This method does that for you.\n *\n * Alse see:\n * - https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id\n * - https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape\n *\n * @param {String} id - The id to escape.\n *\n * @returns {String} - The escaped CSS selector.\n *\n * @example\n * escape_css_id_selector(\"#123\"); // returns \"#\\\\31 23\"\"\n * escape_css_id_selector(\"#-123\"); // returns \"#-\\\\31 23\"\n */\nconst escape_css_id = (id) => {\n return `#${CSS.escape(id.split(\"#\")[1])}`;\n};\n\n/**\n * Set and get a universally unique id (uuid) for a DOM element.\n *\n * This method returns a uuid for the given element. On the first call it will\n * generate a uuid and store it on the element.\n *\n * @param {Node} el - The DOM node to get the uuid for.\n * @returns {String} - The uuid.\n */\nconst element_uuid = (el) => {\n if (!get_data(el, \"uuid\", false)) {\n set_data(el, \"uuid\", create_uuid());\n }\n return get_data(el, \"uuid\");\n};\n\n/**\n * Find a related form element.\n *\n * @param {Node} el - The DOM node to start the search from.\n * @returns {Node} - The closest form element.\n *\n * @example\n * find_form(document.querySelector(\"input\"));\n */\nconst find_form = (el) => {\n // Prefer input.form which allows for input outside form elements and fall\n // back to search for a parent form.\n const form =\n el.closest(\".pat-subform\") || // Special Patternslib subform concept has precedence.\n el.form ||\n el.querySelector(INPUT_SELECTOR)?.form ||\n el.closest(\"form\");\n return form;\n};\n\n/**\n * Find any input type.\n */\nconst find_inputs = (el) => {\n return querySelectorAllAndMe(el, INPUT_SELECTOR);\n};\n\nconst dom = {\n document_ready: document_ready,\n to_element_array: to_element_array,\n to_node_array: to_node_array,\n toNodeArray: to_node_array, // BBB.\n querySelectorAllAndMe: querySelectorAllAndMe,\n wrap: wrap,\n hide: hide,\n show: show,\n find_inputs: find_inputs,\n find_parents: find_parents,\n find_scoped: find_scoped,\n get_parents: get_parents,\n acquire_attribute: acquire_attribute,\n is_visible: is_visible,\n is_input: is_input,\n is_button: is_button,\n create_from_string: create_from_string,\n get_css_value: get_css_value,\n find_scroll_container: find_scroll_container,\n get_scroll_x: get_scroll_x,\n get_scroll_y: get_scroll_y,\n get_relative_position: get_relative_position,\n scroll_to_element: scroll_to_element,\n scroll_to_top: scroll_to_top,\n scroll_to_bottom: scroll_to_bottom,\n get_data: get_data,\n set_data: set_data,\n delete_data: delete_data,\n template: template,\n get_visible_ratio: get_visible_ratio,\n escape_css_id: escape_css_id,\n element_uuid: element_uuid,\n find_form: find_form,\n};\n\nexport default dom;\n","/**\n * Patterns logging - minimal logging framework\n *\n * Copyright 2012 Simplon B.V.\n */\n\n// source: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind\nif (!Function.prototype.bind) {\n Function.prototype.bind = function (oThis) {\n if (typeof this !== \"function\") {\n // closest thing possible to the ECMAScript 5 internal IsCallable function\n throw new TypeError(\n \"Function.prototype.bind - what is trying to be bound is not callable\"\n );\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function () {},\n fBound = function () {\n return fToBind.apply(\n this instanceof fNOP && oThis ? this : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments))\n );\n };\n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n\nvar root, // root logger instance\n writer; // writer instance, used to output log entries\n\nvar Level = {\n DEBUG: 10,\n INFO: 20,\n WARN: 30,\n ERROR: 40,\n FATAL: 50,\n};\n\nfunction ConsoleWriter() {}\n\nConsoleWriter.prototype = {\n output: function (log_name, level, messages) {\n if (log_name) messages.unshift(log_name + \":\");\n if (level <= Level.DEBUG) console.debug.apply(console, messages);\n else if (level <= Level.INFO) console.info.apply(console, messages);\n else if (level <= Level.WARN) console.warn.apply(console, messages);\n else console.error.apply(console, messages);\n },\n};\n\nfunction Logger(name, parent) {\n this._loggers = {};\n this.name = name || \"\";\n this._parent = parent || null;\n if (!parent) {\n this._enabled = true;\n this._level = Level.WARN;\n }\n}\n\nLogger.prototype = {\n getLogger: function (name) {\n var path = name.split(\".\"),\n root = this,\n route = this.name ? [this.name] : [];\n while (path.length) {\n var entry = path.shift();\n route.push(entry);\n if (!(entry in root._loggers))\n root._loggers[entry] = new Logger(route.join(\".\"), root);\n root = root._loggers[entry];\n }\n return root;\n },\n\n _getFlag: function (flag) {\n var context = this;\n flag = \"_\" + flag;\n while (context !== null) {\n if (context[flag] !== undefined) return context[flag];\n context = context._parent;\n }\n return null;\n },\n\n setEnabled: function (state) {\n this._enabled = !!state;\n },\n\n isEnabled: function () {\n this._getFlag(\"enabled\");\n },\n\n setLevel: function (level) {\n if (typeof level === \"number\") this._level = level;\n else if (typeof level === \"string\") {\n level = level.toUpperCase();\n if (level in Level) this._level = Level[level];\n }\n },\n\n getLevel: function () {\n return this._getFlag(\"level\");\n },\n\n log: function (level, messages) {\n if (\n !messages.length ||\n !this._getFlag(\"enabled\") ||\n level < this._getFlag(\"level\")\n )\n return;\n messages = Array.prototype.slice.call(messages);\n writer.output(this.name, level, messages);\n },\n\n debug: function () {\n this.log(Level.DEBUG, arguments);\n },\n\n info: function () {\n this.log(Level.INFO, arguments);\n },\n\n warn: function () {\n this.log(Level.WARN, arguments);\n },\n\n error: function () {\n this.log(Level.ERROR, arguments);\n },\n\n fatal: function () {\n this.log(Level.FATAL, arguments);\n },\n};\n\nfunction getWriter() {\n return writer;\n}\n\nfunction setWriter(w) {\n writer = w;\n}\n\nsetWriter(new ConsoleWriter());\n\nroot = new Logger();\n\nvar logconfig = /loglevel(|-[^=]+)=([^&]+)/g,\n match;\n\nwhile ((match = logconfig.exec(window.location.search)) !== null) {\n var logger = match[1] === \"\" ? root : root.getLogger(match[1].slice(1));\n logger.setLevel(match[2].toUpperCase());\n}\n\nvar api = {\n Level: Level,\n getLogger: root.getLogger.bind(root),\n setEnabled: root.setEnabled.bind(root),\n isEnabled: root.isEnabled.bind(root),\n setLevel: root.setLevel.bind(root),\n getLevel: root.getLevel.bind(root),\n debug: root.debug.bind(root),\n info: root.info.bind(root),\n warn: root.warn.bind(root),\n error: root.error.bind(root),\n fatal: root.fatal.bind(root),\n getWriter: getWriter,\n setWriter: setWriter,\n};\n\nexport default api;\n","import utils from \"./utils\";\n\n// Event related methods and event factories\n\n// Event listener registration for easy-to-remove event listeners.\n// once Safari supports the ``signal`` option for addEventListener we can abort\n// event handlers by calling AbortController.abort().\nexport const event_listener_map = new Map();\n\n/**\n * Add an event listener to a DOM element under a unique id.\n * If a event is registered under the same id for the same element, the old handler is removed first.\n *\n * @param {DOM Node} el - The element to register the event for.\n * @param {string} event_type - The event type to listen for.\n * @param {string} id - A unique id under which the event is registered.\n * @param {function} cb - The event handler / callback function.\n * @param {Object} opts - Options for the addEventListener API.\n *\n */\nconst add_event_listener = (el, event_type, id, cb, opts = {}) => {\n if (!el?.addEventListener) {\n return; // nothing to do.\n }\n remove_event_listener(el, id); // do not register one listener twice.\n\n // Create event_listener_map entry if not existent.\n if (!event_listener_map.has(el)) {\n event_listener_map.set(el, new Map());\n }\n let _cb = cb;\n if (opts?.once === true) {\n // For `once` events, also remove the entry from the event_listener_map.\n _cb = (e) => {\n event_listener_map.get(el)?.delete(id);\n cb(e);\n };\n }\n // Only `capture` option is necessary for `removeEventListener`.\n event_listener_map\n .get(el)\n .set(id, [event_type, _cb, opts.capture ? opts : undefined]);\n el.addEventListener(event_type, _cb, opts);\n};\n\n/**\n * Remove an event listener from a DOM element under a unique id.\n *\n * If an element and id are given, the event listeners for the given element matching the id are removed.\n * If an element but no id is given, all event listeners for that element are removed.\n * If an id but no element is given, all event listeners for any element matching the id are removed.\n * If no element and no id are given, all event listeners are removed.\n *\n * The id can be a wildcard string, e.g. `test-*-event`, which would match any\n * event which starts with \"test-\" and ends with \"-event\". The wildcard \"*\" can\n * be anywhere in the string and also be used multiple times. If no wildcard is\n * present the search string is used for an exact match.\n *\n * @param {DOM Node} [el] - The element to register the event for.\n * @param {string} [id] - A unique id under which the event is registered.\n * Can be a wildcard string.\n *\n */\nconst remove_event_listener = (el, id) => {\n const els = el ? [el] : event_listener_map.keys();\n for (const el of els) {\n if (!el?.removeEventListener) {\n return; // nothing to do.\n }\n const el_events = event_listener_map.get(el);\n if (!el_events) {\n return;\n }\n let entries;\n if (id) {\n // remove event listener with matching id\n entries = [...el_events.entries()].filter((entry) =>\n utils.regexp_from_wildcard(id).test(entry[0])\n );\n } else {\n // remove all event listeners of element\n entries = el_events.entries();\n }\n for (const entry of entries || []) {\n // Remove event listener\n el.removeEventListener(entry[1][0], entry[1][1], entry[1][2]);\n // Delete entry from event_listener_map\n event_listener_map.get(el).delete(entry[0]);\n // Delete element from event_listener_map if no more events are registered.\n if (!event_listener_map.get(el).size) {\n event_listener_map.delete(el);\n }\n }\n }\n};\n\n/**\n * Await an event to be thrown.\n *\n * Usage:\n * await events.await_event(button, \"click\");\n *\n * @param {DOM Node} el - The element to listen on.\n * @param {String} event_name - The event name to listen for.\n *\n * @returns {Promise} - Returns a Promise which can be used for ``await`` and which will be resolved when the event is throwm.\n *\n */\nconst await_event = (el, event_name) => {\n // See: https://stackoverflow.com/a/44746691/1337474\n return new Promise((resolve) =>\n el.addEventListener(event_name, resolve, { once: true })\n );\n};\n\n/**\n * Await pattern init.\n *\n * Usage:\n * await events.await_pattern_init(PATTERN);\n *\n * @param {Pattern instance} pattern - The pattern instance.\n *\n * @returns {Promise} - Returns a Promise which can be used for ``await`` and which will be resolved when the event is throwm.\n *\n */\nconst await_pattern_init = (pattern) => {\n // See: https://stackoverflow.com/a/44746691/1337474\n return new Promise((resolve, reject) => {\n // Case initialized\n pattern.one(\"init\", (e) => {\n if (e.target !== pattern.el) {\n // Don't handle bubbling init events from child elements. We\n // want to check on init events coming directly from this\n // Pattern's element.\n return;\n }\n // Resolve promise and unregister the not-init event handler.\n remove_event_listener(\n pattern.el,\n `basepattern-one--not-init.${pattern.name}.patterns`\n );\n resolve();\n });\n\n // Case not initialized\n pattern.one(\"not-init\", (e) => {\n if (e.target !== pattern.el) {\n // Don't handle bubbling not-init events from child elements.\n // We want to check on not-init events coming directly from\n // this Pattern's element.\n return;\n }\n // Reject promise and unregister the init event handler.\n remove_event_listener(\n pattern.el,\n `basepattern-one--init.${pattern.name}.patterns`\n );\n reject();\n });\n }).catch(() => {\n throw new Error(`Pattern \"${pattern.name}\" not initialized.`);\n });\n};\n\n/**\n * Event factories\n */\n\n/** Generic event factory.\n *\n * A event factory for a bubbling and cancelable generic event.\n *\n * @param {string} name - The event name.\n * @returns {Event} - Returns a blur event.\n */\nconst generic_event = (name) => {\n return new Event(name, {\n bubbles: true,\n cancelable: true,\n });\n};\n\n\n/** Patternslib specifc event factories\n */\n\nclass UpdateEvent extends CustomEvent {\n constructor(options) {\n super(\"pat-update\", {\n bubbles: true,\n cancelable: true,\n detail: options\n });\n }\n}\n\nconst update_event = (options) => {\n return new UpdateEvent(options);\n}\n\n\n/** Web API event factories\n */\n\nconst blur_event = () => {\n return new Event(\"blur\", {\n bubbles: false,\n cancelable: false,\n });\n};\n\nconst click_event = () => {\n return new Event(\"click\", {\n bubbles: true,\n cancelable: true,\n });\n};\n\nconst change_event = () => {\n return new Event(\"change\", {\n bubbles: true,\n cancelable: false,\n });\n};\n\nconst focus_event = () => {\n return new Event(\"focus\", {\n bubbles: false,\n cancelable: false,\n });\n};\n\nconst input_event = () => {\n return new Event(\"input\", {\n bubbles: true,\n cancelable: false,\n });\n};\n\nconst mousedown_event = () => {\n return new Event(\"mousedown\", {\n bubbles: true,\n cancelable: true,\n });\n};\n\nconst mouseup_event = () => {\n return new Event(\"mouseup\", {\n bubbles: true,\n cancelable: true,\n });\n};\n\nconst scroll_event = () => {\n return new Event(\"scroll\", {\n bubbles: true,\n cancelable: false,\n });\n};\n\nconst submit_event = ({ submitter } = { submitter: undefined }) => {\n const event = new Event(\"submit\", {\n bubbles: true,\n cancelable: true,\n });\n event.submitter = submitter; // undefined or the submitting element\n return event;\n};\n\nconst dragstart_event = () => {\n return new Event(\"dragstart\", {\n bubbles: true,\n cancelable: true,\n });\n};\n\nconst dragend_event = () => {\n return new Event(\"dragend\", {\n bubbles: true,\n cancelable: true,\n });\n};\n\nexport default {\n add_event_listener: add_event_listener,\n remove_event_listener: remove_event_listener,\n await_event: await_event,\n await_pattern_init: await_pattern_init,\n generic_event: generic_event,\n update_event: update_event,\n blur_event: blur_event,\n click_event: click_event,\n change_event: change_event,\n focus_event: focus_event,\n input_event: input_event,\n mousedown_event: mousedown_event,\n mouseup_event: mouseup_event,\n scroll_event: scroll_event,\n submit_event: submit_event,\n dragstart_event: dragstart_event,\n dragend_event: dragend_event,\n};\n","/**\n * Patterns registry - Central registry and scan logic for patterns\n *\n * Copyright 2012-2013 Simplon B.V.\n * Copyright 2012-2013 Florian Friesdorf\n * Copyright 2013 Marko Durkovic\n * Copyright 2013 Rok Garbas\n * Copyright 2014-2015 Syslab.com GmBH, JC Brand\n */\n\n/*\n * changes to previous patterns.register/scan mechanism\n * - if you want initialised class, do it in init\n * - init returns set of elements actually initialised\n * - handle once within init\n * - no turnstile anymore\n * - set pattern.jquery_plugin if you want it\n */\nimport $ from \"jquery\";\nimport dom from \"./dom\";\nimport logging from \"./logging\";\nimport utils from \"./utils\";\n\nconst log = logging.getLogger(\"registry\");\nconst disable_re = /patterns-disable=([^&]+)/g;\nconst dont_catch_re = /patterns-dont-catch/g;\nconst disabled = {};\nlet dont_catch = false;\nlet match;\n\nwhile ((match = disable_re.exec(window.location.search)) !== null) {\n disabled[match[1]] = true;\n log.info(\"Pattern disabled via url config:\", match[1]);\n}\n\nwhile ((match = dont_catch_re.exec(window.location.search)) !== null) {\n dont_catch = true;\n log.info(\"I will not catch init exceptions\");\n}\n\n/**\n * Global pattern registry.\n *\n * This is a singleton and shared among any instance of the Patternslib\n * registry since Patternslib version 8.\n *\n * You normally don't need this as the registry handles it for you.\n */\nif (typeof window.__patternslib_registry === \"undefined\") {\n window.__patternslib_registry = {};\n}\nexport const PATTERN_REGISTRY = window.__patternslib_registry;\nif (typeof window.__patternslib_registry_initialized === \"undefined\") {\n window.__patternslib_registry_initialized = false;\n}\n\nconst registry = {\n patterns: PATTERN_REGISTRY, // reference to global patterns registry\n // as long as the registry is not initialized, pattern\n // registration just registers a pattern. Once init is called,\n // the DOM is scanned. After that registering a new pattern\n // results in rescanning the DOM only for this pattern.\n init() {\n dom.document_ready(() => {\n if (window.__patternslib_registry_initialized) {\n // Do not reinitialize a already initialized registry.\n return;\n }\n window.__patternslib_registry_initialized = true;\n log.debug(\"Loaded: \" + Object.keys(registry.patterns).sort().join(\", \"));\n registry.scan(document.body);\n log.debug(\"Finished initial scan.\");\n });\n },\n\n clear() {\n // Removes all patterns from the registry. Currently only being\n // used in tests.\n for (const name in registry.patterns) {\n delete registry.patterns[name];\n }\n },\n\n transformPattern(name, content) {\n /* Call the transform method on the pattern with the given name, if\n * it exists.\n */\n if (disabled[name]) {\n log.debug(`Skipping disabled pattern: ${name}.`);\n return;\n }\n\n const pattern = registry.patterns[name];\n const transform = pattern.transform || pattern.prototype?.transform;\n if (transform) {\n try {\n transform($(content));\n } catch (e) {\n if (dont_catch) {\n throw e;\n }\n log.error(`Transform error for pattern ${name}.`, e);\n }\n }\n },\n\n initPattern(name, el, trigger) {\n /* Initialize the pattern with the provided name and in the context\n * of the passed in DOM element.\n */\n const $el = $(el);\n const pattern = registry.patterns[name];\n const plog = logging.getLogger(`pat.${name}`);\n if (el.matches(pattern.trigger)) {\n plog.debug(\"Initialising.\", el);\n try {\n if (pattern.init) {\n // old style initialisation\n pattern.init($el, null, trigger);\n } else {\n // class based pattern initialisation\n new pattern($el, null, trigger);\n }\n\n plog.debug(\"done.\");\n } catch (e) {\n if (dont_catch) {\n throw e;\n }\n plog.error(\"Caught error:\", e);\n }\n }\n },\n\n orderPatterns(patterns) {\n // Always add pat-validation as first pattern, so that it can prevent\n // other patterns from reacting to submit events if form validation\n // fails.\n if (patterns.includes(\"validation\")) {\n patterns.splice(patterns.indexOf(\"validation\"), 1);\n patterns.unshift(\"validation\");\n }\n // Add clone-code to the very beginning - we want to copy the markup\n // before any other patterns changed the markup.\n if (patterns.includes(\"clone-code\")) {\n patterns.splice(patterns.indexOf(\"clone-code\"), 1);\n patterns.unshift(\"clone-code\");\n }\n\n return patterns;\n },\n\n scan(content, patterns, trigger) {\n if (!content) {\n return;\n }\n\n if (typeof content === \"string\") {\n content = document.querySelector(content);\n } else if (content instanceof Text) {\n // No need to scan a TextNode.\n return;\n } else if (content.jquery) {\n content = content[0];\n }\n\n const selectors = [];\n patterns = this.orderPatterns(patterns || Object.keys(registry.patterns));\n for (const name of patterns) {\n this.transformPattern(name, content);\n const pattern = registry.patterns[name];\n if (pattern.trigger) {\n selectors.unshift(pattern.trigger);\n }\n }\n\n // Clean up selectors:\n // - Remove whitespace,\n // - Remove trailing commas,\n // - Join to selecto string.\n const selector_string = selectors.map(\n (selector) => selector.trim().replace(/,$/, \"\")\n ).join(\",\");\n\n // Exit, if no selector.\n if (!selector_string) {\n return;\n }\n\n let matches = dom.querySelectorAllAndMe(\n content,\n selector_string\n );\n matches = matches.filter((el) => {\n // Filter out patterns:\n // - with class ``.disable-patterns`` or wrapped within.\n // - wrapped in ``
`` elements\n            // - wrapped in ``