@supersoniks/concorde 4.7.0 → 4.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)=>{(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))r(t);new MutationObserver(t=>{for(const i of t)if(i.type==="childList")for(const n of i.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&r(n)}).observe(document,{childList:!0,subtree:!0});function o(t){const i={};return t.integrity&&(i.integrity=t.integrity),t.referrerPolicy&&(i.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?i.credentials="include":t.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(t){if(t.ep)return;t.ep=!0;const i=o(t);fetch(t.href,i)}})();let ne=class ot{static getLanguage(){const e=document.documentElement.lang;return localStorage.getItem("SonicSelectedLanguage")||e}static getCookies(){return document.cookie.split(";").reduce((e,o)=>{const r=o.indexOf("=");return e[o.substring(0,r).trim()]=o.substring(r+1),e},{})}static everyAncestors(e,o){for(;e;){if(!o(e))return;e=e.parentNode||e.host}}static getScrollableAncestor(e){for(;e;){const o=e;if(o.nodeType===1){const r=window.getComputedStyle(o);if(r?.overflowY==="auto"||r?.overflowY==="scroll"||r?.overflowY==="hidden"||r?.overflowX==="auto"||r?.overflowX==="scroll"||r?.overflowX==="hidden")return e}e=e.parentNode||e.host}return null}static getAncestorAttributeValue(e,o){if(!e)return null;for(;!("hasAttribute"in e&&e.hasAttribute(o))&&(e.parentNode||e.host);)e=e.parentNode||e.host;return"hasAttribute"in e?e.getAttribute(o):null}static getApiConfiguration(e){const o=ot.getAncestorAttributeValue(e,"token"),r=ot.getAncestorAttributeValue(e,"addHTTPResponse")!=null,t=ot.getAncestorAttributeValue(e,"serviceURL");let i=null,n=null;const a=ot.getAncestorAttributeValue(e,"tokenProvider"),c=ot.getAncestorAttributeValue(e,"eventsApiToken");o||(i=ot.getAncestorAttributeValue(e,"userName"),n=ot.getAncestorAttributeValue(e,"password"));const g=ot.getAncestorAttributeValue(e,"credentials")||void 0,f=e.getAttribute("cache"),h=e.hasAttribute("blockUntilDone"),w=e.hasAttribute("keepAlive");return{serviceURL:t,token:o,userName:i,password:n,authToken:c,tokenProvider:a,addHTTPResponse:r,credentials:g,cache:f,blockUntilDone:h,keepAlive:w}}static getClosestElement(e,o){for(;!(e.nodeName&&e.nodeName.toLowerCase()===o)&&(e.parentNode||e.host);)e=e.parentNode||e.host;return e.nodeName?e:null}static getClosestForm(e){return ot.getClosestElement(e,"form")}static getAncestorsByTagNames(e,o){const r=new Set(o.map(n=>n.toLowerCase())),t=[];let i=e.parentNode||e.host;for(;i;)i instanceof Element&&r.has(i.tagName.toLowerCase())&&t.push(i),i=i.parentNode||i.host;return t}static getAncestorsBySelectors(e,o){const r=[];let t=e.parentNode||e.host;for(;t;){if(t instanceof Element)for(const i of o)try{if(t.matches(i)){r.push(t);break}}catch{}t=t.parentNode||t.host}return r}static async loadJS(e){return new Promise(async r=>{const t=document.createElement("script");t.src=e,t.onload=()=>r(!0),t.onerror=()=>r(!0),document.head.appendChild(t)})}static async loadCSS(e){return new Promise(async r=>{const t=document.createElement("link");t.type="text/css",t.rel="stylesheet",t.href=e,t.onload=()=>r(!0),t.onerror=()=>r(!0),document.head.appendChild(t)})}};const gn=s=>{const e=document.documentElement,o=new MutationObserver(t=>{for(let i of t)i.type==="attributes"&&i.attributeName==="lang"&&s()}),r={attributes:!0,attributeFilter:["lang"]};o.observe(e,r)};let Go=class{static ucFirst(e){return typeof e!="string"?e:e.charAt(0).toUpperCase()+e.substring(1)}static minutesDuration(e,o="",r="long"){o||(o=ne.getLanguage());const t=(g,f)=>[Math.floor(g/f),g%f];function i(g,f,h){return new Intl.NumberFormat(g,{style:"unit",unit:f,unitDisplay:h}).format}const[n,a]=t(e,60),c=[];return n&&c.push(i(o,"hour",r)(n)),a&&c.push(i(o,"minute",r)(a)),new Intl.ListFormat(o,{style:"long",type:"conjunction"}).format(c)}static js(e){try{return Function("return "+e)()}catch{return""}}};class tl{constructor(e){this.path=e}toString(){return this.path}}function sl(s){return new Proxy(s,{get(e,o){if(o==="path")return e.path;if(o==="toString")return e.toString.bind(e);if(o===Symbol.toStringTag)return"DataProviderKey";if(typeof o=="symbol")return e[o];const r=e.path?`${e.path}.${String(o)}`:String(o);return sl(new tl(r))}})}const $c=/\$\{|\{\$/;function Fc(s){return $c.test(s)}function fn(s){const e=typeof s=="string"?s:s.path;if(Fc(e))throw new Error("Static publisher path required for get/set/dp. Use @subscribe, @publish, or @handle for dynamic DataProviderKey paths.");return e}const I=function(s){return this instanceof I?sl(new tl(s)):new I(s)};let fe=class yt{static shallowEqual(e,o,r=!0){const t=Object.keys(e),i=Object.keys(o);if(t.length!==i.length&&r)return!1;for(const n of t){const a=e[n],c=o[n];if(r?a!==c:a!=c)return!1}return!0}static deepEqual(e,o,r=!0){const t=Object.keys(e),i=Object.keys(o);if(t.length!==i.length&&r)return!1;for(const n of t){const a=e[n],c=o[n],g=yt.isObject(a)&&yt.isObject(c),f=r?a!==c:a!=c;if(g&&!yt.deepEqual(a,c)||!g&&f)return!1}return!0}static isObject(e){return e!=null&&typeof e=="object"}static isUndefindOrNull(e){return e==null}static isEmpty(e){return yt.isUndefindOrNull(e)?!0:Object.keys(e).length===0}static traverse(e,o,r=!1){for(const t of o){const i=e[t];if(i===void 0)return;r&&yt.isObject(i)?e=Object.assign(Array.isArray(i)?[]:{},e,i):e=e[t]}return e}static traverseDotNotation(e,o,r=!1){return yt.traverse(e,o.split("."),r)}static getURLSearchArray(e,o=""){let r=[];for(let t in e){const i=e[t];o&&(t=o+"["+t+"]"),yt.isObject(i)?r=[...r,...this.getURLSearchArray(i,t)]:r.push(`${t}=${i}`)}return r}static getURLSearchString(e){return yt.getURLSearchArray(e,"").join("&")}};const $e=fe.traverseDotNotation;let Ec=class{static async queueTaskPromise(){return new Promise(e=>{window.queueMicrotask(()=>e(null))})}static async delayPromise(e){return new Promise(o=>{setTimeout(o,e)})}},ol="sonic";typeof __SONIC_PREFIX__<"u"&&(ol=__SONIC_PREFIX__);let ia=ol.replace(/-([a-z])/g,s=>s[1].toUpperCase());const Jo=ia.charAt(0).toUpperCase()+ia.slice(1);function No(s){return Object.prototype.hasOwnProperty.call(s,"__value")}function Pt(s){return typeof s=="object"&&s!==null}let _s="sonic";typeof __SONIC_PREFIX__>"u"&&(_s="sonic");const ri=_s=="sonic"?"publisher-proxies-data":_s+"-publisher-proxies-data",$t=class $t{constructor(e,o,r){for(this._proxies_=new Map,this._is_savable_=!1,this._expiration_delay_=1e3*60*60*12,this._invalidate_on_page_show_=!1,this._invalidateListeners_=new Set,this._formInvalidateListeners_=new Set,this._assignListeners_=new Set,this._mutationListeners_=new Set,this._fillListeners_=new Set,this._templateFillListeners_=new Set,this._lockInternalMutationPublishing_=!1,this._instanceCounter_=0,this._assignmentId_=0,this._value_=e,this.parent=o||null,this._parentKey_=r,this.root=this,this._instanceCounter_=0;this.root.parent;)this.root=this.root.parent}delete(){for(const e in this._proxies_.keys())e!="_parent_"&&this._proxies_.get(e)?.delete();this._invalidateListeners_.clear(),this._formInvalidateListeners_.clear(),this._assignListeners_.clear(),this._mutationListeners_.clear(),this._fillListeners_.clear(),this._templateFillListeners_.clear(),this._proxies_.clear(),$t.instances.delete(this._instanceCounter_)}hasListener(){return this._templateFillListeners_.size>0||this._assignListeners_.size>0||this._invalidateListeners_.size>0||this._formInvalidateListeners_.size>0||this._mutationListeners_.size>0||this._fillListeners_.size>0}_publishInternalMutation_(e=!1){if(this._mutationListeners_.forEach(o=>o()),this._is_savable_&&!R.changed){R.changed=!0,R.saveId++;const o=R.saveId;setTimeout(()=>R.getInstance().saveToLocalStorage(o),1e3)}e||this.parent&&this.parent._publishInternalMutation_()}async _publishAssignement_(e=!1){if(this._assignmentId_++,this._assignmentId_!==this._assignmentId_)return;const r=this.get();this._assignListeners_.forEach(t=>{t(r)}),this._publishInternalMutation_(e)}_publishInvalidation_(){this._invalidateListeners_.forEach(e=>e())}_publishFormInvalidation_(){this._formInvalidateListeners_.forEach(e=>e())}_publishDynamicFilling_(e,o){this._fillListeners_.forEach(r=>{r[e]!==o&&(r[e]=o)}),this._publishTemplateFilling_(e,o)}_publishTemplateFilling_(e,o){this._templateFillListeners_.forEach(r=>{const t=Object.getOwnPropertyDescriptor(r,e);t&&!t.set&&!t.writable||(r.propertyMap&&r.propertyMap[e]&&(e=r.propertyMap[e]),typeof r[e]<"u"&&r[e]!==o&&(r[e]=o))})}onAssign(e,o=!0){typeof e=="function"&&(this._assignListeners_.has(e)||(this._assignListeners_.add(e),o&&e(this.get())))}offAssign(e){this._assignListeners_.delete(e)}onInvalidate(e){typeof e=="function"&&this._invalidateListeners_.add(e)}offInvalidate(e){typeof e=="function"&&this._invalidateListeners_.delete(e)}invalidate(){this._publishInvalidation_()}onFormInvalidate(e){typeof e=="function"&&this._formInvalidateListeners_.add(e)}offFormInvalidate(e){typeof e=="function"&&this._formInvalidateListeners_.delete(e)}invalidateForm(){this._publishFormInvalidation_()}onInternalMutation(e){typeof e=="function"&&(this._mutationListeners_.add(e),e())}offInternalMutation(e){typeof e=="function"&&this._mutationListeners_.delete(e)}startTemplateFilling(e){if(this._templateFillListeners_.add(e),typeof this._value_=="object")for(const o in this._value_){let r=o;const t=this._value_[o];e.propertyMap&&e.propertyMap[o]&&(r=e.propertyMap[o]),typeof e[o]<"u"&&e[o]!==t&&(e[r]=t)}}stopTemplateFilling(e){this._templateFillListeners_.delete(e)}startDynamicFilling(e){this._fillListeners_.add(e);for(const o in this._value_){const r=this._value_[o];e[o]!==r&&(e[o]=r)}}stopDynamicFilling(e){this._fillListeners_.delete(e)}set(e,o=!1){if(this._value_===e||Pt(this._value_)&&Pt(e)&&e&&No(this._value_)&&No(e)&&this._value_.__value===e.__value||!Pt(e)&&e===this._value_.__value)return!0;this._value_=Pt(e)?e:{__value:e},this._cachedGet_=void 0;const r=No(this._value_);if(this._parentKey_&&this.parent){const t=No(this._value_)?this._value_.__value:this._value_;if(this.parent?.get()==null&&this.parent?.get()==null)if(isNaN(Number(this._parentKey_)))this.parent.set({[this._parentKey_]:t});else{const i=[];i[Number(this._parentKey_)]=t,this.parent.set(i)}else this.parent._value_[this._parentKey_]=t}if(r)return this._proxies_.forEach((t,i)=>{i!="_parent_"&&(t.set(null),this._publishDynamicFilling_(i,null))}),this._publishAssignement_(o),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_.__value),!0;for(const t in this._value_)this._value_[t]===void 0&&delete this._value_[t];if(this._proxies_.forEach((t,i)=>{const n=this._value_[i];i!="_parent_"&&n===void 0&&n!==null&&isNaN(Number(i))&&(t.set(null),this._publishDynamicFilling_(i,null))}),this._publishAssignement_(),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_),Pt(this._value_))for(const t in this._value_){const i=e[t],a=Pt(i)?i:{__value:i};if(!this._proxies_.has(t)){this._publishDynamicFilling_(t,i);continue}this._proxies_.get(t)?.set(a,!0),this._publishDynamicFilling_(t,i)}return!0}get(){if(R.modifiedCollectore.length>0&&R.modifiedCollectore[0].add(this),this._cachedGet_!==void 0)return this._cachedGet_;if(Object.prototype.hasOwnProperty.call(this._value_,"__value")){const e=this._value_.__value;return this._cachedGet_=e??null}return this._cachedGet_=this._value_!=null?this._value_:null}get $tag(){return this._instanceCounter_||($t.instancesCounter++,this._instanceCounter_=$t.instancesCounter),$t.instances.set(this._instanceCounter_,this),"<"+_s+'-publisher-proxy publisher="'+this._instanceCounter_+'"></'+_s+"-publisher-proxy>"}};$t.instances=new Map,$t.instancesCounter=0;let Xs=$t;const H=class H{constructor(){if(this.enabledLocaStorageProxies=[],this.publishers=new Map,this.localStorageData={},this.isLocalStrorageReady=null,this.initialisedData=[],H.instance!=null)throw"Singleton / use getInstance";H.instance=this,this.isLocalStrorageReady=this.cleanStorageData()}invalidateAll(){this.publishers.forEach(e=>{e._invalidate_on_page_show_&&e.invalidate()})}async cleanStorageData(){return new Promise(e=>{(async()=>{try{let r=localStorage.getItem(ri),t=null;if(r&&(t=await this.decompress(r,"gzip")),t)try{this.localStorageData=JSON.parse(t)}catch{this.localStorageData={}}else r=await this.compress("{}","gzip"),localStorage.setItem(ri,r),this.localStorageData={};const i=1e3*60*60*12;for(const n in this.localStorageData){const a=this.localStorageData[n],c=new Date().getTime()-(a.expirationDelayMs||i);a.lastModifiationMS<c&&delete this.localStorageData[n]}e(!0)}catch{window.requestAnimationFrame(()=>{e(!1)}),console.warn("no publisher cache in this browser")}})()})}static getInstance(e){if(e){const o=H.instances.get(e);return o||(console.warn("No PublisherManager instance registered with id:",e,"creating new one"),new H)}return H.instance==null?new H:H.instance}static registerInstance(e,o){H.instances.has(e)&&console.warn("PublisherManager instance already registered with id: ",e),H.instances.set(e,o)}static get(e,o){return H.getInstance().get(e,o)}static collectModifiedPublisher(){H.modifiedCollectore.unshift(new Set)}static getModifiedPublishers(){return H.modifiedCollectore.shift()}static delete(e){return e?H.getInstance().delete(e):!1}async setLocalData(e,o){await this.isLocalStrorageReady,e.set(this.localStorageData[o+"¤lang_"+ne.getLanguage()]?.data||e.get())}get(e,o){const r=o?.localStorageMode==="enabled",t=o?.invalidateOnPageShow===!0;if(!this.publishers.has(e)){const a=mi({});this.set(e,a)}const i=this.publishers.get(e);return r&&this.initialisedData.indexOf(e)===-1&&(o?.expirationDelayMs&&(i._expiration_delay_=o.expirationDelayMs),i._is_savable_=!0,this.initialisedData.push(e),this.setLocalData(i,e)),t&&(i._invalidate_on_page_show_=t),this.publishers.get(e)}set(e,o){this.publishers.set(e,o)}delete(e){return this.publishers.has(e)?(this.publishers.delete(e),!0):!1}async saveToLocalStorage(e=0){if(!(e!==H.saveId&&e%10!=0))try{if(!H.changed||H.saving)return;H.saving=!0,H.changed=!1;const o=Array.from(this.publishers.keys());let r=!1;for(const t of o){const i=this.publishers.get(t);if(!i?._is_savable_)continue;const n=i?.get();n&&(this.localStorageData[t+"¤lang_"+ne.getLanguage()]={lastModifiationMS:new Date().getTime(),expirationDelayMs:i._expiration_delay_,data:n},r=!0)}if(r){const t=await this.compress(JSON.stringify(this.localStorageData),"gzip");localStorage.setItem(ri,t)}if(H.saving=!1,H.changed){H.saveId++;const t=H.saveId;setTimeout(()=>this.saveToLocalStorage(t),1e3)}}catch{H.saving=!1}}async compress(e,o){const r=new TextEncoder().encode(e),t=window,i=new t.CompressionStream(o),n=i.writable.getWriter();n.write(r),n.close();const a=await new Response(i.readable).arrayBuffer(),c=new Uint8Array(a);let g="";for(let f=0;f<c.length;f++)g+=String.fromCharCode(c[f]);return btoa(g)}async decompress(e,o){const r=atob(e),i=Uint8Array.from(r,f=>f.charCodeAt(0)).buffer,n=window,a=new n.DecompressionStream(o),c=a.writable.getWriter();c.write(i),c.close();const g=await new Response(a.readable).arrayBuffer();return new TextDecoder().decode(g)}};H.buildDate="Wed Jun 03 2026 17:03:37 GMT+0200 (Central European Summer Time)",H.changed=!1,H.saving=!1,H.saveId=0,H.instance=null,H.instances=new Map,H.modifiedCollectore=[];let R=H;if(typeof window<"u"){const s=window;s[Jo+"PublisherManager"]=s[Jo+"PublisherManager"]||R}const Lc=new Set(["invalidate","onInvalidate","offInvalidate","invalidateForm","onFormInvalidate","offFormInvalidate","onAssign","offAssign","startDynamicFilling","stopDynamicFilling","startTemplateFilling","stopTemplateFilling","onInternalMutation","offInternalMutation","set","get","$tag","_cachedGet_","_templateFillListeners_","_fillListeners_","_assignListeners_","_invalidateListeners_","_formInvalidateListeners_","_publishInternalMutation_","hasListener","delete","_mutationListeners_","_publishDynamicFilling_","_publishInvalidation_","_publishFormInvalidation_","_publishTemplateFilling_","_publishAssignement_","_proxies_","parent","_parentKey_","_value_","_is_savable_","_expiration_delay_","_lockInternalMutationPublishing_","_instanceCounter_","_assignmentId_","_invalidate_on_page_show_"]);function Tc(s,e){return{get:function(o,r){if(typeof r=="string"&&Lc.has(r))return s[r];if(r==Symbol.toPrimitive)return()=>e().get();if(!s._proxies_.has(r)){const t=s._value_[r],i=mi(Pt(t)?t:{__value:t},s,r);i._proxies_.set("_parent_",e()),s._proxies_.set(r,i)}return s._proxies_.get(r)},set:function(o,r,t){if(r=="_value_")return s._value_=t,!0;if(r=="_cachedGet_")return s._cachedGet_=t,!0;if(r=="_assignmentId_")return s._assignmentId_=t,!0;if(r=="_is_savable_")return s._is_savable_=t,!0;if(r=="_expiration_delay_")return s._expiration_delay_=t,!0;if(r=="_invalidate_on_page_show_")return s._invalidate_on_page_show_=t,!0;if(r=="_instanceCounter_")return s._instanceCounter_=t,!0;if(!s._proxies_.has(r)){const n=mi({},s,r);n._proxies_.set("_parent_",e()),s._proxies_.set(r,n)}return s._value_[r]!==t&&(s._value_[r]=t,s._publishDynamicFilling_(r,t),s._proxies_.get(r)?.set(Pt(t)?t:{__value:t})),!0},deleteProperty:function(o,r){return s._publishDynamicFilling_(r,null),s._proxies_.get(r)?.set(null),delete s._value_[r]},has:function(o,r){return r in s._value_&&r!="_lockInternalMutationPublishing_"},defineProperty:function(o,r,t){return t&&"value"in t&&(s._value_[r]=t.value),!0},getOwnPropertyDescriptor:function(o,r){return{enumerable:!0,configurable:!0}},ownKeys:function(o){return s._value_.__value?Object.keys(s._value_.__value):Object.keys(s._value_)}}}function mi(s,e=null,o){const r=new Xs(s,e,o);let t=null;const i=Tc(r,()=>t);return t=new Proxy(r,i),t}class Oc extends HTMLElement{constructor(){super(),this.publisherId="",this.onAssign=e=>{this.innerHTML=e.toString()}}connectedCallback(){this.publisherId=this.getAttribute("publisher")||"",this.publisher=Xs.instances.get(parseInt(this.publisherId)),this.publisher?.onAssign(this.onAssign)}disconnectedCallback(){this.publisher?.offAssign(this.onAssign)}}try{customElements.define(_s+"-publisher-proxy",Oc)}catch{}const Or=s=>{if(typeof s=="function"){const e=s;return R.collectModifiedPublisher(),e(),R.getModifiedPublishers()}if(typeof s=="string"){const e=s.split("."),o=e.shift()||"";let r=R.get(o);r=fe.traverse(r,e);const t=new Set;return t.add(r),t}return new Set([s])};function it(s){const e=fn(s);return Or(e).values().next().value?.get()}function rl(s,e){const o=fn(s);return Or(o).values().next().value}function Ic(s,e){return rl(s)}function ko(s,e){return rl(s)}function N(s,e){const o=fn(s);Or(o).values().next().value?.set(e)}window.addEventListener("pageshow",s=>{s.persisted&&R.getInstance().invalidateAll()});var z;let Ir=(z=class{static disable(){this.enabled&&(this.enabled=!1,Array.from(z.observedElements.keys()).forEach(e=>z.unObserve(e)))}static observe(e){if(!e||!z.enabled||z.observedElements.has(e))return;const o=new MutationObserver(z.onMutation),r={};r.childList=!0,r.subtree=!0,r.attributes=!0,r.attributeFilter=["data-bind"],o.observe(e,r),e.querySelectorAll("[data-bind]").forEach(t=>z.addPublisherListeners(t)),z.observedElements.set(e,o)}static unObserve(e){if(!e)return;const o=this.observedElements.get(e);o&&(o.disconnect(),e.querySelectorAll("[data-bind]").forEach(r=>z.removePublisherListeners(r)))}static onAdded(e){e.hasAttribute&&e.hasAttribute("data-bind")&&z.addPublisherListeners(e),e.querySelectorAll?e.querySelectorAll("[data-bind]").forEach(o=>z.addPublisherListeners(o)):e.childNodes.forEach(o=>z.onAdded(o))}static onRemoved(e){e.hasAttribute&&e.hasAttribute("data-bind")&&z.removePublisherListeners(e),e.querySelectorAll?e.querySelectorAll("[data-bind]").forEach(o=>z.removePublisherListeners(o)):e.childNodes.forEach(o=>z.onRemoved(o))}static onMutation(e){for(const o of e)switch(o.type){case"attributes":z.addPublisherListeners(o.target);break;case"childList":o.addedNodes.forEach(r=>{z.onAdded(r)}),o.removedNodes.forEach(r=>{z.onRemoved(r)});break}}static removePublisherListeners(e){const o=z.publisherListeners.get(e);o&&(z.publisherListeners.delete(e),o.forEach(r=>{r.publisher?.offAssign(r.onAssign)}))}static getVariablesDescriptor(e){let o=e.match(/(\$(?:\w+\\?\.?)+)/g);return o?o=o.map(r=>r.replace("$","")):o=[e],o=o.filter(r=>r.length>0),{expression:e.replace("\\",""),variables:o.map(r=>r.split(/\b\.\b/).map(t=>t.replace("\\","")))}}static getDataBindItems(e){return"attributes"in e?Array.from(e.attributes).filter(o=>o.name.indexOf("::")==0).map(o=>({propertyToUpdate:o.name.substring(2).replace(/-((html)|\w)/g,t=>t.substring(1).toUpperCase()),bindedVariablesDescriptor:z.getVariablesDescriptor(o.value)})):[]}static getSubPublisher(e,o){if(!o)return e;for(const r of o)if(r!="_self_"){if(!e)return null;e=e[r]}return e}static addPublisherListeners(e){z.removePublisherListeners(e);const o=ne.getAncestorAttributeValue(e.parentNode||e.host||e,"dataProvider");if(!o)return;const r=R.getInstance().get(o),t=z.getDataBindItems(e),i=[];t.forEach(n=>{const a=n.bindedVariablesDescriptor,c=n.propertyToUpdate;for(const g of a.variables){const f=g;let h=r;h=z.getSubPublisher(r,f);const w=e,A={publisher:h,onAssign:()=>{const m=a.variables.map(_=>z.getSubPublisher(r,_)?.get());let b=a.expression,v=!1;if(m.length==1&&a.variables[0].join(".")==b.substring(1)){let _=m[0];_===null&&(_=""),w[c]=_;return}for(let _=0;_<m.length;_++){let d=m[_];const u=a.variables[_];d===null&&(v=!0,d=void 0),b=b.replace("$"+u.join("."),d)}if(b.indexOf("|")!=-1){const _=b.indexOf("|");if(_==0)b=Go.js(b.substring(1));else{const d=b.substring(0,_),u=b.substring(_+1),y=Go[d];b=v?"":y?y(u):b}}else b=v?"":b;w[c]=b}};h?.onAssign(A.onAssign),i.push(A)}}),z.publisherListeners.set(e,i)}},z.observedElements=new Map,z.enabled=!0,z.publisherListeners=new Map,z);Ir.observe(document.documentElement);window.SonicDataBindObserver||(window.SonicDataBindObserver=Ir);/**
1
+ var Ec=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var my=Ec((Sy,es)=>{(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))r(t);new MutationObserver(t=>{for(const i of t)if(i.type==="childList")for(const n of i.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&r(n)}).observe(document,{childList:!0,subtree:!0});function o(t){const i={};return t.integrity&&(i.integrity=t.integrity),t.referrerPolicy&&(i.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?i.credentials="include":t.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(t){if(t.ep)return;t.ep=!0;const i=o(t);fetch(t.href,i)}})();let ne=class He{static getLanguage(){const e=document.documentElement.lang;return localStorage.getItem("SonicSelectedLanguage")||e}static getCookies(){return document.cookie.split(";").reduce((e,o)=>{const r=o.indexOf("=");return e[o.substring(0,r).trim()]=o.substring(r+1),e},{})}static everyAncestors(e,o){for(;e;){if(!o(e))return;e=e.parentNode||e.host}}static getScrollableAncestor(e){for(;e;){const o=e;if(o.nodeType===1){const r=window.getComputedStyle(o);if(r?.overflowY==="auto"||r?.overflowY==="scroll"||r?.overflowY==="hidden"||r?.overflowX==="auto"||r?.overflowX==="scroll"||r?.overflowX==="hidden")return e}e=e.parentNode||e.host}return null}static scopeAttributeNames(e){const o=e.toLowerCase();return o===e?[e]:[e,o]}static readScopeValueOnElement(e,o){const r=e[o];if(typeof r=="string"&&r.length>0)return r;for(const t of He.scopeAttributeNames(o))if(e.hasAttribute(t)){const i=e.getAttribute(t);if(i!=null&&i.length>0)return i}return null}static getAncestorAttributeValue(e,o){if(!e)return null;let r=e;for(;r;){if(r instanceof HTMLElement){const i=He.readScopeValueOnElement(r,o);if(i!=null&&i.length>0)return i}const t=r.parentNode||r.host;if(!t)break;r=t}return null}static getApiConfiguration(e){const o=He.getAncestorAttributeValue(e,"token"),r=He.getAncestorAttributeValue(e,"addHTTPResponse")!=null,t=He.getAncestorAttributeValue(e,"serviceURL");let i=null,n=null;const a=He.getAncestorAttributeValue(e,"tokenProvider"),c=He.getAncestorAttributeValue(e,"eventsApiToken");o||(i=He.getAncestorAttributeValue(e,"userName"),n=He.getAncestorAttributeValue(e,"password"));const g=He.getAncestorAttributeValue(e,"credentials")||void 0,b=e.getAttribute("cache"),h=e.hasAttribute("blockUntilDone"),x=e.hasAttribute("keepAlive");return{serviceURL:t,token:o,userName:i,password:n,authToken:c,tokenProvider:a,addHTTPResponse:r,credentials:g,cache:b,blockUntilDone:h,keepAlive:x}}static getClosestElement(e,o){for(;!(e.nodeName&&e.nodeName.toLowerCase()===o)&&(e.parentNode||e.host);)e=e.parentNode||e.host;return e.nodeName?e:null}static getClosestForm(e){return He.getClosestElement(e,"form")}static getAncestorsByTagNames(e,o){const r=new Set(o.map(n=>n.toLowerCase())),t=[];let i=e.parentNode||e.host;for(;i;)i instanceof Element&&r.has(i.tagName.toLowerCase())&&t.push(i),i=i.parentNode||i.host;return t}static getAncestorsBySelectors(e,o){const r=[];let t=e.parentNode||e.host;for(;t;){if(t instanceof Element)for(const i of o)try{if(t.matches(i)){r.push(t);break}}catch{}t=t.parentNode||t.host}return r}static async loadJS(e){return new Promise(async r=>{const t=document.createElement("script");t.src=e,t.onload=()=>r(!0),t.onerror=()=>r(!0),document.head.appendChild(t)})}static async loadCSS(e){return new Promise(async r=>{const t=document.createElement("link");t.type="text/css",t.rel="stylesheet",t.href=e,t.onload=()=>r(!0),t.onerror=()=>r(!0),document.head.appendChild(t)})}};const gn=s=>{const e=document.documentElement,o=new MutationObserver(t=>{for(let i of t)i.type==="attributes"&&i.attributeName==="lang"&&s()}),r={attributes:!0,attributeFilter:["lang"]};o.observe(e,r)};let Go=class{static ucFirst(e){return typeof e!="string"?e:e.charAt(0).toUpperCase()+e.substring(1)}static minutesDuration(e,o="",r="long"){o||(o=ne.getLanguage());const t=(g,b)=>[Math.floor(g/b),g%b];function i(g,b,h){return new Intl.NumberFormat(g,{style:"unit",unit:b,unitDisplay:h}).format}const[n,a]=t(e,60),c=[];return n&&c.push(i(o,"hour",r)(n)),a&&c.push(i(o,"minute",r)(a)),new Intl.ListFormat(o,{style:"long",type:"conjunction"}).format(c)}static js(e){try{return Function("return "+e)()}catch{return""}}};class tl{constructor(e){this.path=e}toString(){return this.path}}function sl(s){return new Proxy(s,{get(e,o){if(o==="path")return e.path;if(o==="toString")return e.toString.bind(e);if(o===Symbol.toStringTag)return"DataProviderKey";if(typeof o=="symbol")return e[o];const r=e.path?`${e.path}.${String(o)}`:String(o);return sl(new tl(r))}})}const Lc=/\$\{|\{\$/;function Tc(s){return Lc.test(s)}function fn(s){const e=typeof s=="string"?s:s.path;if(Tc(e))throw new Error("Static publisher path required for get/set/dp. Use @subscribe, @publish, or @handle for dynamic DataProviderKey paths.");return e}const I=function(s){return this instanceof I?sl(new tl(s)):new I(s)};let fe=class yt{static shallowEqual(e,o,r=!0){const t=Object.keys(e),i=Object.keys(o);if(t.length!==i.length&&r)return!1;for(const n of t){const a=e[n],c=o[n];if(r?a!==c:a!=c)return!1}return!0}static deepEqual(e,o,r=!0){const t=Object.keys(e),i=Object.keys(o);if(t.length!==i.length&&r)return!1;for(const n of t){const a=e[n],c=o[n],g=yt.isObject(a)&&yt.isObject(c),b=r?a!==c:a!=c;if(g&&!yt.deepEqual(a,c)||!g&&b)return!1}return!0}static isObject(e){return e!=null&&typeof e=="object"}static isUndefindOrNull(e){return e==null}static isEmpty(e){return yt.isUndefindOrNull(e)?!0:Object.keys(e).length===0}static traverse(e,o,r=!1){for(const t of o){const i=e[t];if(i===void 0)return;r&&yt.isObject(i)?e=Object.assign(Array.isArray(i)?[]:{},e,i):e=e[t]}return e}static traverseDotNotation(e,o,r=!1){return yt.traverse(e,o.split("."),r)}static getURLSearchArray(e,o=""){let r=[];for(let t in e){const i=e[t];o&&(t=o+"["+t+"]"),yt.isObject(i)?r=[...r,...this.getURLSearchArray(i,t)]:r.push(`${t}=${i}`)}return r}static getURLSearchString(e){return yt.getURLSearchArray(e,"").join("&")}};const $e=fe.traverseDotNotation;let Oc=class{static async queueTaskPromise(){return new Promise(e=>{window.queueMicrotask(()=>e(null))})}static async delayPromise(e){return new Promise(o=>{setTimeout(o,e)})}},ol="sonic";typeof __SONIC_PREFIX__<"u"&&(ol=__SONIC_PREFIX__);let ia=ol.replace(/-([a-z])/g,s=>s[1].toUpperCase());const Jo=ia.charAt(0).toUpperCase()+ia.slice(1);function No(s){return Object.prototype.hasOwnProperty.call(s,"__value")}function Pt(s){return typeof s=="object"&&s!==null}let _s="sonic";typeof __SONIC_PREFIX__>"u"&&(_s="sonic");const ri=_s=="sonic"?"publisher-proxies-data":_s+"-publisher-proxies-data",$t=class $t{constructor(e,o,r){for(this._proxies_=new Map,this._is_savable_=!1,this._expiration_delay_=1e3*60*60*12,this._invalidate_on_page_show_=!1,this._invalidateListeners_=new Set,this._formInvalidateListeners_=new Set,this._assignListeners_=new Set,this._mutationListeners_=new Set,this._fillListeners_=new Set,this._templateFillListeners_=new Set,this._lockInternalMutationPublishing_=!1,this._instanceCounter_=0,this._assignmentId_=0,this._value_=e,this.parent=o||null,this._parentKey_=r,this.root=this,this._instanceCounter_=0;this.root.parent;)this.root=this.root.parent}delete(){for(const e in this._proxies_.keys())e!="_parent_"&&this._proxies_.get(e)?.delete();this._invalidateListeners_.clear(),this._formInvalidateListeners_.clear(),this._assignListeners_.clear(),this._mutationListeners_.clear(),this._fillListeners_.clear(),this._templateFillListeners_.clear(),this._proxies_.clear(),$t.instances.delete(this._instanceCounter_)}hasListener(){return this._templateFillListeners_.size>0||this._assignListeners_.size>0||this._invalidateListeners_.size>0||this._formInvalidateListeners_.size>0||this._mutationListeners_.size>0||this._fillListeners_.size>0}_publishInternalMutation_(e=!1){if(this._mutationListeners_.forEach(o=>o()),this._is_savable_&&!R.changed){R.changed=!0,R.saveId++;const o=R.saveId;setTimeout(()=>R.getInstance().saveToLocalStorage(o),1e3)}e||this.parent&&this.parent._publishInternalMutation_()}async _publishAssignement_(e=!1){if(this._assignmentId_++,this._assignmentId_!==this._assignmentId_)return;const r=this.get();this._assignListeners_.forEach(t=>{t(r)}),this._publishInternalMutation_(e)}_publishInvalidation_(){this._invalidateListeners_.forEach(e=>e())}_publishFormInvalidation_(){this._formInvalidateListeners_.forEach(e=>e())}_publishDynamicFilling_(e,o){this._fillListeners_.forEach(r=>{r[e]!==o&&(r[e]=o)}),this._publishTemplateFilling_(e,o)}_publishTemplateFilling_(e,o){this._templateFillListeners_.forEach(r=>{const t=Object.getOwnPropertyDescriptor(r,e);t&&!t.set&&!t.writable||(r.propertyMap&&r.propertyMap[e]&&(e=r.propertyMap[e]),typeof r[e]<"u"&&r[e]!==o&&(r[e]=o))})}onAssign(e,o=!0){typeof e=="function"&&(this._assignListeners_.has(e)||(this._assignListeners_.add(e),o&&e(this.get())))}offAssign(e){this._assignListeners_.delete(e)}onInvalidate(e){typeof e=="function"&&this._invalidateListeners_.add(e)}offInvalidate(e){typeof e=="function"&&this._invalidateListeners_.delete(e)}invalidate(){this._publishInvalidation_()}onFormInvalidate(e){typeof e=="function"&&this._formInvalidateListeners_.add(e)}offFormInvalidate(e){typeof e=="function"&&this._formInvalidateListeners_.delete(e)}invalidateForm(){this._publishFormInvalidation_()}onInternalMutation(e){typeof e=="function"&&(this._mutationListeners_.add(e),e())}offInternalMutation(e){typeof e=="function"&&this._mutationListeners_.delete(e)}startTemplateFilling(e){if(this._templateFillListeners_.add(e),typeof this._value_=="object")for(const o in this._value_){let r=o;const t=this._value_[o];e.propertyMap&&e.propertyMap[o]&&(r=e.propertyMap[o]),typeof e[o]<"u"&&e[o]!==t&&(e[r]=t)}}stopTemplateFilling(e){this._templateFillListeners_.delete(e)}startDynamicFilling(e){this._fillListeners_.add(e);for(const o in this._value_){const r=this._value_[o];e[o]!==r&&(e[o]=r)}}stopDynamicFilling(e){this._fillListeners_.delete(e)}set(e,o=!1){if(this._value_===e||Pt(this._value_)&&Pt(e)&&e&&No(this._value_)&&No(e)&&this._value_.__value===e.__value||!Pt(e)&&e===this._value_.__value)return!0;this._value_=Pt(e)?e:{__value:e},this._cachedGet_=void 0;const r=No(this._value_);if(this._parentKey_&&this.parent){const t=No(this._value_)?this._value_.__value:this._value_;if(this.parent?.get()==null&&this.parent?.get()==null)if(isNaN(Number(this._parentKey_)))this.parent.set({[this._parentKey_]:t});else{const i=[];i[Number(this._parentKey_)]=t,this.parent.set(i)}else this.parent._value_[this._parentKey_]=t}if(r)return this._proxies_.forEach((t,i)=>{i!="_parent_"&&(t.set(null),this._publishDynamicFilling_(i,null))}),this._publishAssignement_(o),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_.__value),!0;for(const t in this._value_)this._value_[t]===void 0&&delete this._value_[t];if(this._proxies_.forEach((t,i)=>{const n=this._value_[i];i!="_parent_"&&n===void 0&&n!==null&&isNaN(Number(i))&&(t.set(null),this._publishDynamicFilling_(i,null))}),this._publishAssignement_(),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_),Pt(this._value_))for(const t in this._value_){const i=e[t],a=Pt(i)?i:{__value:i};if(!this._proxies_.has(t)){this._publishDynamicFilling_(t,i);continue}this._proxies_.get(t)?.set(a,!0),this._publishDynamicFilling_(t,i)}return!0}get(){if(R.modifiedCollectore.length>0&&R.modifiedCollectore[0].add(this),this._cachedGet_!==void 0)return this._cachedGet_;if(Object.prototype.hasOwnProperty.call(this._value_,"__value")){const e=this._value_.__value;return this._cachedGet_=e??null}return this._cachedGet_=this._value_!=null?this._value_:null}get $tag(){return this._instanceCounter_||($t.instancesCounter++,this._instanceCounter_=$t.instancesCounter),$t.instances.set(this._instanceCounter_,this),"<"+_s+'-publisher-proxy publisher="'+this._instanceCounter_+'"></'+_s+"-publisher-proxy>"}};$t.instances=new Map,$t.instancesCounter=0;let Xs=$t;const H=class H{constructor(){if(this.enabledLocaStorageProxies=[],this.publishers=new Map,this.localStorageData={},this.isLocalStrorageReady=null,this.initialisedData=[],H.instance!=null)throw"Singleton / use getInstance";H.instance=this,this.isLocalStrorageReady=this.cleanStorageData()}invalidateAll(){this.publishers.forEach(e=>{e._invalidate_on_page_show_&&e.invalidate()})}async cleanStorageData(){return new Promise(e=>{(async()=>{try{let r=localStorage.getItem(ri),t=null;if(r&&(t=await this.decompress(r,"gzip")),t)try{this.localStorageData=JSON.parse(t)}catch{this.localStorageData={}}else r=await this.compress("{}","gzip"),localStorage.setItem(ri,r),this.localStorageData={};const i=1e3*60*60*12;for(const n in this.localStorageData){const a=this.localStorageData[n],c=new Date().getTime()-(a.expirationDelayMs||i);a.lastModifiationMS<c&&delete this.localStorageData[n]}e(!0)}catch{window.requestAnimationFrame(()=>{e(!1)}),console.warn("no publisher cache in this browser")}})()})}static getInstance(e){if(e){const o=H.instances.get(e);return o||(console.warn("No PublisherManager instance registered with id:",e,"creating new one"),new H)}return H.instance==null?new H:H.instance}static registerInstance(e,o){H.instances.has(e)&&console.warn("PublisherManager instance already registered with id: ",e),H.instances.set(e,o)}static get(e,o){return H.getInstance().get(e,o)}static collectModifiedPublisher(){H.modifiedCollectore.unshift(new Set)}static getModifiedPublishers(){return H.modifiedCollectore.shift()}static delete(e){return e?H.getInstance().delete(e):!1}async setLocalData(e,o){await this.isLocalStrorageReady,e.set(this.localStorageData[o+"¤lang_"+ne.getLanguage()]?.data||e.get())}get(e,o){const r=o?.localStorageMode==="enabled",t=o?.invalidateOnPageShow===!0;if(!this.publishers.has(e)){const a=mi({});this.set(e,a)}const i=this.publishers.get(e);return r&&this.initialisedData.indexOf(e)===-1&&(o?.expirationDelayMs&&(i._expiration_delay_=o.expirationDelayMs),i._is_savable_=!0,this.initialisedData.push(e),this.setLocalData(i,e)),t&&(i._invalidate_on_page_show_=t),this.publishers.get(e)}set(e,o){this.publishers.set(e,o)}delete(e){return this.publishers.has(e)?(this.publishers.delete(e),!0):!1}async saveToLocalStorage(e=0){if(!(e!==H.saveId&&e%10!=0))try{if(!H.changed||H.saving)return;H.saving=!0,H.changed=!1;const o=Array.from(this.publishers.keys());let r=!1;for(const t of o){const i=this.publishers.get(t);if(!i?._is_savable_)continue;const n=i?.get();n&&(this.localStorageData[t+"¤lang_"+ne.getLanguage()]={lastModifiationMS:new Date().getTime(),expirationDelayMs:i._expiration_delay_,data:n},r=!0)}if(r){const t=await this.compress(JSON.stringify(this.localStorageData),"gzip");localStorage.setItem(ri,t)}if(H.saving=!1,H.changed){H.saveId++;const t=H.saveId;setTimeout(()=>this.saveToLocalStorage(t),1e3)}}catch{H.saving=!1}}async compress(e,o){const r=new TextEncoder().encode(e),t=window,i=new t.CompressionStream(o),n=i.writable.getWriter();n.write(r),n.close();const a=await new Response(i.readable).arrayBuffer(),c=new Uint8Array(a);let g="";for(let b=0;b<c.length;b++)g+=String.fromCharCode(c[b]);return btoa(g)}async decompress(e,o){const r=atob(e),i=Uint8Array.from(r,b=>b.charCodeAt(0)).buffer,n=window,a=new n.DecompressionStream(o),c=a.writable.getWriter();c.write(i),c.close();const g=await new Response(a.readable).arrayBuffer();return new TextDecoder().decode(g)}};H.buildDate="Thu Jun 04 2026 11:23:48 GMT+0200 (Central European Summer Time)",H.changed=!1,H.saving=!1,H.saveId=0,H.instance=null,H.instances=new Map,H.modifiedCollectore=[];let R=H;if(typeof window<"u"){const s=window;s[Jo+"PublisherManager"]=s[Jo+"PublisherManager"]||R}const Ic=new Set(["invalidate","onInvalidate","offInvalidate","invalidateForm","onFormInvalidate","offFormInvalidate","onAssign","offAssign","startDynamicFilling","stopDynamicFilling","startTemplateFilling","stopTemplateFilling","onInternalMutation","offInternalMutation","set","get","$tag","_cachedGet_","_templateFillListeners_","_fillListeners_","_assignListeners_","_invalidateListeners_","_formInvalidateListeners_","_publishInternalMutation_","hasListener","delete","_mutationListeners_","_publishDynamicFilling_","_publishInvalidation_","_publishFormInvalidation_","_publishTemplateFilling_","_publishAssignement_","_proxies_","parent","_parentKey_","_value_","_is_savable_","_expiration_delay_","_lockInternalMutationPublishing_","_instanceCounter_","_assignmentId_","_invalidate_on_page_show_"]);function qc(s,e){return{get:function(o,r){if(typeof r=="string"&&Ic.has(r))return s[r];if(r==Symbol.toPrimitive)return()=>e().get();if(!s._proxies_.has(r)){const t=s._value_[r],i=mi(Pt(t)?t:{__value:t},s,r);i._proxies_.set("_parent_",e()),s._proxies_.set(r,i)}return s._proxies_.get(r)},set:function(o,r,t){if(r=="_value_")return s._value_=t,!0;if(r=="_cachedGet_")return s._cachedGet_=t,!0;if(r=="_assignmentId_")return s._assignmentId_=t,!0;if(r=="_is_savable_")return s._is_savable_=t,!0;if(r=="_expiration_delay_")return s._expiration_delay_=t,!0;if(r=="_invalidate_on_page_show_")return s._invalidate_on_page_show_=t,!0;if(r=="_instanceCounter_")return s._instanceCounter_=t,!0;if(!s._proxies_.has(r)){const n=mi({},s,r);n._proxies_.set("_parent_",e()),s._proxies_.set(r,n)}return s._value_[r]!==t&&(s._value_[r]=t,s._publishDynamicFilling_(r,t),s._proxies_.get(r)?.set(Pt(t)?t:{__value:t})),!0},deleteProperty:function(o,r){return s._publishDynamicFilling_(r,null),s._proxies_.get(r)?.set(null),delete s._value_[r]},has:function(o,r){return r in s._value_&&r!="_lockInternalMutationPublishing_"},defineProperty:function(o,r,t){return t&&"value"in t&&(s._value_[r]=t.value),!0},getOwnPropertyDescriptor:function(o,r){return{enumerable:!0,configurable:!0}},ownKeys:function(o){return s._value_.__value?Object.keys(s._value_.__value):Object.keys(s._value_)}}}function mi(s,e=null,o){const r=new Xs(s,e,o);let t=null;const i=qc(r,()=>t);return t=new Proxy(r,i),t}class Rc extends HTMLElement{constructor(){super(),this.publisherId="",this.onAssign=e=>{this.innerHTML=e.toString()}}connectedCallback(){this.publisherId=this.getAttribute("publisher")||"",this.publisher=Xs.instances.get(parseInt(this.publisherId)),this.publisher?.onAssign(this.onAssign)}disconnectedCallback(){this.publisher?.offAssign(this.onAssign)}}try{customElements.define(_s+"-publisher-proxy",Rc)}catch{}const Or=s=>{if(typeof s=="function"){const e=s;return R.collectModifiedPublisher(),e(),R.getModifiedPublishers()}if(typeof s=="string"){const e=s.split("."),o=e.shift()||"";let r=R.get(o);r=fe.traverse(r,e);const t=new Set;return t.add(r),t}return new Set([s])};function it(s){const e=fn(s);return Or(e).values().next().value?.get()}function rl(s,e){const o=fn(s);return Or(o).values().next().value}function Nc(s,e){return rl(s)}function ko(s,e){return rl(s)}function N(s,e){const o=fn(s);Or(o).values().next().value?.set(e)}window.addEventListener("pageshow",s=>{s.persisted&&R.getInstance().invalidateAll()});var z;let Ir=(z=class{static disable(){this.enabled&&(this.enabled=!1,Array.from(z.observedElements.keys()).forEach(e=>z.unObserve(e)))}static observe(e){if(!e||!z.enabled||z.observedElements.has(e))return;const o=new MutationObserver(z.onMutation),r={};r.childList=!0,r.subtree=!0,r.attributes=!0,r.attributeFilter=["data-bind"],o.observe(e,r),e.querySelectorAll("[data-bind]").forEach(t=>z.addPublisherListeners(t)),z.observedElements.set(e,o)}static unObserve(e){if(!e)return;const o=this.observedElements.get(e);o&&(o.disconnect(),e.querySelectorAll("[data-bind]").forEach(r=>z.removePublisherListeners(r)))}static onAdded(e){e.hasAttribute&&e.hasAttribute("data-bind")&&z.addPublisherListeners(e),e.querySelectorAll?e.querySelectorAll("[data-bind]").forEach(o=>z.addPublisherListeners(o)):e.childNodes.forEach(o=>z.onAdded(o))}static onRemoved(e){e.hasAttribute&&e.hasAttribute("data-bind")&&z.removePublisherListeners(e),e.querySelectorAll?e.querySelectorAll("[data-bind]").forEach(o=>z.removePublisherListeners(o)):e.childNodes.forEach(o=>z.onRemoved(o))}static onMutation(e){for(const o of e)switch(o.type){case"attributes":z.addPublisherListeners(o.target);break;case"childList":o.addedNodes.forEach(r=>{z.onAdded(r)}),o.removedNodes.forEach(r=>{z.onRemoved(r)});break}}static removePublisherListeners(e){const o=z.publisherListeners.get(e);o&&(z.publisherListeners.delete(e),o.forEach(r=>{r.publisher?.offAssign(r.onAssign)}))}static getVariablesDescriptor(e){let o=e.match(/(\$(?:\w+\\?\.?)+)/g);return o?o=o.map(r=>r.replace("$","")):o=[e],o=o.filter(r=>r.length>0),{expression:e.replace("\\",""),variables:o.map(r=>r.split(/\b\.\b/).map(t=>t.replace("\\","")))}}static getDataBindItems(e){return"attributes"in e?Array.from(e.attributes).filter(o=>o.name.indexOf("::")==0).map(o=>({propertyToUpdate:o.name.substring(2).replace(/-((html)|\w)/g,t=>t.substring(1).toUpperCase()),bindedVariablesDescriptor:z.getVariablesDescriptor(o.value)})):[]}static getSubPublisher(e,o){if(!o)return e;for(const r of o)if(r!="_self_"){if(!e)return null;e=e[r]}return e}static addPublisherListeners(e){z.removePublisherListeners(e);const o=ne.getAncestorAttributeValue(e.parentNode||e.host||e,"dataProvider");if(!o)return;const r=R.getInstance().get(o),t=z.getDataBindItems(e),i=[];t.forEach(n=>{const a=n.bindedVariablesDescriptor,c=n.propertyToUpdate;for(const g of a.variables){const b=g;let h=r;h=z.getSubPublisher(r,b);const x=e,A={publisher:h,onAssign:()=>{const m=a.variables.map(_=>z.getSubPublisher(r,_)?.get());let f=a.expression,v=!1;if(m.length==1&&a.variables[0].join(".")==f.substring(1)){let _=m[0];_===null&&(_=""),x[c]=_;return}for(let _=0;_<m.length;_++){let d=m[_];const u=a.variables[_];d===null&&(v=!0,d=void 0),f=f.replace("$"+u.join("."),d)}if(f.indexOf("|")!=-1){const _=f.indexOf("|");if(_==0)f=Go.js(f.substring(1));else{const d=f.substring(0,_),u=f.substring(_+1),y=Go[d];f=v?"":y?y(u):f}}else f=v?"":f;x[c]=f}};h?.onAssign(A.onAssign),i.push(A)}}),z.publisherListeners.set(e,i)}},z.observedElements=new Map,z.enabled=!0,z.publisherListeners=new Map,z);Ir.observe(document.documentElement);window.SonicDataBindObserver||(window.SonicDataBindObserver=Ir);/**
2
2
  * @license
3
3
  * Copyright 2017 Google LLC
4
4
  * SPDX-License-Identifier: BSD-3-Clause
@@ -6,15 +6,15 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
6
6
  * @license
7
7
  * Copyright 2019 Google LLC
8
8
  * SPDX-License-Identifier: BSD-3-Clause
9
- */const zo=globalThis,bn=zo.ShadowRoot&&(zo.ShadyCSS===void 0||zo.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,yn=Symbol(),na=new WeakMap;let vn=class{constructor(e,o,r){if(this._$cssResult$=!0,r!==yn)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=o}get styleSheet(){let e=this.o;const o=this.t;if(bn&&e===void 0){const r=o!==void 0&&o.length===1;r&&(e=na.get(o)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&na.set(o,e))}return e}toString(){return this.cssText}};const wn=s=>new vn(typeof s=="string"?s:s+"",void 0,yn),L=(s,...e)=>{const o=s.length===1?s[0]:e.reduce(((r,t,i)=>r+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(t)+s[i+1]),s[0]);return new vn(o,s,yn)},qc=(s,e)=>{if(bn)s.adoptedStyleSheets=e.map((o=>o instanceof CSSStyleSheet?o:o.styleSheet));else for(const o of e){const r=document.createElement("style"),t=zo.litNonce;t!==void 0&&r.setAttribute("nonce",t),r.textContent=o.cssText,s.appendChild(r)}},aa=bn?s=>s:s=>s instanceof CSSStyleSheet?(e=>{let o="";for(const r of e.cssRules)o+=r.cssText;return wn(o)})(s):s;/**
9
+ */const zo=globalThis,bn=zo.ShadowRoot&&(zo.ShadyCSS===void 0||zo.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,yn=Symbol(),na=new WeakMap;let vn=class{constructor(e,o,r){if(this._$cssResult$=!0,r!==yn)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=o}get styleSheet(){let e=this.o;const o=this.t;if(bn&&e===void 0){const r=o!==void 0&&o.length===1;r&&(e=na.get(o)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&na.set(o,e))}return e}toString(){return this.cssText}};const wn=s=>new vn(typeof s=="string"?s:s+"",void 0,yn),L=(s,...e)=>{const o=s.length===1?s[0]:e.reduce(((r,t,i)=>r+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(t)+s[i+1]),s[0]);return new vn(o,s,yn)},Mc=(s,e)=>{if(bn)s.adoptedStyleSheets=e.map((o=>o instanceof CSSStyleSheet?o:o.styleSheet));else for(const o of e){const r=document.createElement("style"),t=zo.litNonce;t!==void 0&&r.setAttribute("nonce",t),r.textContent=o.cssText,s.appendChild(r)}},aa=bn?s=>s:s=>s instanceof CSSStyleSheet?(e=>{let o="";for(const r of e.cssRules)o+=r.cssText;return wn(o)})(s):s;/**
10
10
  * @license
11
11
  * Copyright 2017 Google LLC
12
12
  * SPDX-License-Identifier: BSD-3-Clause
13
- */const{is:Rc,defineProperty:Nc,getOwnPropertyDescriptor:Mc,getOwnPropertyNames:jc,getOwnPropertySymbols:Uc,getPrototypeOf:Bc}=Object,qr=globalThis,la=qr.trustedTypes,zc=la?la.emptyScript:"",Kc=qr.reactiveElementPolyfillSupport,Ys=(s,e)=>s,Yo={toAttribute(s,e){switch(e){case Boolean:s=s?zc:null;break;case Object:case Array:s=s==null?s:JSON.stringify(s)}return s},fromAttribute(s,e){let o=s;switch(e){case Boolean:o=s!==null;break;case Number:o=s===null?null:Number(s);break;case Object:case Array:try{o=JSON.parse(s)}catch{o=null}}return o}},xn=(s,e)=>!Rc(s,e),ca={attribute:!0,type:String,converter:Yo,reflect:!1,useDefault:!1,hasChanged:xn};Symbol.metadata??=Symbol("metadata"),qr.litPropertyMetadata??=new WeakMap;let bs=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,o=ca){if(o.state&&(o.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((o=Object.create(o)).wrapped=!0),this.elementProperties.set(e,o),!o.noAccessor){const r=Symbol(),t=this.getPropertyDescriptor(e,r,o);t!==void 0&&Nc(this.prototype,e,t)}}static getPropertyDescriptor(e,o,r){const{get:t,set:i}=Mc(this.prototype,e)??{get(){return this[o]},set(n){this[o]=n}};return{get:t,set(n){const a=t?.call(this);i?.call(this,n),this.requestUpdate(e,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??ca}static _$Ei(){if(this.hasOwnProperty(Ys("elementProperties")))return;const e=Bc(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Ys("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Ys("properties"))){const o=this.properties,r=[...jc(o),...Uc(o)];for(const t of r)this.createProperty(t,o[t])}const e=this[Symbol.metadata];if(e!==null){const o=litPropertyMetadata.get(e);if(o!==void 0)for(const[r,t]of o)this.elementProperties.set(r,t)}this._$Eh=new Map;for(const[o,r]of this.elementProperties){const t=this._$Eu(o,r);t!==void 0&&this._$Eh.set(t,o)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const o=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const t of r)o.unshift(aa(t))}else e!==void 0&&o.push(aa(e));return o}static _$Eu(e,o){const r=o.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,o=this.constructor.elementProperties;for(const r of o.keys())this.hasOwnProperty(r)&&(e.set(r,this[r]),delete this[r]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return qc(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,o,r){this._$AK(e,r)}_$ET(e,o){const r=this.constructor.elementProperties.get(e),t=this.constructor._$Eu(e,r);if(t!==void 0&&r.reflect===!0){const i=(r.converter?.toAttribute!==void 0?r.converter:Yo).toAttribute(o,r.type);this._$Em=e,i==null?this.removeAttribute(t):this.setAttribute(t,i),this._$Em=null}}_$AK(e,o){const r=this.constructor,t=r._$Eh.get(e);if(t!==void 0&&this._$Em!==t){const i=r.getPropertyOptions(t),n=typeof i.converter=="function"?{fromAttribute:i.converter}:i.converter?.fromAttribute!==void 0?i.converter:Yo;this._$Em=t;const a=n.fromAttribute(o,i.type);this[t]=a??this._$Ej?.get(t)??a,this._$Em=null}}requestUpdate(e,o,r){if(e!==void 0){const t=this.constructor,i=this[e];if(r??=t.getPropertyOptions(e),!((r.hasChanged??xn)(i,o)||r.useDefault&&r.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(t._$Eu(e,r))))return;this.C(e,o,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,o,{useDefault:r,reflect:t,wrapped:i},n){r&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,n??o??this[e]),i!==!0||n!==void 0)||(this._$AL.has(e)||(this.hasUpdated||r||(o=void 0),this._$AL.set(e,o)),t===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(o){Promise.reject(o)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,i]of this._$Ep)this[t]=i;this._$Ep=void 0}const r=this.constructor.elementProperties;if(r.size>0)for(const[t,i]of r){const{wrapped:n}=i,a=this[t];n!==!0||this._$AL.has(t)||a===void 0||this.C(t,void 0,i,a)}}let e=!1;const o=this._$AL;try{e=this.shouldUpdate(o),e?(this.willUpdate(o),this._$EO?.forEach((r=>r.hostUpdate?.())),this.update(o)):this._$EM()}catch(r){throw e=!1,this._$EM(),r}e&&this._$AE(o)}willUpdate(e){}_$AE(e){this._$EO?.forEach((o=>o.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach((o=>this._$ET(o,this[o]))),this._$EM()}updated(e){}firstUpdated(e){}};bs.elementStyles=[],bs.shadowRootOptions={mode:"open"},bs[Ys("elementProperties")]=new Map,bs[Ys("finalized")]=new Map,Kc?.({ReactiveElement:bs}),(qr.reactiveElementVersions??=[]).push("2.1.1");/**
13
+ */const{is:jc,defineProperty:Uc,getOwnPropertyDescriptor:Bc,getOwnPropertyNames:zc,getOwnPropertySymbols:Kc,getPrototypeOf:Hc}=Object,qr=globalThis,la=qr.trustedTypes,Vc=la?la.emptyScript:"",Wc=qr.reactiveElementPolyfillSupport,Ys=(s,e)=>s,Yo={toAttribute(s,e){switch(e){case Boolean:s=s?Vc:null;break;case Object:case Array:s=s==null?s:JSON.stringify(s)}return s},fromAttribute(s,e){let o=s;switch(e){case Boolean:o=s!==null;break;case Number:o=s===null?null:Number(s);break;case Object:case Array:try{o=JSON.parse(s)}catch{o=null}}return o}},xn=(s,e)=>!jc(s,e),ca={attribute:!0,type:String,converter:Yo,reflect:!1,useDefault:!1,hasChanged:xn};Symbol.metadata??=Symbol("metadata"),qr.litPropertyMetadata??=new WeakMap;let bs=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,o=ca){if(o.state&&(o.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((o=Object.create(o)).wrapped=!0),this.elementProperties.set(e,o),!o.noAccessor){const r=Symbol(),t=this.getPropertyDescriptor(e,r,o);t!==void 0&&Uc(this.prototype,e,t)}}static getPropertyDescriptor(e,o,r){const{get:t,set:i}=Bc(this.prototype,e)??{get(){return this[o]},set(n){this[o]=n}};return{get:t,set(n){const a=t?.call(this);i?.call(this,n),this.requestUpdate(e,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??ca}static _$Ei(){if(this.hasOwnProperty(Ys("elementProperties")))return;const e=Hc(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Ys("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Ys("properties"))){const o=this.properties,r=[...zc(o),...Kc(o)];for(const t of r)this.createProperty(t,o[t])}const e=this[Symbol.metadata];if(e!==null){const o=litPropertyMetadata.get(e);if(o!==void 0)for(const[r,t]of o)this.elementProperties.set(r,t)}this._$Eh=new Map;for(const[o,r]of this.elementProperties){const t=this._$Eu(o,r);t!==void 0&&this._$Eh.set(t,o)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const o=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const t of r)o.unshift(aa(t))}else e!==void 0&&o.push(aa(e));return o}static _$Eu(e,o){const r=o.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,o=this.constructor.elementProperties;for(const r of o.keys())this.hasOwnProperty(r)&&(e.set(r,this[r]),delete this[r]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Mc(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,o,r){this._$AK(e,r)}_$ET(e,o){const r=this.constructor.elementProperties.get(e),t=this.constructor._$Eu(e,r);if(t!==void 0&&r.reflect===!0){const i=(r.converter?.toAttribute!==void 0?r.converter:Yo).toAttribute(o,r.type);this._$Em=e,i==null?this.removeAttribute(t):this.setAttribute(t,i),this._$Em=null}}_$AK(e,o){const r=this.constructor,t=r._$Eh.get(e);if(t!==void 0&&this._$Em!==t){const i=r.getPropertyOptions(t),n=typeof i.converter=="function"?{fromAttribute:i.converter}:i.converter?.fromAttribute!==void 0?i.converter:Yo;this._$Em=t;const a=n.fromAttribute(o,i.type);this[t]=a??this._$Ej?.get(t)??a,this._$Em=null}}requestUpdate(e,o,r){if(e!==void 0){const t=this.constructor,i=this[e];if(r??=t.getPropertyOptions(e),!((r.hasChanged??xn)(i,o)||r.useDefault&&r.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(t._$Eu(e,r))))return;this.C(e,o,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,o,{useDefault:r,reflect:t,wrapped:i},n){r&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,n??o??this[e]),i!==!0||n!==void 0)||(this._$AL.has(e)||(this.hasUpdated||r||(o=void 0),this._$AL.set(e,o)),t===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(o){Promise.reject(o)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,i]of this._$Ep)this[t]=i;this._$Ep=void 0}const r=this.constructor.elementProperties;if(r.size>0)for(const[t,i]of r){const{wrapped:n}=i,a=this[t];n!==!0||this._$AL.has(t)||a===void 0||this.C(t,void 0,i,a)}}let e=!1;const o=this._$AL;try{e=this.shouldUpdate(o),e?(this.willUpdate(o),this._$EO?.forEach((r=>r.hostUpdate?.())),this.update(o)):this._$EM()}catch(r){throw e=!1,this._$EM(),r}e&&this._$AE(o)}willUpdate(e){}_$AE(e){this._$EO?.forEach((o=>o.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach((o=>this._$ET(o,this[o]))),this._$EM()}updated(e){}firstUpdated(e){}};bs.elementStyles=[],bs.shadowRootOptions={mode:"open"},bs[Ys("elementProperties")]=new Map,bs[Ys("finalized")]=new Map,Wc?.({ReactiveElement:bs}),(qr.reactiveElementVersions??=[]).push("2.1.1");/**
14
14
  * @license
15
15
  * Copyright 2017 Google LLC
16
16
  * SPDX-License-Identifier: BSD-3-Clause
17
- */const Hc={attribute:!0,type:String,converter:Yo,reflect:!1,hasChanged:xn},Vc=(s=Hc,e,o)=>{const{kind:r,metadata:t}=o;let i=globalThis.litPropertyMetadata.get(t);if(i===void 0&&globalThis.litPropertyMetadata.set(t,i=new Map),r==="setter"&&((s=Object.create(s)).wrapped=!0),i.set(o.name,s),r==="accessor"){const{name:n}=o;return{set(a){const c=e.get.call(this);e.set.call(this,a),this.requestUpdate(n,c,s)},init(a){return a!==void 0&&this.C(n,void 0,s,a),a}}}if(r==="setter"){const{name:n}=o;return function(a){const c=this[n];e.call(this,a),this.requestUpdate(n,c,s)}}throw Error("Unsupported decorator location: "+r)};function l(s){return(e,o)=>typeof o=="object"?Vc(s,e,o):((r,t,i)=>{const n=t.hasOwnProperty(i);return t.constructor.createProperty(i,r),n?Object.getOwnPropertyDescriptor(t,i):void 0})(s,e,o)}/**
17
+ */const Gc={attribute:!0,type:String,converter:Yo,reflect:!1,hasChanged:xn},Jc=(s=Gc,e,o)=>{const{kind:r,metadata:t}=o;let i=globalThis.litPropertyMetadata.get(t);if(i===void 0&&globalThis.litPropertyMetadata.set(t,i=new Map),r==="setter"&&((s=Object.create(s)).wrapped=!0),i.set(o.name,s),r==="accessor"){const{name:n}=o;return{set(a){const c=e.get.call(this);e.set.call(this,a),this.requestUpdate(n,c,s)},init(a){return a!==void 0&&this.C(n,void 0,s,a),a}}}if(r==="setter"){const{name:n}=o;return function(a){const c=this[n];e.call(this,a),this.requestUpdate(n,c,s)}}throw Error("Unsupported decorator location: "+r)};function l(s){return(e,o)=>typeof o=="object"?Jc(s,e,o):((r,t,i)=>{const n=t.hasOwnProperty(i);return t.constructor.createProperty(i,r),n?Object.getOwnPropertyDescriptor(t,i):void 0})(s,e,o)}/**
18
18
  * @license
19
19
  * Copyright 2017 Google LLC
20
20
  * SPDX-License-Identifier: BSD-3-Clause
@@ -38,13 +38,13 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
38
38
  * @license
39
39
  * Copyright 2017 Google LLC
40
40
  * SPDX-License-Identifier: BSD-3-Clause
41
- */const Dn=globalThis,Qo=Dn.trustedTypes,da=Qo?Qo.createPolicy("lit-html",{createHTML:s=>s}):void 0,il="$lit$",Ft=`lit$${Math.random().toFixed(9).slice(2)}$`,nl="?"+Ft,Wc=`<${nl}>`,ts=document,eo=()=>ts.createComment(""),to=s=>s===null||typeof s!="object"&&typeof s!="function",kn=Array.isArray,Gc=s=>kn(s)||typeof s?.[Symbol.iterator]=="function",ii=`[
41
+ */const Dn=globalThis,Qo=Dn.trustedTypes,da=Qo?Qo.createPolicy("lit-html",{createHTML:s=>s}):void 0,il="$lit$",Ft=`lit$${Math.random().toFixed(9).slice(2)}$`,nl="?"+Ft,Yc=`<${nl}>`,ts=document,eo=()=>ts.createComment(""),to=s=>s===null||typeof s!="object"&&typeof s!="function",kn=Array.isArray,Qc=s=>kn(s)||typeof s?.[Symbol.iterator]=="function",ii=`[
42
42
  \f\r]`,Hs=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,ua=/-->/g,pa=/>/g,Vt=RegExp(`>|${ii}(?:([^\\s"'>=/]+)(${ii}*=${ii}*(?:[^
43
- \f\r"'\`<>=]|("|')|))|$)`,"g"),ha=/'/g,ma=/"/g,al=/^(?:script|style|textarea|title)$/i,Jc=s=>(e,...o)=>({_$litType$:s,strings:e,values:o}),p=Jc(1),Me=Symbol.for("lit-noChange"),S=Symbol.for("lit-nothing"),ga=new WeakMap,Zt=ts.createTreeWalker(ts,129);function ll(s,e){if(!kn(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return da!==void 0?da.createHTML(e):e}const Yc=(s,e)=>{const o=s.length-1,r=[];let t,i=e===2?"<svg>":e===3?"<math>":"",n=Hs;for(let a=0;a<o;a++){const c=s[a];let g,f,h=-1,w=0;for(;w<c.length&&(n.lastIndex=w,f=n.exec(c),f!==null);)w=n.lastIndex,n===Hs?f[1]==="!--"?n=ua:f[1]!==void 0?n=pa:f[2]!==void 0?(al.test(f[2])&&(t=RegExp("</"+f[2],"g")),n=Vt):f[3]!==void 0&&(n=Vt):n===Vt?f[0]===">"?(n=t??Hs,h=-1):f[1]===void 0?h=-2:(h=n.lastIndex-f[2].length,g=f[1],n=f[3]===void 0?Vt:f[3]==='"'?ma:ha):n===ma||n===ha?n=Vt:n===ua||n===pa?n=Hs:(n=Vt,t=void 0);const A=n===Vt&&s[a+1].startsWith("/>")?" ":"";i+=n===Hs?c+Wc:h>=0?(r.push(g),c.slice(0,h)+il+c.slice(h)+Ft+A):c+Ft+(h===-2?a:A)}return[ll(s,i+(s[o]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),r]};let gi=class cl{constructor({strings:e,_$litType$:o},r){let t;this.parts=[];let i=0,n=0;const a=e.length-1,c=this.parts,[g,f]=Yc(e,o);if(this.el=cl.createElement(g,r),Zt.currentNode=this.el.content,o===2||o===3){const h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(t=Zt.nextNode())!==null&&c.length<a;){if(t.nodeType===1){if(t.hasAttributes())for(const h of t.getAttributeNames())if(h.endsWith(il)){const w=f[n++],A=t.getAttribute(h).split(Ft),m=/([.?@])?(.*)/.exec(w);c.push({type:1,index:i,name:m[2],strings:A,ctor:m[1]==="."?Zc:m[1]==="?"?Xc:m[1]==="@"?ed:Rr}),t.removeAttribute(h)}else h.startsWith(Ft)&&(c.push({type:6,index:i}),t.removeAttribute(h));if(al.test(t.tagName)){const h=t.textContent.split(Ft),w=h.length-1;if(w>0){t.textContent=Qo?Qo.emptyScript:"";for(let A=0;A<w;A++)t.append(h[A],eo()),Zt.nextNode(),c.push({type:2,index:++i});t.append(h[w],eo())}}}else if(t.nodeType===8)if(t.data===nl)c.push({type:2,index:i});else{let h=-1;for(;(h=t.data.indexOf(Ft,h+1))!==-1;)c.push({type:7,index:i}),h+=Ft.length-1}i++}}static createElement(e,o){const r=ts.createElement("template");return r.innerHTML=e,r}};function Ds(s,e,o=s,r){if(e===Me)return e;let t=r!==void 0?o._$Co?.[r]:o._$Cl;const i=to(e)?void 0:e._$litDirective$;return t?.constructor!==i&&(t?._$AO?.(!1),i===void 0?t=void 0:(t=new i(s),t._$AT(s,o,r)),r!==void 0?(o._$Co??=[])[r]=t:o._$Cl=t),t!==void 0&&(e=Ds(s,t._$AS(s,e.values),t,r)),e}let Qc=class{constructor(e,o){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=o}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){const{el:{content:o},parts:r}=this._$AD,t=(e?.creationScope??ts).importNode(o,!0);Zt.currentNode=t;let i=Zt.nextNode(),n=0,a=0,c=r[0];for(;c!==void 0;){if(n===c.index){let g;c.type===2?g=new qs(i,i.nextSibling,this,e):c.type===1?g=new c.ctor(i,c.name,c.strings,this,e):c.type===6&&(g=new td(i,this,e)),this._$AV.push(g),c=r[++a]}n!==c?.index&&(i=Zt.nextNode(),n++)}return Zt.currentNode=ts,t}p(e){let o=0;for(const r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,o),o+=r.strings.length-2):r._$AI(e[o])),o++}};class qs{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,o,r,t){this.type=2,this._$AH=S,this._$AN=void 0,this._$AA=e,this._$AB=o,this._$AM=r,this.options=t,this._$Cv=t?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode;const o=this._$AM;return o!==void 0&&e?.nodeType===11&&(e=o.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,o=this){e=Ds(this,e,o),to(e)?e===S||e==null||e===""?(this._$AH!==S&&this._$AR(),this._$AH=S):e!==this._$AH&&e!==Me&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Gc(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==S&&to(this._$AH)?this._$AA.nextSibling.data=e:this.T(ts.createTextNode(e)),this._$AH=e}$(e){const{values:o,_$litType$:r}=e,t=typeof r=="number"?this._$AC(e):(r.el===void 0&&(r.el=gi.createElement(ll(r.h,r.h[0]),this.options)),r);if(this._$AH?._$AD===t)this._$AH.p(o);else{const i=new Qc(t,this),n=i.u(this.options);i.p(o),this.T(n),this._$AH=i}}_$AC(e){let o=ga.get(e.strings);return o===void 0&&ga.set(e.strings,o=new gi(e)),o}k(e){kn(this._$AH)||(this._$AH=[],this._$AR());const o=this._$AH;let r,t=0;for(const i of e)t===o.length?o.push(r=new qs(this.O(eo()),this.O(eo()),this,this.options)):r=o[t],r._$AI(i),t++;t<o.length&&(this._$AR(r&&r._$AB.nextSibling,t),o.length=t)}_$AR(e=this._$AA.nextSibling,o){for(this._$AP?.(!1,!0,o);e!==this._$AB;){const r=e.nextSibling;e.remove(),e=r}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}}class Rr{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,o,r,t,i){this.type=1,this._$AH=S,this._$AN=void 0,this.element=e,this.name=o,this._$AM=t,this.options=i,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=S}_$AI(e,o=this,r,t){const i=this.strings;let n=!1;if(i===void 0)e=Ds(this,e,o,0),n=!to(e)||e!==this._$AH&&e!==Me,n&&(this._$AH=e);else{const a=e;let c,g;for(e=i[0],c=0;c<i.length-1;c++)g=Ds(this,a[r+c],o,c),g===Me&&(g=this._$AH[c]),n||=!to(g)||g!==this._$AH[c],g===S?e=S:e!==S&&(e+=(g??"")+i[c+1]),this._$AH[c]=g}n&&!t&&this.j(e)}j(e){e===S?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class Zc extends Rr{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===S?void 0:e}}class Xc extends Rr{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==S)}}class ed extends Rr{constructor(e,o,r,t,i){super(e,o,r,t,i),this.type=5}_$AI(e,o=this){if((e=Ds(this,e,o,0)??S)===Me)return;const r=this._$AH,t=e===S&&r!==S||e.capture!==r.capture||e.once!==r.once||e.passive!==r.passive,i=e!==S&&(r===S||t);t&&this.element.removeEventListener(this.name,this,r),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}}class td{constructor(e,o,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=o,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){Ds(this,e)}}const sd={I:qs},od=Dn.litHtmlPolyfillSupport;od?.(gi,qs),(Dn.litHtmlVersions??=[]).push("3.3.1");const rd=(s,e,o)=>{const r=o?.renderBefore??e;let t=r._$litPart$;if(t===void 0){const i=o?.renderBefore??null;r._$litPart$=t=new qs(e.insertBefore(eo(),i),i,void 0,o??{})}return t._$AI(s),t};/**
43
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),ha=/'/g,ma=/"/g,al=/^(?:script|style|textarea|title)$/i,Zc=s=>(e,...o)=>({_$litType$:s,strings:e,values:o}),p=Zc(1),Me=Symbol.for("lit-noChange"),S=Symbol.for("lit-nothing"),ga=new WeakMap,Zt=ts.createTreeWalker(ts,129);function ll(s,e){if(!kn(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return da!==void 0?da.createHTML(e):e}const Xc=(s,e)=>{const o=s.length-1,r=[];let t,i=e===2?"<svg>":e===3?"<math>":"",n=Hs;for(let a=0;a<o;a++){const c=s[a];let g,b,h=-1,x=0;for(;x<c.length&&(n.lastIndex=x,b=n.exec(c),b!==null);)x=n.lastIndex,n===Hs?b[1]==="!--"?n=ua:b[1]!==void 0?n=pa:b[2]!==void 0?(al.test(b[2])&&(t=RegExp("</"+b[2],"g")),n=Vt):b[3]!==void 0&&(n=Vt):n===Vt?b[0]===">"?(n=t??Hs,h=-1):b[1]===void 0?h=-2:(h=n.lastIndex-b[2].length,g=b[1],n=b[3]===void 0?Vt:b[3]==='"'?ma:ha):n===ma||n===ha?n=Vt:n===ua||n===pa?n=Hs:(n=Vt,t=void 0);const A=n===Vt&&s[a+1].startsWith("/>")?" ":"";i+=n===Hs?c+Yc:h>=0?(r.push(g),c.slice(0,h)+il+c.slice(h)+Ft+A):c+Ft+(h===-2?a:A)}return[ll(s,i+(s[o]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),r]};let gi=class cl{constructor({strings:e,_$litType$:o},r){let t;this.parts=[];let i=0,n=0;const a=e.length-1,c=this.parts,[g,b]=Xc(e,o);if(this.el=cl.createElement(g,r),Zt.currentNode=this.el.content,o===2||o===3){const h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(t=Zt.nextNode())!==null&&c.length<a;){if(t.nodeType===1){if(t.hasAttributes())for(const h of t.getAttributeNames())if(h.endsWith(il)){const x=b[n++],A=t.getAttribute(h).split(Ft),m=/([.?@])?(.*)/.exec(x);c.push({type:1,index:i,name:m[2],strings:A,ctor:m[1]==="."?td:m[1]==="?"?sd:m[1]==="@"?od:Rr}),t.removeAttribute(h)}else h.startsWith(Ft)&&(c.push({type:6,index:i}),t.removeAttribute(h));if(al.test(t.tagName)){const h=t.textContent.split(Ft),x=h.length-1;if(x>0){t.textContent=Qo?Qo.emptyScript:"";for(let A=0;A<x;A++)t.append(h[A],eo()),Zt.nextNode(),c.push({type:2,index:++i});t.append(h[x],eo())}}}else if(t.nodeType===8)if(t.data===nl)c.push({type:2,index:i});else{let h=-1;for(;(h=t.data.indexOf(Ft,h+1))!==-1;)c.push({type:7,index:i}),h+=Ft.length-1}i++}}static createElement(e,o){const r=ts.createElement("template");return r.innerHTML=e,r}};function Ds(s,e,o=s,r){if(e===Me)return e;let t=r!==void 0?o._$Co?.[r]:o._$Cl;const i=to(e)?void 0:e._$litDirective$;return t?.constructor!==i&&(t?._$AO?.(!1),i===void 0?t=void 0:(t=new i(s),t._$AT(s,o,r)),r!==void 0?(o._$Co??=[])[r]=t:o._$Cl=t),t!==void 0&&(e=Ds(s,t._$AS(s,e.values),t,r)),e}let ed=class{constructor(e,o){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=o}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){const{el:{content:o},parts:r}=this._$AD,t=(e?.creationScope??ts).importNode(o,!0);Zt.currentNode=t;let i=Zt.nextNode(),n=0,a=0,c=r[0];for(;c!==void 0;){if(n===c.index){let g;c.type===2?g=new qs(i,i.nextSibling,this,e):c.type===1?g=new c.ctor(i,c.name,c.strings,this,e):c.type===6&&(g=new rd(i,this,e)),this._$AV.push(g),c=r[++a]}n!==c?.index&&(i=Zt.nextNode(),n++)}return Zt.currentNode=ts,t}p(e){let o=0;for(const r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(e,r,o),o+=r.strings.length-2):r._$AI(e[o])),o++}};class qs{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,o,r,t){this.type=2,this._$AH=S,this._$AN=void 0,this._$AA=e,this._$AB=o,this._$AM=r,this.options=t,this._$Cv=t?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode;const o=this._$AM;return o!==void 0&&e?.nodeType===11&&(e=o.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,o=this){e=Ds(this,e,o),to(e)?e===S||e==null||e===""?(this._$AH!==S&&this._$AR(),this._$AH=S):e!==this._$AH&&e!==Me&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Qc(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==S&&to(this._$AH)?this._$AA.nextSibling.data=e:this.T(ts.createTextNode(e)),this._$AH=e}$(e){const{values:o,_$litType$:r}=e,t=typeof r=="number"?this._$AC(e):(r.el===void 0&&(r.el=gi.createElement(ll(r.h,r.h[0]),this.options)),r);if(this._$AH?._$AD===t)this._$AH.p(o);else{const i=new ed(t,this),n=i.u(this.options);i.p(o),this.T(n),this._$AH=i}}_$AC(e){let o=ga.get(e.strings);return o===void 0&&ga.set(e.strings,o=new gi(e)),o}k(e){kn(this._$AH)||(this._$AH=[],this._$AR());const o=this._$AH;let r,t=0;for(const i of e)t===o.length?o.push(r=new qs(this.O(eo()),this.O(eo()),this,this.options)):r=o[t],r._$AI(i),t++;t<o.length&&(this._$AR(r&&r._$AB.nextSibling,t),o.length=t)}_$AR(e=this._$AA.nextSibling,o){for(this._$AP?.(!1,!0,o);e!==this._$AB;){const r=e.nextSibling;e.remove(),e=r}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}}class Rr{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,o,r,t,i){this.type=1,this._$AH=S,this._$AN=void 0,this.element=e,this.name=o,this._$AM=t,this.options=i,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=S}_$AI(e,o=this,r,t){const i=this.strings;let n=!1;if(i===void 0)e=Ds(this,e,o,0),n=!to(e)||e!==this._$AH&&e!==Me,n&&(this._$AH=e);else{const a=e;let c,g;for(e=i[0],c=0;c<i.length-1;c++)g=Ds(this,a[r+c],o,c),g===Me&&(g=this._$AH[c]),n||=!to(g)||g!==this._$AH[c],g===S?e=S:e!==S&&(e+=(g??"")+i[c+1]),this._$AH[c]=g}n&&!t&&this.j(e)}j(e){e===S?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class td extends Rr{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===S?void 0:e}}class sd extends Rr{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==S)}}class od extends Rr{constructor(e,o,r,t,i){super(e,o,r,t,i),this.type=5}_$AI(e,o=this){if((e=Ds(this,e,o,0)??S)===Me)return;const r=this._$AH,t=e===S&&r!==S||e.capture!==r.capture||e.once!==r.once||e.passive!==r.passive,i=e!==S&&(r===S||t);t&&this.element.removeEventListener(this.name,this,r),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}}class rd{constructor(e,o,r){this.element=e,this.type=6,this._$AN=void 0,this._$AM=o,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(e){Ds(this,e)}}const id={I:qs},nd=Dn.litHtmlPolyfillSupport;nd?.(gi,qs),(Dn.litHtmlVersions??=[]).push("3.3.1");const ad=(s,e,o)=>{const r=o?.renderBefore??e;let t=r._$litPart$;if(t===void 0){const i=o?.renderBefore??null;r._$litPart$=t=new qs(e.insertBefore(eo(),i),i,void 0,o??{})}return t._$AI(s),t};/**
44
44
  * @license
45
45
  * Copyright 2020 Google LLC
46
46
  * SPDX-License-Identifier: BSD-3-Clause
47
- */const{I:id}=sd,nd=s=>s.strings===void 0,fa=()=>document.createComment(""),Vs=(s,e,o)=>{const r=s._$AA.parentNode,t=e===void 0?s._$AB:e._$AA;if(o===void 0){const i=r.insertBefore(fa(),t),n=r.insertBefore(fa(),t);o=new id(i,n,s,s.options)}else{const i=o._$AB.nextSibling,n=o._$AM,a=n!==s;if(a){let c;o._$AQ?.(s),o._$AM=s,o._$AP!==void 0&&(c=s._$AU)!==n._$AU&&o._$AP(c)}if(i!==t||a){let c=o._$AA;for(;c!==i;){const g=c.nextSibling;r.insertBefore(c,t),c=g}}}return o},Wt=(s,e,o=s)=>(s._$AI(e,o),s),ad={},ld=(s,e=ad)=>s._$AH=e,cd=s=>s._$AH,ni=s=>{s._$AR(),s._$AA.remove()};/**
47
+ */const{I:ld}=id,cd=s=>s.strings===void 0,fa=()=>document.createComment(""),Vs=(s,e,o)=>{const r=s._$AA.parentNode,t=e===void 0?s._$AB:e._$AA;if(o===void 0){const i=r.insertBefore(fa(),t),n=r.insertBefore(fa(),t);o=new ld(i,n,s,s.options)}else{const i=o._$AB.nextSibling,n=o._$AM,a=n!==s;if(a){let c;o._$AQ?.(s),o._$AM=s,o._$AP!==void 0&&(c=s._$AU)!==n._$AU&&o._$AP(c)}if(i!==t||a){let c=o._$AA;for(;c!==i;){const g=c.nextSibling;r.insertBefore(c,t),c=g}}}return o},Wt=(s,e,o=s)=>(s._$AI(e,o),s),dd={},ud=(s,e=dd)=>s._$AH=e,pd=s=>s._$AH,ni=s=>{s._$AR(),s._$AA.remove()};/**
48
48
  * @license
49
49
  * Copyright 2017 Google LLC
50
50
  * SPDX-License-Identifier: BSD-3-Clause
@@ -52,24 +52,24 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
52
52
  * @license
53
53
  * Copyright 2017 Google LLC
54
54
  * SPDX-License-Identifier: BSD-3-Clause
55
- */const Qs=(s,e)=>{const o=s._$AN;if(o===void 0)return!1;for(const r of o)r._$AO?.(e,!1),Qs(r,e);return!0},Zo=s=>{let e,o;do{if((e=s._$AM)===void 0)break;o=e._$AN,o.delete(s),s=e}while(o?.size===0)},dl=s=>{for(let e;e=s._$AM;s=e){let o=e._$AN;if(o===void 0)e._$AN=o=new Set;else if(o.has(s))break;o.add(s),pd(e)}};function dd(s){this._$AN!==void 0?(Zo(this),this._$AM=s,dl(this)):this._$AM=s}function ud(s,e=!1,o=0){const r=this._$AH,t=this._$AN;if(t!==void 0&&t.size!==0)if(e)if(Array.isArray(r))for(let i=o;i<r.length;i++)Qs(r[i],!1),Zo(r[i]);else r!=null&&(Qs(r,!1),Zo(r));else Qs(this,s)}const pd=s=>{s.type==us.CHILD&&(s._$AP??=ud,s._$AQ??=dd)};class Cn extends Rs{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,o,r){super._$AT(e,o,r),dl(this),this.isConnected=e._$AU}_$AO(e,o=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),o&&(Qs(this,e),Zo(this))}setValue(e){if(nd(this._$Ct))this._$Ct._$AI(e,this);else{const o=[...this._$Ct._$AH];o[this._$Ci]=e,this._$Ct._$AI(o,this,0)}}disconnected(){}reconnected(){}}/**
55
+ */const Qs=(s,e)=>{const o=s._$AN;if(o===void 0)return!1;for(const r of o)r._$AO?.(e,!1),Qs(r,e);return!0},Zo=s=>{let e,o;do{if((e=s._$AM)===void 0)break;o=e._$AN,o.delete(s),s=e}while(o?.size===0)},dl=s=>{for(let e;e=s._$AM;s=e){let o=e._$AN;if(o===void 0)e._$AN=o=new Set;else if(o.has(s))break;o.add(s),gd(e)}};function hd(s){this._$AN!==void 0?(Zo(this),this._$AM=s,dl(this)):this._$AM=s}function md(s,e=!1,o=0){const r=this._$AH,t=this._$AN;if(t!==void 0&&t.size!==0)if(e)if(Array.isArray(r))for(let i=o;i<r.length;i++)Qs(r[i],!1),Zo(r[i]);else r!=null&&(Qs(r,!1),Zo(r));else Qs(this,s)}const gd=s=>{s.type==us.CHILD&&(s._$AP??=md,s._$AQ??=hd)};class Cn extends Rs{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,o,r){super._$AT(e,o,r),dl(this),this.isConnected=e._$AU}_$AO(e,o=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),o&&(Qs(this,e),Zo(this))}setValue(e){if(cd(this._$Ct))this._$Ct._$AI(e,this);else{const o=[...this._$Ct._$AH];o[this._$Ci]=e,this._$Ct._$AI(o,this,0)}}disconnected(){}reconnected(){}}/**
56
56
  * @license
57
57
  * Copyright 2017 Google LLC
58
58
  * SPDX-License-Identifier: BSD-3-Clause
59
- */const An=globalThis;let D=class extends bs{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const o=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=rd(o,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Me}};D._$litElement$=!0,D.finalized=!0,An.litElementHydrateSupport?.({LitElement:D});const hd=An.litElementPolyfillSupport;hd?.({LitElement:D});(An.litElementVersions??=[]).push("4.2.1");function md(s){if(s==null||typeof s!="object"||Array.isArray(s))return s;const e={...s};return delete e._sonic_http_response_,e}const J=class J{constructor(e){this.addHTTPResponse=!1,this.cache="default",this.isServiceSimulated=!1,this.blockUntilDone=!1,this.keepAlive=!1,this.serviceURL=e.serviceURL,this.blockUntilDone=e.blockUntilDone||!1,this.serviceURL=="publisher://"&&(this.isServiceSimulated=!0),this.serviceURL||(this.serviceURL=document.location.origin),this.userName=e.userName,this.password=e.password,e.token&&(this.token=e.token),this.tokenProvider=e.tokenProvider,this.authToken=e.authToken,this.addHTTPResponse=e.addHTTPResponse||!1,this.credentials=e.credentials,this.cache=e.cache||"default",this.keepAlive=e.keepAlive||!1}set token(e){if(this._token=e,!e){J.tokens.delete(this.serviceURL);return}J.invalidTokens.includes(e)||J.tokens.set(this.serviceURL,e)}get token(){return J.invalidTokens.includes(this._token)?J.tokens.get(this.serviceURL):this._token}handleInvalidToken(e){e&&(J.invalidTokens.includes(e)||(J.invalidTokens.push(e),this.token=null))}async handleResult(e,o){J.firstCallDoneFlags.set(this.serviceURL,"done"),this.lastResult=e;const r=e.headers.get("content-type")?.toLowerCase(),t=e.status;let i={};if(!r||r.indexOf("text/")==0)i={text:await e.text()};else try{i=await e.json()}catch{i={}}return this.addHTTPResponse&&fe.isObject(i)&&(i._sonic_http_response_=e),t===498&&!J.failledTokenUpdates.has(this.serviceURL)&&(this.handleInvalidToken(this.token),o.apiMethod==="get"?i=await this[o.apiMethod](o.path,o.additionalHeaders):i=await this[o.apiMethod](o.path,o.data,o.method,o.additionalHeaders)),ko("sonic-api").lastResponse.set({http:e,processed:i}),i}async auth(){if(this.token)return;if(J.tokens.has(this.serviceURL)){this.token=J.tokens.get(this.serviceURL);return}if(!this.tokenProvider)return;let e={};this.userName&&this.password?e={Authorization:"Basic "+window.btoa(unescape(encodeURIComponent(this.userName+":"+this.password)))}:this.authToken&&(e={Authorization:"Bearer "+this.authToken});const o=new URL(this.serviceURL),r=o.protocol+"//"+o.host,t=await fetch(this.computeURL(this.tokenProvider,{serviceHost:r}),{headers:e,credentials:this.credentials,keepalive:this.keepAlive});try{const i=await t.json();i.token?this.token=i.token:J.failledTokenUpdates.set(this.serviceURL,!0)}catch{J.failledTokenUpdates.set(this.serviceURL,!0)}}async localGet(e,o){const r=R.get(e),t=new URLSearchParams(o.split("?")[1]||""),i=r.get();let n=[];Array.isArray(i)?n=i:n=[i];const a=[];let c=Number.POSITIVE_INFINITY,g=0,f=0;if(t.has("limit")&&(c=parseInt(t.get("limit")||"0"),f++),t.has("offset")&&(g=parseInt(t.get("offset")||"0"),f++),f>0&&(t.delete("limit"),t.delete("offset")),t.size===0)return n.slice(g,g+c);for(const[h,w]of t.entries()){const A=w.split(",").map(m=>m.trim());for(const m of A)for(const b of n)if(typeof b!="object")isNaN(+b)?b.toString().toLowerCase().includes(w.toLowerCase())&&a.push(b):b===w&&a.push(b);else{const v=b;if(!v[h])continue;isNaN(+v[h])?v[h]?.toString().toLowerCase().includes(m.toLowerCase())&&a.push(b):v[h]===m&&a.push(b)}}return a.slice(g,g+c)}firstCallDone(){return new Promise(e=>{if(!J.firstCallDoneFlags.has(this.serviceURL))J.firstCallDoneFlags.set(this.serviceURL,"loading"),e(!0);else{const o=()=>{[void 0,"loading"].includes(J.firstCallDoneFlags.get(this.serviceURL))?window.requestAnimationFrame(o):e(!0)};o()}})}async get(e,o){await this.firstCallDone(),this.blockUntilDone&&J.firstCallDoneFlags.set(this.serviceURL,"loading");const r=/dataProvider\((.*?)\)(.*?)$/;if(r.test(e)){const g=e.match(r);if(!g)throw new Error("dataProvider path is not valid");return await this.localGet(g[1],g[2])}const t={apiMethod:"get",path:e,additionalHeaders:o},i=await this.createHeaders(o),n=this.computeURL(e),a=JSON.stringify({url:n,headers:i});if(!J.loadingGetPromises.has(a)){const g=new Promise(async f=>{try{const h=await fetch(n,{headers:i,credentials:this.credentials,cache:this.cache,keepalive:this.keepAlive}),w=await this.handleResult(h,t);f(w)}catch{f(null)}});J.loadingGetPromises.set(a,g)}const c=await J.loadingGetPromises.get(a);return J.loadingGetPromises.delete(a),c}async getDetailed(e,o){const r=/dataProvider\((.*?)\)(.*?)$/.test(e),t=await this.get(e,o);if(t==null)return;const i=md(t),n=this.computeURL(e);if(r)return{request:new Request(n,{method:"GET"}),result:i};const a=await this.createHeaders(o);return{request:new Request(n,{method:"GET",headers:new Headers(a),credentials:this.credentials,cache:this.cache,keepalive:this.keepAlive}),response:this.lastResult,result:i}}async createHeaders(e){await this.auth();const o={};return this.token&&(o.Authorization="Bearer "+this.token),o["Accept-Language"]=ne.getLanguage(),e&&Object.assign(o,e),o}computeURL(e,o={}){let r="";e.startsWith("http")?r=e:r=this.serviceURL+"/"+e,r.startsWith("http")||(r=window.location.origin+r);const t=new URL(r);for(const i in o)t.searchParams.set(i,o[i]);return t.toString().replace(/([^(https?:)])\/{2,}/g,"$1/")}async send(e,o,r="POST",t){const i={apiMethod:"send",path:e,additionalHeaders:t,method:r,data:o},n=await this.createHeaders(t);n.Accept="application/json",n["Content-Type"]="application/json";const a=await fetch(this.computeURL(e),{headers:n,credentials:this.credentials,method:r,body:JSON.stringify(o),keepalive:this.keepAlive});return await this.handleResult(a,i)}async submitFormData(e,o,r="POST",t){const i={apiMethod:"submitFormData",path:e,additionalHeaders:t,method:r,data:o},n=await this.createHeaders(t);n.Accept="application/json";const a=new FormData,c=o;for(const f in c)a.set(f,c[f]);const g=await fetch(this.computeURL(e),{headers:n,credentials:this.credentials,method:r,body:a,keepalive:this.keepAlive});return await this.handleResult(g,i)}async put(e,o,r){return this.send(e,o,"PUT",r)}async post(e,o,r){return this.send(e,o,"POST",r)}async patch(e,o,r){return this.send(e,o,"PATCH",r)}async delete(e,o,r){return this.send(e,o,"delete",r)}};J.loadingGetPromises=new Map,J.tokens=new Map,J.invalidTokens=[],J.failledTokenUpdates=new Map,J.firstCallDoneFlags=new Map;let ss=J;ne.getApiConfiguration(document.body||document.documentElement);const gd=async(s,e)=>{};/**
59
+ */const An=globalThis;let D=class extends bs{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const o=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=ad(o,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Me}};D._$litElement$=!0,D.finalized=!0,An.litElementHydrateSupport?.({LitElement:D});const fd=An.litElementPolyfillSupport;fd?.({LitElement:D});(An.litElementVersions??=[]).push("4.2.1");function bd(s){if(s==null||typeof s!="object"||Array.isArray(s))return s;const e={...s};return delete e._sonic_http_response_,e}const J=class J{constructor(e){this.addHTTPResponse=!1,this.cache="default",this.isServiceSimulated=!1,this.blockUntilDone=!1,this.keepAlive=!1,this.serviceURL=e.serviceURL,this.blockUntilDone=e.blockUntilDone||!1,this.serviceURL=="publisher://"&&(this.isServiceSimulated=!0),this.serviceURL||(this.serviceURL=document.location.origin),this.userName=e.userName,this.password=e.password,e.token&&(this.token=e.token),this.tokenProvider=e.tokenProvider,this.authToken=e.authToken,this.addHTTPResponse=e.addHTTPResponse||!1,this.credentials=e.credentials,this.cache=e.cache||"default",this.keepAlive=e.keepAlive||!1}set token(e){if(this._token=e,!e){J.tokens.delete(this.serviceURL);return}J.invalidTokens.includes(e)||J.tokens.set(this.serviceURL,e)}get token(){return J.invalidTokens.includes(this._token)?J.tokens.get(this.serviceURL):this._token}handleInvalidToken(e){e&&(J.invalidTokens.includes(e)||(J.invalidTokens.push(e),this.token=null))}async handleResult(e,o){J.firstCallDoneFlags.set(this.serviceURL,"done"),this.lastResult=e;const r=e.headers.get("content-type")?.toLowerCase(),t=e.status;let i={};if(!r||r.indexOf("text/")==0)i={text:await e.text()};else try{i=await e.json()}catch{i={}}return this.addHTTPResponse&&fe.isObject(i)&&(i._sonic_http_response_=e),t===498&&!J.failledTokenUpdates.has(this.serviceURL)&&(this.handleInvalidToken(this.token),o.apiMethod==="get"?i=await this[o.apiMethod](o.path,o.additionalHeaders):i=await this[o.apiMethod](o.path,o.data,o.method,o.additionalHeaders)),ko("sonic-api").lastResponse.set({http:e,processed:i}),i}async auth(){if(this.token)return;if(J.tokens.has(this.serviceURL)){this.token=J.tokens.get(this.serviceURL);return}if(!this.tokenProvider)return;let e={};this.userName&&this.password?e={Authorization:"Basic "+window.btoa(unescape(encodeURIComponent(this.userName+":"+this.password)))}:this.authToken&&(e={Authorization:"Bearer "+this.authToken});const o=new URL(this.serviceURL),r=o.protocol+"//"+o.host,t=await fetch(this.computeURL(this.tokenProvider,{serviceHost:r}),{headers:e,credentials:this.credentials,keepalive:this.keepAlive});try{const i=await t.json();i.token?this.token=i.token:J.failledTokenUpdates.set(this.serviceURL,!0)}catch{J.failledTokenUpdates.set(this.serviceURL,!0)}}async localGet(e,o){const r=R.get(e),t=new URLSearchParams(o.split("?")[1]||""),i=r.get();let n=[];Array.isArray(i)?n=i:n=[i];const a=[];let c=Number.POSITIVE_INFINITY,g=0,b=0;if(t.has("limit")&&(c=parseInt(t.get("limit")||"0"),b++),t.has("offset")&&(g=parseInt(t.get("offset")||"0"),b++),b>0&&(t.delete("limit"),t.delete("offset")),t.size===0)return n.slice(g,g+c);for(const[h,x]of t.entries()){const A=x.split(",").map(m=>m.trim());for(const m of A)for(const f of n)if(typeof f!="object")isNaN(+f)?f.toString().toLowerCase().includes(x.toLowerCase())&&a.push(f):f===x&&a.push(f);else{const v=f;if(!v[h])continue;isNaN(+v[h])?v[h]?.toString().toLowerCase().includes(m.toLowerCase())&&a.push(f):v[h]===m&&a.push(f)}}return a.slice(g,g+c)}firstCallDone(){return new Promise(e=>{if(!J.firstCallDoneFlags.has(this.serviceURL))J.firstCallDoneFlags.set(this.serviceURL,"loading"),e(!0);else{const o=()=>{[void 0,"loading"].includes(J.firstCallDoneFlags.get(this.serviceURL))?window.requestAnimationFrame(o):e(!0)};o()}})}async get(e,o){await this.firstCallDone(),this.blockUntilDone&&J.firstCallDoneFlags.set(this.serviceURL,"loading");const r=/dataProvider\((.*?)\)(.*?)$/;if(r.test(e)){const g=e.match(r);if(!g)throw new Error("dataProvider path is not valid");return await this.localGet(g[1],g[2])}const t={apiMethod:"get",path:e,additionalHeaders:o},i=await this.createHeaders(o),n=this.computeURL(e),a=JSON.stringify({url:n,headers:i});if(!J.loadingGetPromises.has(a)){const g=new Promise(async b=>{try{const h=await fetch(n,{headers:i,credentials:this.credentials,cache:this.cache,keepalive:this.keepAlive}),x=await this.handleResult(h,t);b(x)}catch{b(null)}});J.loadingGetPromises.set(a,g)}const c=await J.loadingGetPromises.get(a);return J.loadingGetPromises.delete(a),c}async getDetailed(e,o){const r=/dataProvider\((.*?)\)(.*?)$/.test(e),t=await this.get(e,o);if(t==null)return;const i=bd(t),n=this.computeURL(e);if(r)return{request:new Request(n,{method:"GET"}),result:i};const a=await this.createHeaders(o);return{request:new Request(n,{method:"GET",headers:new Headers(a),credentials:this.credentials,cache:this.cache,keepalive:this.keepAlive}),response:this.lastResult,result:i}}async createHeaders(e){await this.auth();const o={};return this.token&&(o.Authorization="Bearer "+this.token),o["Accept-Language"]=ne.getLanguage(),e&&Object.assign(o,e),o}computeURL(e,o={}){let r="";e.startsWith("http")?r=e:r=this.serviceURL+"/"+e,r.startsWith("http")||(r=window.location.origin+r);const t=new URL(r);for(const i in o)t.searchParams.set(i,o[i]);return t.toString().replace(/([^(https?:)])\/{2,}/g,"$1/")}async send(e,o,r="POST",t){const i={apiMethod:"send",path:e,additionalHeaders:t,method:r,data:o},n=await this.createHeaders(t);n.Accept="application/json",n["Content-Type"]="application/json";const a=await fetch(this.computeURL(e),{headers:n,credentials:this.credentials,method:r,body:JSON.stringify(o),keepalive:this.keepAlive});return await this.handleResult(a,i)}async submitFormData(e,o,r="POST",t){const i={apiMethod:"submitFormData",path:e,additionalHeaders:t,method:r,data:o},n=await this.createHeaders(t);n.Accept="application/json";const a=new FormData,c=o;for(const b in c)a.set(b,c[b]);const g=await fetch(this.computeURL(e),{headers:n,credentials:this.credentials,method:r,body:a,keepalive:this.keepAlive});return await this.handleResult(g,i)}async put(e,o,r){return this.send(e,o,"PUT",r)}async post(e,o,r){return this.send(e,o,"POST",r)}async patch(e,o,r){return this.send(e,o,"PATCH",r)}async delete(e,o,r){return this.send(e,o,"delete",r)}};J.loadingGetPromises=new Map,J.tokens=new Map,J.invalidTokens=[],J.failledTokenUpdates=new Map,J.firstCallDoneFlags=new Map;let ss=J;ne.getApiConfiguration(document.body||document.documentElement);const yd=async(s,e)=>{};/**
60
60
  * @license
61
61
  * Copyright 2017 Google LLC
62
62
  * SPDX-License-Identifier: BSD-3-Clause
63
- */let fi=class extends Rs{constructor(e){if(super(e),this.it=S,e.type!==us.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===S||e==null)return this._t=void 0,this.it=e;if(e===Me)return e;if(typeof e!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;const o=[e];return o.raw=o,this._t={_$litType$:this.constructor.resultType,strings:o,values:[]}}};fi.directiveName="unsafeHTML",fi.resultType=1;const V=Ut(fi),bi=new Map,ba=s=>{if(!s)return null;const e=ne.getApiConfiguration(s),o=ne.getAncestorAttributeValue(s,"wordingProvider"),r=ne.getAncestorAttributeValue(s,"wordingVersionProvider"),t={apiConfiguration:e,wordingProvider:o,wordingVersionProvider:r};let i=null;for(const[n,a]of bi)if(fe.deepEqual(n,t)){i=a;break}return i||(i={api:new ss(e),keysToTranslate:new Set,translatedKeys:new Set,wordingProvider:o,callIndex:0,wordingVersionProvider:r,apiCallKey:t},bi.set(t,i)),i},ya="",Z=class Z extends Cn{constructor(e){super(e),this.useUnsafeHTML=!1,this.onAssign=o=>{const r=this.useUnsafeHTML?V(o):o;this.setValue(r)},this.node=e.options.host}unsubscribe(){Z.publisher["wording_"+this.key].offAssign(this.onAssign)}render(e,o=!1){return this.useUnsafeHTML=o,this.key!==e&&(this.key=e,this.isConnected&&this.subscribe(e)),Me}static async callApi(e,o,r=!0,t){if(await R.getInstance().isLocalStrorageReady,Z.firstCall){Z.firstCall=!1,gn(Z.reloadWordings);const f=Object.keys(Z.publisher.get());for(const h of f)Z.publisher.get()[h]===ya&&delete Z.publisher[h]}if(e){const f=ne.getAncestorAttributeValue(e,"wordingVersionProvider");f&&ko(f).onAssign(Z.handleVersionProvider(e))}let i=Z.publisher.get()["wording_"+o]!=null;const n=t||ba(e);if(!n)return;if(i&&o!==""){n.translatedKeys.add(o);return}n.callIndex++;const a=n.callIndex,c=n.wordingProvider??"";if(!c&&r){window.setTimeout(async()=>{Z.callApi(null,o,!1,n)},1e3);return}const g=n.api;window.queueMicrotask(async()=>{if(i=Z.publisher["wording_"+o].get()!=null,!i&&o!==""&&(n.keysToTranslate.add(o),Z.publisher["wording_"+o].set(ya)),a!==n.callIndex)return;const f=Array.from(n.keysToTranslate);if(!f.length)return;const h=c.split("?"),w=h.shift(),A=(h.length>0?h.join("?")+"&":"")+"labels[]="+f.join("&labels[]="),m=w+"?"+A;n.translatedKeys=new Set([...n.translatedKeys,...n.keysToTranslate]),n.keysToTranslate.clear();const b=await g.get(m);for(const v in b)Z.publisher["wording_"+v].set(b[v])})}static reloadWordings(){for(const e of bi.values())e.keysToTranslate=new Set(e.translatedKeys),e.keysToTranslate.size>0&&Z.callApi(null,"",!1,e)}static handleVersionProvider(e){const o=ba(e),r=i=>{};if(!o)return r;if(Z.versionProviderHandlers.has(o))return Z.versionProviderHandlers.get(o)||r;const t=function(i){if(!o.wordingVersionProvider)return;const a=Z.publisher.get().__wording_versions__??[];if(i==null)return;const c=a.find(g=>g.serviceURL===o.api.serviceURL)||{serviceURL:o.api.serviceURL,version:0};a.includes(c)||a.push(c),i!==c.version&&(c.version=i,Z.publisher.set({__wording_versions__:a}),Z.reloadWordings())};return Z.versionProviderHandlers.set(o,t),t}subscribe(e){this.unsubscribe(),Z.publisher["wording_"+e].onAssign(this.onAssign),Z.callApi(this.node,e)}disconnected(){this.unsubscribe()}reconnected(){this.key&&this.subscribe(this.key)}};Z.publisher=R.get("sonic-wording",{localStorageMode:"enabled"}),Z.firstCall=!0,Z.versionProviderHandlers=new Map;let vs=Z;const Ko=Ut(vs),fd=Ko;var bd=Object.defineProperty,yd=Object.getOwnPropertyDescriptor,tt=(s,e,o,r)=>{for(var t=r>1?void 0:r?yd(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&bd(e,o,t),t};let Mo=!1,ai=new Set;const de=(s,e)=>{var t;const o=(t=class extends s{constructor(...n){super(),this.collectDependenciesVersion=0,this.displayContents=!1,this.noAutoFill=!1,this.forceAutoFill=!1,this.renderOnPropsInternalChange=!1,this.noShadowDom=null,this.propertyMap=null,this.title="",this.dataProvider=null,this.bindPublisher=null,this._props=null,this.shouldRenderLazy=!0,this.defferedDebug=null,this.debug=null,this.onAssign=a=>{this.props=a}}hasAncestorAttribute(n){return this.getAncestorAttributeValue(n)!=null}getAncestorAttributeValue(n){return ne.getAncestorAttributeValue(this,n)}get props(){return this._props!==null||!this.publisher?this._props:this.publisher.get()}set props(n){typeof n=="string"&&["{","["].includes(n.trim().charAt(0))&&(n=JSON.parse(n)),n!=this._props&&(this._props=n,this.publisher&&this.publisher.get()!=n&&this.publisher.set(n),this.requestUpdate())}updated(n){super.updated(n);const c=[...(this.shadowRoot||this).children].filter(f=>f.tagName!="STYLE"),g=this.displayContents?"contents":c.length==0?"none":null;g?this.style.display=g:this.style.removeProperty("display")}connectedCallback(){if(t.instanceCounter++,this.hasAttribute("lazyRendering")){const n={root:null,threshold:.9};let a=!0;const c=new IntersectionObserver(g=>{for(const f of g)if(a&&f.isIntersecting){a=!1,c.disconnect(),this.initWording(),this.shouldRenderLazy=!1,this.startPublisher();break}},n);c.observe(this)}else this.initWording(),this.shouldRenderLazy=!1;this.initPublisher(),this.addDebugger(),super.connectedCallback()}disconnectedCallback(){this.removeDebugger(),super.disconnectedCallback(),this.publisher&&(this.publisher.stopTemplateFilling(this),this.publisher.offInternalMutation(this.requestUpdate)),vs.publisher.stopTemplateFilling(this),this.onAssign&&this.publisher?.offAssign(this.onAssign)}addDebugger(){if(this.hasAttribute("debug")&&!this.defferedDebug){if(!this.debug){this.debug=document.createElement("div");const n=this.debug.style;n.position="fixed",n.top="0",n.right="0",n.margin="auto",n.borderRadius=".7rem",n.backgroundColor="#0f1729",n.color="#c5d4f9",n.padding="16px 16px",n.margin="16px 16px",n.boxShadow="0 10px 30px -18px rgba(0,0,0,.3)",n.overflowY="auto",n.zIndex="99999999",n.maxHeight="calc(100vh - 32px)",n.fontFamily="Consolas, monospace",n.maxWidth="min(50vw,25rem)",n.fontSize="12px",n.minWidth="300px",n.overflowWrap="break-word",n.resize="vertical"}this.addEventListener("click",n=>{n.ctrlKey&&(n.preventDefault(),Mo=!Mo)}),this.dataProvider&&(window[this.dataProvider]=this.publisher),this.addEventListener("mouseover",()=>{Mo||this.removeDebugger(),document.body.appendChild(this.debug),ai.add(this.debug)}),this.addEventListener("mouseout",()=>{Mo||this.removeDebugger()}),this.publisher?.onInternalMutation(()=>{this.debug.innerHTML=`🤖 DataProvider : "<b style="font-weight:bold;color:#fff;">${this.dataProvider}</b>"<br>
63
+ */let fi=class extends Rs{constructor(e){if(super(e),this.it=S,e.type!==us.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===S||e==null)return this._t=void 0,this.it=e;if(e===Me)return e;if(typeof e!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;const o=[e];return o.raw=o,this._t={_$litType$:this.constructor.resultType,strings:o,values:[]}}};fi.directiveName="unsafeHTML",fi.resultType=1;const V=Ut(fi),bi=new Map,ba=s=>{if(!s)return null;const e=ne.getApiConfiguration(s),o=ne.getAncestorAttributeValue(s,"wordingProvider"),r=ne.getAncestorAttributeValue(s,"wordingVersionProvider"),t={apiConfiguration:e,wordingProvider:o,wordingVersionProvider:r};let i=null;for(const[n,a]of bi)if(fe.deepEqual(n,t)){i=a;break}return i||(i={api:new ss(e),keysToTranslate:new Set,translatedKeys:new Set,wordingProvider:o,callIndex:0,wordingVersionProvider:r,apiCallKey:t},bi.set(t,i)),i},ya="",Z=class Z extends Cn{constructor(e){super(e),this.useUnsafeHTML=!1,this.onAssign=o=>{const r=this.useUnsafeHTML?V(o):o;this.setValue(r)},this.node=e.options.host}unsubscribe(){Z.publisher["wording_"+this.key].offAssign(this.onAssign)}render(e,o=!1){return this.useUnsafeHTML=o,this.key!==e&&(this.key=e,this.isConnected&&this.subscribe(e)),Me}static async callApi(e,o,r=!0,t){if(await R.getInstance().isLocalStrorageReady,Z.firstCall){Z.firstCall=!1,gn(Z.reloadWordings);const b=Object.keys(Z.publisher.get());for(const h of b)Z.publisher.get()[h]===ya&&delete Z.publisher[h]}if(e){const b=ne.getAncestorAttributeValue(e,"wordingVersionProvider");b&&ko(b).onAssign(Z.handleVersionProvider(e))}let i=Z.publisher.get()["wording_"+o]!=null;const n=t||ba(e);if(!n)return;if(i&&o!==""){n.translatedKeys.add(o);return}n.callIndex++;const a=n.callIndex,c=n.wordingProvider??"";if(!c&&r){window.setTimeout(async()=>{Z.callApi(null,o,!1,n)},1e3);return}const g=n.api;window.queueMicrotask(async()=>{if(i=Z.publisher["wording_"+o].get()!=null,!i&&o!==""&&(n.keysToTranslate.add(o),Z.publisher["wording_"+o].set(ya)),a!==n.callIndex)return;const b=Array.from(n.keysToTranslate);if(!b.length)return;const h=c.split("?"),x=h.shift(),A=(h.length>0?h.join("?")+"&":"")+"labels[]="+b.join("&labels[]="),m=x+"?"+A;n.translatedKeys=new Set([...n.translatedKeys,...n.keysToTranslate]),n.keysToTranslate.clear();const f=await g.get(m);for(const v in f)Z.publisher["wording_"+v].set(f[v])})}static reloadWordings(){for(const e of bi.values())e.keysToTranslate=new Set(e.translatedKeys),e.keysToTranslate.size>0&&Z.callApi(null,"",!1,e)}static handleVersionProvider(e){const o=ba(e),r=i=>{};if(!o)return r;if(Z.versionProviderHandlers.has(o))return Z.versionProviderHandlers.get(o)||r;const t=function(i){if(!o.wordingVersionProvider)return;const a=Z.publisher.get().__wording_versions__??[];if(i==null)return;const c=a.find(g=>g.serviceURL===o.api.serviceURL)||{serviceURL:o.api.serviceURL,version:0};a.includes(c)||a.push(c),i!==c.version&&(c.version=i,Z.publisher.set({__wording_versions__:a}),Z.reloadWordings())};return Z.versionProviderHandlers.set(o,t),t}subscribe(e){this.unsubscribe(),Z.publisher["wording_"+e].onAssign(this.onAssign),Z.callApi(this.node,e)}disconnected(){this.unsubscribe()}reconnected(){this.key&&this.subscribe(this.key)}};Z.publisher=R.get("sonic-wording",{localStorageMode:"enabled"}),Z.firstCall=!0,Z.versionProviderHandlers=new Map;let vs=Z;const Ko=Ut(vs),vd=Ko;var wd=Object.defineProperty,xd=Object.getOwnPropertyDescriptor,st=(s,e,o,r)=>{for(var t=r>1?void 0:r?xd(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&wd(e,o,t),t};let Mo=!1,ai=new Set;const de=(s,e)=>{var t;const o=(t=class extends s{constructor(...n){super(),this.collectDependenciesVersion=0,this.displayContents=!1,this.noAutoFill=!1,this.forceAutoFill=!1,this.renderOnPropsInternalChange=!1,this.noShadowDom=null,this.propertyMap=null,this.title="",this.dataProvider=null,this.bindPublisher=null,this._props=null,this.shouldRenderLazy=!0,this.defferedDebug=null,this.debug=null,this.onAssign=a=>{this.props=a}}hasAncestorAttribute(n){return this.getAncestorAttributeValue(n)!=null}getAncestorAttributeValue(n){return ne.getAncestorAttributeValue(this,n)}get props(){return this._props!==null||!this.publisher?this._props:this.publisher.get()}set props(n){typeof n=="string"&&["{","["].includes(n.trim().charAt(0))&&(n=JSON.parse(n)),n!=this._props&&(this._props=n,this.publisher&&this.publisher.get()!=n&&this.publisher.set(n),this.requestUpdate())}updated(n){super.updated(n);const c=[...(this.shadowRoot||this).children].filter(b=>b.tagName!="STYLE"),g=this.displayContents?"contents":c.length==0?"none":null;g?this.style.display=g:this.style.removeProperty("display")}connectedCallback(){if(t.instanceCounter++,this.hasAttribute("lazyRendering")){const n={root:null,threshold:.9};let a=!0;const c=new IntersectionObserver(g=>{for(const b of g)if(a&&b.isIntersecting){a=!1,c.disconnect(),this.initWording(),this.shouldRenderLazy=!1,this.startPublisher();break}},n);c.observe(this)}else this.initWording(),this.shouldRenderLazy=!1;this.initPublisher(),this.addDebugger(),super.connectedCallback()}disconnectedCallback(){this.removeDebugger(),super.disconnectedCallback(),this.publisher&&(this.publisher.stopTemplateFilling(this),this.publisher.offInternalMutation(this.requestUpdate)),vs.publisher.stopTemplateFilling(this),this.onAssign&&this.publisher?.offAssign(this.onAssign)}addDebugger(){if(this.hasAttribute("debug")&&!this.defferedDebug){if(!this.debug){this.debug=document.createElement("div");const n=this.debug.style;n.position="fixed",n.top="0",n.right="0",n.margin="auto",n.borderRadius=".7rem",n.backgroundColor="#0f1729",n.color="#c5d4f9",n.padding="16px 16px",n.margin="16px 16px",n.boxShadow="0 10px 30px -18px rgba(0,0,0,.3)",n.overflowY="auto",n.zIndex="99999999",n.maxHeight="calc(100vh - 32px)",n.fontFamily="Consolas, monospace",n.maxWidth="min(50vw,25rem)",n.fontSize="12px",n.minWidth="300px",n.overflowWrap="break-word",n.resize="vertical"}this.addEventListener("click",n=>{n.ctrlKey&&(n.preventDefault(),Mo=!Mo)}),this.dataProvider&&(window[this.dataProvider]=this.publisher),this.addEventListener("mouseover",()=>{Mo||this.removeDebugger(),document.body.appendChild(this.debug),ai.add(this.debug)}),this.addEventListener("mouseout",()=>{Mo||this.removeDebugger()}),this.publisher?.onInternalMutation(()=>{this.debug.innerHTML=`🤖 DataProvider : "<b style="font-weight:bold;color:#fff;">${this.dataProvider}</b>"<br>
64
64
  <div style="font-size:10px;border-top:1px dashed;margin-top:5px;padding-left:23px;opacity:.6;padding-top:5px;">
65
65
  Variable disponible dans la console<br>
66
66
  ctrl + Clique : épingler / désépingler
67
67
  </div>
68
- <pre style="margin-top:10px;background:transparent;padding:0;font-size:inherit;color:inherit;">${JSON.stringify(this.publisher?.get(),null," ")}</pre>`})}}removeDebugger(){ai.forEach(n=>{document.body.contains(n)&&document.body.removeChild(n)}),ai=new Set}getApiConfiguration(){return ne.getApiConfiguration(this)}async initWording(){const n=Object.getOwnPropertyNames(this.constructor.prototype);for(const a of n)a.indexOf("wording_")==0&&vs.callApi(this,a.substring(8));vs.publisher.startTemplateFilling(this)}createRenderRoot(){if(this.noShadowDom===""||this.getAttribute("noShadowDom")==="")return this;const n=super.createRenderRoot();return Ir.observe(n),n}initPublisher(){if(!document)return;this.publisher&&(this.publisher.stopTemplateFilling(this),this.publisher.offInternalMutation(this.requestUpdate),this.onAssign&&this.publisher.offAssign(this.onAssign));const n=R.getInstance();this.dataProvider||(this.dataProvider=this.getAncestorAttributeValue("dataProvider"));let a=this.dataProvider;if(!a&&this._props&&(this.dataProvider=a="__subscriber__"+t.instanceCounter),a){this.bindPublisher&&n.set(a,this.bindPublisher());let c=n.get(a,{localStorageMode:this.getAttribute("localStorage")||"disabled",invalidateOnPageShow:this.hasAttribute("invalidateOnPageShow")});if(this.dataProvider=a,this.hasAttribute("subDataProvider")){const g=this.getAttribute("subDataProvider");this.dataProvider=a+"/"+g,c=fe.traverse(c,g.split(".")),n.set(this.dataProvider,c),this.publisher=c}this.publisher=c}this.hasAttribute("lazyRendering")||this.startPublisher()}startPublisher(){this.publisher&&(this._props&&this.publisher.set(this._props),this.noAutoFill||this.publisher.startTemplateFilling(this),this.renderOnPropsInternalChange&&this.publisher.onInternalMutation(this.requestUpdate),this.publisher.onAssign(this.onAssign))}},t.instanceCounter=0,t);return tt([l({type:Number})],o.prototype,"collectDependenciesVersion",2),tt([l({type:Boolean})],o.prototype,"displayContents",2),tt([l({type:Boolean})],o.prototype,"noAutoFill",2),tt([l({type:Boolean})],o.prototype,"forceAutoFill",2),tt([l({type:Object})],o.prototype,"propertyMap",2),tt([l({type:String,attribute:"data-title"})],o.prototype,"title",2),tt([l({reflect:!0})],o.prototype,"dataProvider",2),tt([l()],o.prototype,"bindPublisher",2),tt([l()],o.prototype,"props",1),tt([$()],o.prototype,"shouldRenderLazy",2),o};var vd=Object.defineProperty,wd=(s,e,o,r)=>{for(var t=void 0,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(e,o,t)||t);return t&&vd(e,o,t),t};const Co=s=>{class e extends s{constructor(){super(...arguments),this.templates=null,this.templateValueAttribute="data-value",this.templateList=[],this.templateParts={},this.templatePartsList=[]}connectedCallback(){const r=this.templates||[...this.querySelectorAll("template")];for(const t of r)t.hasAttribute(this.templateValueAttribute)&&(this.templateParts[t.getAttribute(this.templateValueAttribute)]=t,this.templatePartsList.push(t)),t.hasAttribute("skeleton")&&(this.templateParts.skeleton=t),t.hasAttribute("no-result")&&(this.templateParts["no-result"]=t),t.hasAttribute("no-item")&&(this.templateParts["no-item"]=t);this.templateList=r.filter(t=>!t.getAttribute("data-value")),this.templateList.length==0&&(this.templateList=r),super.connectedCallback()}}return wd([l({type:Array})],e.prototype,"templates"),e};var xd=Object.defineProperty,_d=Object.getOwnPropertyDescriptor,le=(s,e,o,r)=>{for(var t=r>1?void 0:r?_d(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&xd(e,o,t),t};const Dd="sonic-date";gn(()=>Y.updateComponentsLanguage());let Y=class extends de(Co(D)){constructor(){super(...arguments),this.pageLanguage="fr",this.duAu=[],this._wording_billet_periode_validite="",this.designMode=null,this.time_zone=null,this.date=null,this.date_string=null,this.start_date_string=null,this.end_date_string=null,this.start_date=0,this.computedStartDate=0,this.end_date=0,this.computedEndDate=0,this.hide_hours=!1,this.era="",this.year="numeric",this.month="short",this.day="2-digit",this.weekday="short",this.hour="2-digit",this.hour12=!1,this.minute="2-digit",this.language="",this.renderIf=!0,this.now=!1,this.startDateObject=new Date,this.endDateObject=new Date}static updateComponentsLanguage(){Y.dateCompnents.forEach(s=>s.pageLanguage=ne.getLanguage())}get wording_billet_periode_validite(){return this._wording_billet_periode_validite}set wording_billet_periode_validite(s){s||(s="Du %s au %s"),this._wording_billet_periode_validite=s,this.duAu=this.wording_billet_periode_validite?.split("%s").map(e=>e.trim()),this.duAu.pop(),this.requestUpdate()}connectedCallback(){this.hasAttribute("wording_billet_periode_validite")||(this.wording_billet_periode_validite="Du %s au %s"),this.pageLanguage=ne.getLanguage(),Y.dateCompnents.add(this),super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback(),Y.dateCompnents.delete(this)}getDatesParts(s,e,o){const r=this.startDateObject;r.setTime(s*1e3);let t=[];if(e>0){const i=this.endDateObject;i.setTime(e*1e3);const n=r.toDateString()==i.toDateString();if((!n||this.hide_hours)&&(delete o.hour,delete o.minute),t=new Intl.DateTimeFormat(this.language||this.pageLanguage,o).formatRangeToParts(r,i),!n){const c=t.find(g=>g.type=="literal"&&g.source=="shared"&&g.value.trim().length>0);c&&(c.value=" "+this.duAu[1]+" ",c.type="to"),this.designMode||t.unshift({type:"from",value:this.duAu[0]+" ",source:"shared"})}}else t=new Intl.DateTimeFormat(this.language||this.pageLanguage,o).formatToParts(r);return this.designMode&&t.forEach(i=>i.value=i.value.replace(/,/g," ")),t[0].value=Go.ucFirst(t[0].value),t.filter(i=>i.hidden!==!0)}dateStringToSeconds(s){return new Date(s).getTime()/1e3}willUpdate(s){if(this.computedStartDate=0,this.computedEndDate=0,this.date_string&&(this.date=this.dateStringToSeconds(this.date_string)),this.date&&(this.computedStartDate=this.date),this.start_date_string&&(this.computedStartDate=this.dateStringToSeconds(this.start_date_string)),this.end_date_string&&(this.end_date=this.dateStringToSeconds(this.end_date_string)),this.start_date&&(this.computedStartDate=this.start_date),!(!this.computedStartDate&&!this.now&&!this.end_date)&&(this.computedStartDate||(this.computedStartDate=Date.now()/1e3),this.end_date&&(this.computedEndDate=this.end_date),this.computedEndDate>0&&this.computedEndDate<this.computedStartDate)){const e=this.computedStartDate;this.computedStartDate=this.computedEndDate,this.computedEndDate=e}}render(){if(!this.renderIf||!this.computedStartDate&&!this.now&&!this.computedEndDate)return S;const s={year:this.year||"numeric",month:this.month||"short",day:this.day||"2-digit",hour12:this.hour12||!1};this.weekday!=="hidden"&&(s.weekday=this.weekday||"short"),this.hour!=="hidden"&&(s.hour=this.hour||"2-digit"),this.minute!=="hidden"&&(s.minute=this.minute||"2-digit"),this.era&&(s.era=this.era),this.time_zone&&(s.timeZone=this.time_zone);const e=this.getDatesParts(this.computedStartDate,this.computedEndDate,s);return V(`${e.map(o=>{const r=this.templateParts[o.type];if(r){const n=document.importNode(r.content,!0).children[0];return n.innerText.trim()==""&&(n.innerText=o.value),n.outerHTML}const t=document.createElement("span");return t.innerText=o.value,t.className=o.type,`<span class="${o.type}">${o.value}</span>`}).join("")}`)}};Y.dateCompnents=new Set;le([l()],Y.prototype,"wording_billet_periode_validite",1);le([l({type:Boolean})],Y.prototype,"designMode",2);le([l({type:String})],Y.prototype,"time_zone",2);le([l({type:Number})],Y.prototype,"date",2);le([l({type:String})],Y.prototype,"date_string",2);le([l({type:String})],Y.prototype,"start_date_string",2);le([l({type:String})],Y.prototype,"end_date_string",2);le([l({type:Number})],Y.prototype,"start_date",2);le([l({type:Number})],Y.prototype,"end_date",2);le([l({type:Boolean})],Y.prototype,"hide_hours",2);le([l({type:String})],Y.prototype,"era",2);le([l({type:String})],Y.prototype,"year",2);le([l({type:String})],Y.prototype,"month",2);le([l({type:String})],Y.prototype,"day",2);le([l({type:String})],Y.prototype,"weekday",2);le([l({type:String})],Y.prototype,"hour",2);le([l({type:Boolean})],Y.prototype,"hour12",2);le([l({type:String})],Y.prototype,"minute",2);le([l({type:String})],Y.prototype,"language",2);le([l({type:Boolean})],Y.prototype,"renderIf",2);le([l({type:Boolean})],Y.prototype,"now",2);Y=le([k(Dd)],Y);var ie;let me=(ie=class{static listen(){if(!ie.listening)return;const e=document.location?.href.replace(document.location.origin,"");ie.prevURL&&ie.prevURL!=e&&(ie.prevURL=e,ie.listeners.forEach(o=>{o.location=e})),window.requestAnimationFrame(ie.listen)}static offChange(e){const o=ie.listeners.indexOf(e);o!=-1&&(ie.listeners.splice(o,1),ie.listeners.length==0&&(ie.listening=!1))}static onChange(e){ie.listening||(ie.listening=!0,ie.listen()),ie.listeners.push(e),e.location=this.prevURL}static changeFromComponent(e){const o=e.goBack,r=document.referrer;if(o!=null){const g=document.location.origin,f=(o||g).toString(),w=r.indexOf("http")==0?new URL(r).origin!=g:!1,A=r=="",m=history.length<3,b=A&&m,v=f!=document.location.href;if(w&&v||b){const d=history.state||{};d.concorde=d.concorde||{},d.concorde.hasDoneHistoryBack=!0,history.pushState(d,document.title),history.back(),document.location.replace(f)}else history.back();return}let t=e.getAttribute("to")||"";if(t||(t=e.href?.toString()||""),!t)return;if(t.indexOf("#")==0){document.location.hash=t.substring(1);return}const i=new URL(t,document.location.href),n=i.pathname.split("/"),a=[];let c="";for(const g of n)g!=c&&a.push(g),c=g;t="/"+a.join("/")+i.search+(i.hash?+i.hash:""),e.hasAttribute("pushState")?history.pushState(null,"",t):e.hasAttribute("replaceState")?history.replaceState(null,"",t):document.location.href=t}static updateComponentActiveState(e){if(e.autoActive=="disabled")return;const o=e.href?.toString()||"";if(e.href&&o.indexOf("http")!=0){const r=new URL(o,document.location.href),t=new URL(e.location||"",document.location.origin);let i=!1;e.autoActive=="strict"?i=r.pathname==t.pathname&&r.hash==t.hash&&r.search==t.search:e.autoActive=="strict-path-only"?i=r.pathname==t.pathname&&r.hash==t.hash:i=t.href.indexOf(r.href)==0,i?e.setAttribute("active","true"):e.removeAttribute("active")}}},ie.listeners=[],ie.listening=!1,ie.prevURL=document.location?.href.replace(document.location.origin,""),ie);/**
68
+ <pre style="margin-top:10px;background:transparent;padding:0;font-size:inherit;color:inherit;">${JSON.stringify(this.publisher?.get(),null," ")}</pre>`})}}removeDebugger(){ai.forEach(n=>{document.body.contains(n)&&document.body.removeChild(n)}),ai=new Set}getApiConfiguration(){return ne.getApiConfiguration(this)}async initWording(){const n=Object.getOwnPropertyNames(this.constructor.prototype);for(const a of n)a.indexOf("wording_")==0&&vs.callApi(this,a.substring(8));vs.publisher.startTemplateFilling(this)}createRenderRoot(){if(this.noShadowDom===""||this.getAttribute("noShadowDom")==="")return this;const n=super.createRenderRoot();return Ir.observe(n),n}initPublisher(){if(!document)return;this.publisher&&(this.publisher.stopTemplateFilling(this),this.publisher.offInternalMutation(this.requestUpdate),this.onAssign&&this.publisher.offAssign(this.onAssign));const n=R.getInstance();this.dataProvider||(this.dataProvider=this.getAncestorAttributeValue("dataProvider"));let a=this.dataProvider;if(!a&&this._props&&(this.dataProvider=a="__subscriber__"+t.instanceCounter),a){this.bindPublisher&&n.set(a,this.bindPublisher());let c=n.get(a,{localStorageMode:this.getAttribute("localStorage")||"disabled",invalidateOnPageShow:this.hasAttribute("invalidateOnPageShow")});if(this.dataProvider=a,this.hasAttribute("subDataProvider")){const g=this.getAttribute("subDataProvider");this.dataProvider=a+"/"+g,c=fe.traverse(c,g.split(".")),n.set(this.dataProvider,c),this.publisher=c}this.publisher=c}this.hasAttribute("lazyRendering")||this.startPublisher()}startPublisher(){this.publisher&&(this._props&&this.publisher.set(this._props),this.noAutoFill||this.publisher.startTemplateFilling(this),this.renderOnPropsInternalChange&&this.publisher.onInternalMutation(this.requestUpdate),this.publisher.onAssign(this.onAssign))}},t.instanceCounter=0,t);return st([l({type:Number})],o.prototype,"collectDependenciesVersion",2),st([l({type:Boolean})],o.prototype,"displayContents",2),st([l({type:Boolean})],o.prototype,"noAutoFill",2),st([l({type:Boolean})],o.prototype,"forceAutoFill",2),st([l({type:Object})],o.prototype,"propertyMap",2),st([l({type:String,attribute:"data-title"})],o.prototype,"title",2),st([l({reflect:!0})],o.prototype,"dataProvider",2),st([l()],o.prototype,"bindPublisher",2),st([l()],o.prototype,"props",1),st([$()],o.prototype,"shouldRenderLazy",2),o};var _d=Object.defineProperty,Dd=(s,e,o,r)=>{for(var t=void 0,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(e,o,t)||t);return t&&_d(e,o,t),t};const Co=s=>{class e extends s{constructor(){super(...arguments),this.templates=null,this.templateValueAttribute="data-value",this.templateList=[],this.templateParts={},this.templatePartsList=[]}connectedCallback(){const r=this.templates||[...this.querySelectorAll("template")];for(const t of r)t.hasAttribute(this.templateValueAttribute)&&(this.templateParts[t.getAttribute(this.templateValueAttribute)]=t,this.templatePartsList.push(t)),t.hasAttribute("skeleton")&&(this.templateParts.skeleton=t),t.hasAttribute("no-result")&&(this.templateParts["no-result"]=t),t.hasAttribute("no-item")&&(this.templateParts["no-item"]=t);this.templateList=r.filter(t=>!t.getAttribute("data-value")),this.templateList.length==0&&(this.templateList=r),super.connectedCallback()}}return Dd([l({type:Array})],e.prototype,"templates"),e};var kd=Object.defineProperty,Cd=Object.getOwnPropertyDescriptor,le=(s,e,o,r)=>{for(var t=r>1?void 0:r?Cd(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&kd(e,o,t),t};const Ad="sonic-date";gn(()=>Y.updateComponentsLanguage());let Y=class extends de(Co(D)){constructor(){super(...arguments),this.pageLanguage="fr",this.duAu=[],this._wording_billet_periode_validite="",this.designMode=null,this.time_zone=null,this.date=null,this.date_string=null,this.start_date_string=null,this.end_date_string=null,this.start_date=0,this.computedStartDate=0,this.end_date=0,this.computedEndDate=0,this.hide_hours=!1,this.era="",this.year="numeric",this.month="short",this.day="2-digit",this.weekday="short",this.hour="2-digit",this.hour12=!1,this.minute="2-digit",this.language="",this.renderIf=!0,this.now=!1,this.startDateObject=new Date,this.endDateObject=new Date}static updateComponentsLanguage(){Y.dateCompnents.forEach(s=>s.pageLanguage=ne.getLanguage())}get wording_billet_periode_validite(){return this._wording_billet_periode_validite}set wording_billet_periode_validite(s){s||(s="Du %s au %s"),this._wording_billet_periode_validite=s,this.duAu=this.wording_billet_periode_validite?.split("%s").map(e=>e.trim()),this.duAu.pop(),this.requestUpdate()}connectedCallback(){this.hasAttribute("wording_billet_periode_validite")||(this.wording_billet_periode_validite="Du %s au %s"),this.pageLanguage=ne.getLanguage(),Y.dateCompnents.add(this),super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback(),Y.dateCompnents.delete(this)}getDatesParts(s,e,o){const r=this.startDateObject;r.setTime(s*1e3);let t=[];if(e>0){const i=this.endDateObject;i.setTime(e*1e3);const n=r.toDateString()==i.toDateString();if((!n||this.hide_hours)&&(delete o.hour,delete o.minute),t=new Intl.DateTimeFormat(this.language||this.pageLanguage,o).formatRangeToParts(r,i),!n){const c=t.find(g=>g.type=="literal"&&g.source=="shared"&&g.value.trim().length>0);c&&(c.value=" "+this.duAu[1]+" ",c.type="to"),this.designMode||t.unshift({type:"from",value:this.duAu[0]+" ",source:"shared"})}}else t=new Intl.DateTimeFormat(this.language||this.pageLanguage,o).formatToParts(r);return this.designMode&&t.forEach(i=>i.value=i.value.replace(/,/g," ")),t[0].value=Go.ucFirst(t[0].value),t.filter(i=>i.hidden!==!0)}dateStringToSeconds(s){return new Date(s).getTime()/1e3}willUpdate(s){if(this.computedStartDate=0,this.computedEndDate=0,this.date_string&&(this.date=this.dateStringToSeconds(this.date_string)),this.date&&(this.computedStartDate=this.date),this.start_date_string&&(this.computedStartDate=this.dateStringToSeconds(this.start_date_string)),this.end_date_string&&(this.end_date=this.dateStringToSeconds(this.end_date_string)),this.start_date&&(this.computedStartDate=this.start_date),!(!this.computedStartDate&&!this.now&&!this.end_date)&&(this.computedStartDate||(this.computedStartDate=Date.now()/1e3),this.end_date&&(this.computedEndDate=this.end_date),this.computedEndDate>0&&this.computedEndDate<this.computedStartDate)){const e=this.computedStartDate;this.computedStartDate=this.computedEndDate,this.computedEndDate=e}}render(){if(!this.renderIf||!this.computedStartDate&&!this.now&&!this.computedEndDate)return S;const s={year:this.year||"numeric",month:this.month||"short",day:this.day||"2-digit",hour12:this.hour12||!1};this.weekday!=="hidden"&&(s.weekday=this.weekday||"short"),this.hour!=="hidden"&&(s.hour=this.hour||"2-digit"),this.minute!=="hidden"&&(s.minute=this.minute||"2-digit"),this.era&&(s.era=this.era),this.time_zone&&(s.timeZone=this.time_zone);const e=this.getDatesParts(this.computedStartDate,this.computedEndDate,s);return V(`${e.map(o=>{const r=this.templateParts[o.type];if(r){const n=document.importNode(r.content,!0).children[0];return n.innerText.trim()==""&&(n.innerText=o.value),n.outerHTML}const t=document.createElement("span");return t.innerText=o.value,t.className=o.type,`<span class="${o.type}">${o.value}</span>`}).join("")}`)}};Y.dateCompnents=new Set;le([l()],Y.prototype,"wording_billet_periode_validite",1);le([l({type:Boolean})],Y.prototype,"designMode",2);le([l({type:String})],Y.prototype,"time_zone",2);le([l({type:Number})],Y.prototype,"date",2);le([l({type:String})],Y.prototype,"date_string",2);le([l({type:String})],Y.prototype,"start_date_string",2);le([l({type:String})],Y.prototype,"end_date_string",2);le([l({type:Number})],Y.prototype,"start_date",2);le([l({type:Number})],Y.prototype,"end_date",2);le([l({type:Boolean})],Y.prototype,"hide_hours",2);le([l({type:String})],Y.prototype,"era",2);le([l({type:String})],Y.prototype,"year",2);le([l({type:String})],Y.prototype,"month",2);le([l({type:String})],Y.prototype,"day",2);le([l({type:String})],Y.prototype,"weekday",2);le([l({type:String})],Y.prototype,"hour",2);le([l({type:Boolean})],Y.prototype,"hour12",2);le([l({type:String})],Y.prototype,"minute",2);le([l({type:String})],Y.prototype,"language",2);le([l({type:Boolean})],Y.prototype,"renderIf",2);le([l({type:Boolean})],Y.prototype,"now",2);Y=le([k(Ad)],Y);var ie;let me=(ie=class{static listen(){if(!ie.listening)return;const e=document.location?.href.replace(document.location.origin,"");ie.prevURL&&ie.prevURL!=e&&(ie.prevURL=e,ie.listeners.forEach(o=>{o.location=e})),window.requestAnimationFrame(ie.listen)}static offChange(e){const o=ie.listeners.indexOf(e);o!=-1&&(ie.listeners.splice(o,1),ie.listeners.length==0&&(ie.listening=!1))}static onChange(e){ie.listening||(ie.listening=!0,ie.listen()),ie.listeners.push(e),e.location=this.prevURL}static changeFromComponent(e){const o=e.goBack,r=document.referrer;if(o!=null){const g=document.location.origin,b=(o||g).toString(),x=r.indexOf("http")==0?new URL(r).origin!=g:!1,A=r=="",m=history.length<3,f=A&&m,v=b!=document.location.href;if(x&&v||f){const d=history.state||{};d.concorde=d.concorde||{},d.concorde.hasDoneHistoryBack=!0,history.pushState(d,document.title),history.back(),document.location.replace(b)}else history.back();return}let t=e.getAttribute("to")||"";if(t||(t=e.href?.toString()||""),!t)return;if(t.indexOf("#")==0){document.location.hash=t.substring(1);return}const i=new URL(t,document.location.href),n=i.pathname.split("/"),a=[];let c="";for(const g of n)g!=c&&a.push(g),c=g;t="/"+a.join("/")+i.search+(i.hash?+i.hash:""),e.hasAttribute("pushState")?history.pushState(null,"",t):e.hasAttribute("replaceState")?history.replaceState(null,"",t):document.location.href=t}static updateComponentActiveState(e){if(e.autoActive=="disabled")return;const o=e.href?.toString()||"";if(e.href&&o.indexOf("http")!=0){const r=new URL(o,document.location.href),t=new URL(e.location||"",document.location.origin);let i=!1;e.autoActive=="strict"?i=r.pathname==t.pathname&&r.hash==t.hash&&r.search==t.search:e.autoActive=="strict-path-only"?i=r.pathname==t.pathname&&r.hash==t.hash:i=t.href.indexOf(r.href)==0,i?e.setAttribute("active","true"):e.removeAttribute("active")}}},ie.listeners=[],ie.listening=!1,ie.prevURL=document.location?.href.replace(document.location.origin,""),ie);/**
69
69
  * @license
70
70
  * Copyright 2018 Google LLC
71
71
  * SPDX-License-Identifier: BSD-3-Clause
72
- */const ul="important",kd=" !"+ul,Fe=Ut(class extends Rs{constructor(s){if(super(s),s.type!==us.ATTRIBUTE||s.name!=="style"||s.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(s){return Object.keys(s).reduce(((e,o)=>{const r=s[o];return r==null?e:e+`${o=o.includes("-")?o:o.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`}),"")}update(s,[e]){const{style:o}=s.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(e)),this.render(e);for(const r of this.ft)e[r]==null&&(this.ft.delete(r),r.includes("-")?o.removeProperty(r):o[r]=null);for(const r in e){const t=e[r];if(t!=null){this.ft.add(r);const i=typeof t=="string"&&t.endsWith(kd);r.includes("-")||i?o.setProperty(r,i?t.slice(0,-11):t,i?ul:""):o[r]=t}}return Me}});var Cd=Object.defineProperty,Ad=Object.getOwnPropertyDescriptor,st=(s,e,o,r)=>{for(var t=r>1?void 0:r?Ad(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Cd(e,o,t),t};const jo=new Map,Ns=s=>{class e extends s{constructor(...r){super(),this.touched=!1,this.error=!1,this.autofocus=!1,this.required=!1,this.forceAutoFill=!1,this.disabled=!1,this.formDataProvider="",this._name="",this._value="",this.onValueAssign=t=>{this.setValueFromPublisher(t)},this.onFormValueAssign=async t=>{this.setFormValueFromPublisher(t)},this.onFormDataInValidate=()=>{const t=this.getFormPublisher();t&&t.isFormValid.get()&&this.validateFormElement()}}get name(){return this._name}set name(r){this.hasAttribute("name")&&!this.forceAutoFill&&(r=this.getAttribute("name")),this._name=r,this.requestUpdate()}validateFormElement(){}unsetOnDisconnect(){return this.hasAttribute("unsetOnDisconnect")}updateDataValue(){this.getAttribute("name")&&this.getFormPublisher()&&(this.setFormPublisherValue(this.getValueForFormPublisher()),this.setFormValueFromPublisher(this.getFormPublisherValue()))}getFormPublisher(){return this.formDataProvider||(this.formDataProvider=this.getAncestorAttributeValue("formDataProvider")),this.formDataProvider?R.get(this.formDataProvider):null}setFormPublisherValue(r){const t=this.getFormPublisher();t&&$e(t,this.name).set(r)}getFormPublisherValue(){const r=this.getFormPublisher();return r?$e(r,this.name).get():null}getValueForFormPublisher(){return this.value}setValueFromPublisher(r){this.value=r}setFormValueFromPublisher(r){this.value=r}get value(){return this._value}set value(r){r==null&&(r=""),fe.isObject(r)&&Object.prototype.hasOwnProperty.call(r,"__value")&&r._value==null&&(r=""),this._value!=r&&(this._value=r,this.updateDataValue(),this.requestUpdate())}initPublisher(){let r=this.getFormPublisher();const t=this.hasAncestorAttribute("initFromPublisher")&&this._name&&this.getFormPublisherValue()?this.getFormPublisherValue():this.getAttribute("value");this._name&&this.publisher&&$e(this.publisher,this._name).offAssign(this.onValueAssign),this._name&&r&&$e(r,this._name).offAssign(this.onFormValueAssign),super.initPublisher(),this.name||(this._name=this.getAttribute("name")),this.value||(this._value=this.getAttribute("value")),this.publisher&&this._name&&$e(this.publisher,this._name).onAssign(this.onValueAssign),r=this.getFormPublisher(),this._name&&r&&($e(r,this._name).onAssign(this.onFormValueAssign),r.onFormInvalidate(this.onFormDataInValidate)),this.updateDataValue(),t&&(this.value=t)}handleBlur(){this.touched=!0}handleChange(r){this.value=r.target.value;const t=new Event("change");this.dispatchEvent(t)}addKeyboardNavigation(){const r=this.getAncestorAttributeValue("data-keyboard-nav");if(!r)return;const t=r.split(" "),i=t[0];if(!i)return;for(const a of t){jo.has(a)||jo.set(a,[]);const c=jo.get(a);c?.indexOf(this)==-1&&c.push(this)}const n=jo.get(i);this.addEventListener("keydown",a=>{const c=a;if(!["ArrowDown","ArrowUp"].includes(c.key))return;const g="input:not([disabled]), button:not([disabled]), select:not([disabled]), textarea:not([disabled])",f=n?.filter(A=>{const m=A.shadowRoot?.querySelector(g);if(!m)return!1;const b=window.getComputedStyle(m);return b.display!=="none"&&b.display!==""&&b.pointerEvents!="none"&&b.visibility!=="hidden"&&m.getBoundingClientRect().width>0});let h=null;if(c.key=="ArrowDown"&&f){const A=f.indexOf(this);A==f.length-1?h=f[0]:h=f[A+1]}else if(c.key=="ArrowUp"&&f){const A=f.indexOf(this);A==0?h=f[f.length-1]:h=f[A-1]}const w=h?.shadowRoot?.querySelector(g);w&&w.focus&&(w.focus(),a.preventDefault(),a.stopPropagation())})}focus(){this.shadowRoot?.querySelector("[data-form-element], button")?.focus()}connectedCallback(){this.formDataProvider=this.getAncestorAttributeValue("formDataProvider"),super.connectedCallback(),this.addKeyboardNavigation()}unset(){this.value=null}disconnectedCallback(){this.unsetOnDisconnect()&&this.unset(),super.disconnectedCallback(),this._name&&this.publisher&&$e(this.publisher,this._name).offAssign(this.onValueAssign);const r=this.getFormPublisher();this._name&&r&&($e(r,this._name).offAssign(this.onFormValueAssign),r.offFormInvalidate(this.onFormDataInValidate))}}return st([l({type:Boolean,reflect:!0})],e.prototype,"touched",2),st([l({type:Boolean})],e.prototype,"error",2),st([l({type:Boolean})],e.prototype,"autofocus",2),st([l({type:Boolean})],e.prototype,"required",2),st([l({type:Boolean})],e.prototype,"forceAutoFill",2),st([l({type:Boolean,reflect:!0})],e.prototype,"disabled",2),st([l({type:String,attribute:"data-aria-label"})],e.prototype,"ariaLabel",2),st([l({type:String,attribute:"data-aria-labelledby"})],e.prototype,"ariaLabelledby",2),st([l()],e.prototype,"name",1),st([l()],e.prototype,"value",1),e};let Pd=class Yt{static areEqual(e,o){return e.length===o.length?e.every((r,t)=>r===o[t]):!1}static from2d(e){return{to1D:()=>{let o=[];return e.forEach(r=>o=o.concat(r)),this.from(o)}}}static from(e){return{get:()=>e||[],everyItem:()=>({has:()=>({same:()=>({value:()=>({forKey:o=>{if(e.length<1)return!0;const r=(e[0]||{})[o];return e.every(t=>(t||{})[o]==r)}})})}),value:()=>({forKey:o=>Yt.from(e.map(r=>r[o]))}),copy:()=>({fromKey:o=>({toKey:r=>{e.forEach(t=>{t[r]=Array.isArray(t[o])?[...t[o]]:typeof t[o]=="object"&&t[o]!=null?{...t[o]}:t[o]})}})})}),map:o=>Yt.from(e.map(o)),filter:o=>Yt.from(e.filter(o)),find:o=>e.find(o),some:o=>e.some(o),every:o=>e.every(o),group:()=>({byKey:o=>{const r=[],t=new Map;for(const i of e){const n=i[o];if(!t.has(n)){const a=r.length;t.set(n,a);const c={items:[]};c[o]=n,r.push(c)}r[t.get(n)].items.push(i)}return Yt.from(r)}}),without:()=>({duplicates:()=>({forKey:o=>{const r=[...new Set(e.map(t=>t[o]))];return Yt.from(r.map(t=>e.find(i=>i[o]==t)))}}),itemsIn:o=>({havingSameValue:()=>({forKey:r=>{const t=(i,n)=>a=>i[n]!=a[n];return Yt.from(e.filter(i=>o.every(t(i,r))))}})})})}}};var va=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Sd(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var Js={exports:{}},$d=Js.exports,wa;function Fd(){return wa||(wa=1,(function(s,e){var o=[].slice;(function(r,t){return e!==null?s.exports=t():r.UrlPattern=t()})($d,function(){var r,t,i,n,a,c,g,f,h,w,A,m,b,v,_;return h=function(d){return d.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},g=function(d,u){var y,x,C;for(C=[],y=-1,x=d.length;++y<x;)C=C.concat(u(d[y]));return C},v=function(d,u){var y,x,C;for(C="",y=-1,x=d.length;++y<x;)C+=u(d[y]);return C},b=function(d){return new RegExp(d.toString()+"|").exec("").length-1},A=function(d,u){var y,x,C,P,O;for(P={},y=-1,C=d.length;++y<C;)x=d[y],O=u[y],O!=null&&(P[x]!=null?(Array.isArray(P[x])||(P[x]=[P[x]]),P[x].push(O)):P[x]=O);return P},r={},r.Result=function(d,u){this.value=d,this.rest=u},r.Tagged=function(d,u){this.tag=d,this.value=u},r.tag=function(d,u){return function(y){var x,C;if(x=u(y),x!=null)return C=new r.Tagged(d,x.value),new r.Result(C,x.rest)}},r.regex=function(d){return function(u){var y,x;if(y=d.exec(u),y!=null)return x=y[0],new r.Result(x,u.slice(x.length))}},r.sequence=function(){var d;return d=1<=arguments.length?o.call(arguments,0):[],function(u){var y,x,C,P,O,E;for(y=-1,x=d.length,E=[],P=u;++y<x;){if(C=d[y],O=C(P),O==null)return;E.push(O.value),P=O.rest}return new r.Result(E,P)}},r.pick=function(){var d,u;return d=arguments[0],u=2<=arguments.length?o.call(arguments,1):[],function(y){var x,C;if(C=r.sequence.apply(r,u)(y),C!=null)return x=C.value,C.value=x[d],C}},r.string=function(d){var u;return u=d.length,function(y){if(y.slice(0,u)===d)return new r.Result(d,y.slice(u))}},r.lazy=function(d){var u;return u=null,function(y){return u==null&&(u=d()),u(y)}},r.baseMany=function(d,u,y,x,C){var P,O,E,M;for(E=C,M=y?"":[];!(u!=null&&(P=u(E),P!=null)||(O=d(E),O==null));)y?M+=O.value:M.push(O.value),E=O.rest;if(!(x&&M.length===0))return new r.Result(M,E)},r.many1=function(d){return function(u){return r.baseMany(d,null,!1,!0,u)}},r.concatMany1Till=function(d,u){return function(y){return r.baseMany(d,u,!0,!0,y)}},r.firstChoice=function(){var d;return d=1<=arguments.length?o.call(arguments,0):[],function(u){var y,x,C,P;for(y=-1,x=d.length;++y<x;)if(C=d[y],P=C(u),P!=null)return P}},m=function(d){var u;return u={},u.wildcard=r.tag("wildcard",r.string(d.wildcardChar)),u.optional=r.tag("optional",r.pick(1,r.string(d.optionalSegmentStartChar),r.lazy(function(){return u.pattern}),r.string(d.optionalSegmentEndChar))),u.name=r.regex(new RegExp("^["+d.segmentNameCharset+"]+")),u.named=r.tag("named",r.pick(1,r.string(d.segmentNameStartChar),r.lazy(function(){return u.name}))),u.escapedChar=r.pick(1,r.string(d.escapeChar),r.regex(/^./)),u.static=r.tag("static",r.concatMany1Till(r.firstChoice(r.lazy(function(){return u.escapedChar}),r.regex(/^./)),r.firstChoice(r.string(d.segmentNameStartChar),r.string(d.optionalSegmentStartChar),r.string(d.optionalSegmentEndChar),u.wildcard))),u.token=r.lazy(function(){return r.firstChoice(u.wildcard,u.optional,u.named,u.static)}),u.pattern=r.many1(r.lazy(function(){return u.token})),u},f={escapeChar:"\\",segmentNameStartChar:":",segmentValueCharset:"a-zA-Z0-9-_~ %",segmentNameCharset:"a-zA-Z0-9",optionalSegmentStartChar:"(",optionalSegmentEndChar:")",wildcardChar:"*"},c=function(d,u){if(Array.isArray(d))return v(d,function(y){return c(y,u)});switch(d.tag){case"wildcard":return"(.*?)";case"named":return"(["+u+"]+)";case"static":return h(d.value);case"optional":return"(?:"+c(d.value,u)+")?"}},a=function(d,u){return u==null&&(u=f.segmentValueCharset),"^"+c(d,u)+"$"},n=function(d){if(Array.isArray(d))return g(d,n);switch(d.tag){case"wildcard":return["_"];case"named":return[d.value];case"static":return[];case"optional":return n(d.value)}},w=function(d,u,y,x){var C,P,O,E;if(x==null&&(x=!1),E=d[u],E==null){if(x)throw new Error("no values provided for key `"+u+"`");return}if(C=y[u]||0,P=Array.isArray(E)?E.length-1:0,C>P){if(x)throw new Error("too few values provided for key `"+u+"`");return}return O=Array.isArray(E)?E[C]:E,x&&(y[u]=C+1),O},i=function(d,u,y){var x,C;if(Array.isArray(d)){for(x=-1,C=d.length;++x<C;)if(i(d[x],u,y))return!0;return!1}switch(d.tag){case"wildcard":return w(u,"_",y,!1)!=null;case"named":return w(u,d.value,y,!1)!=null;case"static":return!1;case"optional":return i(d.value,u,y)}},_=function(d,u,y){if(Array.isArray(d))return v(d,function(x){return _(x,u,y)});switch(d.tag){case"wildcard":return w(u,"_",y,!0);case"named":return w(u,d.value,y,!0);case"static":return d.value;case"optional":return i(d.value,u,y)?_(d.value,u,y):""}},t=function(d,u){var y,x,C,P,O;if(d instanceof t){this.isRegex=d.isRegex,this.regex=d.regex,this.ast=d.ast,this.names=d.names;return}if(this.isRegex=d instanceof RegExp,!(typeof d=="string"||this.isRegex))throw new TypeError("argument must be a regex or a string");if(this.isRegex){if(this.regex=d,u!=null){if(!Array.isArray(u))throw new Error("if first argument is a regex the second argument may be an array of group names but you provided something else");if(y=b(this.regex),u.length!==y)throw new Error("regex contains "+y+" groups but array of group names contains "+u.length);this.names=u}return}if(d==="")throw new Error("argument must not be the empty string");if(O=d.replace(/\s+/g,""),O!==d)throw new Error("argument must not contain whitespace");if(x={escapeChar:u?.escapeChar||f.escapeChar,segmentNameStartChar:u?.segmentNameStartChar||f.segmentNameStartChar,segmentNameCharset:u?.segmentNameCharset||f.segmentNameCharset,segmentValueCharset:u?.segmentValueCharset||f.segmentValueCharset,optionalSegmentStartChar:u?.optionalSegmentStartChar||f.optionalSegmentStartChar,optionalSegmentEndChar:u?.optionalSegmentEndChar||f.optionalSegmentEndChar,wildcardChar:u?.wildcardChar||f.wildcardChar},P=m(x),C=P.pattern(d),C==null)throw new Error("couldn't parse pattern");if(C.rest!=="")throw new Error("could only partially parse pattern");this.ast=C.value,this.regex=new RegExp(a(this.ast,x.segmentValueCharset)),this.names=n(this.ast)},t.prototype.match=function(d){var u,y;return y=this.regex.exec(d),y==null?null:(u=y.slice(1),this.names?A(this.names,u):u)},t.prototype.stringify=function(d){if(d==null&&(d={}),this.isRegex)throw new Error("can't stringify patterns generated from a regex");if(d!==Object(d))throw new Error("argument must be an object or undefined");return _(this.ast,d,{})},t.escapeForRegex=h,t.concatMap=g,t.stringConcatMap=v,t.regexGroupCount=b,t.keysAndValuesToObject=A,t.P=r,t.newParser=m,t.defaultOptions=f,t.astNodeToRegexString=a,t.astNodeToNames=n,t.getParam=w,t.astNodeContainsSegmentsForProvidedParams=i,t.stringify=_,t})})(Js,Js.exports)),Js.exports}var Ed=Fd();const vt=Sd(Ed);class Ye{constructor(e){this.path=Ye.normalizePath(e)}getDataProviderKey(){return new I(this.path)}static normalizePath(e){const o=String(e).trim();if(!o)throw new RangeError("Endpoint: path cannot be empty");if(/^https?:\/\//i.test(o)){let c;try{c=new URL(o)}catch{throw new RangeError("Endpoint: invalid absolute URL")}return c.pathname=c.pathname.replace(/\/+/g,"/"),c.href}const r=o.indexOf("?"),t=o.indexOf("#");let i=o.length;r>=0&&(i=Math.min(i,r)),t>=0&&(i=Math.min(i,t));let n=o.slice(0,i);const a=o.slice(i);if(n=n.replace(/^\/+/,""),n=n.replace(/\/+/g,"/"),!n&&a)throw new RangeError("Endpoint: path cannot be empty");return n+a}static isNonEmpty(e){return String(e).trim().length>0}static looksLikeDataProviderPath(e){return/^\s*dataProvider\s*\(/i.test(String(e))}toString(){return this.path}}const Ld=Ec,Td=Pd,Od=Ir,Id=Go,Ot=ne,pl=me,Ao=fe,qd=ss,yi=vt;window["concorde-utils"]=window["concorde-utils"]||{};window["concorde-utils"]={Utils:Ld,Arrays:Td,DataBindObserver:Od,Format:Id,HTML:Ot,LocationHandler:pl,Objects:Ao,PublisherManager:R,api:qd,URLPattern:yi,Endpoint:Ye,DataProviderKey:I};var Rd=Object.defineProperty,Nd=Object.getOwnPropertyDescriptor,Ws=(s,e,o,r)=>{for(var t=r>1?void 0:r?Nd(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Rd(e,o,t),t};const Pn=s=>{class e extends s{constructor(){super(...arguments),this._value="",this.forceAutoFill=!1,this.unique=null,this.radio=null,this._checked=null,this.updateAllChecked=()=>{const r=this.getAttribute("name"),t=this.getCheckAllPublisher(),i=this.getFormPublisher();if(t?.hasCheckAll.get()&&!this.checksAll()&&t&&i&&r){if(this.getFormPublisherValue()?.length)(this.checked===null||t.checkMode.get()=="noneChecked"||t.checkMode.get()==null)&&t.checkMode.set("someUnchecked");else{t.checkMode.set("noneChecked");return}const n=this.getFormPublisherValue(),a=t.values.get();if(a&&a.length){let c=a.length;for(const g of a)n.indexOf(g)==-1&&(c-=1);c==a.length&&t.checkMode.set("allChecked"),c==0&&t.checkMode.set("noneChecked")}a.indexOf(this.value)==-1&&this.unsetOnDisconnect()&&(this.checked=null)}},this.onChecksAllRequest=r=>{this.removeAttribute("allChecked"),this.removeAttribute("indeterminate"),r=="allChecked"&&(this.checked=!0,this.setAttribute("allChecked","")),r=="noneChecked"&&(this.checked=null),r=="someUnchecked"&&(this.checksAll()&&(this.checked="indeterminate"),this.setAttribute("indeterminate",""))}}get value(){return this._value}set value(r){if(this.value==r||(this.hasAttribute("value")&&!this.forceAutoFill&&(r=this.getAttribute("value")),this._value==r)||r==null||(this._value=r,!this.value))return;if(this.getFormPublisher()&&this.name){let i=this.getFormPublisherValue();(this.radio||this.unique)&&(this.checked=i==r?!0:null),Array.isArray(i)||(i=[]),i.indexOf(r)!=-1&&(this.checked=!0)}this.checked==!0&&this.updateDataValue(),this.requestUpdate()}get checked(){return this._checked}set checked(r){if(this.setCheckedValue(r),this.checksAll()){const t=this.getCheckAllPublisher();t&&(this.checked===!0?t.checkMode.set("allChecked"):this.checked===null&&(t.checkMode.set("noneChecked"),this.getFormPublisher()&&this.setFormPublisherValue([])))}this.requestUpdate()}validateFormElement(){const r=this.shadowRoot?.querySelector("input");if(!r||r.checkValidity())return;const t=this.getFormPublisher();if(t){const i=this.getFormPublisherValue();if((this.unique||this.radio)&&i!==null&&i!==void 0&&i.toString().length>0)return;t.isFormValid=!1,r.reportValidity()}}checksAll(){return this.hasAttribute("checksAll")}setCheckedValue(r){this._checked!=r&&(this._checked=r,this.updateDataValue(),this.requestUpdate(),setTimeout(()=>this.updateAllChecked(),1))}handleChange(){const r=this.checked===!0?this.radio?!0:null:!0;this.checked=r;const t=new Event("change");this.dispatchEvent(t)}getValueForFormPublisher(){let r=this.getFormPublisherValue();if(this.radio)return this.checked===!0&&this.value!=null?this.value:r;if(this.unique)return this.checked===!0&&this.value!=null?this.value:null;Array.isArray(r)||(r=[]);const t=r.slice(0),i=t.indexOf(this.value);return this.checked===!0&&i===-1&&!this.checksAll()&&t.push(this.value),this.checked===null&&i!==-1&&t.splice(i,1),t}setFormValueFromPublisher(r){if(this.unique||this.radio){this.checked=this.value==r?!0:null;return}Array.isArray(r)||(r=[]),!this.checksAll()&&(this.checked=r.indexOf(this.value)!==-1?!0:null)}getCheckAllPublisher(){this.formDataProvider||(this.formDataProvider=this.getAncestorAttributeValue("formDataProvider"));const r=this.formDataProvider,t=this.getAttribute("name");return!r||!t?null:R.get(r+"/"+t+"/_available_values_")}unset(){this.checked=null}disconnectedCallback(){super.disconnectedCallback();const r=this.getCheckAllPublisher();if(r&&(r.checkMode.offAssign(this.onChecksAllRequest),!this.checksAll())){const t=r.values.get().slice(0),i=t.indexOf(this.value);i!=-1&&(t.splice(i,1),r.values.set(t))}setTimeout(()=>this.updateAllChecked(),1)}connectedCallback(){if(super.connectedCallback(),this.getFormPublisher()&&this.name){const i=this.getFormPublisherValue();i&&Array.isArray(i)&&i.indexOf(this.value)!==-1&&(this.checked=!0)}const t=this.getCheckAllPublisher();t&&(t.checkMode.onAssign(this.onChecksAllRequest),this.checksAll()&&t.hasCheckAll.set(!0),t.values.get()||t.values.set([]),this.checksAll()||t.values.set([...t.values.get(),this.value])),this.hasAttribute("checked")&&(!this.publisher||this.publisher.get().checked!==!1)&&setTimeout(()=>this.checked=!0,1)}}return Ws([l()],e.prototype,"value",1),Ws([l()],e.prototype,"forceAutoFill",2),Ws([l({type:Boolean})],e.prototype,"unique",2),Ws([l({type:Boolean})],e.prototype,"radio",2),Ws([l()],e.prototype,"checked",1),e};/**
72
+ */const ul="important",Pd=" !"+ul,Fe=Ut(class extends Rs{constructor(s){if(super(s),s.type!==us.ATTRIBUTE||s.name!=="style"||s.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(s){return Object.keys(s).reduce(((e,o)=>{const r=s[o];return r==null?e:e+`${o=o.includes("-")?o:o.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`}),"")}update(s,[e]){const{style:o}=s.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(e)),this.render(e);for(const r of this.ft)e[r]==null&&(this.ft.delete(r),r.includes("-")?o.removeProperty(r):o[r]=null);for(const r in e){const t=e[r];if(t!=null){this.ft.add(r);const i=typeof t=="string"&&t.endsWith(Pd);r.includes("-")||i?o.setProperty(r,i?t.slice(0,-11):t,i?ul:""):o[r]=t}}return Me}});var Sd=Object.defineProperty,$d=Object.getOwnPropertyDescriptor,ot=(s,e,o,r)=>{for(var t=r>1?void 0:r?$d(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Sd(e,o,t),t};const jo=new Map,Ns=s=>{class e extends s{constructor(...r){super(),this.touched=!1,this.error=!1,this.autofocus=!1,this.required=!1,this.forceAutoFill=!1,this.disabled=!1,this.formDataProvider="",this._name="",this._value="",this.onValueAssign=t=>{this.setValueFromPublisher(t)},this.onFormValueAssign=async t=>{this.setFormValueFromPublisher(t)},this.onFormDataInValidate=()=>{const t=this.getFormPublisher();t&&t.isFormValid.get()&&this.validateFormElement()}}get name(){return this._name}set name(r){this.hasAttribute("name")&&!this.forceAutoFill&&(r=this.getAttribute("name")),this._name=r,this.requestUpdate()}validateFormElement(){}unsetOnDisconnect(){return this.hasAttribute("unsetOnDisconnect")}updateDataValue(){this.getAttribute("name")&&this.getFormPublisher()&&(this.setFormPublisherValue(this.getValueForFormPublisher()),this.setFormValueFromPublisher(this.getFormPublisherValue()))}getFormPublisher(){return this.formDataProvider||(this.formDataProvider=this.getAncestorAttributeValue("formDataProvider")),this.formDataProvider?R.get(this.formDataProvider):null}setFormPublisherValue(r){const t=this.getFormPublisher();t&&$e(t,this.name).set(r)}getFormPublisherValue(){const r=this.getFormPublisher();return r?$e(r,this.name).get():null}getValueForFormPublisher(){return this.value}setValueFromPublisher(r){this.value=r}setFormValueFromPublisher(r){this.value=r}get value(){return this._value}set value(r){r==null&&(r=""),fe.isObject(r)&&Object.prototype.hasOwnProperty.call(r,"__value")&&r._value==null&&(r=""),this._value!=r&&(this._value=r,this.updateDataValue(),this.requestUpdate())}initPublisher(){let r=this.getFormPublisher();const t=this.hasAncestorAttribute("initFromPublisher")&&this._name&&this.getFormPublisherValue()?this.getFormPublisherValue():this.getAttribute("value");this._name&&this.publisher&&$e(this.publisher,this._name).offAssign(this.onValueAssign),this._name&&r&&$e(r,this._name).offAssign(this.onFormValueAssign),super.initPublisher(),this.name||(this._name=this.getAttribute("name")),this.value||(this._value=this.getAttribute("value")),this.publisher&&this._name&&$e(this.publisher,this._name).onAssign(this.onValueAssign),r=this.getFormPublisher(),this._name&&r&&($e(r,this._name).onAssign(this.onFormValueAssign),r.onFormInvalidate(this.onFormDataInValidate)),this.updateDataValue(),t&&(this.value=t)}handleBlur(){this.touched=!0}handleChange(r){this.value=r.target.value;const t=new Event("change");this.dispatchEvent(t)}addKeyboardNavigation(){const r=this.getAncestorAttributeValue("data-keyboard-nav");if(!r)return;const t=r.split(" "),i=t[0];if(!i)return;for(const a of t){jo.has(a)||jo.set(a,[]);const c=jo.get(a);c?.indexOf(this)==-1&&c.push(this)}const n=jo.get(i);this.addEventListener("keydown",a=>{const c=a;if(!["ArrowDown","ArrowUp"].includes(c.key))return;const g="input:not([disabled]), button:not([disabled]), select:not([disabled]), textarea:not([disabled])",b=n?.filter(A=>{const m=A.shadowRoot?.querySelector(g);if(!m)return!1;const f=window.getComputedStyle(m);return f.display!=="none"&&f.display!==""&&f.pointerEvents!="none"&&f.visibility!=="hidden"&&m.getBoundingClientRect().width>0});let h=null;if(c.key=="ArrowDown"&&b){const A=b.indexOf(this);A==b.length-1?h=b[0]:h=b[A+1]}else if(c.key=="ArrowUp"&&b){const A=b.indexOf(this);A==0?h=b[b.length-1]:h=b[A-1]}const x=h?.shadowRoot?.querySelector(g);x&&x.focus&&(x.focus(),a.preventDefault(),a.stopPropagation())})}focus(){this.shadowRoot?.querySelector("[data-form-element], button")?.focus()}connectedCallback(){this.formDataProvider=this.getAncestorAttributeValue("formDataProvider"),super.connectedCallback(),this.addKeyboardNavigation()}unset(){this.value=null}disconnectedCallback(){this.unsetOnDisconnect()&&this.unset(),super.disconnectedCallback(),this._name&&this.publisher&&$e(this.publisher,this._name).offAssign(this.onValueAssign);const r=this.getFormPublisher();this._name&&r&&($e(r,this._name).offAssign(this.onFormValueAssign),r.offFormInvalidate(this.onFormDataInValidate))}}return ot([l({type:Boolean,reflect:!0})],e.prototype,"touched",2),ot([l({type:Boolean})],e.prototype,"error",2),ot([l({type:Boolean})],e.prototype,"autofocus",2),ot([l({type:Boolean})],e.prototype,"required",2),ot([l({type:Boolean})],e.prototype,"forceAutoFill",2),ot([l({type:Boolean,reflect:!0})],e.prototype,"disabled",2),ot([l({type:String,attribute:"data-aria-label"})],e.prototype,"ariaLabel",2),ot([l({type:String,attribute:"data-aria-labelledby"})],e.prototype,"ariaLabelledby",2),ot([l()],e.prototype,"name",1),ot([l()],e.prototype,"value",1),e};let Fd=class Yt{static areEqual(e,o){return e.length===o.length?e.every((r,t)=>r===o[t]):!1}static from2d(e){return{to1D:()=>{let o=[];return e.forEach(r=>o=o.concat(r)),this.from(o)}}}static from(e){return{get:()=>e||[],everyItem:()=>({has:()=>({same:()=>({value:()=>({forKey:o=>{if(e.length<1)return!0;const r=(e[0]||{})[o];return e.every(t=>(t||{})[o]==r)}})})}),value:()=>({forKey:o=>Yt.from(e.map(r=>r[o]))}),copy:()=>({fromKey:o=>({toKey:r=>{e.forEach(t=>{t[r]=Array.isArray(t[o])?[...t[o]]:typeof t[o]=="object"&&t[o]!=null?{...t[o]}:t[o]})}})})}),map:o=>Yt.from(e.map(o)),filter:o=>Yt.from(e.filter(o)),find:o=>e.find(o),some:o=>e.some(o),every:o=>e.every(o),group:()=>({byKey:o=>{const r=[],t=new Map;for(const i of e){const n=i[o];if(!t.has(n)){const a=r.length;t.set(n,a);const c={items:[]};c[o]=n,r.push(c)}r[t.get(n)].items.push(i)}return Yt.from(r)}}),without:()=>({duplicates:()=>({forKey:o=>{const r=[...new Set(e.map(t=>t[o]))];return Yt.from(r.map(t=>e.find(i=>i[o]==t)))}}),itemsIn:o=>({havingSameValue:()=>({forKey:r=>{const t=(i,n)=>a=>i[n]!=a[n];return Yt.from(e.filter(i=>o.every(t(i,r))))}})})})}}};var va=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ed(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var Js={exports:{}},Ld=Js.exports,wa;function Td(){return wa||(wa=1,(function(s,e){var o=[].slice;(function(r,t){return e!==null?s.exports=t():r.UrlPattern=t()})(Ld,function(){var r,t,i,n,a,c,g,b,h,x,A,m,f,v,_;return h=function(d){return d.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},g=function(d,u){var y,w,C;for(C=[],y=-1,w=d.length;++y<w;)C=C.concat(u(d[y]));return C},v=function(d,u){var y,w,C;for(C="",y=-1,w=d.length;++y<w;)C+=u(d[y]);return C},f=function(d){return new RegExp(d.toString()+"|").exec("").length-1},A=function(d,u){var y,w,C,P,O;for(P={},y=-1,C=d.length;++y<C;)w=d[y],O=u[y],O!=null&&(P[w]!=null?(Array.isArray(P[w])||(P[w]=[P[w]]),P[w].push(O)):P[w]=O);return P},r={},r.Result=function(d,u){this.value=d,this.rest=u},r.Tagged=function(d,u){this.tag=d,this.value=u},r.tag=function(d,u){return function(y){var w,C;if(w=u(y),w!=null)return C=new r.Tagged(d,w.value),new r.Result(C,w.rest)}},r.regex=function(d){return function(u){var y,w;if(y=d.exec(u),y!=null)return w=y[0],new r.Result(w,u.slice(w.length))}},r.sequence=function(){var d;return d=1<=arguments.length?o.call(arguments,0):[],function(u){var y,w,C,P,O,E;for(y=-1,w=d.length,E=[],P=u;++y<w;){if(C=d[y],O=C(P),O==null)return;E.push(O.value),P=O.rest}return new r.Result(E,P)}},r.pick=function(){var d,u;return d=arguments[0],u=2<=arguments.length?o.call(arguments,1):[],function(y){var w,C;if(C=r.sequence.apply(r,u)(y),C!=null)return w=C.value,C.value=w[d],C}},r.string=function(d){var u;return u=d.length,function(y){if(y.slice(0,u)===d)return new r.Result(d,y.slice(u))}},r.lazy=function(d){var u;return u=null,function(y){return u==null&&(u=d()),u(y)}},r.baseMany=function(d,u,y,w,C){var P,O,E,M;for(E=C,M=y?"":[];!(u!=null&&(P=u(E),P!=null)||(O=d(E),O==null));)y?M+=O.value:M.push(O.value),E=O.rest;if(!(w&&M.length===0))return new r.Result(M,E)},r.many1=function(d){return function(u){return r.baseMany(d,null,!1,!0,u)}},r.concatMany1Till=function(d,u){return function(y){return r.baseMany(d,u,!0,!0,y)}},r.firstChoice=function(){var d;return d=1<=arguments.length?o.call(arguments,0):[],function(u){var y,w,C,P;for(y=-1,w=d.length;++y<w;)if(C=d[y],P=C(u),P!=null)return P}},m=function(d){var u;return u={},u.wildcard=r.tag("wildcard",r.string(d.wildcardChar)),u.optional=r.tag("optional",r.pick(1,r.string(d.optionalSegmentStartChar),r.lazy(function(){return u.pattern}),r.string(d.optionalSegmentEndChar))),u.name=r.regex(new RegExp("^["+d.segmentNameCharset+"]+")),u.named=r.tag("named",r.pick(1,r.string(d.segmentNameStartChar),r.lazy(function(){return u.name}))),u.escapedChar=r.pick(1,r.string(d.escapeChar),r.regex(/^./)),u.static=r.tag("static",r.concatMany1Till(r.firstChoice(r.lazy(function(){return u.escapedChar}),r.regex(/^./)),r.firstChoice(r.string(d.segmentNameStartChar),r.string(d.optionalSegmentStartChar),r.string(d.optionalSegmentEndChar),u.wildcard))),u.token=r.lazy(function(){return r.firstChoice(u.wildcard,u.optional,u.named,u.static)}),u.pattern=r.many1(r.lazy(function(){return u.token})),u},b={escapeChar:"\\",segmentNameStartChar:":",segmentValueCharset:"a-zA-Z0-9-_~ %",segmentNameCharset:"a-zA-Z0-9",optionalSegmentStartChar:"(",optionalSegmentEndChar:")",wildcardChar:"*"},c=function(d,u){if(Array.isArray(d))return v(d,function(y){return c(y,u)});switch(d.tag){case"wildcard":return"(.*?)";case"named":return"(["+u+"]+)";case"static":return h(d.value);case"optional":return"(?:"+c(d.value,u)+")?"}},a=function(d,u){return u==null&&(u=b.segmentValueCharset),"^"+c(d,u)+"$"},n=function(d){if(Array.isArray(d))return g(d,n);switch(d.tag){case"wildcard":return["_"];case"named":return[d.value];case"static":return[];case"optional":return n(d.value)}},x=function(d,u,y,w){var C,P,O,E;if(w==null&&(w=!1),E=d[u],E==null){if(w)throw new Error("no values provided for key `"+u+"`");return}if(C=y[u]||0,P=Array.isArray(E)?E.length-1:0,C>P){if(w)throw new Error("too few values provided for key `"+u+"`");return}return O=Array.isArray(E)?E[C]:E,w&&(y[u]=C+1),O},i=function(d,u,y){var w,C;if(Array.isArray(d)){for(w=-1,C=d.length;++w<C;)if(i(d[w],u,y))return!0;return!1}switch(d.tag){case"wildcard":return x(u,"_",y,!1)!=null;case"named":return x(u,d.value,y,!1)!=null;case"static":return!1;case"optional":return i(d.value,u,y)}},_=function(d,u,y){if(Array.isArray(d))return v(d,function(w){return _(w,u,y)});switch(d.tag){case"wildcard":return x(u,"_",y,!0);case"named":return x(u,d.value,y,!0);case"static":return d.value;case"optional":return i(d.value,u,y)?_(d.value,u,y):""}},t=function(d,u){var y,w,C,P,O;if(d instanceof t){this.isRegex=d.isRegex,this.regex=d.regex,this.ast=d.ast,this.names=d.names;return}if(this.isRegex=d instanceof RegExp,!(typeof d=="string"||this.isRegex))throw new TypeError("argument must be a regex or a string");if(this.isRegex){if(this.regex=d,u!=null){if(!Array.isArray(u))throw new Error("if first argument is a regex the second argument may be an array of group names but you provided something else");if(y=f(this.regex),u.length!==y)throw new Error("regex contains "+y+" groups but array of group names contains "+u.length);this.names=u}return}if(d==="")throw new Error("argument must not be the empty string");if(O=d.replace(/\s+/g,""),O!==d)throw new Error("argument must not contain whitespace");if(w={escapeChar:u?.escapeChar||b.escapeChar,segmentNameStartChar:u?.segmentNameStartChar||b.segmentNameStartChar,segmentNameCharset:u?.segmentNameCharset||b.segmentNameCharset,segmentValueCharset:u?.segmentValueCharset||b.segmentValueCharset,optionalSegmentStartChar:u?.optionalSegmentStartChar||b.optionalSegmentStartChar,optionalSegmentEndChar:u?.optionalSegmentEndChar||b.optionalSegmentEndChar,wildcardChar:u?.wildcardChar||b.wildcardChar},P=m(w),C=P.pattern(d),C==null)throw new Error("couldn't parse pattern");if(C.rest!=="")throw new Error("could only partially parse pattern");this.ast=C.value,this.regex=new RegExp(a(this.ast,w.segmentValueCharset)),this.names=n(this.ast)},t.prototype.match=function(d){var u,y;return y=this.regex.exec(d),y==null?null:(u=y.slice(1),this.names?A(this.names,u):u)},t.prototype.stringify=function(d){if(d==null&&(d={}),this.isRegex)throw new Error("can't stringify patterns generated from a regex");if(d!==Object(d))throw new Error("argument must be an object or undefined");return _(this.ast,d,{})},t.escapeForRegex=h,t.concatMap=g,t.stringConcatMap=v,t.regexGroupCount=f,t.keysAndValuesToObject=A,t.P=r,t.newParser=m,t.defaultOptions=b,t.astNodeToRegexString=a,t.astNodeToNames=n,t.getParam=x,t.astNodeContainsSegmentsForProvidedParams=i,t.stringify=_,t})})(Js,Js.exports)),Js.exports}var Od=Td();const vt=Ed(Od);class Qe{constructor(e){this.path=Qe.normalizePath(e)}getDataProviderKey(){return new I(this.path)}static normalizePath(e){const o=String(e).trim();if(!o)throw new RangeError("Endpoint: path cannot be empty");if(/^https?:\/\//i.test(o)){let c;try{c=new URL(o)}catch{throw new RangeError("Endpoint: invalid absolute URL")}return c.pathname=c.pathname.replace(/\/+/g,"/"),c.href}const r=o.indexOf("?"),t=o.indexOf("#");let i=o.length;r>=0&&(i=Math.min(i,r)),t>=0&&(i=Math.min(i,t));let n=o.slice(0,i);const a=o.slice(i);if(n=n.replace(/^\/+/,""),n=n.replace(/\/+/g,"/"),!n&&a)throw new RangeError("Endpoint: path cannot be empty");return n+a}static isNonEmpty(e){return String(e).trim().length>0}static looksLikeDataProviderPath(e){return/^\s*dataProvider\s*\(/i.test(String(e))}toString(){return this.path}}const Id=Oc,qd=Fd,Rd=Ir,Nd=Go,Ot=ne,pl=me,Ao=fe,Md=ss,yi=vt;window["concorde-utils"]=window["concorde-utils"]||{};window["concorde-utils"]={Utils:Id,Arrays:qd,DataBindObserver:Rd,Format:Nd,HTML:Ot,LocationHandler:pl,Objects:Ao,PublisherManager:R,api:Md,URLPattern:yi,Endpoint:Qe,DataProviderKey:I};var jd=Object.defineProperty,Ud=Object.getOwnPropertyDescriptor,Ws=(s,e,o,r)=>{for(var t=r>1?void 0:r?Ud(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&jd(e,o,t),t};const Pn=s=>{class e extends s{constructor(){super(...arguments),this._value="",this.forceAutoFill=!1,this.unique=null,this.radio=null,this._checked=null,this.updateAllChecked=()=>{const r=this.getAttribute("name"),t=this.getCheckAllPublisher(),i=this.getFormPublisher();if(t?.hasCheckAll.get()&&!this.checksAll()&&t&&i&&r){if(this.getFormPublisherValue()?.length)(this.checked===null||t.checkMode.get()=="noneChecked"||t.checkMode.get()==null)&&t.checkMode.set("someUnchecked");else{t.checkMode.set("noneChecked");return}const n=this.getFormPublisherValue(),a=t.values.get();if(a&&a.length){let c=a.length;for(const g of a)n.indexOf(g)==-1&&(c-=1);c==a.length&&t.checkMode.set("allChecked"),c==0&&t.checkMode.set("noneChecked")}a.indexOf(this.value)==-1&&this.unsetOnDisconnect()&&(this.checked=null)}},this.onChecksAllRequest=r=>{this.removeAttribute("allChecked"),this.removeAttribute("indeterminate"),r=="allChecked"&&(this.checked=!0,this.setAttribute("allChecked","")),r=="noneChecked"&&(this.checked=null),r=="someUnchecked"&&(this.checksAll()&&(this.checked="indeterminate"),this.setAttribute("indeterminate",""))}}get value(){return this._value}set value(r){if(this.value==r||(this.hasAttribute("value")&&!this.forceAutoFill&&(r=this.getAttribute("value")),this._value==r)||r==null||(this._value=r,!this.value))return;if(this.getFormPublisher()&&this.name){let i=this.getFormPublisherValue();(this.radio||this.unique)&&(this.checked=i==r?!0:null),Array.isArray(i)||(i=[]),i.indexOf(r)!=-1&&(this.checked=!0)}this.checked==!0&&this.updateDataValue(),this.requestUpdate()}get checked(){return this._checked}set checked(r){if(this.setCheckedValue(r),this.checksAll()){const t=this.getCheckAllPublisher();t&&(this.checked===!0?t.checkMode.set("allChecked"):this.checked===null&&(t.checkMode.set("noneChecked"),this.getFormPublisher()&&this.setFormPublisherValue([])))}this.requestUpdate()}validateFormElement(){const r=this.shadowRoot?.querySelector("input");if(!r||r.checkValidity())return;const t=this.getFormPublisher();if(t){const i=this.getFormPublisherValue();if((this.unique||this.radio)&&i!==null&&i!==void 0&&i.toString().length>0)return;t.isFormValid=!1,r.reportValidity()}}checksAll(){return this.hasAttribute("checksAll")}setCheckedValue(r){this._checked!=r&&(this._checked=r,this.updateDataValue(),this.requestUpdate(),setTimeout(()=>this.updateAllChecked(),1))}handleChange(){const r=this.checked===!0?this.radio?!0:null:!0;this.checked=r;const t=new Event("change");this.dispatchEvent(t)}getValueForFormPublisher(){let r=this.getFormPublisherValue();if(this.radio)return this.checked===!0&&this.value!=null?this.value:r;if(this.unique)return this.checked===!0&&this.value!=null?this.value:null;Array.isArray(r)||(r=[]);const t=r.slice(0),i=t.indexOf(this.value);return this.checked===!0&&i===-1&&!this.checksAll()&&t.push(this.value),this.checked===null&&i!==-1&&t.splice(i,1),t}setFormValueFromPublisher(r){if(this.unique||this.radio){this.checked=this.value==r?!0:null;return}Array.isArray(r)||(r=[]),!this.checksAll()&&(this.checked=r.indexOf(this.value)!==-1?!0:null)}getCheckAllPublisher(){this.formDataProvider||(this.formDataProvider=this.getAncestorAttributeValue("formDataProvider"));const r=this.formDataProvider,t=this.getAttribute("name");return!r||!t?null:R.get(r+"/"+t+"/_available_values_")}unset(){this.checked=null}disconnectedCallback(){super.disconnectedCallback();const r=this.getCheckAllPublisher();if(r&&(r.checkMode.offAssign(this.onChecksAllRequest),!this.checksAll())){const t=r.values.get().slice(0),i=t.indexOf(this.value);i!=-1&&(t.splice(i,1),r.values.set(t))}setTimeout(()=>this.updateAllChecked(),1)}connectedCallback(){if(super.connectedCallback(),this.getFormPublisher()&&this.name){const i=this.getFormPublisherValue();i&&Array.isArray(i)&&i.indexOf(this.value)!==-1&&(this.checked=!0)}const t=this.getCheckAllPublisher();t&&(t.checkMode.onAssign(this.onChecksAllRequest),this.checksAll()&&t.hasCheckAll.set(!0),t.values.get()||t.values.set([]),this.checksAll()||t.values.set([...t.values.get(),this.value])),this.hasAttribute("checked")&&(!this.publisher||this.publisher.get().checked!==!1)&&setTimeout(()=>this.checked=!0,1)}}return Ws([l()],e.prototype,"value",1),Ws([l()],e.prototype,"forceAutoFill",2),Ws([l({type:Boolean})],e.prototype,"unique",2),Ws([l({type:Boolean})],e.prototype,"radio",2),Ws([l()],e.prototype,"checked",1),e};/**
73
73
  * @license
74
74
  * Copyright 2018 Google LLC
75
75
  * SPDX-License-Identifier: BSD-3-Clause
@@ -106,7 +106,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
106
106
  :host([size="inherit"]) {
107
107
  --sc-_fs: 1em;
108
108
  }
109
- `;var Md=Object.defineProperty,jd=Object.getOwnPropertyDescriptor,X=(s,e,o,r)=>{for(var t=r>1?void 0:r?jd(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Md(e,o,t),t};const Ud="sonic-button";let W=class extends Pn(Ns(de(D))){constructor(){super(...arguments),this.type="default",this.variant="default",this.shape="default",this.direction="row",this.alignItems="center",this.justify="center",this.minWidth="0",this.icon=!1,this.download=null,this.autoActive="partial",this.loading=!1,this.hasPrefix=!1,this.hasSuffix=!1,this._href="",this.goBack=null,this.pushState=!1,this.active=!1,this.autoRepeat=!1,this.pointerDownTime=0,this.lastRepeatTime=0,this.isRepeating=!1,this.handleRepeatend=()=>{window.removeEventListener("pointerup",this.handleRepeatend),window.removeEventListener("blur",this.handleRepeatend),this.autoRepeat&&(this.isRepeating=!1)},this.location=""}set href(s){this._href=s;const e=this._href.toString();e&&e.indexOf("http")!=0?me.onChange(this):me.offChange(this),this.requestUpdate()}get href(){return this._href}handleNavigation(s){s.preventDefault(),me.changeFromComponent(this)}handleChange(s){if(!(s?.type=="click"&&this.autoRepeat)&&(super.handleChange(),(this.pushState||this.goBack!==null)&&(s?.preventDefault(),s?.stopPropagation(),me.changeFromComponent(this)),this.hasAttribute("reset"))){const e=this.getAttribute("reset"),o=e?R.get(e):this.getFormPublisher();o&&o.set({})}}handleRepeatStart(s){this.autoRepeat&&(this.handleChange(s),this.pointerDownTime=Date.now(),this.isRepeating=!0,this.repeat()),window.addEventListener("pointerup",this.handleRepeatend),window.addEventListener("blur",this.handleRepeatend)}repeat(){if(this.isRepeating){if(this.hasAttribute("disabled")){this.isRepeating=!1;return}window.requestAnimationFrame(this.repeat.bind(this)),!(Date.now()-this.pointerDownTime<500)&&(Date.now()-this.lastRepeatTime<100||(this.handleChange(),this.lastRepeatTime=Date.now()))}}connectedCallback(){super.connectedCallback()}setCheckedValue(s){if(this.name){if(s?this.setAttribute("active","true"):this.removeAttribute("active"),s==this._checked)return;super.setCheckedValue(s)}}disconnectedCallback(){me.offChange(this),super.disconnectedCallback()}willUpdate(s){(s.has("href")||s.has("autoActive"))&&me.updateComponentActiveState(this),s.has("location")&&me.updateComponentActiveState(this)}render(){const s={flexDirection:this.direction,alignItems:this.alignItems,justifyContent:this.justify,align:this.align,minWidth:this.minWidth},e=p`
109
+ `;var Bd=Object.defineProperty,zd=Object.getOwnPropertyDescriptor,X=(s,e,o,r)=>{for(var t=r>1?void 0:r?zd(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Bd(e,o,t),t};const Kd="sonic-button";let W=class extends Pn(Ns(de(D))){constructor(){super(...arguments),this.type="default",this.variant="default",this.shape="default",this.direction="row",this.alignItems="center",this.justify="center",this.minWidth="0",this.icon=!1,this.download=null,this.autoActive="partial",this.loading=!1,this.hasPrefix=!1,this.hasSuffix=!1,this._href="",this.goBack=null,this.pushState=!1,this.active=!1,this.autoRepeat=!1,this.pointerDownTime=0,this.lastRepeatTime=0,this.isRepeating=!1,this.handleRepeatend=()=>{window.removeEventListener("pointerup",this.handleRepeatend),window.removeEventListener("blur",this.handleRepeatend),this.autoRepeat&&(this.isRepeating=!1)},this.location=""}set href(s){this._href=s;const e=this._href.toString();e&&e.indexOf("http")!=0?me.onChange(this):me.offChange(this),this.requestUpdate()}get href(){return this._href}handleNavigation(s){s.preventDefault(),me.changeFromComponent(this)}handleChange(s){if(!(s?.type=="click"&&this.autoRepeat)&&(super.handleChange(),(this.pushState||this.goBack!==null)&&(s?.preventDefault(),s?.stopPropagation(),me.changeFromComponent(this)),this.hasAttribute("reset"))){const e=this.getAttribute("reset"),o=e?R.get(e):this.getFormPublisher();o&&o.set({})}}handleRepeatStart(s){this.autoRepeat&&(this.handleChange(s),this.pointerDownTime=Date.now(),this.isRepeating=!0,this.repeat()),window.addEventListener("pointerup",this.handleRepeatend),window.addEventListener("blur",this.handleRepeatend)}repeat(){if(this.isRepeating){if(this.hasAttribute("disabled")){this.isRepeating=!1;return}window.requestAnimationFrame(this.repeat.bind(this)),!(Date.now()-this.pointerDownTime<500)&&(Date.now()-this.lastRepeatTime<100||(this.handleChange(),this.lastRepeatTime=Date.now()))}}connectedCallback(){super.connectedCallback()}setCheckedValue(s){if(this.name){if(s?this.setAttribute("active","true"):this.removeAttribute("active"),s==this._checked)return;super.setCheckedValue(s)}}disconnectedCallback(){me.offChange(this),super.disconnectedCallback()}willUpdate(s){(s.has("href")||s.has("autoActive"))&&me.updateComponentActiveState(this),s.has("location")&&me.updateComponentActiveState(this)}render(){const s={flexDirection:this.direction,alignItems:this.alignItems,justifyContent:this.justify,align:this.align,minWidth:this.minWidth},e=p`
110
110
  <button
111
111
  part="button"
112
112
  class=${this.hasPrefix||this.hasSuffix?"has-prefix-or-suffix":""}
@@ -506,11 +506,11 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
506
506
  transform: translate(-50%, -50%) rotate(359deg);
507
507
  }
508
508
  }
509
- `];X([l({type:String,reflect:!0})],W.prototype,"type",2);X([l({type:String,reflect:!0})],W.prototype,"variant",2);X([l({type:String,reflect:!0})],W.prototype,"size",2);X([l({type:String,reflect:!0})],W.prototype,"shape",2);X([l({type:String})],W.prototype,"direction",2);X([l({type:String,reflect:!0})],W.prototype,"alignItems",2);X([l({type:String})],W.prototype,"justify",2);X([l({type:String,reflect:!0})],W.prototype,"align",2);X([l({type:String})],W.prototype,"minWidth",2);X([l({type:Boolean,reflect:!0})],W.prototype,"icon",2);X([l({type:String})],W.prototype,"download",2);X([l({type:String})],W.prototype,"autoActive",2);X([l({type:Boolean,reflect:!0})],W.prototype,"loading",2);X([$()],W.prototype,"hasPrefix",2);X([$()],W.prototype,"hasSuffix",2);X([Is({flatten:!0,slot:"prefix"})],W.prototype,"prefixes",2);X([Is({flatten:!0,slot:"suffix"})],W.prototype,"suffixes",2);X([l({type:String})],W.prototype,"target",2);X([l({type:String})],W.prototype,"href",1);X([l({type:String})],W.prototype,"goBack",2);X([l({type:Boolean})],W.prototype,"pushState",2);X([l({type:Boolean,reflect:!0})],W.prototype,"active",2);X([l({type:Boolean,reflect:!0})],W.prototype,"autoRepeat",2);X([l({type:String,attribute:"data-aria-controls"})],W.prototype,"ariaControls",2);X([l({type:Boolean,attribute:"data-aria-expanded"})],W.prototype,"sonicAriaExpanded",2);X([$()],W.prototype,"location",2);W=X([k(Ud)],W);/**
509
+ `];X([l({type:String,reflect:!0})],W.prototype,"type",2);X([l({type:String,reflect:!0})],W.prototype,"variant",2);X([l({type:String,reflect:!0})],W.prototype,"size",2);X([l({type:String,reflect:!0})],W.prototype,"shape",2);X([l({type:String})],W.prototype,"direction",2);X([l({type:String,reflect:!0})],W.prototype,"alignItems",2);X([l({type:String})],W.prototype,"justify",2);X([l({type:String,reflect:!0})],W.prototype,"align",2);X([l({type:String})],W.prototype,"minWidth",2);X([l({type:Boolean,reflect:!0})],W.prototype,"icon",2);X([l({type:String})],W.prototype,"download",2);X([l({type:String})],W.prototype,"autoActive",2);X([l({type:Boolean,reflect:!0})],W.prototype,"loading",2);X([$()],W.prototype,"hasPrefix",2);X([$()],W.prototype,"hasSuffix",2);X([Is({flatten:!0,slot:"prefix"})],W.prototype,"prefixes",2);X([Is({flatten:!0,slot:"suffix"})],W.prototype,"suffixes",2);X([l({type:String})],W.prototype,"target",2);X([l({type:String})],W.prototype,"href",1);X([l({type:String})],W.prototype,"goBack",2);X([l({type:Boolean})],W.prototype,"pushState",2);X([l({type:Boolean,reflect:!0})],W.prototype,"active",2);X([l({type:Boolean,reflect:!0})],W.prototype,"autoRepeat",2);X([l({type:String,attribute:"data-aria-controls"})],W.prototype,"ariaControls",2);X([l({type:Boolean,attribute:"data-aria-expanded"})],W.prototype,"sonicAriaExpanded",2);X([$()],W.prototype,"location",2);W=X([k(Kd)],W);/**
510
510
  * @license
511
511
  * Copyright 2017 Google LLC
512
512
  * SPDX-License-Identifier: BSD-3-Clause
513
- */const xa=(s,e,o)=>{const r=new Map;for(let t=e;t<=o;t++)r.set(s[t],t);return r},Nr=Ut(class extends Rs{constructor(s){if(super(s),s.type!==us.CHILD)throw Error("repeat() can only be used in text expressions")}dt(s,e,o){let r;o===void 0?o=e:e!==void 0&&(r=e);const t=[],i=[];let n=0;for(const a of s)t[n]=r?r(a,n):n,i[n]=o(a,n),n++;return{values:i,keys:t}}render(s,e,o){return this.dt(s,e,o).values}update(s,[e,o,r]){const t=cd(s),{values:i,keys:n}=this.dt(e,o,r);if(!Array.isArray(t))return this.ut=n,i;const a=this.ut??=[],c=[];let g,f,h=0,w=t.length-1,A=0,m=i.length-1;for(;h<=w&&A<=m;)if(t[h]===null)h++;else if(t[w]===null)w--;else if(a[h]===n[A])c[A]=Wt(t[h],i[A]),h++,A++;else if(a[w]===n[m])c[m]=Wt(t[w],i[m]),w--,m--;else if(a[h]===n[m])c[m]=Wt(t[h],i[m]),Vs(s,c[m+1],t[h]),h++,m--;else if(a[w]===n[A])c[A]=Wt(t[w],i[A]),Vs(s,t[h],t[w]),w--,A++;else if(g===void 0&&(g=xa(n,A,m),f=xa(a,h,w)),g.has(a[h]))if(g.has(a[w])){const b=f.get(n[A]),v=b!==void 0?t[b]:null;if(v===null){const _=Vs(s,t[h]);Wt(_,i[A]),c[A]=_}else c[A]=Wt(v,i[A]),Vs(s,t[h],v),t[b]=null;A++}else ni(t[w]),w--;else ni(t[h]),h++;for(;A<=m;){const b=Vs(s,c[m+1]);Wt(b,i[A]),c[A++]=b}for(;h<=w;){const b=t[h++];b!==null&&ni(b)}return this.ut=n,ld(s,c),Me}}),Bd=new WeakMap;let _a=0;const li=new Map,Da=new WeakSet,ka=()=>new Promise((s=>requestAnimationFrame(s))),Ca=(s,e)=>{const o=s-e;return o===0?void 0:o},Aa=(s,e)=>{const o=s/e;return o===1?void 0:o},ci={left:(s,e)=>{const o=Ca(s,e);return{value:o,transform:o==null||isNaN(o)?void 0:`translateX(${o}px)`}},top:(s,e)=>{const o=Ca(s,e);return{value:o,transform:o==null||isNaN(o)?void 0:`translateY(${o}px)`}},width:(s,e)=>{let o;e===0&&(e=1,o={width:"1px"});const r=Aa(s,e);return{value:r,overrideFrom:o,transform:r==null||isNaN(r)?void 0:`scaleX(${r})`}},height:(s,e)=>{let o;e===0&&(e=1,o={height:"1px"});const r=Aa(s,e);return{value:r,overrideFrom:o,transform:r==null||isNaN(r)?void 0:`scaleY(${r})`}}},zd={duration:333,easing:"ease-in-out"},Kd=["left","top","width","height","opacity","color","background"],Pa=new WeakMap;class Hd extends Cn{constructor(e){if(super(e),this.t=!1,this.i=null,this.o=null,this.h=!0,this.shouldLog=!1,e.type===us.CHILD)throw Error("The `animate` directive must be used in attribute position.");this.createFinished()}createFinished(){this.resolveFinished?.(),this.finished=new Promise((e=>{this.l=e}))}async resolveFinished(){this.l?.(),this.l=void 0}render(e){return S}getController(){return Bd.get(this.u)}isDisabled(){return this.options.disabled||this.getController()?.disabled}update(e,[o]){const r=this.u===void 0;return r&&(this.u=e.options?.host,this.u.addController(this),this.u.updateComplete.then((t=>this.t=!0)),this.element=e.element,Pa.set(this.element,this)),this.optionsOrCallback=o,(r||typeof o!="function")&&this.p(o),this.render(o)}p(e){e=e??{};const o=this.getController();o!==void 0&&((e={...o.defaultOptions,...e}).keyframeOptions={...o.defaultOptions.keyframeOptions,...e.keyframeOptions}),e.properties??=Kd,this.options=e}m(){const e={},o=this.element.getBoundingClientRect(),r=getComputedStyle(this.element);return this.options.properties.forEach((t=>{const i=o[t]??(ci[t]?void 0:r[t]),n=Number(i);e[t]=isNaN(n)?i+"":n})),e}v(){let e,o=!0;return this.options.guard&&(e=this.options.guard(),o=((r,t)=>{if(Array.isArray(r)){if(Array.isArray(t)&&t.length===r.length&&r.every(((i,n)=>i===t[n])))return!1}else if(t===r)return!1;return!0})(e,this._)),this.h=this.t&&!this.isDisabled()&&!this.isAnimating()&&o&&this.element.isConnected,this.h&&(this._=Array.isArray(e)?Array.from(e):e),this.h}hostUpdate(){typeof this.optionsOrCallback=="function"&&this.p(this.optionsOrCallback()),this.v()&&(this.A=this.m(),this.i=this.i??this.element.parentNode,this.o=this.element.nextSibling)}async hostUpdated(){if(!this.h||!this.element.isConnected||this.options.skipInitial&&!this.isHostRendered)return;let e;this.prepare(),await ka;const o=this.O(),r=this.j(this.options.keyframeOptions,o),t=this.m();if(this.A!==void 0){const{from:i,to:n}=this.N(this.A,t,o);this.log("measured",[this.A,t,i,n]),e=this.calculateKeyframes(i,n)}else{const i=li.get(this.options.inId);if(i){li.delete(this.options.inId);const{from:n,to:a}=this.N(i,t,o);e=this.calculateKeyframes(n,a),e=this.options.in?[{...this.options.in[0],...e[0]},...this.options.in.slice(1),e[1]]:e,_a++,e.forEach((c=>c.zIndex=_a))}else this.options.in&&(e=[...this.options.in,{}])}this.animate(e,r)}resetStyles(){this.P!==void 0&&(this.element.setAttribute("style",this.P??""),this.P=void 0)}commitStyles(){this.P=this.element.getAttribute("style"),this.webAnimation?.commitStyles(),this.webAnimation?.cancel()}reconnected(){}async disconnected(){if(!this.h||(this.options.id!==void 0&&li.set(this.options.id,this.A),this.options.out===void 0))return;if(this.prepare(),await ka(),this.i?.isConnected){const o=this.o&&this.o.parentNode===this.i?this.o:null;if(this.i.insertBefore(this.element,o),this.options.stabilizeOut){const r=this.m();this.log("stabilizing out");const t=this.A.left-r.left,i=this.A.top-r.top;getComputedStyle(this.element).position!=="static"||t===0&&i===0||(this.element.style.position="relative"),t!==0&&(this.element.style.left=t+"px"),i!==0&&(this.element.style.top=i+"px")}}const e=this.j(this.options.keyframeOptions);await this.animate(this.options.out,e),this.element.remove()}prepare(){this.createFinished()}start(){this.options.onStart?.(this)}didFinish(e){e&&this.options.onComplete?.(this),this.A=void 0,this.animatingProperties=void 0,this.frames=void 0,this.resolveFinished()}O(){const e=[];for(let o=this.element.parentNode;o;o=o?.parentNode){const r=Pa.get(o);r&&!r.isDisabled()&&r&&e.push(r)}return e}get isHostRendered(){const e=Da.has(this.u);return e||this.u.updateComplete.then((()=>{Da.add(this.u)})),e}j(e,o=this.O()){const r={...zd};return o.forEach((t=>Object.assign(r,t.options.keyframeOptions))),Object.assign(r,e),r}N(e,o,r){e={...e},o={...o};const t=r.map((a=>a.animatingProperties)).filter((a=>a!==void 0));let i=1,n=1;return t.length>0&&(t.forEach((a=>{a.width&&(i/=a.width),a.height&&(n/=a.height)})),e.left!==void 0&&o.left!==void 0&&(e.left=i*e.left,o.left=i*o.left),e.top!==void 0&&o.top!==void 0&&(e.top=n*e.top,o.top=n*o.top)),{from:e,to:o}}calculateKeyframes(e,o,r=!1){const t={},i={};let n=!1;const a={};for(const c in o){const g=e[c],f=o[c];if(c in ci){const h=ci[c];if(g===void 0||f===void 0)continue;const w=h(g,f);w.transform!==void 0&&(a[c]=w.value,n=!0,t.transform=`${t.transform??""} ${w.transform}`,w.overrideFrom!==void 0&&Object.assign(t,w.overrideFrom))}else g!==f&&g!==void 0&&f!==void 0&&(n=!0,t[c]=g,i[c]=f)}return t.transformOrigin=i.transformOrigin=r?"center center":"top left",this.animatingProperties=a,n?[t,i]:void 0}async animate(e,o=this.options.keyframeOptions){this.start(),this.frames=e;let r=!1;if(!this.isAnimating()&&!this.isDisabled()&&(this.options.onFrames&&(this.frames=e=this.options.onFrames(this),this.log("modified frames",e)),e!==void 0)){this.log("animate",[e,o]),r=!0,this.webAnimation=this.element.animate(e,o);const t=this.getController();t?.add(this);try{await this.webAnimation.finished}catch{}t?.remove(this)}return this.didFinish(r),r}isAnimating(){return this.webAnimation?.playState==="running"||this.webAnimation?.pending}log(e,o){this.shouldLog&&!this.isDisabled()&&console.log(e,this.options.id,o)}}const vi=Ut(Hd),Vd={cancel:`<svg width="24" height="24" stroke-width="1.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
513
+ */const xa=(s,e,o)=>{const r=new Map;for(let t=e;t<=o;t++)r.set(s[t],t);return r},Nr=Ut(class extends Rs{constructor(s){if(super(s),s.type!==us.CHILD)throw Error("repeat() can only be used in text expressions")}dt(s,e,o){let r;o===void 0?o=e:e!==void 0&&(r=e);const t=[],i=[];let n=0;for(const a of s)t[n]=r?r(a,n):n,i[n]=o(a,n),n++;return{values:i,keys:t}}render(s,e,o){return this.dt(s,e,o).values}update(s,[e,o,r]){const t=pd(s),{values:i,keys:n}=this.dt(e,o,r);if(!Array.isArray(t))return this.ut=n,i;const a=this.ut??=[],c=[];let g,b,h=0,x=t.length-1,A=0,m=i.length-1;for(;h<=x&&A<=m;)if(t[h]===null)h++;else if(t[x]===null)x--;else if(a[h]===n[A])c[A]=Wt(t[h],i[A]),h++,A++;else if(a[x]===n[m])c[m]=Wt(t[x],i[m]),x--,m--;else if(a[h]===n[m])c[m]=Wt(t[h],i[m]),Vs(s,c[m+1],t[h]),h++,m--;else if(a[x]===n[A])c[A]=Wt(t[x],i[A]),Vs(s,t[h],t[x]),x--,A++;else if(g===void 0&&(g=xa(n,A,m),b=xa(a,h,x)),g.has(a[h]))if(g.has(a[x])){const f=b.get(n[A]),v=f!==void 0?t[f]:null;if(v===null){const _=Vs(s,t[h]);Wt(_,i[A]),c[A]=_}else c[A]=Wt(v,i[A]),Vs(s,t[h],v),t[f]=null;A++}else ni(t[x]),x--;else ni(t[h]),h++;for(;A<=m;){const f=Vs(s,c[m+1]);Wt(f,i[A]),c[A++]=f}for(;h<=x;){const f=t[h++];f!==null&&ni(f)}return this.ut=n,ud(s,c),Me}}),Hd=new WeakMap;let _a=0;const li=new Map,Da=new WeakSet,ka=()=>new Promise((s=>requestAnimationFrame(s))),Ca=(s,e)=>{const o=s-e;return o===0?void 0:o},Aa=(s,e)=>{const o=s/e;return o===1?void 0:o},ci={left:(s,e)=>{const o=Ca(s,e);return{value:o,transform:o==null||isNaN(o)?void 0:`translateX(${o}px)`}},top:(s,e)=>{const o=Ca(s,e);return{value:o,transform:o==null||isNaN(o)?void 0:`translateY(${o}px)`}},width:(s,e)=>{let o;e===0&&(e=1,o={width:"1px"});const r=Aa(s,e);return{value:r,overrideFrom:o,transform:r==null||isNaN(r)?void 0:`scaleX(${r})`}},height:(s,e)=>{let o;e===0&&(e=1,o={height:"1px"});const r=Aa(s,e);return{value:r,overrideFrom:o,transform:r==null||isNaN(r)?void 0:`scaleY(${r})`}}},Vd={duration:333,easing:"ease-in-out"},Wd=["left","top","width","height","opacity","color","background"],Pa=new WeakMap;class Gd extends Cn{constructor(e){if(super(e),this.t=!1,this.i=null,this.o=null,this.h=!0,this.shouldLog=!1,e.type===us.CHILD)throw Error("The `animate` directive must be used in attribute position.");this.createFinished()}createFinished(){this.resolveFinished?.(),this.finished=new Promise((e=>{this.l=e}))}async resolveFinished(){this.l?.(),this.l=void 0}render(e){return S}getController(){return Hd.get(this.u)}isDisabled(){return this.options.disabled||this.getController()?.disabled}update(e,[o]){const r=this.u===void 0;return r&&(this.u=e.options?.host,this.u.addController(this),this.u.updateComplete.then((t=>this.t=!0)),this.element=e.element,Pa.set(this.element,this)),this.optionsOrCallback=o,(r||typeof o!="function")&&this.p(o),this.render(o)}p(e){e=e??{};const o=this.getController();o!==void 0&&((e={...o.defaultOptions,...e}).keyframeOptions={...o.defaultOptions.keyframeOptions,...e.keyframeOptions}),e.properties??=Wd,this.options=e}m(){const e={},o=this.element.getBoundingClientRect(),r=getComputedStyle(this.element);return this.options.properties.forEach((t=>{const i=o[t]??(ci[t]?void 0:r[t]),n=Number(i);e[t]=isNaN(n)?i+"":n})),e}v(){let e,o=!0;return this.options.guard&&(e=this.options.guard(),o=((r,t)=>{if(Array.isArray(r)){if(Array.isArray(t)&&t.length===r.length&&r.every(((i,n)=>i===t[n])))return!1}else if(t===r)return!1;return!0})(e,this._)),this.h=this.t&&!this.isDisabled()&&!this.isAnimating()&&o&&this.element.isConnected,this.h&&(this._=Array.isArray(e)?Array.from(e):e),this.h}hostUpdate(){typeof this.optionsOrCallback=="function"&&this.p(this.optionsOrCallback()),this.v()&&(this.A=this.m(),this.i=this.i??this.element.parentNode,this.o=this.element.nextSibling)}async hostUpdated(){if(!this.h||!this.element.isConnected||this.options.skipInitial&&!this.isHostRendered)return;let e;this.prepare(),await ka;const o=this.O(),r=this.j(this.options.keyframeOptions,o),t=this.m();if(this.A!==void 0){const{from:i,to:n}=this.N(this.A,t,o);this.log("measured",[this.A,t,i,n]),e=this.calculateKeyframes(i,n)}else{const i=li.get(this.options.inId);if(i){li.delete(this.options.inId);const{from:n,to:a}=this.N(i,t,o);e=this.calculateKeyframes(n,a),e=this.options.in?[{...this.options.in[0],...e[0]},...this.options.in.slice(1),e[1]]:e,_a++,e.forEach((c=>c.zIndex=_a))}else this.options.in&&(e=[...this.options.in,{}])}this.animate(e,r)}resetStyles(){this.P!==void 0&&(this.element.setAttribute("style",this.P??""),this.P=void 0)}commitStyles(){this.P=this.element.getAttribute("style"),this.webAnimation?.commitStyles(),this.webAnimation?.cancel()}reconnected(){}async disconnected(){if(!this.h||(this.options.id!==void 0&&li.set(this.options.id,this.A),this.options.out===void 0))return;if(this.prepare(),await ka(),this.i?.isConnected){const o=this.o&&this.o.parentNode===this.i?this.o:null;if(this.i.insertBefore(this.element,o),this.options.stabilizeOut){const r=this.m();this.log("stabilizing out");const t=this.A.left-r.left,i=this.A.top-r.top;getComputedStyle(this.element).position!=="static"||t===0&&i===0||(this.element.style.position="relative"),t!==0&&(this.element.style.left=t+"px"),i!==0&&(this.element.style.top=i+"px")}}const e=this.j(this.options.keyframeOptions);await this.animate(this.options.out,e),this.element.remove()}prepare(){this.createFinished()}start(){this.options.onStart?.(this)}didFinish(e){e&&this.options.onComplete?.(this),this.A=void 0,this.animatingProperties=void 0,this.frames=void 0,this.resolveFinished()}O(){const e=[];for(let o=this.element.parentNode;o;o=o?.parentNode){const r=Pa.get(o);r&&!r.isDisabled()&&r&&e.push(r)}return e}get isHostRendered(){const e=Da.has(this.u);return e||this.u.updateComplete.then((()=>{Da.add(this.u)})),e}j(e,o=this.O()){const r={...Vd};return o.forEach((t=>Object.assign(r,t.options.keyframeOptions))),Object.assign(r,e),r}N(e,o,r){e={...e},o={...o};const t=r.map((a=>a.animatingProperties)).filter((a=>a!==void 0));let i=1,n=1;return t.length>0&&(t.forEach((a=>{a.width&&(i/=a.width),a.height&&(n/=a.height)})),e.left!==void 0&&o.left!==void 0&&(e.left=i*e.left,o.left=i*o.left),e.top!==void 0&&o.top!==void 0&&(e.top=n*e.top,o.top=n*o.top)),{from:e,to:o}}calculateKeyframes(e,o,r=!1){const t={},i={};let n=!1;const a={};for(const c in o){const g=e[c],b=o[c];if(c in ci){const h=ci[c];if(g===void 0||b===void 0)continue;const x=h(g,b);x.transform!==void 0&&(a[c]=x.value,n=!0,t.transform=`${t.transform??""} ${x.transform}`,x.overrideFrom!==void 0&&Object.assign(t,x.overrideFrom))}else g!==b&&g!==void 0&&b!==void 0&&(n=!0,t[c]=g,i[c]=b)}return t.transformOrigin=i.transformOrigin=r?"center center":"top left",this.animatingProperties=a,n?[t,i]:void 0}async animate(e,o=this.options.keyframeOptions){this.start(),this.frames=e;let r=!1;if(!this.isAnimating()&&!this.isDisabled()&&(this.options.onFrames&&(this.frames=e=this.options.onFrames(this),this.log("modified frames",e)),e!==void 0)){this.log("animate",[e,o]),r=!0,this.webAnimation=this.element.animate(e,o);const t=this.getController();t?.add(this);try{await this.webAnimation.finished}catch{}t?.remove(this)}return this.didFinish(r),r}isAnimating(){return this.webAnimation?.playState==="running"||this.webAnimation?.pending}log(e,o){this.shouldLog&&!this.isDisabled()&&console.log(e,this.options.id,o)}}const vi=Ut(Gd),Jd={cancel:`<svg width="24" height="24" stroke-width="1.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
514
514
  <path d="M6.75827 17.2426L12.0009 12M17.2435 6.75736L12.0009 12M12.0009 12L6.75827 6.75736M12.0009 12L17.2435 17.2426" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
515
515
  </svg>
516
516
  `,"check-circled-outline":`<svg width="24" height="24" stroke-width="1.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -546,7 +546,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
546
546
  <path d="M12 17.01L12.01 16.9989" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
547
547
  <path d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
548
548
  </svg>
549
- `},Wd={core:Vd},Uo=new Map,Zs={heroicons:{url:"https://cdn.jsdelivr.net/npm/heroicons@2.0.4/24/$prefix/$name.svg",defaultPrefix:"outline"},iconoir:{url:"https://cdnjs.cloudflare.com/ajax/libs/iconoir/5.1.4/icons/$name.svg"},feathers:{url:"https://cdn.jsdelivr.net/npm/feather-icons@4.29.0/dist/icons/$name.svg"},lucide:{url:"https://cdn.jsdelivr.net/npm/lucide-static@0.16.29/icons/$name.svg"},material:{url:"https://cdn.jsdelivr.net/npm/@material-icons/svg@1.0.5/svg/$name/$prefix.svg",defaultPrefix:"regular"},fontAwesome:{url:"https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/svgs/$prefix/$name.svg",defaultPrefix:"regular"},custom:{url:"",defaultPrefix:""}};let Sa=!1;function Gd(){Sa||(Zs.custom.url=document.querySelector("[customIconLibraryPath]")?.getAttribute("customIconLibraryPath")||"",Zs.custom.defaultPrefix=document.querySelector("[customIconDefaultPrefix]")?.getAttribute("customIconDefaultPrefix")||"",Zs.custom.url&&(Sa=!0))}const $a=sessionStorage.getItem("sonicIconsCache"),bt=$a?JSON.parse($a):{icons:{},names:[]},Jd=100,oa=class oa{};oa.default={get:async e=>{const o=e.library;if(!e.name)return"";const r=e.name,t=Wd;if(o=="custom"&&Gd(),o&&o in Zs){const i=Zs[o],n=e.prefix||i.defaultPrefix||"",a=t[o]||{};t[o]=a;const c=n+"-"+r;if(a[c])return V(a[c]);const g=(i.url||"").replace("$prefix",n).replace("$name",r);if(bt.icons[g]){const h=bt.icons[g];if(/^\s*<svg[\s>]/i.test(h||""))return a[c]=h,V(h);delete bt.icons[g]}if(!Uo.has(g)){const h=new Promise(async w=>{try{const A=await fetch(g);if(!A.ok){w("");return}try{const m=A.headers.get("content-type")||"";if(!m.includes("image/svg+xml")&&!m.includes("svg")){w("");return}const b=await A.text(),v=/^\s*<svg[\s>]/i.test(b);w(v?b:"")}catch{w("")}}catch{gd(),w("")}});Uo.set(g,h)}const f=await Uo.get(g);if(Uo.delete(g),a[c]=f||"",f&&/^\s*<svg[\s>]/i.test(f)&&(bt.icons[g]=f,bt.names.push(g)),bt.names.length>Jd){const h=bt.names.shift();delete bt.icons[h]}return sessionStorage.setItem("sonicIconsCache",JSON.stringify(bt)),f?V(f):""}return V(t.core[e.name]||"")}};let wi=oa;var Yd=Object.defineProperty,Qd=Object.getOwnPropertyDescriptor,Po=(s,e,o,r)=>{for(var t=r>1?void 0:r?Qd(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Yd(e,o,t),t};const Zd="sonic-icon";let os=class extends D{constructor(){super(...arguments),this.iconText="",this.name="",this.prefix="",this.library=""}async updateIcon(){this.iconText=await wi.default.get({name:this.name,prefix:this.prefix,library:this.library})}connectedCallback(){this.setAttribute("aria-hidden","true"),super.connectedCallback()}willUpdate(s){(s.has("name")||s.has("prefix")||s.has("library"))&&this.updateIcon(),super.willUpdate(s)}render(){return this.iconText?this.iconText:S}};os.styles=L`
549
+ `},Yd={core:Jd},Uo=new Map,Zs={heroicons:{url:"https://cdn.jsdelivr.net/npm/heroicons@2.0.4/24/$prefix/$name.svg",defaultPrefix:"outline"},iconoir:{url:"https://cdnjs.cloudflare.com/ajax/libs/iconoir/5.1.4/icons/$name.svg"},feathers:{url:"https://cdn.jsdelivr.net/npm/feather-icons@4.29.0/dist/icons/$name.svg"},lucide:{url:"https://cdn.jsdelivr.net/npm/lucide-static@0.16.29/icons/$name.svg"},material:{url:"https://cdn.jsdelivr.net/npm/@material-icons/svg@1.0.5/svg/$name/$prefix.svg",defaultPrefix:"regular"},fontAwesome:{url:"https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/svgs/$prefix/$name.svg",defaultPrefix:"regular"},custom:{url:"",defaultPrefix:""}};let Sa=!1;function Qd(){Sa||(Zs.custom.url=document.querySelector("[customIconLibraryPath]")?.getAttribute("customIconLibraryPath")||"",Zs.custom.defaultPrefix=document.querySelector("[customIconDefaultPrefix]")?.getAttribute("customIconDefaultPrefix")||"",Zs.custom.url&&(Sa=!0))}const $a=sessionStorage.getItem("sonicIconsCache"),bt=$a?JSON.parse($a):{icons:{},names:[]},Zd=100,oa=class oa{};oa.default={get:async e=>{const o=e.library;if(!e.name)return"";const r=e.name,t=Yd;if(o=="custom"&&Qd(),o&&o in Zs){const i=Zs[o],n=e.prefix||i.defaultPrefix||"",a=t[o]||{};t[o]=a;const c=n+"-"+r;if(a[c])return V(a[c]);const g=(i.url||"").replace("$prefix",n).replace("$name",r);if(bt.icons[g]){const h=bt.icons[g];if(/^\s*<svg[\s>]/i.test(h||""))return a[c]=h,V(h);delete bt.icons[g]}if(!Uo.has(g)){const h=new Promise(async x=>{try{const A=await fetch(g);if(!A.ok){x("");return}try{const m=A.headers.get("content-type")||"";if(!m.includes("image/svg+xml")&&!m.includes("svg")){x("");return}const f=await A.text(),v=/^\s*<svg[\s>]/i.test(f);x(v?f:"")}catch{x("")}}catch{yd(),x("")}});Uo.set(g,h)}const b=await Uo.get(g);if(Uo.delete(g),a[c]=b||"",b&&/^\s*<svg[\s>]/i.test(b)&&(bt.icons[g]=b,bt.names.push(g)),bt.names.length>Zd){const h=bt.names.shift();delete bt.icons[h]}return sessionStorage.setItem("sonicIconsCache",JSON.stringify(bt)),b?V(b):""}return V(t.core[e.name]||"")}};let wi=oa;var Xd=Object.defineProperty,eu=Object.getOwnPropertyDescriptor,Po=(s,e,o,r)=>{for(var t=r>1?void 0:r?eu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Xd(e,o,t),t};const tu="sonic-icon";let os=class extends D{constructor(){super(...arguments),this.iconText="",this.name="",this.prefix="",this.library=""}async updateIcon(){this.iconText=await wi.default.get({name:this.name,prefix:this.prefix,library:this.library})}connectedCallback(){this.setAttribute("aria-hidden","true"),super.connectedCallback()}willUpdate(s){(s.has("name")||s.has("prefix")||s.has("library"))&&this.updateIcon(),super.willUpdate(s)}render(){return this.iconText?this.iconText:S}};os.styles=L`
550
550
  :host {
551
551
  line-height: 0.1em;
552
552
  width: fit-content;
@@ -596,7 +596,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
596
596
  :host([size="3xl"]) svg {
597
597
  --_sc-icon-size: 2.8em;
598
598
  }
599
- `;Po([$()],os.prototype,"iconText",2);Po([l({type:String})],os.prototype,"name",2);Po([l({type:String})],os.prototype,"prefix",2);Po([l({type:String})],os.prototype,"library",2);os=Po([k(Zd)],os);const Ms=L`
599
+ `;Po([$()],os.prototype,"iconText",2);Po([l({type:String})],os.prototype,"name",2);Po([l({type:String})],os.prototype,"prefix",2);Po([l({type:String})],os.prototype,"library",2);os=Po([k(tu)],os);const Ms=L`
600
600
  .custom-scroll {
601
601
  overflow: auto !important;
602
602
  overflow-y: overlay !important;
@@ -618,7 +618,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
618
618
  border: solid 0.15rem transparent;
619
619
  }
620
620
  }
621
- `;var Xd=Object.defineProperty,eu=Object.getOwnPropertyDescriptor,Ze=(s,e,o,r)=>{for(var t=r>1?void 0:r?eu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Xd(e,o,t),t};const tu={warning:"warning-circled-outline",success:"check-circled-outline",error:"warning-circled-outline",info:"info-empty"},su="sonic-toast-item";let je=class extends D{constructor(){super(...arguments),this.title="",this.id="",this.text="",this.status="",this.ghost=!1,this.preserve=!1,this.dismissForever=!1,this.maxHeight="10rem",this.visible=!0,this._titleId=""}getAriaRole(){return this.status==="error"?"alert":"status"}getAriaLive(){return this.status==="error"?null:"polite"}getTitleId(){return this._titleId?this._titleId:(this._titleId=this.id?`toast-title-${this.id}`:`toast-title-${Date.now()}-${Math.random().toString(36).slice(2,11)}`,this._titleId)}getCloseButtonLabel(){const s={error:"Fermer le message d'erreur",warning:"Fermer l'avertissement",success:"Fermer le message de succès",info:"Fermer l'information"};return this.status&&s[this.status]||"Fermer la notification"}render(){if(this.dismissForever){const r=localStorage.getItem("sonic-toast-dismissed")||"{}";if(JSON.parse(r)[this.id])return S}if(!this.visible)return S;const s=this.title?this.getTitleId():void 0,e=!this.title&&this.text?this.text.length>100?this.text.substring(0,100).replace(/\s+\S*$/,"")+"...":this.text:void 0,o=this.getAriaLive();return p`<div
621
+ `;var su=Object.defineProperty,ou=Object.getOwnPropertyDescriptor,Xe=(s,e,o,r)=>{for(var t=r>1?void 0:r?ou(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&su(e,o,t),t};const ru={warning:"warning-circled-outline",success:"check-circled-outline",error:"warning-circled-outline",info:"info-empty"},iu="sonic-toast-item";let je=class extends D{constructor(){super(...arguments),this.title="",this.id="",this.text="",this.status="",this.ghost=!1,this.preserve=!1,this.dismissForever=!1,this.maxHeight="10rem",this.visible=!0,this._titleId=""}getAriaRole(){return this.status==="error"?"alert":"status"}getAriaLive(){return this.status==="error"?null:"polite"}getTitleId(){return this._titleId?this._titleId:(this._titleId=this.id?`toast-title-${this.id}`:`toast-title-${Date.now()}-${Math.random().toString(36).slice(2,11)}`,this._titleId)}getCloseButtonLabel(){const s={error:"Fermer le message d'erreur",warning:"Fermer l'avertissement",success:"Fermer le message de succès",info:"Fermer l'information"};return this.status&&s[this.status]||"Fermer la notification"}render(){if(this.dismissForever){const r=localStorage.getItem("sonic-toast-dismissed")||"{}";if(JSON.parse(r)[this.id])return S}if(!this.visible)return S;const s=this.title?this.getTitleId():void 0,e=!this.title&&this.text?this.text.length>100?this.text.substring(0,100).replace(/\s+\S*$/,"")+"...":this.text:void 0,o=this.getAriaLive();return p`<div
622
622
  class="sonic-toast ${this.status} ${this.ghost?"ghost":""}"
623
623
  role=${this.getAriaRole()}
624
624
  aria-live=${o||S}
@@ -637,7 +637,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
637
637
  style="max-height: ${this.maxHeight} ;"
638
638
  >
639
639
  ${this.status&&p`<sonic-icon
640
- name=${tu[this.status]}
640
+ name=${ru[this.status]}
641
641
  class="sonic-toast-icon"
642
642
  size="2xl"
643
643
  aria-hidden="true"
@@ -833,7 +833,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
833
833
  opacity: 0.85;
834
834
  pointer-events: none;
835
835
  }
836
- `];Ze([l({type:String})],je.prototype,"title",2);Ze([l({type:String})],je.prototype,"id",2);Ze([l({type:String})],je.prototype,"text",2);Ze([l({type:String})],je.prototype,"status",2);Ze([l({type:Boolean})],je.prototype,"ghost",2);Ze([l({type:Boolean})],je.prototype,"preserve",2);Ze([l({type:Boolean})],je.prototype,"dismissForever",2);Ze([l({type:String})],je.prototype,"maxHeight",2);Ze([$()],je.prototype,"visible",2);Ze([$()],je.prototype,"_titleId",2);je=Ze([k(su)],je);const ou=L`
836
+ `];Xe([l({type:String})],je.prototype,"title",2);Xe([l({type:String})],je.prototype,"id",2);Xe([l({type:String})],je.prototype,"text",2);Xe([l({type:String})],je.prototype,"status",2);Xe([l({type:Boolean})],je.prototype,"ghost",2);Xe([l({type:Boolean})],je.prototype,"preserve",2);Xe([l({type:Boolean})],je.prototype,"dismissForever",2);Xe([l({type:String})],je.prototype,"maxHeight",2);Xe([$()],je.prototype,"visible",2);Xe([$()],je.prototype,"_titleId",2);je=Xe([k(iu)],je);const nu=L`
837
837
  :host {
838
838
  /* POLICES */
839
839
  /*
@@ -904,7 +904,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
904
904
  --sc-contrast-content: #fff;
905
905
  --sc-contrast: #000000;
906
906
  }
907
- `,ru=L`
907
+ `,au=L`
908
908
  :host([theme="light"]) {
909
909
  /*Boutons*/
910
910
  --sc-primary: var(--sc-base-800);
@@ -958,7 +958,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
958
958
  --sc-base-800: var(--sc-dark-base-800, #d9dce0);
959
959
  --sc-base-900: var(--sc-dark-base-900, #e5e7eb);
960
960
  --sc-base-content: var(--sc-dark-base-content, #e5e7eb);
961
- `,iu=L`
961
+ `,lu=L`
962
962
  :host([theme="dark"]) {
963
963
  ${Fa}
964
964
  }
@@ -968,7 +968,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
968
968
  ${Fa}
969
969
  }
970
970
  }
971
- `;var nu=Object.defineProperty,au=Object.getOwnPropertyDescriptor,So=(s,e,o,r)=>{for(var t=r>1?void 0:r?au(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&nu(e,o,t),t};const lu="sonic-theme";let Ne=class extends D{constructor(){super(),this.background=!1,this.color=!1,this.font=!1,Ne.instance=this}static getPopContainer(){return Ne.instance||document.body}connectedCallback(){super.connectedCallback(),window.addEventListener("message",s=>this.receiveMessage(s),!1),window.dispatchEvent(new CustomEvent("SonicThemeReady")),this.postCSSVars()}postCSSVars(){const s=document.styleSheets,e=s.length,o=[];for(let t=0;t<e;t++){const i=s[t];i.href&&(i.href.includes("googleapis")||i.href.includes("typekit.net"))&&o.push(i.href)}const r={variables:this.getCssVariables(),fonts:o};R.get("sonic-theme")?.set(r),document.querySelectorAll("iframe").forEach(t=>t.contentWindow?.postMessage({type:"SonicTheme",...r},"*"))}receiveMessage(s){const e=s.data;!e.type||e.type!="GetSonicTheme"||this.postCSSVars()}getCssVariables(){const s=[],e=[...Ne.styles.map(t=>t.styleSheet),...Array.from(document.styleSheets)];for(const t of e)try{if(!t)continue;const i=t.cssRules;for(const n of i){if(!("style"in n))continue;const a=n.style;for(const c of a)s.includes(c)||c.indexOf("--sc")!==0||s.push(c)}}catch{console.warn("Erreur lors de la récupération des variables CSS")}const o=window.getComputedStyle(this),r={};return s.forEach(t=>r[t]=o.getPropertyValue(t)),r}render(){return p`<slot></slot>`}};Ne.styles=[ru,iu,ou,L`
971
+ `;var cu=Object.defineProperty,du=Object.getOwnPropertyDescriptor,So=(s,e,o,r)=>{for(var t=r>1?void 0:r?du(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&cu(e,o,t),t};const uu="sonic-theme";let Ne=class extends D{constructor(){super(),this.background=!1,this.color=!1,this.font=!1,Ne.instance=this}static getPopContainer(){return Ne.instance||document.body}connectedCallback(){super.connectedCallback(),window.addEventListener("message",s=>this.receiveMessage(s),!1),window.dispatchEvent(new CustomEvent("SonicThemeReady")),this.postCSSVars()}postCSSVars(){const s=document.styleSheets,e=s.length,o=[];for(let t=0;t<e;t++){const i=s[t];i.href&&(i.href.includes("googleapis")||i.href.includes("typekit.net"))&&o.push(i.href)}const r={variables:this.getCssVariables(),fonts:o};R.get("sonic-theme")?.set(r),document.querySelectorAll("iframe").forEach(t=>t.contentWindow?.postMessage({type:"SonicTheme",...r},"*"))}receiveMessage(s){const e=s.data;!e.type||e.type!="GetSonicTheme"||this.postCSSVars()}getCssVariables(){const s=[],e=[...Ne.styles.map(t=>t.styleSheet),...Array.from(document.styleSheets)];for(const t of e)try{if(!t)continue;const i=t.cssRules;for(const n of i){if(!("style"in n))continue;const a=n.style;for(const c of a)s.includes(c)||c.indexOf("--sc")!==0||s.push(c)}}catch{console.warn("Erreur lors de la récupération des variables CSS")}const o=window.getComputedStyle(this),r={};return s.forEach(t=>r[t]=o.getPropertyValue(t)),r}render(){return p`<slot></slot>`}};Ne.styles=[au,lu,nu,L`
972
972
  :host([color]) {
973
973
  color: var(--sc-base-content, #000);
974
974
  }
@@ -1000,7 +1000,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1000
1000
  transition-property: scale, opacity;
1001
1001
  transition-timing-function: cubic-bezier(0.25, 0.25, 0.42, 1.225);
1002
1002
  }
1003
- `];So([l({type:String,reflect:!0})],Ne.prototype,"theme",2);So([l({type:Boolean,reflect:!0})],Ne.prototype,"background",2);So([l({type:Boolean,reflect:!0})],Ne.prototype,"color",2);So([l({type:Boolean,reflect:!0})],Ne.prototype,"font",2);Ne=So([k(lu)],Ne);var cu=Object.defineProperty,du=Object.getOwnPropertyDescriptor,hl=(s,e,o,r)=>{for(var t=r>1?void 0:r?du(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&cu(e,o,t),t};const uu="sonic-toast";let j=class extends D{constructor(){super(...arguments),this.toasts=[]}createRenderRoot(){return this}render(){const e=window.parent!=window;let o={pointerEvents:"none",gap:"1rem",display:"flex",margin:this.toasts.length?"1rem":"0"};return e||(o={...o,margin:"0",width:"calc(100% - 2.5rem)",position:"fixed",bottom:"1.25rem",right:"1.25rem",zIndex:"10000",maxWidth:"64ch",flexDirection:"column-reverse"}),j.handleExistingToastDelegation(),this.toasts?p`<div style=${Fe(o)}>
1003
+ `];So([l({type:String,reflect:!0})],Ne.prototype,"theme",2);So([l({type:Boolean,reflect:!0})],Ne.prototype,"background",2);So([l({type:Boolean,reflect:!0})],Ne.prototype,"color",2);So([l({type:Boolean,reflect:!0})],Ne.prototype,"font",2);Ne=So([k(uu)],Ne);var pu=Object.defineProperty,hu=Object.getOwnPropertyDescriptor,hl=(s,e,o,r)=>{for(var t=r>1?void 0:r?hu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&pu(e,o,t),t};const mu="sonic-toast";let j=class extends D{constructor(){super(...arguments),this.toasts=[]}createRenderRoot(){return this}render(){const e=window.parent!=window;let o={pointerEvents:"none",gap:"1rem",display:"flex",margin:this.toasts.length?"1rem":"0"};return e||(o={...o,margin:"0",width:"calc(100% - 2.5rem)",position:"fixed",bottom:"1.25rem",right:"1.25rem",zIndex:"10000",maxWidth:"64ch",flexDirection:"column-reverse"}),j.handleExistingToastDelegation(),this.toasts?p`<div style=${Fe(o)}>
1004
1004
  ${Nr(this.toasts,r=>r.id,r=>p`
1005
1005
  <sonic-toast-item
1006
1006
  maxHeight=${e?"none":"10rem"}
@@ -1017,22 +1017,22 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1017
1017
  ${r.text?V(r.text):""}
1018
1018
  </sonic-toast-item>
1019
1019
  `)}
1020
- </div>`:S}static removeAll(){if(j.delegateToasts){j.handleExistingToastDelegation(),window.parent.postMessage({type:"removeAllToasts"},"*");return}const e=j.getInstance();e&&(e.toasts=e.toasts.filter(o=>o.ghost))}static removeItemsByStatus(e){if(j.delegateToasts){j.handleExistingToastDelegation(),window.parent.postMessage({type:"removeItemsByStatus",status:e},"*");return}const o=j.getInstance();o&&(o.toasts=o.toasts.filter(r=>r.status!==e))}static removeTemporaryItems(){if(j.delegateToasts){j.handleExistingToastDelegation(),window.parent.postMessage({type:"removeTemporaryItems"},"*");return}const e=j.getInstance();e&&(e.toasts=e.toasts.filter(o=>o.preserve))}static getInstance(){return j.instance||(j.instance=document.createElement("sonic-toast"),Ne.getPopContainer().prepend(j.instance)),j.instance}static add(e){if(j.delegateToasts){j.handleExistingToastDelegation(),window.parent.postMessage({type:"addToast",toast:e},"*");return}const o=j.getInstance(),r=e.id??new Date().valueOf(),i=new RegExp("</a>|</.*?button>|</.*?input>|</.*?textarea>|</.*?select>").test(e.text),n={id:r,text:e.text,title:e.title,status:e.status,preserve:i?!0:e.preserve,ghost:e.ghost,dismissForever:e.dismissForever};if(e.dismissForever&&e.id){const a=localStorage.getItem("sonic-toast-dismissed")||"{}";if(JSON.parse(a)[e.id])return null}if(o?.toasts.length){const a={...n};for(const c of o.toasts){const g={...c};if(a.id=g.id=0,fe.shallowEqual(a,g))return null}}return o&&(o.toasts=[...o.toasts,n]),n}static handleExistingToastDelegation(){if(!this.delegateToasts)return;const e=j.getInstance();window.parent.postMessage({type:"addToasts",toasts:e.toasts},"*"),e.toasts=[]}static removeItem(e){if(j.delegateToasts){j.handleExistingToastDelegation(),window.parent.postMessage({type:"removeToast",toast:e},"*");return}const o=j.getInstance();o&&o.removeItem(e)}removeItem(e){e&&(this.toasts=this.toasts.filter(o=>(o={...o},delete o.id,!fe.shallowEqual(o,e,!1))))}};j.delegateToasts=!1;hl([l({type:Array})],j.prototype,"toasts",2);j=hl([k(uu)],j);typeof window<"u"&&(window[Jo+"Toast"]=window[Jo+"Toast"]||j);function pu(){const s=o=>{o.data.type=="querySonicToastAvailability"&&o.source.postMessage({type:"sonicToastAvailable"},"*"),o.data.type=="removeItemsByStatus"&&j.removeItemsByStatus(o.data.status),o.data.type=="removeTemporaryItems"&&j.removeTemporaryItems(),o.data.type=="sonicToastAvailable"&&(j.delegateToasts=!0,j.handleExistingToastDelegation()),o.data.type=="addToasts"&&(j.getInstance().toasts=[...j.getInstance().toasts,...o.data.toasts]),o.data.type=="removeAllToasts"&&j.removeAll(),o.data.type=="removeToast"&&j.removeItem(o.data.toast),o.data.type=="addToast"&&j.add(o.data.toast)},e=window.parent!=window;if(window.addEventListener("message",s,!1),e&&window.parent.postMessage({type:"querySonicToastAvailability"},"*"),!e)for(const o of document.querySelectorAll("iframe"))o.contentWindow?.postMessage({type:"sonicToastAvailable"},"*")}pu();var hu=Object.defineProperty,mu=Object.getOwnPropertyDescriptor,Gs=(s,e,o,r)=>{for(var t=r>1?void 0:r?mu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&hu(e,o,t),t};const gu=new Set,fu=new Set,bu=s=>{for(const e of fu)e(s)},xi=new Set;let di=0;gn(async()=>{di++;const s=di,e=Array.from(xi);for(;e.length>0;){if(s!=di)return;const o=e.splice(0,4);await Promise.all(o.map(r=>r._fetchData()))}});const Sn=(s,e)=>{class o extends s{constructor(...t){super(),this.api=null,this.key="",this.isFirstLoad=!0,this.isLoading=!1,this.iObserver=null,this.isFetchEnabled=!0,this.fetchedData=null,this._endPoint="",this.noErrorsRecordings=!1,this.requestId=0,this.refetchEveryMs=0,this._isFetching=!1,this._mustRefetch=!1,this.dataProvider=""}get props(){return super.props}set props(t){super.props=t}set endPoint(t){this._endPoint=t,this.isConnected&&this._fetchData()}get endPoint(){return this._endPoint}handleStartFetching(){return this._isFetching?(this._mustRefetch=!0,"fetching"):(this._isFetching=!0,"okToFetch")}handleEndFetching(){this._isFetching=!1,this._mustRefetch&&(this._mustRefetch=!1,this._fetchData())}async _fetchData(){if(this.requestUpdate(),!this.isFetchEnabled||(this.api=new ss(this.getApiConfiguration()),!this.api)||(this.dispatchEvent(new CustomEvent("loading",{detail:this})),this.getAttribute("localStorage")==="enabled"&&await R.getInstance().isLocalStrorageReady,!this.isConnected))return;const t=R.getInstance().get(this.getAncestorAttributeValue("headersDataProvider")).get();if(this.isLoading=!0,fe.isObject(this.props)&&Object.keys(this.props||{}).length>0&&this.isFirstLoad&&window.requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("load",{detail:this})),this.isFirstLoad=!1,this.isLoading=!1}),this.handleStartFetching()==="fetching")return;let n=null;try{n=await this.api.get(this.endPoint||this.dataProvider||"",t)}catch{}if(this.handleEndFetching(),this.fetchedData=n,this.api.lastResult&&!this.api.lastResult.ok&&(this.noErrorsRecordings||gu.add(this),bu(this.api.lastResult)),!!this.isConnected){if(n)n._sonic_http_response_&&!n._sonic_http_response_.ok&&Object.keys(n).length===1&&j.add({text:"Network Error",status:"error"});else{this.isLoading=!1,this.refetchEveryMs&&this.isConnected&&(this.refetchTimeOutId=setTimeout(()=>this._fetchData(),this.refetchEveryMs));return}if(this.key){const a=n._sonic_http_response_,c=this.key.split(".");n=fe.traverse(n,c,this.hasAttribute("preserveOtherKeys")),n&&fe.isObject(n)&&a&&(n._sonic_http_response_=a)}this.props=n,this.dispatchEvent(new CustomEvent("load",{detail:this})),this.isFirstLoad=!1,this.isLoading=!1,this.refetchEveryMs&&this.isConnected&&(this.refetchTimeOutId=setTimeout(()=>this._fetchData(),this.refetchEveryMs))}}disconnectedCallback(){super.disconnectedCallback(),xi.delete(this),this.publisher?.offInvalidate(this.onInvalidate),clearTimeout(this.refetchTimeOutId),this.isFirstLoad=!1}connectedCallback(){this.lazyLoad=this.lazyLoad!==void 0?this.lazyLoad:this.hasAttribute("lazyload"),xi.add(this),super.connectedCallback(),this.isFetchEnabled&&(this.key=this.key!=""?this.key:this.getAttribute("key"),this.props&&this.publisher.set(this.props),this.onInvalidate=()=>this._fetchData(),this.publisher?.onInvalidate(this.onInvalidate),this.lazyLoad?this.handleLazyLoad():this._fetchData())}handleLazyLoad(){if(!this.lazyLoad)return;const t=parseFloat(this.getAttribute("lazyBoundsRatio")||"1"),i={root:null,rootMargin:Math.max(window.innerWidth*t,window.innerHeight*t)+"px",threshold:.9};this.iObserver=new IntersectionObserver(c=>this.onIntersection(c),i);let a=[...(this.shadowRoot?this.shadowRoot:this).children].filter(c=>c.nodeName.toLowerCase()!="style")[0];if(a?.nodeName.toLocaleLowerCase()=="slot"&&(a=[...a.children].filter(c=>c.nodeName.toLowerCase()!="style")[0]),!a||a.nodeName.toLocaleLowerCase()=="template"){a=document.createElement("div");const c=a.style;c.pointerEvents="none",c.width="1px",c.height="1px",this.lazyLoadPlaceHolder=a,this.appendChild(a)}a?this.iObserver.observe(a):this.isFirstLoad&&this._fetchData()}onIntersection(t){for(const i of t)if(i.isIntersecting&&this.isFirstLoad){this._fetchData(),this.lazyLoadPlaceHolder?.remove(),this.lazyLoadPlaceHolder=void 0,this.iObserver?.disconnect();break}}}return Gs([l()],o.prototype,"noErrorsRecordings",2),Gs([l()],o.prototype,"props",1),Gs([l({type:String})],o.prototype,"endPoint",1),Gs([l()],o.prototype,"requestId",2),Gs([l({type:Number})],o.prototype,"refetchEveryMs",2),o};var yu=Object.defineProperty,vu=Object.getOwnPropertyDescriptor,Gt=(s,e,o,r)=>{for(var t=r>1?void 0:r?vu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&yu(e,o,t),t};const Mr=s=>{class e extends s{constructor(...r){super(),this.forceAutoFill=!1,this._type="text",this.status="default"}validateFormElement(){const r=this.shadowRoot?.querySelector("input");if(!r||r.checkValidity())return;const t=this.getFormPublisher();t&&(t.isFormValid=!1),r.reportValidity()}set type(r){this.hasAttribute("type")&&!this.forceAutoFill&&(r=this.getAttribute("type")),this._type=r,this.requestUpdate()}get type(){return this._type}get description(){return this._description}set description(r){this.hasAttribute("description")&&!this.forceAutoFill&&(r=this.getAttribute("description")),this._description=r,this.requestUpdate()}get label(){return this._label}set label(r){this.hasAttribute("label")&&!this.forceAutoFill&&(r=this.getAttribute("label")),this._label=r,this.requestUpdate()}}return Gt([l()],e.prototype,"forceAutoFill",2),Gt([l({type:String})],e.prototype,"type",1),Gt([l()],e.prototype,"description",1),Gt([l()],e.prototype,"label",1),Gt([l({type:String,reflect:!0})],e.prototype,"status",2),Gt([l({type:Number})],e.prototype,"tabindex",2),Gt([l({type:String})],e.prototype,"autocomplete",2),e},ml=Sn,wu=Pn,gl=Ns,fl=Mr,dt=de,$n=Co;window["concorde-mixins"]=window["concorde-mixins"]||{};window["concorde-mixins"]={Fetcher:ml,FormCheckable:wu,FormElement:gl,FormInput:fl,Subscriber:dt,TemplatesContainer:$n};/**
1020
+ </div>`:S}static removeAll(){if(j.delegateToasts){j.handleExistingToastDelegation(),window.parent.postMessage({type:"removeAllToasts"},"*");return}const e=j.getInstance();e&&(e.toasts=e.toasts.filter(o=>o.ghost))}static removeItemsByStatus(e){if(j.delegateToasts){j.handleExistingToastDelegation(),window.parent.postMessage({type:"removeItemsByStatus",status:e},"*");return}const o=j.getInstance();o&&(o.toasts=o.toasts.filter(r=>r.status!==e))}static removeTemporaryItems(){if(j.delegateToasts){j.handleExistingToastDelegation(),window.parent.postMessage({type:"removeTemporaryItems"},"*");return}const e=j.getInstance();e&&(e.toasts=e.toasts.filter(o=>o.preserve))}static getInstance(){return j.instance||(j.instance=document.createElement("sonic-toast"),Ne.getPopContainer().prepend(j.instance)),j.instance}static add(e){if(j.delegateToasts){j.handleExistingToastDelegation(),window.parent.postMessage({type:"addToast",toast:e},"*");return}const o=j.getInstance(),r=e.id??new Date().valueOf(),i=new RegExp("</a>|</.*?button>|</.*?input>|</.*?textarea>|</.*?select>").test(e.text),n={id:r,text:e.text,title:e.title,status:e.status,preserve:i?!0:e.preserve,ghost:e.ghost,dismissForever:e.dismissForever};if(e.dismissForever&&e.id){const a=localStorage.getItem("sonic-toast-dismissed")||"{}";if(JSON.parse(a)[e.id])return null}if(o?.toasts.length){const a={...n};for(const c of o.toasts){const g={...c};if(a.id=g.id=0,fe.shallowEqual(a,g))return null}}return o&&(o.toasts=[...o.toasts,n]),n}static handleExistingToastDelegation(){if(!this.delegateToasts)return;const e=j.getInstance();window.parent.postMessage({type:"addToasts",toasts:e.toasts},"*"),e.toasts=[]}static removeItem(e){if(j.delegateToasts){j.handleExistingToastDelegation(),window.parent.postMessage({type:"removeToast",toast:e},"*");return}const o=j.getInstance();o&&o.removeItem(e)}removeItem(e){e&&(this.toasts=this.toasts.filter(o=>(o={...o},delete o.id,!fe.shallowEqual(o,e,!1))))}};j.delegateToasts=!1;hl([l({type:Array})],j.prototype,"toasts",2);j=hl([k(mu)],j);typeof window<"u"&&(window[Jo+"Toast"]=window[Jo+"Toast"]||j);function gu(){const s=o=>{o.data.type=="querySonicToastAvailability"&&o.source.postMessage({type:"sonicToastAvailable"},"*"),o.data.type=="removeItemsByStatus"&&j.removeItemsByStatus(o.data.status),o.data.type=="removeTemporaryItems"&&j.removeTemporaryItems(),o.data.type=="sonicToastAvailable"&&(j.delegateToasts=!0,j.handleExistingToastDelegation()),o.data.type=="addToasts"&&(j.getInstance().toasts=[...j.getInstance().toasts,...o.data.toasts]),o.data.type=="removeAllToasts"&&j.removeAll(),o.data.type=="removeToast"&&j.removeItem(o.data.toast),o.data.type=="addToast"&&j.add(o.data.toast)},e=window.parent!=window;if(window.addEventListener("message",s,!1),e&&window.parent.postMessage({type:"querySonicToastAvailability"},"*"),!e)for(const o of document.querySelectorAll("iframe"))o.contentWindow?.postMessage({type:"sonicToastAvailable"},"*")}gu();var fu=Object.defineProperty,bu=Object.getOwnPropertyDescriptor,Gs=(s,e,o,r)=>{for(var t=r>1?void 0:r?bu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&fu(e,o,t),t};const yu=new Set,vu=new Set,wu=s=>{for(const e of vu)e(s)},xi=new Set;let di=0;gn(async()=>{di++;const s=di,e=Array.from(xi);for(;e.length>0;){if(s!=di)return;const o=e.splice(0,4);await Promise.all(o.map(r=>r._fetchData()))}});const Sn=(s,e)=>{class o extends s{constructor(...t){super(),this.api=null,this.key="",this.isFirstLoad=!0,this.isLoading=!1,this.iObserver=null,this.isFetchEnabled=!0,this.fetchedData=null,this._endPoint="",this.noErrorsRecordings=!1,this.requestId=0,this.refetchEveryMs=0,this._isFetching=!1,this._mustRefetch=!1,this.dataProvider=""}get props(){return super.props}set props(t){super.props=t}set endPoint(t){this._endPoint=t,this.isConnected&&this._fetchData()}get endPoint(){return this._endPoint}handleStartFetching(){return this._isFetching?(this._mustRefetch=!0,"fetching"):(this._isFetching=!0,"okToFetch")}handleEndFetching(){this._isFetching=!1,this._mustRefetch&&(this._mustRefetch=!1,this._fetchData())}async _fetchData(){if(this.requestUpdate(),!this.isFetchEnabled||(this.api=new ss(this.getApiConfiguration()),!this.api)||(this.dispatchEvent(new CustomEvent("loading",{detail:this})),this.getAttribute("localStorage")==="enabled"&&await R.getInstance().isLocalStrorageReady,!this.isConnected))return;const t=R.getInstance().get(this.getAncestorAttributeValue("headersDataProvider")).get();if(this.isLoading=!0,fe.isObject(this.props)&&Object.keys(this.props||{}).length>0&&this.isFirstLoad&&window.requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("load",{detail:this})),this.isFirstLoad=!1,this.isLoading=!1}),this.handleStartFetching()==="fetching")return;let n=null;try{n=await this.api.get(this.endPoint||this.dataProvider||"",t)}catch{}if(this.handleEndFetching(),this.fetchedData=n,this.api.lastResult&&!this.api.lastResult.ok&&(this.noErrorsRecordings||yu.add(this),wu(this.api.lastResult)),!!this.isConnected){if(n)n._sonic_http_response_&&!n._sonic_http_response_.ok&&Object.keys(n).length===1&&j.add({text:"Network Error",status:"error"});else{this.isLoading=!1,this.refetchEveryMs&&this.isConnected&&(this.refetchTimeOutId=setTimeout(()=>this._fetchData(),this.refetchEveryMs));return}if(this.key){const a=n._sonic_http_response_,c=this.key.split(".");n=fe.traverse(n,c,this.hasAttribute("preserveOtherKeys")),n&&fe.isObject(n)&&a&&(n._sonic_http_response_=a)}this.props=n,this.dispatchEvent(new CustomEvent("load",{detail:this})),this.isFirstLoad=!1,this.isLoading=!1,this.refetchEveryMs&&this.isConnected&&(this.refetchTimeOutId=setTimeout(()=>this._fetchData(),this.refetchEveryMs))}}disconnectedCallback(){super.disconnectedCallback(),xi.delete(this),this.publisher?.offInvalidate(this.onInvalidate),clearTimeout(this.refetchTimeOutId),this.isFirstLoad=!1}connectedCallback(){this.lazyLoad=this.lazyLoad!==void 0?this.lazyLoad:this.hasAttribute("lazyload"),xi.add(this),super.connectedCallback(),this.isFetchEnabled&&(this.key=this.key!=""?this.key:this.getAttribute("key"),this.props&&this.publisher.set(this.props),this.onInvalidate=()=>this._fetchData(),this.publisher?.onInvalidate(this.onInvalidate),this.lazyLoad?this.handleLazyLoad():this._fetchData())}handleLazyLoad(){if(!this.lazyLoad)return;const t=parseFloat(this.getAttribute("lazyBoundsRatio")||"1"),i={root:null,rootMargin:Math.max(window.innerWidth*t,window.innerHeight*t)+"px",threshold:.9};this.iObserver=new IntersectionObserver(c=>this.onIntersection(c),i);let a=[...(this.shadowRoot?this.shadowRoot:this).children].filter(c=>c.nodeName.toLowerCase()!="style")[0];if(a?.nodeName.toLocaleLowerCase()=="slot"&&(a=[...a.children].filter(c=>c.nodeName.toLowerCase()!="style")[0]),!a||a.nodeName.toLocaleLowerCase()=="template"){a=document.createElement("div");const c=a.style;c.pointerEvents="none",c.width="1px",c.height="1px",this.lazyLoadPlaceHolder=a,this.appendChild(a)}a?this.iObserver.observe(a):this.isFirstLoad&&this._fetchData()}onIntersection(t){for(const i of t)if(i.isIntersecting&&this.isFirstLoad){this._fetchData(),this.lazyLoadPlaceHolder?.remove(),this.lazyLoadPlaceHolder=void 0,this.iObserver?.disconnect();break}}}return Gs([l()],o.prototype,"noErrorsRecordings",2),Gs([l()],o.prototype,"props",1),Gs([l({type:String})],o.prototype,"endPoint",1),Gs([l()],o.prototype,"requestId",2),Gs([l({type:Number})],o.prototype,"refetchEveryMs",2),o};var xu=Object.defineProperty,_u=Object.getOwnPropertyDescriptor,Gt=(s,e,o,r)=>{for(var t=r>1?void 0:r?_u(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&xu(e,o,t),t};const Mr=s=>{class e extends s{constructor(...r){super(),this.forceAutoFill=!1,this._type="text",this.status="default"}validateFormElement(){const r=this.shadowRoot?.querySelector("input");if(!r||r.checkValidity())return;const t=this.getFormPublisher();t&&(t.isFormValid=!1),r.reportValidity()}set type(r){this.hasAttribute("type")&&!this.forceAutoFill&&(r=this.getAttribute("type")),this._type=r,this.requestUpdate()}get type(){return this._type}get description(){return this._description}set description(r){this.hasAttribute("description")&&!this.forceAutoFill&&(r=this.getAttribute("description")),this._description=r,this.requestUpdate()}get label(){return this._label}set label(r){this.hasAttribute("label")&&!this.forceAutoFill&&(r=this.getAttribute("label")),this._label=r,this.requestUpdate()}}return Gt([l()],e.prototype,"forceAutoFill",2),Gt([l({type:String})],e.prototype,"type",1),Gt([l()],e.prototype,"description",1),Gt([l()],e.prototype,"label",1),Gt([l({type:String,reflect:!0})],e.prototype,"status",2),Gt([l({type:Number})],e.prototype,"tabindex",2),Gt([l({type:String})],e.prototype,"autocomplete",2),e},ml=Sn,Du=Pn,gl=Ns,fl=Mr,dt=de,$n=Co;window["concorde-mixins"]=window["concorde-mixins"]||{};window["concorde-mixins"]={Fetcher:ml,FormCheckable:Du,FormElement:gl,FormInput:fl,Subscriber:dt,TemplatesContainer:$n};/**
1021
1021
  * @license
1022
1022
  * Copyright 2020 Google LLC
1023
1023
  * SPDX-License-Identifier: BSD-3-Clause
1024
- */const rt=Ut(class extends Rs{constructor(s){if(super(s),s.type!==us.CHILD)throw Error("templateContent can only be used in child bindings")}render(s){return this.vt===s?Me:(this.vt=s,document.importNode(s.content,!0))}});var xu=Object.defineProperty,_u=Object.getOwnPropertyDescriptor,bl=(s,e,o,r)=>{for(var t=r>1?void 0:r?_u(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&xu(e,o,t),t};const Du="sonic-fetch";let Xo=class extends Sn(de($n(D))){renderLoader(){if(!(this.isLoading&&this.loader!==void 0))return S;const s=this.loader===!0||this.loader===""?"fixed":this.loader;return p`<sonic-loader mode=${s}></sonic-loader>`}renderSkeleton(){const s=this.templateParts.skeleton;return this.isLoading&&s?rt(s):S}render(){return p`
1024
+ */const rt=Ut(class extends Rs{constructor(s){if(super(s),s.type!==us.CHILD)throw Error("templateContent can only be used in child bindings")}render(s){return this.vt===s?Me:(this.vt=s,document.importNode(s.content,!0))}});var ku=Object.defineProperty,Cu=Object.getOwnPropertyDescriptor,bl=(s,e,o,r)=>{for(var t=r>1?void 0:r?Cu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&ku(e,o,t),t};const Au="sonic-fetch";let Xo=class extends Sn(de($n(D))){renderLoader(){if(!(this.isLoading&&this.loader!==void 0))return S;const s=this.loader===!0||this.loader===""?"fixed":this.loader;return p`<sonic-loader mode=${s}></sonic-loader>`}renderSkeleton(){const s=this.templateParts.skeleton;return this.isLoading&&s?rt(s):S}render(){return p`
1025
1025
  ${this.renderSkeleton()} ${this.renderLoader()}
1026
1026
  ${this.isLoading?S:p`<slot></slot>`}
1027
1027
  `}};Xo.styles=[L`
1028
1028
  :host {
1029
1029
  display: contents;
1030
1030
  }
1031
- `];bl([l()],Xo.prototype,"loader",2);Xo=bl([k(Du)],Xo);var ku=Object.defineProperty,Cu=Object.getOwnPropertyDescriptor,yl=(s,e,o,r)=>{for(var t=r>1?void 0:r?Cu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&ku(e,o,t),t};const Au="sonic-if";let er=class extends D{constructor(){super(...arguments),this.condition=!1}render(){return this.condition?p` <slot></slot> `:S}};er.styles=L`
1031
+ `];bl([l()],Xo.prototype,"loader",2);Xo=bl([k(Au)],Xo);var Pu=Object.defineProperty,Su=Object.getOwnPropertyDescriptor,yl=(s,e,o,r)=>{for(var t=r>1?void 0:r?Su(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Pu(e,o,t),t};const $u="sonic-if";let er=class extends D{constructor(){super(...arguments),this.condition=!1}render(){return this.condition?p` <slot></slot> `:S}};er.styles=L`
1032
1032
  :host {
1033
1033
  display: contents;
1034
1034
  }
1035
- `;yl([l({type:Boolean})],er.prototype,"condition",2);er=yl([k(Au)],er);const Pu=L`
1035
+ `;yl([l({type:Boolean})],er.prototype,"condition",2);er=yl([k($u)],er);const Fu=L`
1036
1036
  :host([align="left"]) .sonic-loader--inline {
1037
1037
  margin-left: 0;
1038
1038
  }
@@ -1099,7 +1099,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1099
1099
  transform: translate(24px, 0);
1100
1100
  }
1101
1101
  }
1102
- `,Su=L`
1102
+ `,Eu=L`
1103
1103
  @keyframes sonic-loader--fixed {
1104
1104
  0% {
1105
1105
  transform: scale(0);
@@ -1152,14 +1152,14 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1152
1152
  height: 5rem;
1153
1153
  animation: sonic-loader--fixed 1s 0s linear infinite;
1154
1154
  }
1155
- `;var $u=Object.defineProperty,Fu=Object.getOwnPropertyDescriptor,Fn=(s,e,o,r)=>{for(var t=r>1?void 0:r?Fu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&$u(e,o,t),t};const Eu="sonic-loader";let he=class extends D{constructor(){super(...arguments),this.mode="fixed",this.noDelay=!1}static show(s){he.loader||(he.loader=document.createElement("sonic-loader"));const e=he.loader;s||(s={}),s.mode&&e.setAttribute("mode",s.mode),s.noDelay&&e.setAttribute("noDelay",""),s.container||(s.container=Ne.getPopContainer(),s.mode="fixed"),s.container.appendChild(e),he.callCounter++}static hide(){he.callCounter--,!(he.callCounter>0)&&he.loader&&he.loader.remove()}render(){return p`<div
1155
+ `;var Lu=Object.defineProperty,Tu=Object.getOwnPropertyDescriptor,Fn=(s,e,o,r)=>{for(var t=r>1?void 0:r?Tu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Lu(e,o,t),t};const Ou="sonic-loader";let he=class extends D{constructor(){super(...arguments),this.mode="fixed",this.noDelay=!1}static show(s){he.loader||(he.loader=document.createElement("sonic-loader"));const e=he.loader;s||(s={}),s.mode&&e.setAttribute("mode",s.mode),s.noDelay&&e.setAttribute("noDelay",""),s.container||(s.container=Ne.getPopContainer(),s.mode="fixed"),s.container.appendChild(e),he.callCounter++}static hide(){he.callCounter--,!(he.callCounter>0)&&he.loader&&he.loader.remove()}render(){return p`<div
1156
1156
  class="sonic-loader sonic-loader--${this.mode} ${this.noDelay?"sonic-loader--nodelay":""} "
1157
1157
  >
1158
1158
  <div></div>
1159
1159
  <div></div>
1160
1160
  <div></div>
1161
1161
  <div></div>
1162
- </div>`}};he.styles=[Pu,Su,L`
1162
+ </div>`}};he.styles=[Fu,Eu,L`
1163
1163
  :host {
1164
1164
  --sc-_loader-bg: var(--sc-primary, currentColor);
1165
1165
  pointer-events: none;
@@ -1187,7 +1187,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1187
1187
  opacity: 1;
1188
1188
  }
1189
1189
  }
1190
- `];he.callCounter=0;Fn([l({type:String})],he.prototype,"mode",2);Fn([l({type:Boolean})],he.prototype,"noDelay",2);he=Fn([k(Eu)],he);var Lu=Object.getOwnPropertyDescriptor,Tu=(s,e,o,r)=>{for(var t=r>1?void 0:r?Lu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Ou="sonic-subscriber";let Ea=class extends de(D){constructor(){super(...arguments),this.noAutofill=!0}connectedCallback(){this.noShadowDom="",super.connectedCallback()}updated(s){super.updated(s),this.children.length==0?this.style.display="none":this.style.display="contents"}render(){return p`<slot></slot> `}};Ea=Tu([k(Ou)],Ea);var Iu=Object.defineProperty,qu=Object.getOwnPropertyDescriptor,Xe=(s,e,o,r)=>{for(var t=r>1?void 0:r?qu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Iu(e,o,t),t};const Ru="sonic-list";let He=class extends Sn(de(Co(D))){constructor(){super(...arguments),this.templateKey="template",this.idKey="id",this.limit=Number.POSITIVE_INFINITY,this.offset=0,this.loadingSize={width:0,height:0}}get items(){return this._items}set items(s){typeof s!="function"&&s!==void 0||(this._items=s,this.requestUpdate())}connectedCallback(){this.noShadowDom="",this.defferedDebug=this.hasAttribute("debug")||null,this.isFetchEnabled=this.hasAttribute("fetch"),this.isFetchEnabled&&(this.isLoading=!0),super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback()}renderLoader(){if(!(this.isLoading&&this.loader!==void 0)||this.templateParts.skeleton)return S;const e=this.loader===!0||this.loader===""?"fixed":this.loader;return p`<sonic-loader mode=${e}></sonic-loader>`}renderSkeleton(){if(this.skeleton)return this.skeleton();const s=this.templateParts.skeleton;return this.isLoading&&s?rt(s):S}renderSeparator(){if(this.separator)return this.separator();const s=this.templateParts.separator;return s?rt(s):S}renderLoadingState(){return p`${this.renderSkeleton()} ${this.renderLoader()} `}renderNoResultState(){return p` <div
1190
+ `];he.callCounter=0;Fn([l({type:String})],he.prototype,"mode",2);Fn([l({type:Boolean})],he.prototype,"noDelay",2);he=Fn([k(Ou)],he);var Iu=Object.getOwnPropertyDescriptor,qu=(s,e,o,r)=>{for(var t=r>1?void 0:r?Iu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Ru="sonic-subscriber";let Ea=class extends de(D){constructor(){super(...arguments),this.noAutofill=!0}connectedCallback(){this.noShadowDom="",super.connectedCallback()}updated(s){super.updated(s),this.children.length==0?this.style.display="none":this.style.display="contents"}render(){return p`<slot></slot> `}};Ea=qu([k(Ru)],Ea);var Nu=Object.defineProperty,Mu=Object.getOwnPropertyDescriptor,et=(s,e,o,r)=>{for(var t=r>1?void 0:r?Mu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Nu(e,o,t),t};const ju="sonic-list";let Ve=class extends Sn(de(Co(D))){constructor(){super(...arguments),this.templateKey="template",this.idKey="id",this.limit=Number.POSITIVE_INFINITY,this.offset=0,this.loadingSize={width:0,height:0}}get items(){return this._items}set items(s){typeof s!="function"&&s!==void 0||(this._items=s,this.requestUpdate())}connectedCallback(){this.noShadowDom="",this.defferedDebug=this.hasAttribute("debug")||null,this.isFetchEnabled=this.hasAttribute("fetch"),this.isFetchEnabled&&(this.isLoading=!0),super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback()}renderLoader(){if(!(this.isLoading&&this.loader!==void 0)||this.templateParts.skeleton)return S;const e=this.loader===!0||this.loader===""?"fixed":this.loader;return p`<sonic-loader mode=${e}></sonic-loader>`}renderSkeleton(){if(this.skeleton)return this.skeleton();const s=this.templateParts.skeleton;return this.isLoading&&s?rt(s):S}renderSeparator(){if(this.separator)return this.separator();const s=this.templateParts.separator;return s?rt(s):S}renderLoadingState(){return p`${this.renderSkeleton()} ${this.renderLoader()} `}renderNoResultState(){return p` <div
1191
1191
  style="color: var(--sc-base-400);
1192
1192
  font-size: 1.5em;
1193
1193
  margin: 4rem 0;
@@ -1211,22 +1211,22 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1211
1211
  >
1212
1212
  ${this.items(s,e)}
1213
1213
  </sonic-subscriber>`:null}renderContent(){if(this.isLoading&&!Array.isArray(this.props))return this.renderLoadingState();if(typeof this.props=="string")return this.renderNoResultState();if(!fe.isObject(this.props))return p`<div></div>`;const r=this.formatProps();if((r?.length||0)==0){if(this.noItems)return this.noItems();if(this.templateParts["no-items"]=this.templateParts["no-items"]||this.templateParts["no-item"],this.templateParts["no-items"])return rt(this.templateParts["no-items"])}const t=this.templateList.length;let i=-1;const n=this.hasAttribute("extractValues"),a=this.renderSeparator(),c=r?.length||0,g=r?.slice(this.offset,this.offset+this.limit);return p`
1214
- ${g?.map((f,h)=>{if(f==null)return S;let w=h,A=null;if(typeof f=="object"&&!Array.isArray(f)){n&&(w=f?.key);const u=f[this.templateKey];u&&typeof u=="string"&&(A=this.templateParts[u])}if(w=="_sonic_http_response_"||typeof w!="string"&&typeof w!="number")return S;const m=h>=c-1,b=h%2,v=this.publisher[w],_={key:w,even:b==0,odd:b==1,onlyChild:c==1,firstChild:h==0,lastChild:m};v._key_=w+"",v._metadata_={...v._metadata_.get(),..._};const d=this.handleProgrammaticTemplates(f,_,w);return d?p`${d}${m?S:a}`:(i++,A&&(i=-1),p`
1214
+ ${g?.map((b,h)=>{if(b==null)return S;let x=h,A=null;if(typeof b=="object"&&!Array.isArray(b)){n&&(x=b?.key);const u=b[this.templateKey];u&&typeof u=="string"&&(A=this.templateParts[u])}if(x=="_sonic_http_response_"||typeof x!="string"&&typeof x!="number")return S;const m=h>=c-1,f=h%2,v=this.publisher[x],_={key:x,even:f==0,odd:f==1,onlyChild:c==1,firstChild:h==0,lastChild:m};v._key_=x+"",v._metadata_={...v._metadata_.get(),..._};const d=this.handleProgrammaticTemplates(b,_,x);return d?p`${d}${m?S:a}`:(i++,A&&(i=-1),p`
1215
1215
  <sonic-subscriber
1216
1216
  ?debug=${this.defferedDebug===!0}
1217
1217
  .bindPublisher=${function(){return v}}
1218
1218
  .propertyMap?=${this.itemPropertyMap}
1219
- dataProvider="${this.dataProvider}/list-item/${w}"
1219
+ dataProvider="${this.dataProvider}/list-item/${x}"
1220
1220
  >
1221
1221
  ${rt(A||this.templateList[i%t])}
1222
1222
  </sonic-subscriber>
1223
1223
  ${m?S:a}
1224
1224
  `)})}
1225
- `}};Xe([l({type:Object})],He.prototype,"itemPropertyMap",2);Xe([l({type:String})],He.prototype,"templateKey",2);Xe([l({type:String})],He.prototype,"idKey",2);Xe([l()],He.prototype,"loader",2);Xe([l()],He.prototype,"limit",2);Xe([l()],He.prototype,"offset",2);Xe([l({type:Function,attribute:!1})],He.prototype,"items",1);Xe([l({type:Function,attribute:!1})],He.prototype,"noItems",2);Xe([l({type:Function,attribute:!1})],He.prototype,"skeleton",2);Xe([l({type:Function,attribute:!1})],He.prototype,"separator",2);He=Xe([k(Ru)],He);/**
1225
+ `}};et([l({type:Object})],Ve.prototype,"itemPropertyMap",2);et([l({type:String})],Ve.prototype,"templateKey",2);et([l({type:String})],Ve.prototype,"idKey",2);et([l()],Ve.prototype,"loader",2);et([l()],Ve.prototype,"limit",2);et([l()],Ve.prototype,"offset",2);et([l({type:Function,attribute:!1})],Ve.prototype,"items",1);et([l({type:Function,attribute:!1})],Ve.prototype,"noItems",2);et([l({type:Function,attribute:!1})],Ve.prototype,"skeleton",2);et([l({type:Function,attribute:!1})],Ve.prototype,"separator",2);Ve=et([k(ju)],Ve);/**
1226
1226
  * @license
1227
1227
  * Copyright 2021 Google LLC
1228
1228
  * SPDX-License-Identifier: BSD-3-Clause
1229
- */function*vl(s,e){if(s!==void 0){let o=0;for(const r of s)yield e(r,o++)}}var Nu=Object.defineProperty,Mu=Object.getOwnPropertyDescriptor,ye=(s,e,o,r)=>{for(var t=r>1?void 0:r?Mu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Nu(e,o,t),t};const ju="sonic-queue";let ce=class extends de(D){constructor(){super(...arguments),this.templates=null,this.items=null,this.noItems=null,this.skeleton=null,this.lastRequestTime=0,this.key="",this.itemPropertyMap=null,this.cache="default",this.targetRequestDuration=500,this.limit=5,this.lazyBoundsRatio=1,this.offset=0,this.resultCount=0,this.noLazyload=!1,this.loader="inline",this.filteredFields="",this.instanceId=0,this.localStorage="disabled",this.filterPublisher=null,this.filterTimeoutMs=400,this.searchHash="",this.requestId=0,this.isFirstRequest=!0,this.updateFilteredContent=()=>{const e=this.dataProviderExpression.split("?");e.shift();const o=new URLSearchParams(e.join("?")),r=this.filterPublisher?.get(),t=this.filteredFields.split(" ");for(const n in r){let a=r[n];Array.isArray(a)&&(a=a.filter(c=>c!==null)),!(this.filteredFields&&t.includes(n)||a==null||a.toString()==="")&&o.set(n,r[n].toString())}const i=o.toString();if(!(i==this.searchHash&&!this.isFirstRequest)){this.searchHash=i;for(const n of this.listDataProviders)R.delete(n);this.listDataProviders=[],clearTimeout(this.filterTimeoutId),this.filterTimeoutId=setTimeout(async()=>{const n=this.resultCount;this.props=null,this.requestId++,this.resultCount=n,await R.getInstance().isLocalStrorageReady,window.requestAnimationFrame(()=>this.next())},this.isFirstRequest?0:this.filterTimeoutMs),this.isFirstRequest=!1}},this.dataProviderExpression="",this.invalidateOnPageShow=!1,this.idKey="id",this.listDataProviders=[],this.nextHadEvent=!1,this.storedScrollY=0,this.storedScrollX=0}disconnectedCallback(){for(const s of this.listDataProviders)R.delete(s),this.listDataProviders=[];this.filterPublisher?.offInternalMutation(this.updateFilteredContent),this.props=null,this.limit=5,this.offset=0,this.resultCount=0,this.searchHash="",this.requestId=0,this.isFirstRequest=!0,this.nextHadEvent=!1,this.publisher.set({}),super.disconnectedCallback()}async connectedCallback(){this.instanceId=ce.instanceCounter++,this.localStorage=this.getAttribute("localStorage")||this.localStorage,this.filterTimeoutMs=parseInt(this.getAttribute("filterTimeoutMs")||"400"),this.removeAttribute("localStorage"),this.noShadowDom="",this.defferedDebug=this.hasAttribute("debug")||null,this.dataProvider||(this.dataProvider=this.dataProviderExpression||"sonic-queue-"+this.instanceId+"-"+Math.random().toString(36).substring(7)),this.dataProviderExpression||(this.dataProviderExpression=Ot.getAncestorAttributeValue(this.parentElement,"dataProvider")||""),this.storeScrollPosition(),super.connectedCallback(),this.publisher.set({}),this.key=this.getAttribute("key"),await R.getInstance().isLocalStrorageReady,this.templates||(this.templates=Array.from(this.querySelectorAll("template"))),this.lastRequestTime=new Date().getTime(),this.configFilter()}configFilter(){const s=this.getAncestorAttributeValue("dataFilterProvider");if(!s){this.next();return}this.filterPublisher=R.getInstance().get(s),this.filterPublisher?.onInternalMutation(this.updateFilteredContent)}storeScrollPosition(){this.isSafari()&&(this.storedScrollX=window.scrollX,this.storedScrollY=window.scrollY)}isSafari(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}updated(s){this.isSafari()&&((Math.abs(this.storedScrollX-window.scrollX)>10||Math.abs(this.storedScrollY-window.scrollY)>10)&&window.scrollTo(this.storedScrollX,this.storedScrollY),window.requestAnimationFrame(()=>{(Math.abs(this.storedScrollX-window.scrollX)>10||Math.abs(this.storedScrollY-window.scrollY)>10)&&window.scrollTo(this.storedScrollX,this.storedScrollY)})),super.updated(s)}resetDuration(){this.lastRequestTime=new Date().getTime()}next(s){let e=this.offset;const r=new Date().getTime()-this.lastRequestTime;if(!this.nextHadEvent&&s&&(this.publisher.resultCount=0,this.resultCount=0),this.nextHadEvent=!!s,s){if(this.publisher.lastFetchedData=s.detail.fetchedData,s.detail.requestId<this.requestId)return;if(this.resultCount+=s.detail.props?.length||0,!s.detail.isFirstLoad||!s.detail.props?.length||this.dataProviderExpression.indexOf("$offset")==-1){this.publisher.resultCount=this.resultCount;return}}if(Array.isArray(this.props)){const h=this.props,w=h[h.length-1];e=parseInt(w.offset.toString())+parseInt(w.limit.toString())}else{const h=[];h.resultCount=this.resultCount,h.lastFetchedData=s?.detail.fetchedData||{},this.props=h}r>0&&s&&!this.localStorage&&(this.limit=Math.round(this.limit/r*this.targetRequestDuration)),this.limit<1&&(this.limit=1),this.limit>15&&(this.limit=15);let t=this.dataProviderExpression.replace("$offset",e+"").replace("$limit",this.limit+"");const i=t.split("?");let n=i.shift();const a=new URLSearchParams(i.join("?")),c=this.filterPublisher?.get(),g=this.filteredFields.split(" ");for(const h in c)this.filteredFields&&g.includes(h)||c[h]==null||c[h]==""||a.set(h,c[h]);this.searchHash||(this.searchHash=a.toString()),n=n+"?"+a.toString(),t=t+"_item_from_queue_"+this.instanceId,this.listDataProviders.push(t);const f=[...this.props,{id:a.toString()+"/"+this.props.length,dataProvider:t,endPoint:n,offset:e,limit:this.limit}];f.resultCount=this.resultCount,f.lastFetchedData=s?.detail.fetchedData||{},this.props=f,this.lastRequestTime=new Date().getTime()}render(){if(this.storeScrollPosition(),!Array.isArray(this.props))return S;let s=!this.noLazyload;return this.props.length==1&&(s=!1),this.style.display="block",p`
1229
+ */function*vl(s,e){if(s!==void 0){let o=0;for(const r of s)yield e(r,o++)}}var Uu=Object.defineProperty,Bu=Object.getOwnPropertyDescriptor,ye=(s,e,o,r)=>{for(var t=r>1?void 0:r?Bu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Uu(e,o,t),t};const zu="sonic-queue";let ce=class extends de(D){constructor(){super(...arguments),this.templates=null,this.items=null,this.noItems=null,this.skeleton=null,this.lastRequestTime=0,this.key="",this.itemPropertyMap=null,this.cache="default",this.targetRequestDuration=500,this.limit=5,this.lazyBoundsRatio=1,this.offset=0,this.resultCount=0,this.noLazyload=!1,this.loader="inline",this.filteredFields="",this.instanceId=0,this.localStorage="disabled",this.filterPublisher=null,this.filterTimeoutMs=400,this.searchHash="",this.requestId=0,this.isFirstRequest=!0,this.updateFilteredContent=()=>{const e=this.dataProviderExpression.split("?");e.shift();const o=new URLSearchParams(e.join("?")),r=this.filterPublisher?.get(),t=this.filteredFields.split(" ");for(const n in r){let a=r[n];Array.isArray(a)&&(a=a.filter(c=>c!==null)),!(this.filteredFields&&t.includes(n)||a==null||a.toString()==="")&&o.set(n,r[n].toString())}const i=o.toString();if(!(i==this.searchHash&&!this.isFirstRequest)){this.searchHash=i;for(const n of this.listDataProviders)R.delete(n);this.listDataProviders=[],clearTimeout(this.filterTimeoutId),this.filterTimeoutId=setTimeout(async()=>{const n=this.resultCount;this.props=null,this.requestId++,this.resultCount=n,await R.getInstance().isLocalStrorageReady,window.requestAnimationFrame(()=>this.next())},this.isFirstRequest?0:this.filterTimeoutMs),this.isFirstRequest=!1}},this.dataProviderExpression="",this.invalidateOnPageShow=!1,this.idKey="id",this.listDataProviders=[],this.nextHadEvent=!1,this.storedScrollY=0,this.storedScrollX=0}disconnectedCallback(){for(const s of this.listDataProviders)R.delete(s),this.listDataProviders=[];this.filterPublisher?.offInternalMutation(this.updateFilteredContent),this.props=null,this.limit=5,this.offset=0,this.resultCount=0,this.searchHash="",this.requestId=0,this.isFirstRequest=!0,this.nextHadEvent=!1,this.publisher.set({}),super.disconnectedCallback()}async connectedCallback(){this.instanceId=ce.instanceCounter++,this.localStorage=this.getAttribute("localStorage")||this.localStorage,this.filterTimeoutMs=parseInt(this.getAttribute("filterTimeoutMs")||"400"),this.removeAttribute("localStorage"),this.noShadowDom="",this.defferedDebug=this.hasAttribute("debug")||null,this.dataProvider||(this.dataProvider=this.dataProviderExpression||"sonic-queue-"+this.instanceId+"-"+Math.random().toString(36).substring(7)),this.dataProviderExpression||(this.dataProviderExpression=Ot.getAncestorAttributeValue(this.parentElement,"dataProvider")||""),this.storeScrollPosition(),super.connectedCallback(),this.publisher.set({}),this.key=this.getAttribute("key"),await R.getInstance().isLocalStrorageReady,this.templates||(this.templates=Array.from(this.querySelectorAll("template"))),this.lastRequestTime=new Date().getTime(),this.configFilter()}configFilter(){const s=this.getAncestorAttributeValue("dataFilterProvider");if(!s){this.next();return}this.filterPublisher=R.getInstance().get(s),this.filterPublisher?.onInternalMutation(this.updateFilteredContent)}storeScrollPosition(){this.isSafari()&&(this.storedScrollX=window.scrollX,this.storedScrollY=window.scrollY)}isSafari(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}updated(s){this.isSafari()&&((Math.abs(this.storedScrollX-window.scrollX)>10||Math.abs(this.storedScrollY-window.scrollY)>10)&&window.scrollTo(this.storedScrollX,this.storedScrollY),window.requestAnimationFrame(()=>{(Math.abs(this.storedScrollX-window.scrollX)>10||Math.abs(this.storedScrollY-window.scrollY)>10)&&window.scrollTo(this.storedScrollX,this.storedScrollY)})),super.updated(s)}resetDuration(){this.lastRequestTime=new Date().getTime()}next(s){let e=this.offset;const r=new Date().getTime()-this.lastRequestTime;if(!this.nextHadEvent&&s&&(this.publisher.resultCount=0,this.resultCount=0),this.nextHadEvent=!!s,s){if(this.publisher.lastFetchedData=s.detail.fetchedData,s.detail.requestId<this.requestId)return;if(this.resultCount+=s.detail.props?.length||0,!s.detail.isFirstLoad||!s.detail.props?.length||this.dataProviderExpression.indexOf("$offset")==-1){this.publisher.resultCount=this.resultCount;return}}if(Array.isArray(this.props)){const h=this.props,x=h[h.length-1];e=parseInt(x.offset.toString())+parseInt(x.limit.toString())}else{const h=[];h.resultCount=this.resultCount,h.lastFetchedData=s?.detail.fetchedData||{},this.props=h}r>0&&s&&!this.localStorage&&(this.limit=Math.round(this.limit/r*this.targetRequestDuration)),this.limit<1&&(this.limit=1),this.limit>15&&(this.limit=15);let t=this.dataProviderExpression.replace("$offset",e+"").replace("$limit",this.limit+"");const i=t.split("?");let n=i.shift();const a=new URLSearchParams(i.join("?")),c=this.filterPublisher?.get(),g=this.filteredFields.split(" ");for(const h in c)this.filteredFields&&g.includes(h)||c[h]==null||c[h]==""||a.set(h,c[h]);this.searchHash||(this.searchHash=a.toString()),n=n+"?"+a.toString(),t=t+"_item_from_queue_"+this.instanceId,this.listDataProviders.push(t);const b=[...this.props,{id:a.toString()+"/"+this.props.length,dataProvider:t,endPoint:n,offset:e,limit:this.limit}];b.resultCount=this.resultCount,b.lastFetchedData=s?.detail.fetchedData||{},this.props=b,this.lastRequestTime=new Date().getTime()}render(){if(this.storeScrollPosition(),!Array.isArray(this.props))return S;let s=!this.noLazyload;return this.props.length==1&&(s=!1),this.style.display="block",p`
1230
1230
  ${vl(this.props,(e,o)=>{const r=o==0?this.templates:this.templates?.filter(t=>t.getAttribute("data-value")!="no-item");return p`
1231
1231
  <sonic-list
1232
1232
  fetch
@@ -1253,32 +1253,32 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1253
1253
  >
1254
1254
  </sonic-list>
1255
1255
  `})}
1256
- `}};ce.instanceCounter=0;ye([l({type:Array})],ce.prototype,"templates",2);ye([l({type:Function,attribute:!1})],ce.prototype,"items",2);ye([l({type:Function,attribute:!1})],ce.prototype,"noItems",2);ye([l({type:Function,attribute:!1})],ce.prototype,"skeleton",2);ye([l({type:Object})],ce.prototype,"itemPropertyMap",2);ye([l()],ce.prototype,"cache",2);ye([l()],ce.prototype,"targetRequestDuration",2);ye([l()],ce.prototype,"limit",2);ye([l()],ce.prototype,"lazyBoundsRatio",2);ye([l()],ce.prototype,"offset",2);ye([l()],ce.prototype,"resultCount",2);ye([l({type:Boolean})],ce.prototype,"noLazyload",2);ye([l({type:String})],ce.prototype,"loader",2);ye([l()],ce.prototype,"filteredFields",2);ye([l({type:String})],ce.prototype,"dataProviderExpression",2);ye([l({type:Boolean})],ce.prototype,"invalidateOnPageShow",2);ye([l({type:String})],ce.prototype,"idKey",2);ce=ye([k(ju)],ce);var Uu=Object.defineProperty,Bu=Object.getOwnPropertyDescriptor,js=(s,e,o,r)=>{for(var t=r>1?void 0:r?Bu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Uu(e,o,t),t};const zu="sonic-submit";let It=class extends de(D){constructor(){super(...arguments),this.submitResultKey=null,this.disabled=!1,this.endPoint=null,this.name="",this.value="",this.api=null,this.clickTimeStamp=0,this.submit=async s=>{if(this.disabled||s instanceof KeyboardEvent&&s.key!=="Enter")return;s instanceof MouseEvent&&s.stopPropagation();const e=R.getInstance().get(this.getAncestorAttributeValue("formDataProvider"));if(e.isFormValid.set(!0),e.invalidateForm(),!e.isFormValid.get())return;if(this.disabled=!0,he.show(),e.isFormValid,this.hasAttribute("native")){this.submitNativeForm(),he.hide(),this.disabled=!1;return}const r=this.getAttribute("method")?.toLocaleLowerCase()||"post",t=this.hasAttribute("sendAsFormData"),i=e.get();delete i.isFormValid;const n=this.getAncestorAttributeValue("headersDataProvider"),a=n?R.getInstance().get(n):null;let c={};a&&(c=a.get());let g=null;const f=this.getAncestorAttributeValue("dataProvider"),h=this.endPoint||f,w=async()=>{const m={...i};if(delete m.needsCaptchaValidation,delete c.needsCaptchaValidation,t)g=await this.api?.submitFormData(h,m,r,c);else switch(r){case"put":g=await this.api?.put(h,m,c);break;case"patch":g=await this.api?.patch(h,m,c);break;case"delete":g=await this.api?.delete(h,m,c);break;case"get":const u=new URLSearchParams;if(m)for(const x in m)u.append(x,m[x]);const y="?"+u.toString();g=await this.api?.get(h+y,c);break;default:g=await this.api?.post(h,m,c);break}he.hide(),g?g._sonic_http_response_&&!g._sonic_http_response_.ok&&Object.keys(g).length===1&&(g.messages=[{content:"Network Error",status:"error"}]):g={messages:[{content:"Network Error",status:"error"}]};const b=this.getAncestorAttributeValue("clearedDataOnSuccess");b&&b.split(" ").forEach(u=>R.get(u).set({}));const v=this.hasAttribute("usernameKey")?this.getAttribute("usernameKey"):"username",_=this.hasAttribute("passwordKey")?this.getAttribute("passwordKey"):"password";this.api?.lastResult?.ok&&m[v]&&m[_]&&this.saveCredentials(m[v],m[_]),this.submitResultKey&&(g=fe.traverse(g,this.submitResultKey.split("."),!0));const d=this.getAncestorAttributeValue("submitResultDataProvider");d&&R.get(d).set(g),this.disabled=!1,this.dispatchEvent(new CustomEvent("submit",{detail:g,bubbles:!0,composed:!0}))},A=a?.needsCaptchaValidation.get()?a:e.needsCaptchaValidation.get()?e:null;if(A){A.captchaToken.set("request_token");const m=b=>{b!="request_token"?(w(),A.captchaToken.offAssign(m)):(he.hide(),this.disabled=!1)};A.captchaToken.onAssign(m)}else w()}}connectedCallback(){this.hasAttribute("onClick")&&this.addEventListener("click",this.submit),this.hasAttribute("onEnterKey")&&this.addEventListener("keydown",this.submit),super.connectedCallback(),this.api=new ss(this.getApiConfiguration())}submitNativeForm(){const s=Ot.getClosestForm(this);if(!s)return;const e=this.getAncestorAttributeValue("formDataProvider"),o={...R.get(e).get()};delete o.needsCaptchaValidation;for(const t in o){if(t=="isFormValid")continue;let i=s.querySelector('input[name="'+t+'"], select[name="'+t+'"], textarea[name="'+t+'"]');i||(i=document.createElement("input"),i.type="hidden",i.name=t,s.appendChild(i));let n=o[t];Array.isArray(n)&&(n=n.join(",")),i.type==="checkbox"||i.type==="radio"?n&&(i.checked=!0):i.value=n}const r=document.createElement("input");r.name=this.name,r.style.display="none",r.value=this.value,r.type="submit",s.appendChild(r),r&&r.click()}async saveCredentials(s,e){if("PasswordCredential"in window){const o=new window.PasswordCredential({id:s,password:e});await navigator.credentials.store(o)}}render(){return p`<div ?data-disabled=${this.disabled}><slot></slot></div>`}};It.styles=L`
1256
+ `}};ce.instanceCounter=0;ye([l({type:Array})],ce.prototype,"templates",2);ye([l({type:Function,attribute:!1})],ce.prototype,"items",2);ye([l({type:Function,attribute:!1})],ce.prototype,"noItems",2);ye([l({type:Function,attribute:!1})],ce.prototype,"skeleton",2);ye([l({type:Object})],ce.prototype,"itemPropertyMap",2);ye([l()],ce.prototype,"cache",2);ye([l()],ce.prototype,"targetRequestDuration",2);ye([l()],ce.prototype,"limit",2);ye([l()],ce.prototype,"lazyBoundsRatio",2);ye([l()],ce.prototype,"offset",2);ye([l()],ce.prototype,"resultCount",2);ye([l({type:Boolean})],ce.prototype,"noLazyload",2);ye([l({type:String})],ce.prototype,"loader",2);ye([l()],ce.prototype,"filteredFields",2);ye([l({type:String})],ce.prototype,"dataProviderExpression",2);ye([l({type:Boolean})],ce.prototype,"invalidateOnPageShow",2);ye([l({type:String})],ce.prototype,"idKey",2);ce=ye([k(zu)],ce);var Ku=Object.defineProperty,Hu=Object.getOwnPropertyDescriptor,js=(s,e,o,r)=>{for(var t=r>1?void 0:r?Hu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Ku(e,o,t),t};const Vu="sonic-submit";let It=class extends de(D){constructor(){super(...arguments),this.submitResultKey=null,this.disabled=!1,this.endPoint=null,this.name="",this.value="",this.api=null,this.clickTimeStamp=0,this.submit=async s=>{if(this.disabled||s instanceof KeyboardEvent&&s.key!=="Enter")return;s instanceof MouseEvent&&s.stopPropagation();const e=R.getInstance().get(this.getAncestorAttributeValue("formDataProvider"));if(e.isFormValid.set(!0),e.invalidateForm(),!e.isFormValid.get())return;if(this.disabled=!0,he.show(),e.isFormValid,this.hasAttribute("native")){this.submitNativeForm(),he.hide(),this.disabled=!1;return}const r=this.getAttribute("method")?.toLocaleLowerCase()||"post",t=this.hasAttribute("sendAsFormData"),i=e.get();delete i.isFormValid;const n=this.getAncestorAttributeValue("headersDataProvider"),a=n?R.getInstance().get(n):null;let c={};a&&(c=a.get());let g=null;const b=this.getAncestorAttributeValue("dataProvider"),h=this.endPoint||b,x=async()=>{const m={...i};if(delete m.needsCaptchaValidation,delete c.needsCaptchaValidation,t)g=await this.api?.submitFormData(h,m,r,c);else switch(r){case"put":g=await this.api?.put(h,m,c);break;case"patch":g=await this.api?.patch(h,m,c);break;case"delete":g=await this.api?.delete(h,m,c);break;case"get":const u=new URLSearchParams;if(m)for(const w in m)u.append(w,m[w]);const y="?"+u.toString();g=await this.api?.get(h+y,c);break;default:g=await this.api?.post(h,m,c);break}he.hide(),g?g._sonic_http_response_&&!g._sonic_http_response_.ok&&Object.keys(g).length===1&&(g.messages=[{content:"Network Error",status:"error"}]):g={messages:[{content:"Network Error",status:"error"}]};const f=this.getAncestorAttributeValue("clearedDataOnSuccess");f&&f.split(" ").forEach(u=>R.get(u).set({}));const v=this.hasAttribute("usernameKey")?this.getAttribute("usernameKey"):"username",_=this.hasAttribute("passwordKey")?this.getAttribute("passwordKey"):"password";this.api?.lastResult?.ok&&m[v]&&m[_]&&this.saveCredentials(m[v],m[_]),this.submitResultKey&&(g=fe.traverse(g,this.submitResultKey.split("."),!0));const d=this.getAncestorAttributeValue("submitResultDataProvider");d&&R.get(d).set(g),this.disabled=!1,this.dispatchEvent(new CustomEvent("submit",{detail:g,bubbles:!0,composed:!0}))},A=a?.needsCaptchaValidation.get()?a:e.needsCaptchaValidation.get()?e:null;if(A){A.captchaToken.set("request_token");const m=f=>{f!="request_token"?(x(),A.captchaToken.offAssign(m)):(he.hide(),this.disabled=!1)};A.captchaToken.onAssign(m)}else x()}}connectedCallback(){this.hasAttribute("onClick")&&this.addEventListener("click",this.submit),this.hasAttribute("onEnterKey")&&this.addEventListener("keydown",this.submit),super.connectedCallback(),this.api=new ss(this.getApiConfiguration())}submitNativeForm(){const s=Ot.getClosestForm(this);if(!s)return;const e=this.getAncestorAttributeValue("formDataProvider"),o={...R.get(e).get()};delete o.needsCaptchaValidation;for(const t in o){if(t=="isFormValid")continue;let i=s.querySelector('input[name="'+t+'"], select[name="'+t+'"], textarea[name="'+t+'"]');i||(i=document.createElement("input"),i.type="hidden",i.name=t,s.appendChild(i));let n=o[t];Array.isArray(n)&&(n=n.join(",")),i.type==="checkbox"||i.type==="radio"?n&&(i.checked=!0):i.value=n}const r=document.createElement("input");r.name=this.name,r.style.display="none",r.value=this.value,r.type="submit",s.appendChild(r),r&&r.click()}async saveCredentials(s,e){if("PasswordCredential"in window){const o=new window.PasswordCredential({id:s,password:e});await navigator.credentials.store(o)}}render(){return p`<div ?data-disabled=${this.disabled}><slot></slot></div>`}};It.styles=L`
1257
1257
  [data-disabled] {
1258
1258
  opacity: 0.3;
1259
1259
  pointer-events: none;
1260
1260
  user-select: none;
1261
1261
  }
1262
- `;js([l({type:String})],It.prototype,"submitResultKey",2);js([l({type:Boolean})],It.prototype,"disabled",2);js([l({type:String})],It.prototype,"endPoint",2);js([l()],It.prototype,"name",2);js([l()],It.prototype,"value",2);It=js([k(zu)],It);var Ku=Object.defineProperty,Hu=Object.getOwnPropertyDescriptor,$o=(s,e,o,r)=>{for(var t=r>1?void 0:r?Hu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Ku(e,o,t),t};const Vu="sonic-router";let ks=class extends Co(D){constructor(){super(...arguments),this.templateValueAttribute="data-route",this._location=document.location.href.replace(document.location.origin,"")}createRenderRoot(){return this}connectedCallback(){me.onChange(this),super.connectedCallback()}disconnectedCallback(){me.offChange(this),super.disconnectedCallback()}set location(s){this._location=s,this.requestUpdate()}get location(){return this._location}get cleanLocation(){const s=new URL(this.location,document.location.origin);return s.pathname+s.hash}get patternBasePath(){return this.basePath!==void 0?this.basePath:"(/)*"}get regExpBasePath(){return this.basePath!==void 0?"^"+this.basePath:""}handleroutes(){if(!this.routes)return[];const s=[];for(let[e,o]of Object.entries(this.routes)){if(e==="fallback"||!o)continue;const r=new RegExp(this.regExpBasePath+e);if(r.test(this.cleanLocation)){const t=r.exec(this.cleanLocation)||[e];t.shift(),s.push(o([...t]))}else try{const i=new vt(this.patternBasePath+e).match(this.cleanLocation);if(i){const n=i||{};s.push(o(n))}}catch{this.cleanLocation.indexOf((this.basePath||"")+e.replace(document.location.origin,""))!=-1&&s.push(o({}))}}return s.length==0&&this.routes?.fallback&&this.isConnected&&s.push(this.routes.fallback()),s}render(){const s=this.handleroutes();if(s.length>0)return p`${s}`;const e=[];for(const o of this.templatePartsList){const r=o.getAttribute(this.templateValueAttribute)||"";if(new RegExp(this.regExpBasePath+r).test(this.cleanLocation))e.push(o);else try{new vt(this.patternBasePath+r+"(/*)").match(this.cleanLocation)&&(o.setAttribute("mode","patternMatching"),e.push(o))}catch{this.cleanLocation.indexOf((this.basePath||"")+r.replace(document.location.origin,""))!=-1&&e.push(o)}}if(e.length==0){this.fallBackRoute&&this.isConnected&&(document.location.href=this.fallBackRoute);const o=this.templateList.find(r=>r.hasAttribute("data-fallback"));o&&e.push(o)}return p`${Nr(e,(o,r)=>r+new Date().getTime(),o=>{if(o.title&&(document.title=o.title),o.hasAttribute("dataProviderExpression")){let r="";const t=o.getAttribute("dataProviderExpression")||"";if(o.getAttribute("mode")=="patternMatching"){const i=new vt("(/)*"+(o.getAttribute(this.templateValueAttribute)||"")+"*");r=new vt(t).stringify(i.match(this.cleanLocation))}else{const i=new RegExp(o.getAttribute(this.templateValueAttribute)||""),n=(this.cleanLocation+"").match(i);n&&(r=n.shift()?.replace(i,t)||"")}return p`<div
1262
+ `;js([l({type:String})],It.prototype,"submitResultKey",2);js([l({type:Boolean})],It.prototype,"disabled",2);js([l({type:String})],It.prototype,"endPoint",2);js([l()],It.prototype,"name",2);js([l()],It.prototype,"value",2);It=js([k(Vu)],It);var Wu=Object.defineProperty,Gu=Object.getOwnPropertyDescriptor,$o=(s,e,o,r)=>{for(var t=r>1?void 0:r?Gu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Wu(e,o,t),t};const Ju="sonic-router";let ks=class extends Co(D){constructor(){super(...arguments),this.templateValueAttribute="data-route",this._location=document.location.href.replace(document.location.origin,"")}createRenderRoot(){return this}connectedCallback(){me.onChange(this),super.connectedCallback()}disconnectedCallback(){me.offChange(this),super.disconnectedCallback()}set location(s){this._location=s,this.requestUpdate()}get location(){return this._location}get cleanLocation(){const s=new URL(this.location,document.location.origin);return s.pathname+s.hash}get patternBasePath(){return this.basePath!==void 0?this.basePath:"(/)*"}get regExpBasePath(){return this.basePath!==void 0?"^"+this.basePath:""}handleroutes(){if(!this.routes)return[];const s=[];for(let[e,o]of Object.entries(this.routes)){if(e==="fallback"||!o)continue;const r=new RegExp(this.regExpBasePath+e);if(r.test(this.cleanLocation)){const t=r.exec(this.cleanLocation)||[e];t.shift(),s.push(o([...t]))}else try{const i=new vt(this.patternBasePath+e).match(this.cleanLocation);if(i){const n=i||{};s.push(o(n))}}catch{this.cleanLocation.indexOf((this.basePath||"")+e.replace(document.location.origin,""))!=-1&&s.push(o({}))}}return s.length==0&&this.routes?.fallback&&this.isConnected&&s.push(this.routes.fallback()),s}render(){const s=this.handleroutes();if(s.length>0)return p`${s}`;const e=[];for(const o of this.templatePartsList){const r=o.getAttribute(this.templateValueAttribute)||"";if(new RegExp(this.regExpBasePath+r).test(this.cleanLocation))e.push(o);else try{new vt(this.patternBasePath+r+"(/*)").match(this.cleanLocation)&&(o.setAttribute("mode","patternMatching"),e.push(o))}catch{this.cleanLocation.indexOf((this.basePath||"")+r.replace(document.location.origin,""))!=-1&&e.push(o)}}if(e.length==0){this.fallBackRoute&&this.isConnected&&(document.location.href=this.fallBackRoute);const o=this.templateList.find(r=>r.hasAttribute("data-fallback"));o&&e.push(o)}return p`${Nr(e,(o,r)=>r+new Date().getTime(),o=>{if(o.title&&(document.title=o.title),o.hasAttribute("dataProviderExpression")){let r="";const t=o.getAttribute("dataProviderExpression")||"";if(o.getAttribute("mode")=="patternMatching"){const i=new vt("(/)*"+(o.getAttribute(this.templateValueAttribute)||"")+"*");r=new vt(t).stringify(i.match(this.cleanLocation))}else{const i=new RegExp(o.getAttribute(this.templateValueAttribute)||""),n=(this.cleanLocation+"").match(i);n&&(r=n.shift()?.replace(i,t)||"")}return p`<div
1263
1263
  style="display:contents"
1264
1264
  dataProvider="${r}"
1265
1265
  >
1266
1266
  ${rt(o)}
1267
- </div>`}return rt(o)})}`}};$o([l({type:String})],ks.prototype,"fallBackRoute",2);$o([l({type:Object,attribute:!1})],ks.prototype,"routes",2);$o([l({type:String})],ks.prototype,"basePath",2);$o([l()],ks.prototype,"location",1);ks=$o([k(Vu)],ks);var Wu=Object.getOwnPropertyDescriptor,Gu=(s,e,o,r)=>{for(var t=r>1?void 0:r?Wu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Ju="sonic-redirect";let La=class extends de(D){connectedCallback(){this.noShadowDom="",this.style.display="none",super.connectedCallback(),this.udpateCallBack=()=>this.update(),this.publisher&&this.publisher.onInternalMutation(this.udpateCallBack)}disconnectedCallback(){this.publisher&&this.publisher.offInternalMutation(this.udpateCallBack),super.disconnectedCallback()}update(){if(this.hasAttribute("onAdded")){me.changeFromComponent(this);return}if(!this.props)return;const s=this.getAttribute("onData").split("."),e=fe.traverse(this.props,s);e&&!(fe.isObject(e)&&e)&&me.changeFromComponent(this)}};La=Gu([k(Ju)],La);var Yu=Object.defineProperty,Qu=Object.getOwnPropertyDescriptor,jr=(s,e,o,r)=>{for(var t=r>1?void 0:r?Qu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Yu(e,o,t),t};const Zu="sonic-states";let so=class extends de(Co(D)){constructor(){super(...arguments),this.state="",this.inverted=!1,this.statePath="",this.onStateAssign=s=>{this.state=s,this.requestUpdate()}}connectedCallback(){if(this.noShadowDom="",super.connectedCallback(),this.hasAttribute("data-path")&&(this.statePath=this.getAttribute("data-path")),this.statePath){this.statePublisher=this.publisher;const s=this.statePath.split(".");for(const e of s)this.statePublisher=this.statePublisher[e];this.statePublisher.onAssign(this.onStateAssign)}}disconnectedCallback(){this.statePath&&this.statePublisher?.offAssign(this.onStateAssign),super.disconnectedCallback()}handleStates(s){if(!this.states)return[];const e=[];for(const[o,r]of Object.entries(this.states)){if(o==="fallback"||!r)continue;const t=new RegExp(o);if(t.test(s)){const i=t.exec(s)||[o];i.shift(),e.push(r([...i]))}else try{const i=new vt("(/)*"+o+"*");if(i.match(s)){const n=i.match(s)||{};e.push(r(n))}}catch{s.indexOf(o.replace(document.location.origin,""))!=-1&&e.push(r({}))}}return e.length==0&&this.states?.fallback&&this.isConnected&&e.push(this.states.fallback()),e}render(){let s=this.state;(!Array.isArray(s)&&fe.isObject(s)||s===void 0)&&(s="");const e=this.handleStates(s);if(e.length>0)return p`${e}`;const o=[];for(const r of this.templatePartsList){let t=r.getAttribute(this.templateValueAttribute),i=s;if(this.inverted&&(i=t,t=s),t==""&&(t=this.inverted?".*?":"^$"),new RegExp(t).test(i+""))o.push(r),r.removeAttribute("mode");else{const a=new vt(t);a.names.length>0&&a.match(i)&&(r.setAttribute("mode","patternMatching"),o.push(r))}}return p`${Nr(o,(r,t)=>t+new Date().getTime(),r=>{if(r?.hasAttribute("dataProviderExpression")){const t=r.getAttribute("dataProviderExpression");let i="",n=s,a=r.getAttribute(this.templateValueAttribute);if(this.inverted&&(n=a,a=s),a==""&&(a=this.inverted?"*":"^$"),r.getAttribute("mode")=="patternMatching"){const c=new vt(a);i=new vt(t).stringify(c.match(n))}else{const c=new RegExp(a),g=(n+"").match(c);g&&(i=g.shift()?.replace(c,t))}return p`<div
1267
+ </div>`}return rt(o)})}`}};$o([l({type:String})],ks.prototype,"fallBackRoute",2);$o([l({type:Object,attribute:!1})],ks.prototype,"routes",2);$o([l({type:String})],ks.prototype,"basePath",2);$o([l()],ks.prototype,"location",1);ks=$o([k(Ju)],ks);var Yu=Object.getOwnPropertyDescriptor,Qu=(s,e,o,r)=>{for(var t=r>1?void 0:r?Yu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Zu="sonic-redirect";let La=class extends de(D){connectedCallback(){this.noShadowDom="",this.style.display="none",super.connectedCallback(),this.udpateCallBack=()=>this.update(),this.publisher&&this.publisher.onInternalMutation(this.udpateCallBack)}disconnectedCallback(){this.publisher&&this.publisher.offInternalMutation(this.udpateCallBack),super.disconnectedCallback()}update(){if(this.hasAttribute("onAdded")){me.changeFromComponent(this);return}if(!this.props)return;const s=this.getAttribute("onData").split("."),e=fe.traverse(this.props,s);e&&!(fe.isObject(e)&&e)&&me.changeFromComponent(this)}};La=Qu([k(Zu)],La);var Xu=Object.defineProperty,ep=Object.getOwnPropertyDescriptor,jr=(s,e,o,r)=>{for(var t=r>1?void 0:r?ep(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Xu(e,o,t),t};const tp="sonic-states";let so=class extends de(Co(D)){constructor(){super(...arguments),this.state="",this.inverted=!1,this.statePath="",this.onStateAssign=s=>{this.state=s,this.requestUpdate()}}connectedCallback(){if(this.noShadowDom="",super.connectedCallback(),this.hasAttribute("data-path")&&(this.statePath=this.getAttribute("data-path")),this.statePath){this.statePublisher=this.publisher;const s=this.statePath.split(".");for(const e of s)this.statePublisher=this.statePublisher[e];this.statePublisher.onAssign(this.onStateAssign)}}disconnectedCallback(){this.statePath&&this.statePublisher?.offAssign(this.onStateAssign),super.disconnectedCallback()}handleStates(s){if(!this.states)return[];const e=[];for(const[o,r]of Object.entries(this.states)){if(o==="fallback"||!r)continue;const t=new RegExp(o);if(t.test(s)){const i=t.exec(s)||[o];i.shift(),e.push(r([...i]))}else try{const i=new vt("(/)*"+o+"*");if(i.match(s)){const n=i.match(s)||{};e.push(r(n))}}catch{s.indexOf(o.replace(document.location.origin,""))!=-1&&e.push(r({}))}}return e.length==0&&this.states?.fallback&&this.isConnected&&e.push(this.states.fallback()),e}render(){let s=this.state;(!Array.isArray(s)&&fe.isObject(s)||s===void 0)&&(s="");const e=this.handleStates(s);if(e.length>0)return p`${e}`;const o=[];for(const r of this.templatePartsList){let t=r.getAttribute(this.templateValueAttribute),i=s;if(this.inverted&&(i=t,t=s),t==""&&(t=this.inverted?".*?":"^$"),new RegExp(t).test(i+""))o.push(r),r.removeAttribute("mode");else{const a=new vt(t);a.names.length>0&&a.match(i)&&(r.setAttribute("mode","patternMatching"),o.push(r))}}return p`${Nr(o,(r,t)=>t+new Date().getTime(),r=>{if(r?.hasAttribute("dataProviderExpression")){const t=r.getAttribute("dataProviderExpression");let i="",n=s,a=r.getAttribute(this.templateValueAttribute);if(this.inverted&&(n=a,a=s),a==""&&(a=this.inverted?"*":"^$"),r.getAttribute("mode")=="patternMatching"){const c=new vt(a);i=new vt(t).stringify(c.match(n))}else{const c=new RegExp(a),g=(n+"").match(c);g&&(i=g.shift()?.replace(c,t))}return p`<div
1268
1268
  style="display:contents"
1269
1269
  dataProvider="${i}"
1270
1270
  >
1271
1271
  ${rt(r)}
1272
- </div>`}return rt(r)})}`}};jr([l()],so.prototype,"state",2);jr([l({type:Boolean,reflect:!0})],so.prototype,"inverted",2);jr([l({type:Object})],so.prototype,"states",2);so=jr([k(Zu)],so);var Xu=Object.getOwnPropertyDescriptor,ep=(s,e,o,r)=>{for(var t=r>1?void 0:r?Xu(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const tp="sonic-scope";let Ta=class extends D{createRenderRoot(){return this}render(){return p`<slot></slot>`}};Ta=ep([k(tp)],Ta);function sp(s){this.__beforeConnectedCallbackCalls__||(this.__beforeConnectedCallbackCalls__=new Set),this.__beforeConnectedCallbackCalls__.add(s)}function op(s){this.__connectedCallbackCalls__||(this.__connectedCallbackCalls__=new Set),this.__connectedCallbackCalls__.add(s)}function rp(s){this.__disconnectedCallbackCalls__||(this.__disconnectedCallbackCalls__=new Set),this.__disconnectedCallbackCalls__.add(s)}function Us(s){if(s.__is__setSubscribable__)return;s.__is__setSubscribable__=!0,s.__onBeforeConnected__=sp,s.__onConnected__=op,s.__onDisconnected__=rp;const e=s.connectedCallback;s.connectedCallback=function(){this.__beforeConnectedCallbackCalls__&&this.__beforeConnectedCallbackCalls__.forEach(r=>r(this)),e?.call(this),this.__connectedCallbackCalls__&&this.__connectedCallbackCalls__.forEach(r=>r(this))};const o=s.disconnectedCallback;s.disconnectedCallback=function(){o?.call(this),this.__disconnectedCallbackCalls__&&this.__disconnectedCallbackCalls__.forEach(r=>r(this))}}function ip(s){return s.trim().replace(/^this\./,"")}function En(s,e){if(!e)return;const o=e.split(".").filter(Boolean);if(o.length===0)return;let r=s;for(const t of o){if(r==null||typeof r!="object")return;r=r[t]}return r}function Xt(s,e){let o=!1;const r=(n,a)=>{const c=ip(a),g=En(s,c);return g==null?(o=!0,""):`${g}`},t=e.replace(/\$\{([^}]+)\}/g,r).replace(/\{\$([^}]+)\}/g,r).trim();if(o||!t.length)return{ready:!1,path:null};const i=t.split(".").filter(Boolean);return i.length===0||!i[0]?{ready:!1,path:null}:{ready:!0,path:t}}function rs(s){const e=[/\$\{([^}]+)\}/g,/\{\$([^}]+)\}/g],o=new Set;for(const r of e){let t;for(;(t=r.exec(s))!==null;){const i=(t[1]||"").trim().replace(/^this\./,"");if(!i)continue;const[n]=i.split(".");n&&o.add(n)}}return Array.from(o)}function wl(s){return typeof s=="object"&&s!==null&&"path"in s&&typeof s.path=="string"}const oo=new WeakMap,ro=new Set;let ws=null;const np=8;function ap(s){let e=oo.get(s);return e||(e=new Map,oo.set(s,e)),e}function lp(s,e){const o=new Set;for(const[r,t]of e){const i=En(s,r);Object.is(t.lastValue,i)||(t.lastValue=i,t.onChangeHandlers.forEach(n=>o.add(n)))}return o}function cp(){ws=null;let s=0,e=!0;for(;e&&s<np;){e=!1,s+=1;for(const o of ro){const r=oo.get(o);if(!r||r.size===0)continue;const t=lp(o,r);t.size!==0&&(e=!0,t.forEach(i=>i()))}}e&&console.warn("[concorde] dynamic property watch: limite de passes atteinte, boucle infinie probable"),ro.size>0&&xl()}function xl(){ws===null&&(ws=requestAnimationFrame(cp))}function dp(){ro.size===0&&ws!==null&&(cancelAnimationFrame(ws),ws=null)}function Cs(s,e,o,r,t){const i=String(r),n=ap(o);let a=n.get(i);return a||(a={lastValue:En(o,i),onChangeHandlers:new Set},n.set(i,a)),a.onChangeHandlers.add(t),ro.add(o),xl(),()=>{const c=oo.get(o);if(!c)return;const g=c.get(i);g&&(g.onChangeHandlers.delete(t),g.onChangeHandlers.size===0&&c.delete(i),c.size===0&&(oo.delete(o),ro.delete(o),dp()))}}const tr={watcherStore:Symbol("__bindDynamicWatcherStore__"),hooked:Symbol("__bindDynamicWillUpdateHooked__")},Oa={watcherStore:"__publishDynamicWatcherStore__",hooked:"__publishDynamicWillUpdateHooked__"},Bo={watcherStore:"__getDynamicWatcherStore__",hooked:"__getDynamicWillUpdateHooked__"},Ia={watcherStore:Symbol("__onAssignDynamicWatcherStore__"),hooked:Symbol("__onAssignDynamicWillUpdateHooked__")};function io(s){const e=s.split(".").filter(t=>t.length>0);if(e.length===0)return null;const o=e.shift()||"";if(!o)return null;let r=R.get(o);return r?(r=Ao.traverse(r,e),r):null}function up(s,e){const o=e?.reflect??!1,r=rs(s),t=r.length>0;return function(i,n){if(!i)return;Us(i);const a=`__bind_state_${n}`,c=`__bind_${n}_publisher__`,g=o?`__bind_${n}_updating_from_publisher__`:null;if(o){const f=Object.getOwnPropertyDescriptor(i,n),h=`__bind_${n}_value__`,w=`__bind_${n}_updating_from_publisher__`,A=f&&!f.get&&!f.set?f.value:void 0;Object.defineProperty(i,n,{get(){return f?.get?f.get.call(this):(!Object.prototype.hasOwnProperty.call(this,h)&&A!==void 0&&(this[h]=A),this[h])},set(m){f?.set?f.set.call(this,m):this[h]=m,!this[w]&&this[c]&&this[c].set(m)},enumerable:f?.enumerable??!0,configurable:f?.configurable??!0})}i.__onConnected__(f=>{const h=f[a]||(f[a]={cleanupWatchers:[],unsubscribePublisher:null,currentPath:null});h.unsubscribePublisher&&(h.unsubscribePublisher(),h.unsubscribePublisher=null),h.cleanupWatchers.forEach(m=>m()),h.cleanupWatchers=[],h.currentPath=null;const w=m=>{if(!m){h.unsubscribePublisher&&(h.unsubscribePublisher(),h.unsubscribePublisher=null),h.currentPath=null,f[c]=null;return}if(m===h.currentPath)return;h.unsubscribePublisher&&(h.unsubscribePublisher(),h.unsubscribePublisher=null);const b=io(m);if(!b){h.currentPath=null,f[c]=null;return}const v=_=>{o&&g&&(f[g]=!0),f[n]=_,o&&g&&(f[g]=!1)};b.onAssign(v),h.unsubscribePublisher=()=>{b.offAssign(v),f[c]===b&&(f[c]=null)},h.currentPath=m,f[c]=b},A=()=>{if(t){const m=Xt(f,s);if(!m.ready){w(null);return}w(m.path);return}w(s)};if(t)for(const m of r){const b=Cs(tr.watcherStore,tr.hooked,f,m,()=>A());h.cleanupWatchers.push(b)}A()}),i.__onDisconnected__(f=>{const h=f[a];h&&(h.unsubscribePublisher&&(h.unsubscribePublisher(),h.unsubscribePublisher=null),h.cleanupWatchers.forEach(w=>w()),h.cleanupWatchers=[],h.currentPath=null,f[c]=null)})}}function Ln(s,e){const o=wl(s)?s.path:s;return up(o,e)}function _l(s){const e=s.path,o=rs(e);return function(r,t){Us(r);const i=`__publish_${t}_publisher__`,n=`__publish_${t}_value__`,a=Object.getOwnPropertyDescriptor(r,t),c=a&&!a.get&&!a.set?a.value:void 0;Object.defineProperty(r,t,{get(){return a?.get?a.get.call(this):(!Object.prototype.hasOwnProperty.call(this,n)&&c!==void 0&&(this[n]=c),this[n])},set(g){a?.set?a.set.call(this,g):this[n]=g;const f=this[i];f&&f.set(g)},enumerable:a?.enumerable??!0,configurable:a?.configurable??!0}),r.__onConnected__(g=>{const f=g,h=`__publish_state_${t}`,w=f[h]||(f[h]={cleanupWatchers:[]}),A=()=>{let m;if(o.length){const v=Xt(g,e);m=v.ready?v.path:null}else m=e;const b=m?io(m):void 0;if(f[i]=b??null,b&&t in g){const v=f[t];v!==void 0&&b.set(v)}};if(w.cleanupWatchers.forEach(m=>m()),w.cleanupWatchers=[],o.length)for(const m of o)w.cleanupWatchers.push(Cs(Oa.watcherStore,Oa.hooked,f,m,A));A()}),r.__onDisconnected__(g=>{const f=g,h=`__publish_state_${t}`,w=f[h];w?.cleanupWatchers&&w.cleanupWatchers.forEach(A=>A()),f[i]=void 0})}}function Qe(s){return Ln(s)}const pp={nullish:s=>s==null,emptyString:s=>s==="",emptyObject:s=>typeof s=="object"&&s!==null&&!Array.isArray(s)&&Object.keys(s).length===0,emptyArray:s=>Array.isArray(s)&&s.length===0};function hp(s,e){return e.some(o=>pp[o](s))}function mp(s,e,o){if(!o.dispatchWhenUndefined&&s.slice(0,e).filter(t=>t!=null).length!==e)return!1;if(o.skip&&o.skip.length>0){for(let r=0;r<e;r++)if(hp(s[r],o.skip))return!1}return!0}function Dl(...s){return kl({},s)}function kl(s,e){const o=e.map(r=>{const t=rs(r);return{originalPath:r,dynamicDependencies:t,isDynamic:t.length>0}});return function(r,t,i){Us(r);const n=`__onAssign_state_${t}__`;let a;r.__onConnected__(c=>{const g=c[n]||(c[n]={cleanupWatchers:[],configurations:[]});g.cleanupWatchers.forEach(m=>m()),g.cleanupWatchers=[],g.configurations.forEach(m=>{m.unsubscribePublisher&&m.unsubscribePublisher()}),g.configurations=[];const f=[],h=[];for(let m=0;m<e.length;m++){const b=o[m],v=new Set,_=d=>{f[m]=d,mp(f,e.length,s)&&v.forEach(u=>u(...f))};h.push({publisher:null,onAssign:_,callbacks:v,unsubscribePublisher:null,pathConfig:b,index:m})}const w=(m,b)=>{if(m.unsubscribePublisher&&(m.unsubscribePublisher(),m.unsubscribePublisher=null),f[m.index]=null,m.publisher=null,!b)return;const v=io(b);v&&(v.onAssign(m.onAssign),m.unsubscribePublisher=()=>{v.offAssign(m.onAssign),m.publisher===v&&(m.publisher=null)},m.publisher=v)},A=()=>{for(const m of h)if(m.pathConfig.isDynamic){const b=Xt(c,m.pathConfig.originalPath);if(!b.ready){w(m,null);continue}w(m,b.path)}else w(m,m.pathConfig.originalPath)};for(const m of h)if(m.pathConfig.isDynamic)for(const b of m.pathConfig.dynamicDependencies){const v=Cs(Ia.watcherStore,Ia.hooked,c,b,()=>A());g.cleanupWatchers.push(v)}a=i.value.bind(c);for(const m of h)m.callbacks.add(a);A(),g.configurations=h}),r.__onDisconnected__(c=>{const g=c[n];g&&(g.cleanupWatchers.forEach(f=>f()),g.cleanupWatchers=[],g.configurations.forEach(f=>{f.unsubscribePublisher&&f.unsubscribePublisher(),f.callbacks.delete(a)}),g.configurations=[])})}}function gp(s){return Object.prototype.toString.call(s)==="[object DataProviderKey]"}function Cl(...s){const e=s[s.length-1],o=e!==void 0&&!gp(e),r=o?e:{},i=(o?s.slice(0,-1):s).map(n=>n.path);return kl({dispatchWhenUndefined:!r.waitForAllDefined,skip:r.skip},i)}function Al(){return function(s,e,o){let r=0;const t=o.value,i=s.constructor.prototype.disconnectedCallback;s.constructor.prototype.disconnectedCallback=function(){i?.apply(this),this.__removeAutoSubscribe__()};const n=s.connectedCallback;s.connectedCallback=function(){n?.call(this),this[e]()},o.value=function(...a){let c=new Set;const g=()=>{r++;const h=r;window.queueMicrotask(()=>{h===r&&this[e]()})};c.forEach(h=>{h.offAssign(g)}),R.collectModifiedPublisher();const f=t.apply(this,a);return c=R.getModifiedPublishers()||new Set,c.forEach(h=>{h.onAssign(g,!1)}),this.__removeAutoSubscribe__=()=>{c.forEach(h=>{h.offAssign(g)})},f}}}function fp(s){return function(e){Us(e);for(const o of s){const r=o.split(".");if(r.length===0)continue;const t=r.shift()||"";let i=R.get(t);i=Ao.traverse(i,r),e.__onConnected__(n=>{i.startTemplateFilling(n)}),e.__onDisconnected__(()=>{})}}}function Ur(s){return function(e,o){e&&(Us(e),e.__onBeforeConnected__(r=>{const t=ne.getAncestorAttributeValue(r,s);t!==null&&(r[o]=t)}))}}function bp(s){return s instanceof HTMLElement||s instanceof ShadowRoot?s:null}function yp(s){if(!s||typeof s.get!="function")return null;const e=s.get();return!e||typeof e!="object"||!("serviceURL"in e)?null:e}function vp(s){const e=bp(s);return e?ne.getApiConfiguration(e):null}function qa(s){s.configPublisher&&s.configMutationHandler&&s.configPublisher.offInternalMutation(s.configMutationHandler),s.configPublisher=null,s.configMutationHandler=null}function Fo(s,e){const o=s.path,r=e?.path,t=rs(o),i=r?rs(r):[],n=[...new Set([...t,...i])],a=t.length>0,c=!!r;return function(g,f){if(!g)return;Us(g);const h=`__get_state_${f}`;g.__onConnected__(w=>{const A=w;let m=A[h];m||(m={cleanupWatchers:[],requestGeneration:0,configPublisher:null,configMutationHandler:null},A[h]=m),m.cleanupWatchers.forEach(_=>_()),m.cleanupWatchers=[],m.requestGeneration++;const b=()=>{const _=a?Xt(w,o):{ready:!0,path:o};if(!_.ready||!_.path){A[f]=void 0;return}let d=null;if(c&&r){const x=Xt(w,r);if(!x.ready||!x.path){A[f]=void 0;return}const C=io(x.path);d=yp(C)}else d=vp(w);if(!d){A[f]=void 0;return}const u=++m.requestGeneration;new ss(d).getDetailed(_.path).then(x=>{u===m.requestGeneration&&(A[f]=x)})},v=()=>{if(!c||!r)return;qa(m);const _=Xt(w,r);if(!_.ready||!_.path){A[f]=void 0;return}const d=io(_.path);if(!d){A[f]=void 0;return}const u=()=>{b()};d.onInternalMutation(u),m.configPublisher=d,m.configMutationHandler=u};if(c){for(const _ of n){const d=Cs(Bo.watcherStore,Bo.hooked,w,_,()=>v());m.cleanupWatchers.push(d)}v()}else{if(a)for(const _ of t){const d=Cs(Bo.watcherStore,Bo.hooked,w,_,()=>b());m.cleanupWatchers.push(d)}b()}}),g.__onDisconnected__(w=>{const A=w,m=A[h];m&&(qa(m),m.cleanupWatchers.forEach(b=>b()),m.cleanupWatchers=[],m.requestGeneration++,A[f]=void 0)})}}const Ho="sonic-connected",wp=5e3,_i=Symbol.for("sonic-connected");function Pl(s){return s.tagName.includes("-")}function xp(s,e=wp){return!Pl(s)||s[_i]?Promise.resolve():new Promise(o=>{const r=()=>{s[_i]=!0,s.removeEventListener(Ho,r),o()};s.addEventListener(Ho,r),setTimeout(()=>{s.removeEventListener(Ho,r),o()},e)})}function _p(...s){return function(e){if(!s.length)return e;const o=e.prototype.connectedCallback;return e.prototype.connectedCallback=function(){const r=ne.getAncestorsBySelectors(this,s),t=r.filter(Pl),i=[...new Set(t.map(a=>a.tagName.toLowerCase()))].map(a=>customElements.whenDefined(a)),n=r.map(a=>xp(a));Promise.all([...i,...n]).then(()=>{o?.call(this)})},e}}function Dp(){return function(s){const e=s.prototype.connectedCallback;return s.prototype.connectedCallback=function(){e?.call(this),this[_i]=!0,this.dispatchEvent(new CustomEvent(Ho,{bubbles:!0}))},s}}const ps=Ln,Br=_l,Tn=Qe,Sl=Dl,$l=Cl,Eo=Ur,kp=Al,zr=Fo,On=_p,Kr=Dp;window["concorde-decorator-subscriber"]=window["concorde-decorator-subscriber"]||{};window["concorde-decorator-subscriber"]={bind:Ln,publish:_l,subscribe:Qe,onAssing:Dl,handle:Cl,ancestorAttribute:Ur,autoSubscribe:Al,autoFill:fp,get:Fo};var Cp=Object.defineProperty,Ap=Object.getOwnPropertyDescriptor,Hr=(s,e,o,r)=>{for(var t=r>1?void 0:r?Ap(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Cp(e,o,t),t};const Fl=new Ye("communes?limit=$limit&fields=nom,code"),El=new I(Fl.path),Pp="sonic-example";let no=class extends D{constructor(){super(...arguments),this.limit=5}render(){return p` <span part="api-get-demo">
1272
+ </div>`}return rt(r)})}`}};jr([l()],so.prototype,"state",2);jr([l({type:Boolean,reflect:!0})],so.prototype,"inverted",2);jr([l({type:Object})],so.prototype,"states",2);so=jr([k(tp)],so);var sp=Object.getOwnPropertyDescriptor,op=(s,e,o,r)=>{for(var t=r>1?void 0:r?sp(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const rp="sonic-scope";let Ta=class extends D{createRenderRoot(){return this}render(){return p`<slot></slot>`}};Ta=op([k(rp)],Ta);function ip(s){this.__beforeConnectedCallbackCalls__||(this.__beforeConnectedCallbackCalls__=new Set),this.__beforeConnectedCallbackCalls__.add(s)}function np(s){this.__connectedCallbackCalls__||(this.__connectedCallbackCalls__=new Set),this.__connectedCallbackCalls__.add(s)}function ap(s){this.__disconnectedCallbackCalls__||(this.__disconnectedCallbackCalls__=new Set),this.__disconnectedCallbackCalls__.add(s)}function Us(s){if(s.__is__setSubscribable__)return;s.__is__setSubscribable__=!0,s.__onBeforeConnected__=ip,s.__onConnected__=np,s.__onDisconnected__=ap;const e=s.connectedCallback;s.connectedCallback=function(){this.__beforeConnectedCallbackCalls__&&this.__beforeConnectedCallbackCalls__.forEach(r=>r(this)),e?.call(this),this.__connectedCallbackCalls__&&this.__connectedCallbackCalls__.forEach(r=>r(this))};const o=s.disconnectedCallback;s.disconnectedCallback=function(){o?.call(this),this.__disconnectedCallbackCalls__&&this.__disconnectedCallbackCalls__.forEach(r=>r(this))}}function lp(s){return s.trim().replace(/^this\./,"")}function En(s,e){if(!e)return;const o=e.split(".").filter(Boolean);if(o.length===0)return;let r=s;for(const t of o){if(r==null||typeof r!="object")return;r=r[t]}return r}function Xt(s,e){let o=!1;const r=(n,a)=>{const c=lp(a),g=En(s,c);return g==null?(o=!0,""):`${g}`},t=e.replace(/\$\{([^}]+)\}/g,r).replace(/\{\$([^}]+)\}/g,r).trim();if(o||!t.length)return{ready:!1,path:null};const i=t.split(".").filter(Boolean);return i.length===0||!i[0]?{ready:!1,path:null}:{ready:!0,path:t}}function rs(s){const e=[/\$\{([^}]+)\}/g,/\{\$([^}]+)\}/g],o=new Set;for(const r of e){let t;for(;(t=r.exec(s))!==null;){const i=(t[1]||"").trim().replace(/^this\./,"");if(!i)continue;const[n]=i.split(".");n&&o.add(n)}}return Array.from(o)}function wl(s){return typeof s=="object"&&s!==null&&"path"in s&&typeof s.path=="string"}const oo=new WeakMap,ro=new Set;let ws=null;const cp=8;function dp(s){let e=oo.get(s);return e||(e=new Map,oo.set(s,e)),e}function up(s,e){const o=new Set;for(const[r,t]of e){const i=En(s,r);Object.is(t.lastValue,i)||(t.lastValue=i,t.onChangeHandlers.forEach(n=>o.add(n)))}return o}function pp(){ws=null;let s=0,e=!0;for(;e&&s<cp;){e=!1,s+=1;for(const o of ro){const r=oo.get(o);if(!r||r.size===0)continue;const t=up(o,r);t.size!==0&&(e=!0,t.forEach(i=>i()))}}e&&console.warn("[concorde] dynamic property watch: limite de passes atteinte, boucle infinie probable"),ro.size>0&&xl()}function xl(){ws===null&&(ws=requestAnimationFrame(pp))}function hp(){ro.size===0&&ws!==null&&(cancelAnimationFrame(ws),ws=null)}function Cs(s,e,o,r,t){const i=String(r),n=dp(o);let a=n.get(i);return a||(a={lastValue:En(o,i),onChangeHandlers:new Set},n.set(i,a)),a.onChangeHandlers.add(t),ro.add(o),xl(),()=>{const c=oo.get(o);if(!c)return;const g=c.get(i);g&&(g.onChangeHandlers.delete(t),g.onChangeHandlers.size===0&&c.delete(i),c.size===0&&(oo.delete(o),ro.delete(o),hp()))}}const tr={watcherStore:Symbol("__bindDynamicWatcherStore__"),hooked:Symbol("__bindDynamicWillUpdateHooked__")},Oa={watcherStore:"__publishDynamicWatcherStore__",hooked:"__publishDynamicWillUpdateHooked__"},Bo={watcherStore:"__getDynamicWatcherStore__",hooked:"__getDynamicWillUpdateHooked__"},Ia={watcherStore:Symbol("__onAssignDynamicWatcherStore__"),hooked:Symbol("__onAssignDynamicWillUpdateHooked__")};function io(s){const e=s.split(".").filter(t=>t.length>0);if(e.length===0)return null;const o=e.shift()||"";if(!o)return null;let r=R.get(o);return r?(r=Ao.traverse(r,e),r):null}function mp(s,e){const o=e?.reflect??!1,r=rs(s),t=r.length>0;return function(i,n){if(!i)return;Us(i);const a=`__bind_state_${n}`,c=`__bind_${n}_publisher__`,g=o?`__bind_${n}_updating_from_publisher__`:null;if(o){const b=Object.getOwnPropertyDescriptor(i,n),h=`__bind_${n}_value__`,x=`__bind_${n}_updating_from_publisher__`,A=b&&!b.get&&!b.set?b.value:void 0;Object.defineProperty(i,n,{get(){return b?.get?b.get.call(this):(!Object.prototype.hasOwnProperty.call(this,h)&&A!==void 0&&(this[h]=A),this[h])},set(m){b?.set?b.set.call(this,m):this[h]=m,!this[x]&&this[c]&&this[c].set(m)},enumerable:b?.enumerable??!0,configurable:b?.configurable??!0})}i.__onConnected__(b=>{const h=b[a]||(b[a]={cleanupWatchers:[],unsubscribePublisher:null,currentPath:null});h.unsubscribePublisher&&(h.unsubscribePublisher(),h.unsubscribePublisher=null),h.cleanupWatchers.forEach(m=>m()),h.cleanupWatchers=[],h.currentPath=null;const x=m=>{if(!m){h.unsubscribePublisher&&(h.unsubscribePublisher(),h.unsubscribePublisher=null),h.currentPath=null,b[c]=null;return}if(m===h.currentPath)return;h.unsubscribePublisher&&(h.unsubscribePublisher(),h.unsubscribePublisher=null);const f=io(m);if(!f){h.currentPath=null,b[c]=null;return}const v=_=>{o&&g&&(b[g]=!0),b[n]=_,o&&g&&(b[g]=!1)};f.onAssign(v),h.unsubscribePublisher=()=>{f.offAssign(v),b[c]===f&&(b[c]=null)},h.currentPath=m,b[c]=f},A=()=>{if(t){const m=Xt(b,s);if(!m.ready){x(null);return}x(m.path);return}x(s)};if(t)for(const m of r){const f=Cs(tr.watcherStore,tr.hooked,b,m,()=>A());h.cleanupWatchers.push(f)}A()}),i.__onDisconnected__(b=>{const h=b[a];h&&(h.unsubscribePublisher&&(h.unsubscribePublisher(),h.unsubscribePublisher=null),h.cleanupWatchers.forEach(x=>x()),h.cleanupWatchers=[],h.currentPath=null,b[c]=null)})}}function Ln(s,e){const o=wl(s)?s.path:s;return mp(o,e)}function _l(s){const e=s.path,o=rs(e);return function(r,t){Us(r);const i=`__publish_${t}_publisher__`,n=`__publish_${t}_value__`,a=Object.getOwnPropertyDescriptor(r,t),c=a&&!a.get&&!a.set?a.value:void 0;Object.defineProperty(r,t,{get(){return a?.get?a.get.call(this):(!Object.prototype.hasOwnProperty.call(this,n)&&c!==void 0&&(this[n]=c),this[n])},set(g){a?.set?a.set.call(this,g):this[n]=g;const b=this[i];b&&b.set(g)},enumerable:a?.enumerable??!0,configurable:a?.configurable??!0}),r.__onConnected__(g=>{const b=g,h=`__publish_state_${t}`,x=b[h]||(b[h]={cleanupWatchers:[]}),A=()=>{let m;if(o.length){const v=Xt(g,e);m=v.ready?v.path:null}else m=e;const f=m?io(m):void 0;if(b[i]=f??null,f&&t in g){const v=b[t];v!==void 0&&f.set(v)}};if(x.cleanupWatchers.forEach(m=>m()),x.cleanupWatchers=[],o.length)for(const m of o)x.cleanupWatchers.push(Cs(Oa.watcherStore,Oa.hooked,b,m,A));A()}),r.__onDisconnected__(g=>{const b=g,h=`__publish_state_${t}`,x=b[h];x?.cleanupWatchers&&x.cleanupWatchers.forEach(A=>A()),b[i]=void 0})}}function Ze(s){return Ln(s)}const gp={nullish:s=>s==null,emptyString:s=>s==="",emptyObject:s=>typeof s=="object"&&s!==null&&!Array.isArray(s)&&Object.keys(s).length===0,emptyArray:s=>Array.isArray(s)&&s.length===0};function fp(s,e){return e.some(o=>gp[o](s))}function bp(s,e,o){if(!o.dispatchWhenUndefined&&s.slice(0,e).filter(t=>t!=null).length!==e)return!1;if(o.skip&&o.skip.length>0){for(let r=0;r<e;r++)if(fp(s[r],o.skip))return!1}return!0}function Dl(...s){return kl({},s)}function kl(s,e){const o=e.map(r=>{const t=rs(r);return{originalPath:r,dynamicDependencies:t,isDynamic:t.length>0}});return function(r,t,i){Us(r);const n=`__onAssign_state_${t}__`;let a;r.__onConnected__(c=>{const g=c[n]||(c[n]={cleanupWatchers:[],configurations:[]});g.cleanupWatchers.forEach(m=>m()),g.cleanupWatchers=[],g.configurations.forEach(m=>{m.unsubscribePublisher&&m.unsubscribePublisher()}),g.configurations=[];const b=[],h=[];for(let m=0;m<e.length;m++){const f=o[m],v=new Set,_=d=>{b[m]=d,bp(b,e.length,s)&&v.forEach(u=>u(...b))};h.push({publisher:null,onAssign:_,callbacks:v,unsubscribePublisher:null,pathConfig:f,index:m})}const x=(m,f)=>{if(m.unsubscribePublisher&&(m.unsubscribePublisher(),m.unsubscribePublisher=null),b[m.index]=null,m.publisher=null,!f)return;const v=io(f);v&&(v.onAssign(m.onAssign),m.unsubscribePublisher=()=>{v.offAssign(m.onAssign),m.publisher===v&&(m.publisher=null)},m.publisher=v)},A=()=>{for(const m of h)if(m.pathConfig.isDynamic){const f=Xt(c,m.pathConfig.originalPath);if(!f.ready){x(m,null);continue}x(m,f.path)}else x(m,m.pathConfig.originalPath)};for(const m of h)if(m.pathConfig.isDynamic)for(const f of m.pathConfig.dynamicDependencies){const v=Cs(Ia.watcherStore,Ia.hooked,c,f,()=>A());g.cleanupWatchers.push(v)}a=i.value.bind(c);for(const m of h)m.callbacks.add(a);A(),g.configurations=h}),r.__onDisconnected__(c=>{const g=c[n];g&&(g.cleanupWatchers.forEach(b=>b()),g.cleanupWatchers=[],g.configurations.forEach(b=>{b.unsubscribePublisher&&b.unsubscribePublisher(),b.callbacks.delete(a)}),g.configurations=[])})}}function yp(s){return Object.prototype.toString.call(s)==="[object DataProviderKey]"}function Cl(...s){const e=s[s.length-1],o=e!==void 0&&!yp(e),r=o?e:{},i=(o?s.slice(0,-1):s).map(n=>n.path);return kl({dispatchWhenUndefined:!r.waitForAllDefined,skip:r.skip},i)}function Al(){return function(s,e,o){let r=0;const t=o.value,i=s.constructor.prototype.disconnectedCallback;s.constructor.prototype.disconnectedCallback=function(){i?.apply(this),this.__removeAutoSubscribe__()};const n=s.connectedCallback;s.connectedCallback=function(){n?.call(this),this[e]()},o.value=function(...a){let c=new Set;const g=()=>{r++;const h=r;window.queueMicrotask(()=>{h===r&&this[e]()})};c.forEach(h=>{h.offAssign(g)}),R.collectModifiedPublisher();const b=t.apply(this,a);return c=R.getModifiedPublishers()||new Set,c.forEach(h=>{h.onAssign(g,!1)}),this.__removeAutoSubscribe__=()=>{c.forEach(h=>{h.offAssign(g)})},b}}}function vp(s){return function(e){Us(e);for(const o of s){const r=o.split(".");if(r.length===0)continue;const t=r.shift()||"";let i=R.get(t);i=Ao.traverse(i,r),e.__onConnected__(n=>{i.startTemplateFilling(n)}),e.__onDisconnected__(()=>{})}}}function Ur(s){return function(e,o){e&&(Us(e),e.__onBeforeConnected__(r=>{const t=ne.getAncestorAttributeValue(r,s);t!==null&&(r[o]=t)}))}}function Pl(s){return s instanceof HTMLElement||s instanceof ShadowRoot?s:null}function wp(s){if(!s||typeof s.get!="function")return null;const e=s.get();return!e||typeof e!="object"||!("serviceURL"in e)?null:e}function Sl(s){const e=Pl(s);return e?ne.getApiConfiguration(e):null}function $l(s){return typeof s?.serviceURL=="string"&&s.serviceURL.length>0}const xp=["serviceURL","serviceurl","token","credentials","tokenProvider","tokenprovider","userName","username","password","eventsApiToken","eventsapitoken"];function _p(s){return s instanceof HTMLElement&&typeof s.updateComplete<"u"}function Dp(s,e){if(_p(s)){let o=!1;return s.updateComplete.then(()=>{o||e()}),()=>{o=!0}}return e(),()=>{}}function kp(s,e){const o=Pl(s);if(!o)return()=>{};let r=!1;const t=()=>{r||$l(Sl(s))&&(r=!0,e())};if(t(),r)return()=>{};const i=[],n=requestAnimationFrame(()=>t());i.push(()=>cancelAnimationFrame(n)),queueMicrotask(()=>t());const a=new MutationObserver(()=>t());let c=o;for(;c;)c instanceof Element&&a.observe(c,{attributes:!0,attributeFilter:[...xp]}),c=c.parentNode||c.host;return i.push(()=>a.disconnect()),()=>{r=!0,i.forEach(g=>g())}}function qa(s){s.configPublisher&&s.configMutationHandler&&s.configPublisher.offInternalMutation(s.configMutationHandler),s.configPublisher=null,s.configMutationHandler=null}function Fo(s,e){const o=s.path,r=e?.path,t=rs(o),i=r?rs(r):[],n=[...new Set([...t,...i])],a=t.length>0,c=!!r;return function(g,b){if(!g)return;Us(g);const h=`__get_state_${b}`;g.__onConnected__(x=>{const A=x;let m=A[h];m||(m={cleanupWatchers:[],requestGeneration:0,configPublisher:null,configMutationHandler:null,scopeWatchCleanup:null},A[h]=m),m.cleanupWatchers.forEach(_=>_()),m.cleanupWatchers=[],m.requestGeneration++;const f=()=>{const _=a?Xt(x,o):{ready:!0,path:o};if(!_.ready||!_.path){A[b]=void 0;return}let d=null;if(c&&r){const w=Xt(x,r);if(!w.ready||!w.path){A[b]=void 0;return}const C=io(w.path);d=wp(C)}else d=Sl(x);if(!$l(d)){if(!c&&!m.scopeWatchCleanup){const w=kp(x,f);m.scopeWatchCleanup=w,m.cleanupWatchers.push(()=>{w(),m.scopeWatchCleanup=null})}return}const u=++m.requestGeneration;new ss(d).getDetailed(_.path).then(w=>{u===m.requestGeneration&&(A[b]=w)})},v=()=>{if(!c||!r)return;qa(m);const _=Xt(x,r);if(!_.ready||!_.path){A[b]=void 0;return}const d=io(_.path);if(!d){A[b]=void 0;return}const u=()=>{f()};d.onInternalMutation(u),m.configPublisher=d,m.configMutationHandler=u};if(c){for(const _ of n){const d=Cs(Bo.watcherStore,Bo.hooked,x,_,()=>v());m.cleanupWatchers.push(d)}v()}else{const _=()=>{if(a)for(const d of t){const u=Cs(Bo.watcherStore,Bo.hooked,x,d,()=>f());m.cleanupWatchers.push(u)}f()};m.cleanupWatchers.push(Dp(x,_))}}),g.__onDisconnected__(x=>{const A=x,m=A[h];m&&(qa(m),m.cleanupWatchers.forEach(f=>f()),m.cleanupWatchers=[],m.requestGeneration++,A[b]=void 0)})}}const Ho="sonic-connected",Cp=5e3,_i=Symbol.for("sonic-connected");function Fl(s){return s.tagName.includes("-")}function Ap(s,e=Cp){return!Fl(s)||s[_i]?Promise.resolve():new Promise(o=>{const r=()=>{s[_i]=!0,s.removeEventListener(Ho,r),o()};s.addEventListener(Ho,r),setTimeout(()=>{s.removeEventListener(Ho,r),o()},e)})}function Pp(...s){return function(e){if(!s.length)return e;const o=e.prototype.connectedCallback;return e.prototype.connectedCallback=function(){const r=ne.getAncestorsBySelectors(this,s),t=r.filter(Fl),i=[...new Set(t.map(a=>a.tagName.toLowerCase()))].map(a=>customElements.whenDefined(a)),n=r.map(a=>Ap(a));Promise.all([...i,...n]).then(()=>{o?.call(this)})},e}}function Sp(){return function(s){const e=s.prototype.connectedCallback;return s.prototype.connectedCallback=function(){e?.call(this),this[_i]=!0,this.dispatchEvent(new CustomEvent(Ho,{bubbles:!0}))},s}}const ps=Ln,Br=_l,Tn=Ze,El=Dl,Ll=Cl,Eo=Ur,$p=Al,zr=Fo,On=Pp,Kr=Sp;window["concorde-decorator-subscriber"]=window["concorde-decorator-subscriber"]||{};window["concorde-decorator-subscriber"]={bind:Ln,publish:_l,subscribe:Ze,onAssing:Dl,handle:Cl,ancestorAttribute:Ur,autoSubscribe:Al,autoFill:vp,get:Fo};var Fp=Object.defineProperty,Ep=Object.getOwnPropertyDescriptor,Hr=(s,e,o,r)=>{for(var t=r>1?void 0:r?Ep(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Fp(e,o,t),t};const Tl=new Qe("communes?limit=$limit&fields=nom,code"),Ol=new I(Tl.path),Lp="sonic-example";let no=class extends D{constructor(){super(...arguments),this.limit=5}render(){return p` <span part="api-get-demo">
1273
1273
  · get: ${JSON.stringify(this.geoCommunesPayload?.result??null)} · HTTP
1274
1274
  ${this.geoCommunesPayload?.response?.status??"—"} · subscribe:
1275
1275
  ${JSON.stringify(this.geoCommunesResult??null)}</span
1276
- >`}};Hr([l({type:Number})],no.prototype,"limit",2);Hr([zr(Fl),Br(El)],no.prototype,"geoCommunesPayload",2);Hr([$(),Tn(El.result)],no.prototype,"geoCommunesResult",2);no=Hr([k(Pp)],no);const Sp={tagName:"sonic-checkbox"},$p={tagName:"sonic-input",attributes:{type:"date"}},Fp={tagName:"sonic-fieldset",nodes:[{libraryKey:"formLayout"}],contentElementSelector:"sonic-form-layout"},Ep={tagName:"sonic-input",attributes:{variant:"ghost",type:"file"}},Lp={tagName:"sonic-input",attributes:{type:"password"}},Tp={tagName:"sonic-radio"},Op={tagName:"sonic-select"},Ip={tagName:"sonic-textarea"},qp={tagName:"sonic-input",attributes:{type:"text"}},Rp={tagName:"sonic-input",attributes:{type:"hidden"}},Np={tagName:"sonic-button"},Mp={tagName:"sonic-submit",attributes:{onEnterKey:!0}},jp={tagName:"sonic-submit",attributes:{onClick:!0},contentElementSelector:"sonic-button",nodes:[{libraryKey:"button",attributes:{type:"success"},nodes:[{tagName:"sonic-icon",attributes:{name:"check",slot:"prefix"}}]}]},Up={tagName:"sonic-input",attributes:{type:"email"}},Bp={tagName:"div",attributes:{class:"form-item-container"}},zp={tagName:"sonic-form-layout"},Kp={tagName:"sonic-form-actions"},Hp={tagName:"sonic-password-helper"},Vp={tagName:"sonic-same-value-helper"},Wp={tagName:"sonic-divider"},Gp={checkbox:Sp,date:$p,fieldset:Fp,managed_file:Ep,password:Lp,radio:Tp,select:Op,textarea:Ip,textfield:qp,hidden:Rp,button:Np,form:Mp,submit:jp,email:Up,formItemContainer:Bp,formLayout:zp,formActions:Kp,passwordHelper:Hp,sameValueHelper:Vp,divider:Wp};class Jp{async transform(e,o){if(this.sduiDescriptor=e,this.sduiDescriptor.library)for(const r in o.library)this.sduiDescriptor.library[r]=o.library[r];for(const r of o.transforms)this.transformAction(r)}transformAction(e){const o=this.getNodesMatchingPatterns(e.patterns,this.sduiDescriptor);this[e.action](e,o)}getNodesMatchingPatterns(e,o){if(!e)return[];if(!o)return[];const r=o.nodes;if(!r)return[];let t=[],i=0;for(const n of e)for(const a of r)this.nodeMatchesPattern(n,a)&&t.push({parent:o,child:a,index:i}),t=t.concat(this.getNodesMatchingPatterns([n],a)),i++;return t}stringMatchesExpression(e,o){return!o||e&&e.match(o)}nodeMatchesPattern(e,o){const r=e,t=o,i=["libraryKey","innerHTML","prefix","suffix","markup"];for(const c of i)if(!this.stringMatchesExpression(t[c],r[c]))return!1;const n=e.attributes,a=o.attributes;if(n&&!a)return!1;if(n){for(const c in n)if(!a||!this.stringMatchesExpression(a[c],n[c]))return!1}return!0}unwrap(e,o){for(const r of o)r.parent.nodes?.splice(r.parent.nodes.indexOf(r.child),1),r.child.nodes&&r.parent.nodes?.splice(r.parent.nodes.indexOf(r.child),0,...r.child.nodes)}wrap(e,o){const r={...e.ui};r.nodes||(r.nodes=[]);let t=0;for(const n of o)r.nodes?.push(n.child),t>0&&n.parent.nodes?.splice(n.parent.nodes.indexOf(n.child),1),t++;const i=o[0]?.parent.nodes?.indexOf(o[0].child);i&&(o[0].parent.nodes?.splice(i,1),o[0].parent.nodes?.splice(i,0,r))}move(e,o){for(const r of o){r.parent.nodes?.splice(r.parent.nodes.indexOf(r.child),1);let t=[];e.after&&(t=this.getNodesMatchingPatterns([e.after],this.sduiDescriptor)),e.before&&(t=this.getNodesMatchingPatterns([e.before],this.sduiDescriptor));const i=t[0];i&&i.parent.nodes?.splice(i.parent.nodes.indexOf(i.child)+(e.after?1:0),0,r.child)}}remap(e,o){for(const r of o){const t={...e.ui};t.attributes||(t.attributes={});const i=r.child.attributes;if(i)for(const h in i)Object.prototype.hasOwnProperty.call(t.attributes,"key")||(t.attributes[h]=i[h]);const n=["libraryKey","innerHTML","prefix","suffix","markup"],a=r.child,c=t;for(const h of n)!Object.prototype.hasOwnProperty.call(t,h)&&a[h]&&(c[h]=a[h]);t.nodes||(t.nodes=[]);const g=r.child.nodes;if(g)for(const h of g)t.nodes.push(h);const f=r.parent.nodes?.indexOf(r.child)||-1;f!=-1&&(r.parent.nodes?.splice(f,1),r.parent.nodes?.splice(f,0,t))}}delete(e,o){for(const r of o)r.parent.nodes?.splice(r.parent.nodes.indexOf(r.child),1)}insert(e,o){const r=e.after?"after":e.before?"before":"in";o=[],e.after?o=this.getNodesMatchingPatterns([e.after],this.sduiDescriptor):e.before?o=this.getNodesMatchingPatterns([e.before],this.sduiDescriptor):e.in&&(o=this.getNodesMatchingPatterns([e.in],this.sduiDescriptor));const t=o[0];t&&(r=="in"?(t.child.nodes||(t.child.nodes=[]),t.child.nodes.push({...e.ui})):t.parent.nodes?.splice(t.parent.nodes.indexOf(t.child)+(r=="after"?1:0),0,{...e.ui}))}}var Yp=Object.defineProperty,Qp=Object.getOwnPropertyDescriptor,In=(s,e,o,r)=>{for(var t=r>1?void 0:r?Qp(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Yp(e,o,t),t};const Zp="sonic-sdui";let sr=class extends ml(dt(D)){constructor(){super(...arguments),this.sduiDescriptor={}}connectedCallback(){this.noShadowDom="",this.displayContents=!0,this.isFetchEnabled=this.hasAttribute("fetch"),super.connectedCallback()}willUpdate(s){this.props==null&&(this.sduiDescriptor={});{const e=this.sduiKey?this.props[this.sduiKey]:this.props;if(this.sduiDescriptor==e)return;this.sduiDescriptor=e,this.updateContents()}super.willUpdate(s)}async updateContents(){if(!this.sduiDescriptor)return;const s={};Object.assign(s,Gp,this.sduiDescriptor.library),this.sduiDescriptor.library=s,this.loadAssets(),await this.loadLibrary(),await this.transformSDUIDescriptor(),this.parseRootNodes()}removeChildren(){for(;[...this.children].filter(s=>s.nodeName!="SLOT").length>0;)this.removeChild(this.children[0])}loadAssets(){if(this.sduiDescriptor){if(this.sduiDescriptor.js)for(const s of this.sduiDescriptor.js)Ot.loadJS(s);if(this.sduiDescriptor.css)for(const s of this.sduiDescriptor.css)Ot.loadCSS(s)}}async transformSDUIDescriptor(){if(!this.hasAttribute("transformation"))return;const e=await(await fetch(this.getAttribute("transformation"))).json();await new Jp().transform(this.sduiDescriptor,e)}async loadLibrary(){if(!this.hasAttribute("library"))return;const e=await(await fetch(this.getAttribute("library"))).json();this.sduiDescriptor.library=e}parseRootNodes(){if(this.removeChildren(),!this.sduiDescriptor)return;let s=this.sduiDescriptor.nodes;s||(s=[]);const e={tagName:"sonic-toast-message-subscriber",attributes:{}};this.messagesKey&&(e.attributes={subDataProvider:this.messagesKey}),s.push(e),s.forEach(o=>this.appendChild(this.parseChild(o)))}parseChild(s){const e=s.tagName||"div";let{element:o,contentElement:r}=this.handleLibrary(s,e);return this.handleAttributes(s,o),o=this.handleMarkup(s,o),r||(r=o),this.handleChildNodes(s,r,o),this.handleInnerHTML(s,r),s.prefix||s.suffix?this.handlePrefixSuffix(s,o):o}handlePrefixSuffix(s,e){const o=document.createElement("div");return o.innerHTML=(s.prefix||"")+e.outerHTML+(s.suffix||""),o.style.display="contents",o}handleChildNodes(s,e,o){if(s.nodes){const r=s.nodes;for(const t of r){const i=this.parseChild(t);let n=e;t.parentElementSelector&&(n=o.querySelector(t.parentElementSelector)||e),n.shadowRoot?n.shadowRoot.appendChild(i):n.tagName.toLocaleLowerCase()=="template"?n.content.appendChild(i):n.appendChild(i)}}}handleLibrary(s,e){let o,r;if(s.libraryKey&&this.sduiDescriptor.library){o=this.parseChild(this.sduiDescriptor.library[s.libraryKey]||{tagName:"div"});const t=(this.sduiDescriptor.library[s.libraryKey]||{}).contentElementSelector;t&&(r=o.querySelector(t))}else o=document.createElement(e);return{element:o,contentElement:r}}handleAttributes(s,e){const o=s.attributes;for(const r in o){const t=o[r],i=Ao.isObject(t)?JSON.stringify(t):t;e.setAttribute(r,i)}}handleMarkup(s,e){return s.markup&&(e=document.createElement("div"),e.style.display="contents",e.innerHTML=s.markup),e}handleInnerHTML(s,e){if(s.innerHTML)if(s.innerHTML.indexOf("wording_")!=-1){const o=this.getAncestorAttributeValue("wordingProvider");this.api?.post(o,{labels:[s.innerHTML.substring(8)]}).then(r=>{e&&(e.innerHTML+=r)})}else e&&(e.innerHTML+=s.innerHTML)}};In([l()],sr.prototype,"sduiKey",2);In([l()],sr.prototype,"messagesKey",2);sr=In([k(Zp)],sr);var Xp=Object.defineProperty,eh=Object.getOwnPropertyDescriptor,Ll=(s,e,o,r)=>{for(var t=r>1?void 0:r?eh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Xp(e,o,t),t};let or=class extends dt(D){constructor(){super(...arguments),this._composition={},this.listeners=[]}get composition(){return this._composition}set composition(s){this._composition=s,this.updateComposition()}connectedCallback(){super.connectedCallback(),this.updateComposition()}disconnectedCallback(){this.removePublisherListeners(),super.disconnectedCallback()}updateComposition(){this.removePublisherListeners(),this.publisher&&(this.publisher.set({}),this.parseComposition(this.composition,this.publisher))}removePublisherListeners(){const s=this.listeners;this.listeners=[],s.forEach(e=>{this.publisher.offAssign(e.subscriber)})}parseComposition(s,e){if(s)for(const o in s){const r=s[o];if(typeof r=="string"){const t=r.split("."),i=t.shift();if(!i)continue;let n=R.get(i);n=Ao.traverse(n,t);const a={publisher:n,subscriber:c=>{e[o]=c}};this.listeners.push(a),n.onAssign(a.subscriber),e._proxies_.set(o,n)}else{this.publisher[o]={};const t=new Xs({},e);e._proxies_.set(o,t);const i={publisher:t,subscriber:n=>{e[o]=n}};this.listeners.push(i),t.onAssign(i.subscriber),this.parseComposition(r,t)}}}render(){return p`<slot></slot>`}};or.styles=[L`
1276
+ >`}};Hr([l({type:Number})],no.prototype,"limit",2);Hr([zr(Tl),Br(Ol)],no.prototype,"geoCommunesPayload",2);Hr([$(),Tn(Ol.result)],no.prototype,"geoCommunesResult",2);no=Hr([k(Lp)],no);const Tp={tagName:"sonic-checkbox"},Op={tagName:"sonic-input",attributes:{type:"date"}},Ip={tagName:"sonic-fieldset",nodes:[{libraryKey:"formLayout"}],contentElementSelector:"sonic-form-layout"},qp={tagName:"sonic-input",attributes:{variant:"ghost",type:"file"}},Rp={tagName:"sonic-input",attributes:{type:"password"}},Np={tagName:"sonic-radio"},Mp={tagName:"sonic-select"},jp={tagName:"sonic-textarea"},Up={tagName:"sonic-input",attributes:{type:"text"}},Bp={tagName:"sonic-input",attributes:{type:"hidden"}},zp={tagName:"sonic-button"},Kp={tagName:"sonic-submit",attributes:{onEnterKey:!0}},Hp={tagName:"sonic-submit",attributes:{onClick:!0},contentElementSelector:"sonic-button",nodes:[{libraryKey:"button",attributes:{type:"success"},nodes:[{tagName:"sonic-icon",attributes:{name:"check",slot:"prefix"}}]}]},Vp={tagName:"sonic-input",attributes:{type:"email"}},Wp={tagName:"div",attributes:{class:"form-item-container"}},Gp={tagName:"sonic-form-layout"},Jp={tagName:"sonic-form-actions"},Yp={tagName:"sonic-password-helper"},Qp={tagName:"sonic-same-value-helper"},Zp={tagName:"sonic-divider"},Xp={checkbox:Tp,date:Op,fieldset:Ip,managed_file:qp,password:Rp,radio:Np,select:Mp,textarea:jp,textfield:Up,hidden:Bp,button:zp,form:Kp,submit:Hp,email:Vp,formItemContainer:Wp,formLayout:Gp,formActions:Jp,passwordHelper:Yp,sameValueHelper:Qp,divider:Zp};class eh{async transform(e,o){if(this.sduiDescriptor=e,this.sduiDescriptor.library)for(const r in o.library)this.sduiDescriptor.library[r]=o.library[r];for(const r of o.transforms)this.transformAction(r)}transformAction(e){const o=this.getNodesMatchingPatterns(e.patterns,this.sduiDescriptor);this[e.action](e,o)}getNodesMatchingPatterns(e,o){if(!e)return[];if(!o)return[];const r=o.nodes;if(!r)return[];let t=[],i=0;for(const n of e)for(const a of r)this.nodeMatchesPattern(n,a)&&t.push({parent:o,child:a,index:i}),t=t.concat(this.getNodesMatchingPatterns([n],a)),i++;return t}stringMatchesExpression(e,o){return!o||e&&e.match(o)}nodeMatchesPattern(e,o){const r=e,t=o,i=["libraryKey","innerHTML","prefix","suffix","markup"];for(const c of i)if(!this.stringMatchesExpression(t[c],r[c]))return!1;const n=e.attributes,a=o.attributes;if(n&&!a)return!1;if(n){for(const c in n)if(!a||!this.stringMatchesExpression(a[c],n[c]))return!1}return!0}unwrap(e,o){for(const r of o)r.parent.nodes?.splice(r.parent.nodes.indexOf(r.child),1),r.child.nodes&&r.parent.nodes?.splice(r.parent.nodes.indexOf(r.child),0,...r.child.nodes)}wrap(e,o){const r={...e.ui};r.nodes||(r.nodes=[]);let t=0;for(const n of o)r.nodes?.push(n.child),t>0&&n.parent.nodes?.splice(n.parent.nodes.indexOf(n.child),1),t++;const i=o[0]?.parent.nodes?.indexOf(o[0].child);i&&(o[0].parent.nodes?.splice(i,1),o[0].parent.nodes?.splice(i,0,r))}move(e,o){for(const r of o){r.parent.nodes?.splice(r.parent.nodes.indexOf(r.child),1);let t=[];e.after&&(t=this.getNodesMatchingPatterns([e.after],this.sduiDescriptor)),e.before&&(t=this.getNodesMatchingPatterns([e.before],this.sduiDescriptor));const i=t[0];i&&i.parent.nodes?.splice(i.parent.nodes.indexOf(i.child)+(e.after?1:0),0,r.child)}}remap(e,o){for(const r of o){const t={...e.ui};t.attributes||(t.attributes={});const i=r.child.attributes;if(i)for(const h in i)Object.prototype.hasOwnProperty.call(t.attributes,"key")||(t.attributes[h]=i[h]);const n=["libraryKey","innerHTML","prefix","suffix","markup"],a=r.child,c=t;for(const h of n)!Object.prototype.hasOwnProperty.call(t,h)&&a[h]&&(c[h]=a[h]);t.nodes||(t.nodes=[]);const g=r.child.nodes;if(g)for(const h of g)t.nodes.push(h);const b=r.parent.nodes?.indexOf(r.child)||-1;b!=-1&&(r.parent.nodes?.splice(b,1),r.parent.nodes?.splice(b,0,t))}}delete(e,o){for(const r of o)r.parent.nodes?.splice(r.parent.nodes.indexOf(r.child),1)}insert(e,o){const r=e.after?"after":e.before?"before":"in";o=[],e.after?o=this.getNodesMatchingPatterns([e.after],this.sduiDescriptor):e.before?o=this.getNodesMatchingPatterns([e.before],this.sduiDescriptor):e.in&&(o=this.getNodesMatchingPatterns([e.in],this.sduiDescriptor));const t=o[0];t&&(r=="in"?(t.child.nodes||(t.child.nodes=[]),t.child.nodes.push({...e.ui})):t.parent.nodes?.splice(t.parent.nodes.indexOf(t.child)+(r=="after"?1:0),0,{...e.ui}))}}var th=Object.defineProperty,sh=Object.getOwnPropertyDescriptor,In=(s,e,o,r)=>{for(var t=r>1?void 0:r?sh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&th(e,o,t),t};const oh="sonic-sdui";let sr=class extends ml(dt(D)){constructor(){super(...arguments),this.sduiDescriptor={}}connectedCallback(){this.noShadowDom="",this.displayContents=!0,this.isFetchEnabled=this.hasAttribute("fetch"),super.connectedCallback()}willUpdate(s){this.props==null&&(this.sduiDescriptor={});{const e=this.sduiKey?this.props[this.sduiKey]:this.props;if(this.sduiDescriptor==e)return;this.sduiDescriptor=e,this.updateContents()}super.willUpdate(s)}async updateContents(){if(!this.sduiDescriptor)return;const s={};Object.assign(s,Xp,this.sduiDescriptor.library),this.sduiDescriptor.library=s,this.loadAssets(),await this.loadLibrary(),await this.transformSDUIDescriptor(),this.parseRootNodes()}removeChildren(){for(;[...this.children].filter(s=>s.nodeName!="SLOT").length>0;)this.removeChild(this.children[0])}loadAssets(){if(this.sduiDescriptor){if(this.sduiDescriptor.js)for(const s of this.sduiDescriptor.js)Ot.loadJS(s);if(this.sduiDescriptor.css)for(const s of this.sduiDescriptor.css)Ot.loadCSS(s)}}async transformSDUIDescriptor(){if(!this.hasAttribute("transformation"))return;const e=await(await fetch(this.getAttribute("transformation"))).json();await new eh().transform(this.sduiDescriptor,e)}async loadLibrary(){if(!this.hasAttribute("library"))return;const e=await(await fetch(this.getAttribute("library"))).json();this.sduiDescriptor.library=e}parseRootNodes(){if(this.removeChildren(),!this.sduiDescriptor)return;let s=this.sduiDescriptor.nodes;s||(s=[]);const e={tagName:"sonic-toast-message-subscriber",attributes:{}};this.messagesKey&&(e.attributes={subDataProvider:this.messagesKey}),s.push(e),s.forEach(o=>this.appendChild(this.parseChild(o)))}parseChild(s){const e=s.tagName||"div";let{element:o,contentElement:r}=this.handleLibrary(s,e);return this.handleAttributes(s,o),o=this.handleMarkup(s,o),r||(r=o),this.handleChildNodes(s,r,o),this.handleInnerHTML(s,r),s.prefix||s.suffix?this.handlePrefixSuffix(s,o):o}handlePrefixSuffix(s,e){const o=document.createElement("div");return o.innerHTML=(s.prefix||"")+e.outerHTML+(s.suffix||""),o.style.display="contents",o}handleChildNodes(s,e,o){if(s.nodes){const r=s.nodes;for(const t of r){const i=this.parseChild(t);let n=e;t.parentElementSelector&&(n=o.querySelector(t.parentElementSelector)||e),n.shadowRoot?n.shadowRoot.appendChild(i):n.tagName.toLocaleLowerCase()=="template"?n.content.appendChild(i):n.appendChild(i)}}}handleLibrary(s,e){let o,r;if(s.libraryKey&&this.sduiDescriptor.library){o=this.parseChild(this.sduiDescriptor.library[s.libraryKey]||{tagName:"div"});const t=(this.sduiDescriptor.library[s.libraryKey]||{}).contentElementSelector;t&&(r=o.querySelector(t))}else o=document.createElement(e);return{element:o,contentElement:r}}handleAttributes(s,e){const o=s.attributes;for(const r in o){const t=o[r],i=Ao.isObject(t)?JSON.stringify(t):t;e.setAttribute(r,i)}}handleMarkup(s,e){return s.markup&&(e=document.createElement("div"),e.style.display="contents",e.innerHTML=s.markup),e}handleInnerHTML(s,e){if(s.innerHTML)if(s.innerHTML.indexOf("wording_")!=-1){const o=this.getAncestorAttributeValue("wordingProvider");this.api?.post(o,{labels:[s.innerHTML.substring(8)]}).then(r=>{e&&(e.innerHTML+=r)})}else e&&(e.innerHTML+=s.innerHTML)}};In([l()],sr.prototype,"sduiKey",2);In([l()],sr.prototype,"messagesKey",2);sr=In([k(oh)],sr);var rh=Object.defineProperty,ih=Object.getOwnPropertyDescriptor,Il=(s,e,o,r)=>{for(var t=r>1?void 0:r?ih(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&rh(e,o,t),t};let or=class extends dt(D){constructor(){super(...arguments),this._composition={},this.listeners=[]}get composition(){return this._composition}set composition(s){this._composition=s,this.updateComposition()}connectedCallback(){super.connectedCallback(),this.updateComposition()}disconnectedCallback(){this.removePublisherListeners(),super.disconnectedCallback()}updateComposition(){this.removePublisherListeners(),this.publisher&&(this.publisher.set({}),this.parseComposition(this.composition,this.publisher))}removePublisherListeners(){const s=this.listeners;this.listeners=[],s.forEach(e=>{this.publisher.offAssign(e.subscriber)})}parseComposition(s,e){if(s)for(const o in s){const r=s[o];if(typeof r=="string"){const t=r.split("."),i=t.shift();if(!i)continue;let n=R.get(i);n=Ao.traverse(n,t);const a={publisher:n,subscriber:c=>{e[o]=c}};this.listeners.push(a),n.onAssign(a.subscriber),e._proxies_.set(o,n)}else{this.publisher[o]={};const t=new Xs({},e);e._proxies_.set(o,t);const i={publisher:t,subscriber:n=>{e[o]=n}};this.listeners.push(i),t.onAssign(i.subscriber),this.parseComposition(r,t)}}}render(){return p`<slot></slot>`}};or.styles=[L`
1277
1277
  :host {
1278
1278
  display: contents;
1279
1279
  }
1280
- `];Ll([l({type:Object})],or.prototype,"composition",1);or=Ll([k("sonic-mix")],or);var th=Object.getOwnPropertyDescriptor,sh=(s,e,o,r)=>{for(var t=r>1?void 0:r?th(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const oh="sonic-value";let Ra=class extends dt(D){connectedCallback(){this.setAttribute("subDataProvider",this.getAttribute("key")),super.connectedCallback()}render(){return typeof this.props=="object"||this.props===void 0?p`<slot name="prefix"></slot><slot></slot><slot name="suffix"></slot>`:p`${V(this.props.toString())}<slot name="prefix"></slot><slot></slot
1281
- ><slot name="suffix"></slot>`}};Ra=sh([k(oh)],Ra);var rh=Object.defineProperty,ih=Object.getOwnPropertyDescriptor,qn=(s,e,o,r)=>{for(var t=r>1?void 0:r?ih(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&rh(e,o,t),t};const nh="sonic-t";let rr=class extends D{render(){return this.key?p`${fd(this.key,this.unsafeHTML)}`:S}};qn([l({type:String})],rr.prototype,"key",2);qn([l({type:Boolean})],rr.prototype,"unsafeHTML",2);rr=qn([k(nh)],rr);var ah=Object.defineProperty,lh=Object.getOwnPropertyDescriptor,Lo=(s,e,o,r)=>{for(var t=r>1?void 0:r?lh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&ah(e,o,t),t};const ch="sonic-badge";let is=class extends D{constructor(){super(...arguments),this.type="default",this.variant="default",this.ellipsis=!1}render(){return p`
1280
+ `];Il([l({type:Object})],or.prototype,"composition",1);or=Il([k("sonic-mix")],or);var nh=Object.getOwnPropertyDescriptor,ah=(s,e,o,r)=>{for(var t=r>1?void 0:r?nh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const lh="sonic-value";let Ra=class extends dt(D){connectedCallback(){this.setAttribute("subDataProvider",this.getAttribute("key")),super.connectedCallback()}render(){return typeof this.props=="object"||this.props===void 0?p`<slot name="prefix"></slot><slot></slot><slot name="suffix"></slot>`:p`${V(this.props.toString())}<slot name="prefix"></slot><slot></slot
1281
+ ><slot name="suffix"></slot>`}};Ra=ah([k(lh)],Ra);var ch=Object.defineProperty,dh=Object.getOwnPropertyDescriptor,qn=(s,e,o,r)=>{for(var t=r>1?void 0:r?dh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&ch(e,o,t),t};const uh="sonic-t";let rr=class extends D{render(){return this.key?p`${vd(this.key,this.unsafeHTML)}`:S}};qn([l({type:String})],rr.prototype,"key",2);qn([l({type:Boolean})],rr.prototype,"unsafeHTML",2);rr=qn([k(uh)],rr);var ph=Object.defineProperty,hh=Object.getOwnPropertyDescriptor,Lo=(s,e,o,r)=>{for(var t=r>1?void 0:r?hh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&ph(e,o,t),t};const mh="sonic-badge";let is=class extends D{constructor(){super(...arguments),this.type="default",this.variant="default",this.ellipsis=!1}render(){return p`
1282
1282
  <slot name="prefix"></slot>
1283
1283
  <slot></slot>
1284
1284
  <slot name="suffix"></slot>
@@ -1422,7 +1422,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1422
1422
  slot[name="prefix"] {
1423
1423
  flex-shrink: 0;
1424
1424
  }
1425
- `];Lo([l({type:String,reflect:!0})],is.prototype,"type",2);Lo([l({type:String,reflect:!0})],is.prototype,"variant",2);Lo([l({type:String,reflect:!0})],is.prototype,"size",2);Lo([l({type:Boolean,reflect:!0})],is.prototype,"ellipsis",2);is=Lo([k(ch)],is);class dh{static fixBlankLink(e){const r=typeof require>"u"||typeof process!="object"?null:require("electron");e.target=="_blank"&&e.addEventListener("click",()=>{r?.shell.openExternal(e.href)})}}var uh=Object.defineProperty,ph=Object.getOwnPropertyDescriptor,Bs=(s,e,o,r)=>{for(var t=r>1?void 0:r?ph(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&uh(e,o,t),t};const hh="sonic-link";let qt=class extends D{constructor(){super(...arguments),this.href="",this._location="",this.ariaLabel=null,this.autoActive="partial",this._target=null,this.pushState=null}get location(){return this._location}set location(s){this._location=s,me.updateComponentActiveState(this)}connectedCallback(){this.href&&this.href.indexOf("http")!=0&&(me.onChange(this),this.location=document.location.href.replace(document.location.origin,"")),this.addEventListener("keypress",s=>{s.key==="Enter"&&this.shadowRoot?.querySelector("a")?.click()}),this.setFocusable(),super.connectedCallback()}setFocusable(){this.href?this.setAttribute("tabIndex","0"):this.removeAttribute("tabIndex")}disconnectedCallback(){me.offChange(this),super.disconnectedCallback()}set target(s){this._target=s,dh.fixBlankLink(this),this.requestUpdate()}get target(){return this._target}handlePushState(s){s.preventDefault(),me.changeFromComponent(this)}updated(s){s.has("href")&&this.setFocusable()}render(){return this.href?p`
1425
+ `];Lo([l({type:String,reflect:!0})],is.prototype,"type",2);Lo([l({type:String,reflect:!0})],is.prototype,"variant",2);Lo([l({type:String,reflect:!0})],is.prototype,"size",2);Lo([l({type:Boolean,reflect:!0})],is.prototype,"ellipsis",2);is=Lo([k(mh)],is);class gh{static fixBlankLink(e){const r=typeof require>"u"||typeof process!="object"?null:require("electron");e.target=="_blank"&&e.addEventListener("click",()=>{r?.shell.openExternal(e.href)})}}var fh=Object.defineProperty,bh=Object.getOwnPropertyDescriptor,Bs=(s,e,o,r)=>{for(var t=r>1?void 0:r?bh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&fh(e,o,t),t};const yh="sonic-link";let qt=class extends D{constructor(){super(...arguments),this.href="",this._location="",this.ariaLabel=null,this.autoActive="partial",this._target=null,this.pushState=null}get location(){return this._location}set location(s){this._location=s,me.updateComponentActiveState(this)}connectedCallback(){this.href&&this.href.indexOf("http")!=0&&(me.onChange(this),this.location=document.location.href.replace(document.location.origin,"")),this.addEventListener("keypress",s=>{s.key==="Enter"&&this.shadowRoot?.querySelector("a")?.click()}),this.setFocusable(),super.connectedCallback()}setFocusable(){this.href?this.setAttribute("tabIndex","0"):this.removeAttribute("tabIndex")}disconnectedCallback(){me.offChange(this),super.disconnectedCallback()}set target(s){this._target=s,gh.fixBlankLink(this),this.requestUpdate()}get target(){return this._target}handlePushState(s){s.preventDefault(),me.changeFromComponent(this)}updated(s){s.has("href")&&this.setFocusable()}render(){return this.href?p`
1426
1426
  <a
1427
1427
  href="${this.href}"
1428
1428
  aria-label=${this.ariaLabel||S}
@@ -1437,7 +1437,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1437
1437
  text-decoration: none;
1438
1438
  display: contents;
1439
1439
  }
1440
- `];Bs([l({type:String})],qt.prototype,"href",2);Bs([l({type:String,attribute:"data-aria-label"})],qt.prototype,"ariaLabel",2);Bs([l({type:String})],qt.prototype,"autoActive",2);Bs([l({type:String})],qt.prototype,"target",1);Bs([l({type:Boolean})],qt.prototype,"pushState",2);qt=Bs([k(hh)],qt);var mh=Object.defineProperty,gh=Object.getOwnPropertyDescriptor,zs=(s,e,o,r)=>{for(var t=r>1?void 0:r?gh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&mh(e,o,t),t};const fh="sonic-progress";let Rt=class extends D{constructor(){super(...arguments),this.max=100,this.invert=!1,this.type="default"}render(){return p`
1440
+ `];Bs([l({type:String})],qt.prototype,"href",2);Bs([l({type:String,attribute:"data-aria-label"})],qt.prototype,"ariaLabel",2);Bs([l({type:String})],qt.prototype,"autoActive",2);Bs([l({type:String})],qt.prototype,"target",1);Bs([l({type:Boolean})],qt.prototype,"pushState",2);qt=Bs([k(yh)],qt);var vh=Object.defineProperty,wh=Object.getOwnPropertyDescriptor,zs=(s,e,o,r)=>{for(var t=r>1?void 0:r?wh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&vh(e,o,t),t};const xh="sonic-progress";let Rt=class extends D{constructor(){super(...arguments),this.max=100,this.invert=!1,this.type="default"}render(){return p`
1441
1441
  <progress value=${T(this.value)} max=${this.max}></progress>
1442
1442
  <div class="slot-container">
1443
1443
  <slot></slot>
@@ -1555,7 +1555,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1555
1555
  gap: 0.5em;
1556
1556
  margin-top: 0.15em;
1557
1557
  }
1558
- `];zs([l({type:Number})],Rt.prototype,"value",2);zs([l({type:Number})],Rt.prototype,"max",2);zs([l({type:Boolean})],Rt.prototype,"invert",2);zs([l({type:String,reflect:!0})],Rt.prototype,"type",2);zs([l({type:String,reflect:!0})],Rt.prototype,"size",2);Rt=zs([k(fh)],Rt);const bh=L`
1558
+ `];zs([l({type:Number})],Rt.prototype,"value",2);zs([l({type:Number})],Rt.prototype,"max",2);zs([l({type:Boolean})],Rt.prototype,"invert",2);zs([l({type:String,reflect:!0})],Rt.prototype,"type",2);zs([l({type:String,reflect:!0})],Rt.prototype,"size",2);Rt=zs([k(xh)],Rt);const _h=L`
1559
1559
  .password-toggle {
1560
1560
  color: var(--sc-input-c);
1561
1561
  font-size: var(--sc-input-fs);
@@ -1946,7 +1946,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
1946
1946
  * @license
1947
1947
  * Copyright 2018 Google LLC
1948
1948
  * SPDX-License-Identifier: BSD-3-Clause
1949
- */const Nn=Ut(class extends Rs{constructor(s){if(super(s),s.type!==us.ATTRIBUTE||s.name!=="class"||s.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(s){return" "+Object.keys(s).filter((e=>s[e])).join(" ")+" "}update(s,[e]){if(this.st===void 0){this.st=new Set,s.strings!==void 0&&(this.nt=new Set(s.strings.join(" ").split(/\s/).filter((r=>r!==""))));for(const r in e)e[r]&&!this.nt?.has(r)&&this.st.add(r);return this.render(e)}const o=s.element.classList;for(const r of this.st)r in e||(o.remove(r),this.st.delete(r));for(const r in e){const t=!!e[r];t===this.st.has(r)||this.nt?.has(r)||(t?(o.add(r),this.st.add(r)):(o.remove(r),this.st.delete(r)))}return Me}});var yh=Object.defineProperty,vh=Object.getOwnPropertyDescriptor,Q=(s,e,o,r)=>{for(var t=r>1?void 0:r?vh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&yh(e,o,t),t};const wh="sonic-input";let G=class extends Mr(Ns(de(D))){constructor(){super(...arguments),this.readonly=!1,this.inlineContent=!1,this.disableInlineContentFocus=!1,this.showPasswordToggle=!1,this.autoActive=!1,this.active=!1,this.hasDescription=!1,this.hasLabel=!1,this.hasSuffix=!1,this.hasPrefix=!1,this.isPassword=!1}connectedCallback(){if(super.connectedCallback(),this.hasSlotOrProps(),this.hasAttribute("sameValueAs")){this.sameValueAsName=this.getAttribute("sameValueAs"),this.sameValueAsHandle=e=>this.pattern=this.escapeRegExp(e);const s=this.getFormPublisher();if(!s)return;s[this.sameValueAsName].onAssign(this.sameValueAsHandle)}this.type=="password"&&(this.isPassword=!0,this.showPasswordToggle=!0,this.inlineContent=!0)}disconnectedCallback(){if(super.disconnectedCallback(),this.hasAttribute("sameValueAs")&&this.sameValueAsName){const s=this.getFormPublisher();if(!s)return;s[this.sameValueAsName].offAssign(this.sameValueAsHandle)}}escapeRegExp(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}willUpdate(s){this.hasSlotOrProps(),this.autoActive&&s.has("value")&&(this.active=!!this.value),super.willUpdate(s)}setSelectionRange(s,e){this.input.setSelectionRange(s,e)}hasSlotOrProps(){this.hasLabel=!!(this.label||this.slotLabelNodes?.length),this.hasDescription=!!(this.description||this.slotDescriptionNodes?.length),this.hasSuffix=!!this.slotSuffixNodes?.length,this.hasPrefix=!!this.slotPrefixNodes?.length}inlineContentFocus(){!this.inlineContent||this.disableInlineContentFocus||this.input?.focus()}handleChange(s){if(!this.hasAttribute("inputDelayMs")){super.handleChange(s);return}this.changeTimeoutId&&clearTimeout(this.changeTimeoutId),this.changeTimeoutId=setTimeout(()=>super.handleChange(s),parseInt(this.getAttribute("inputDelayMs")))}togglePasswordVisibility(s){s.preventDefault(),s.stopPropagation(),this.isPassword=!this.isPassword,this._type=this.isPassword?"password":"text"}render(){const s={"has-prefix":this.hasPrefix,"has-suffix":this.hasSuffix,"no-suffix":!this.hasSuffix,"no-prefix":!this.hasPrefix};return p`
1949
+ */const Nn=Ut(class extends Rs{constructor(s){if(super(s),s.type!==us.ATTRIBUTE||s.name!=="class"||s.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(s){return" "+Object.keys(s).filter((e=>s[e])).join(" ")+" "}update(s,[e]){if(this.st===void 0){this.st=new Set,s.strings!==void 0&&(this.nt=new Set(s.strings.join(" ").split(/\s/).filter((r=>r!==""))));for(const r in e)e[r]&&!this.nt?.has(r)&&this.st.add(r);return this.render(e)}const o=s.element.classList;for(const r of this.st)r in e||(o.remove(r),this.st.delete(r));for(const r in e){const t=!!e[r];t===this.st.has(r)||this.nt?.has(r)||(t?(o.add(r),this.st.add(r)):(o.remove(r),this.st.delete(r)))}return Me}});var Dh=Object.defineProperty,kh=Object.getOwnPropertyDescriptor,Q=(s,e,o,r)=>{for(var t=r>1?void 0:r?kh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Dh(e,o,t),t};const Ch="sonic-input";let G=class extends Mr(Ns(de(D))){constructor(){super(...arguments),this.readonly=!1,this.inlineContent=!1,this.disableInlineContentFocus=!1,this.showPasswordToggle=!1,this.autoActive=!1,this.active=!1,this.hasDescription=!1,this.hasLabel=!1,this.hasSuffix=!1,this.hasPrefix=!1,this.isPassword=!1}connectedCallback(){if(super.connectedCallback(),this.hasSlotOrProps(),this.hasAttribute("sameValueAs")){this.sameValueAsName=this.getAttribute("sameValueAs"),this.sameValueAsHandle=e=>this.pattern=this.escapeRegExp(e);const s=this.getFormPublisher();if(!s)return;s[this.sameValueAsName].onAssign(this.sameValueAsHandle)}this.type=="password"&&(this.isPassword=!0,this.showPasswordToggle=!0,this.inlineContent=!0)}disconnectedCallback(){if(super.disconnectedCallback(),this.hasAttribute("sameValueAs")&&this.sameValueAsName){const s=this.getFormPublisher();if(!s)return;s[this.sameValueAsName].offAssign(this.sameValueAsHandle)}}escapeRegExp(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}willUpdate(s){this.hasSlotOrProps(),this.autoActive&&s.has("value")&&(this.active=!!this.value),super.willUpdate(s)}setSelectionRange(s,e){this.input.setSelectionRange(s,e)}hasSlotOrProps(){this.hasLabel=!!(this.label||this.slotLabelNodes?.length),this.hasDescription=!!(this.description||this.slotDescriptionNodes?.length),this.hasSuffix=!!this.slotSuffixNodes?.length,this.hasPrefix=!!this.slotPrefixNodes?.length}inlineContentFocus(){!this.inlineContent||this.disableInlineContentFocus||this.input?.focus()}handleChange(s){if(!this.hasAttribute("inputDelayMs")){super.handleChange(s);return}this.changeTimeoutId&&clearTimeout(this.changeTimeoutId),this.changeTimeoutId=setTimeout(()=>super.handleChange(s),parseInt(this.getAttribute("inputDelayMs")))}togglePasswordVisibility(s){s.preventDefault(),s.stopPropagation(),this.isPassword=!this.isPassword,this._type=this.isPassword?"password":"text"}render(){const s={"has-prefix":this.hasPrefix,"has-suffix":this.hasSuffix,"no-suffix":!this.hasSuffix,"no-prefix":!this.hasPrefix};return p`
1950
1950
  <label for="${this.id||"form-element"}" class="${this.hasLabel?"form-label":"hidden"}"
1951
1951
  >${this.label?V(this.label):""}<slot
1952
1952
  name="label"
@@ -2011,7 +2011,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
2011
2011
  >${this.description?p`${V(this.description)}`:S}</slot>
2012
2012
  <slot name="list"></slot>
2013
2013
  </div>
2014
- `}};G.styles=[ct,Rn,Vr,Wr,bh,L`
2014
+ `}};G.styles=[ct,Rn,Vr,Wr,_h,L`
2015
2015
  :host([type="hidden"]) {
2016
2016
  appearance: none !important;
2017
2017
  display: none !important;
@@ -2019,7 +2019,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
2019
2019
  :host > .form-control {
2020
2020
  position: relative;
2021
2021
  }
2022
- `];Q([l({type:String,reflect:!0})],G.prototype,"size",2);Q([l({type:String})],G.prototype,"inputmode",2);Q([l({type:String})],G.prototype,"list",2);Q([l({type:String})],G.prototype,"placeholder",2);Q([l({type:String})],G.prototype,"pattern",2);Q([l({type:String})],G.prototype,"min",2);Q([l({type:String})],G.prototype,"max",2);Q([l({type:Boolean,reflect:!0})],G.prototype,"readonly",2);Q([l({type:Number})],G.prototype,"step",2);Q([l({type:Number})],G.prototype,"minlength",2);Q([l({type:Number})],G.prototype,"maxlength",2);Q([l({type:String})],G.prototype,"src",2);Q([l({type:Boolean,reflect:!0})],G.prototype,"inlineContent",2);Q([l({type:Boolean})],G.prototype,"disableInlineContentFocus",2);Q([l({type:Boolean})],G.prototype,"showPasswordToggle",2);Q([l({type:Boolean})],G.prototype,"autoActive",2);Q([l({type:Boolean,reflect:!0})],G.prototype,"active",2);Q([Ce({slot:"label",flatten:!0})],G.prototype,"slotLabelNodes",2);Q([Ce({slot:"description",flatten:!0})],G.prototype,"slotDescriptionNodes",2);Q([Ce({slot:"suffix",flatten:!0})],G.prototype,"slotSuffixNodes",2);Q([Ce({slot:"prefix",flatten:!0})],G.prototype,"slotPrefixNodes",2);Q([lt("input")],G.prototype,"input",2);Q([$()],G.prototype,"hasDescription",2);Q([$()],G.prototype,"hasLabel",2);Q([$()],G.prototype,"hasSuffix",2);Q([$()],G.prototype,"hasPrefix",2);Q([$()],G.prototype,"isPassword",2);G=Q([k(wh)],G);const Tl=L`
2022
+ `];Q([l({type:String,reflect:!0})],G.prototype,"size",2);Q([l({type:String})],G.prototype,"inputmode",2);Q([l({type:String})],G.prototype,"list",2);Q([l({type:String})],G.prototype,"placeholder",2);Q([l({type:String})],G.prototype,"pattern",2);Q([l({type:String})],G.prototype,"min",2);Q([l({type:String})],G.prototype,"max",2);Q([l({type:Boolean,reflect:!0})],G.prototype,"readonly",2);Q([l({type:Number})],G.prototype,"step",2);Q([l({type:Number})],G.prototype,"minlength",2);Q([l({type:Number})],G.prototype,"maxlength",2);Q([l({type:String})],G.prototype,"src",2);Q([l({type:Boolean,reflect:!0})],G.prototype,"inlineContent",2);Q([l({type:Boolean})],G.prototype,"disableInlineContentFocus",2);Q([l({type:Boolean})],G.prototype,"showPasswordToggle",2);Q([l({type:Boolean})],G.prototype,"autoActive",2);Q([l({type:Boolean,reflect:!0})],G.prototype,"active",2);Q([Ce({slot:"label",flatten:!0})],G.prototype,"slotLabelNodes",2);Q([Ce({slot:"description",flatten:!0})],G.prototype,"slotDescriptionNodes",2);Q([Ce({slot:"suffix",flatten:!0})],G.prototype,"slotSuffixNodes",2);Q([Ce({slot:"prefix",flatten:!0})],G.prototype,"slotPrefixNodes",2);Q([lt("input")],G.prototype,"input",2);Q([$()],G.prototype,"hasDescription",2);Q([$()],G.prototype,"hasLabel",2);Q([$()],G.prototype,"hasSuffix",2);Q([$()],G.prototype,"hasPrefix",2);Q([$()],G.prototype,"isPassword",2);G=Q([k(Ch)],G);const ql=L`
2023
2023
  /*OMBRE*/
2024
2024
  :host([shadow]) .shadowable,
2025
2025
  :host([shadow="md"]) .shadowable,
@@ -2038,7 +2038,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
2038
2038
  :host([shadow="none"]) .shadowable {
2039
2039
  box-shadow: none;
2040
2040
  }
2041
- `;var xh=Object.defineProperty,_h=Object.getOwnPropertyDescriptor,ut=(s,e,o,r)=>{for(var t=r>1?void 0:r?_h(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&xh(e,o,t),t};const Dh="sonic-pop";let ge=class extends D{constructor(){super(...arguments),this.open=!1,this.noToggle=!1,this.inline=!1,this.manual=!1,this.shadow="lg",this.placement="bottom",this.positioningRuns=!1,this.lastContentX=0,this.lastContentY=0,this.resizeObserver=new ResizeObserver(()=>this.computePosition(this.placement)),this.triggerElement=null,this.ancestorsHavingZIndex=new Set,this._handleKeyDown=s=>{s.key==="Escape"&&this.open&&(s.stopPropagation(),this.hide())}}runPositioningLoop(){this.positioningRuns&&(this.positioningRuns=!0,this.computePosition(this.placement),window.requestAnimationFrame(()=>this.runPositioningLoop()))}toggle(s){if(this.open&&this.noToggle)return;const e=s;s.type=="keydown"&&(e.key!="ArrowDown"||this.open)||(this.open||(this.triggerElement=s.target),this.open=!this.open,this.open?this.show():this.hide())}show(){this.setMaxZindex(),this.popContent?.style?.removeProperty("display"),this.open=!0,this.popContent.setAttribute("tabindex","0"),this.popBtn&&this.popContent&&!this.positioningRuns&&(this.positioningRuns=!0,this.lastContentX=0,this.lastContentY=0,this.runPositioningLoop()),this.dispatchEvent(new CustomEvent("show"))}hide(){this.resetZindexes(),this.open=!1,this.popContent.setAttribute("tabindex","-1"),this.positioningRuns=!1,this.triggerElement&&(this.triggerElement.focus(),this.triggerElement=null),Object.assign(this.popContent.style,{left:`${this.lastContentX}px`,top:`${this.lastContentY}px`}),this.dispatchEvent(new CustomEvent("hide"))}setMaxZindex(){ne.everyAncestors(this,s=>{const e=s;if(!e.className)return!0;if([...e.classList].includes("@container")){const o=e.style;o.zIndex="999999999";const r=getComputedStyle(e);return r.position!=="relative"&&r.position!=="absolute"&&(o.position="relative"),this.ancestorsHavingZIndex.add(s),!1}return!0})}resetZindexes(){this.ancestorsHavingZIndex.forEach(s=>{s.style.removeProperty("position"),s.style.removeProperty("z-index")}),this.ancestorsHavingZIndex.clear()}_handleClosePop(s){const e=s.composedPath(),o=e[0];ge.pops.forEach(r=>{const t=e.includes(r),i=e.includes(r.querySelector('[slot="content"]')),n=ne.getAncestorAttributeValue(o,"data-on-select")==="keep";s.type=="pointerdown"&&t||s.type=="click"&&(t&&n||!i)||r.hide()})}connectedCallback(){super.connectedCallback(),ge.pops.size==0&&(document.addEventListener("pointerdown",this._handleClosePop),document.addEventListener("click",this._handleClosePop),document.addEventListener("keydown",this._handleKeyDown)),ge.pops.add(this)}firstUpdated(s){super.firstUpdated(s),this.resizeObserver.observe(this.popContent)}disconnectedCallback(){this.popContent&&this.resizeObserver.unobserve(this.popContent),super.disconnectedCallback(),ge.pops.delete(this),ge.pops.size==0&&(document.removeEventListener("pointerdown",this._handleClosePop),document.removeEventListener("click",this._handleClosePop),document.removeEventListener("keydown",this._handleKeyDown))}computePosition(s){const e=s.split(" "),o=e[0];let r=e[1];const t=5,i=this.getBoundingClientRect(),a=ne.getScrollableAncestor(this.popContent)?.getBoundingClientRect(),c=Math.max(0,a?.left||0)+t,g=Math.max(0,a?.top||0)+t,f=Math.min(window.innerWidth,a?.right||window.innerWidth)-t,h=Math.min(window.innerHeight,a?.bottom||window.innerHeight)-t,w=i.left,A=i.top;let m=w,b=A,v=this.popContent?.getBoundingClientRect();const _=A-v.height,d=w-v.width,u=w+i.width,y=A+i.height,x=w+(i.width-v.width)*.5,C=A+(i.height-v.height)*.5;switch(o){case"bottom":b=y,r=="center"&&(m=x);break;case"top":b=_,r=="center"&&(m=x);break;case"left":m=d,r=="center"&&(b=C);break;case"right":m=u,r=="center"&&(b=C);break}this.lastContentX+=m-v.x,this.lastContentY+=b-v.y,Object.assign(this.popContent.style,{left:`${this.lastContentX}px`,top:`${this.lastContentY}px`}),v=this.popContent?.getBoundingClientRect(),v.x<c&&o=="left"&&(m=u),v.y<g&&o=="top"&&(b=y),v.x+v.width>f&&o=="right"&&(m=d),v.y+v.height>h&&o=="bottom"&&(b=_),this.lastContentX+=m-v.x,this.lastContentY+=b-v.y,Object.assign(this.popContent.style,{left:`${this.lastContentX}px`,top:`${this.lastContentY}px`}),v=this.popContent?.getBoundingClientRect(),v.x<c&&(this.lastContentX+=c-v.x),v.y<g&&(this.lastContentY+=g-v.y),Object.assign(this.popContent.style,{left:`${this.lastContentX}px`,top:`${this.lastContentY}px`}),v=this.popContent?.getBoundingClientRect(),v.x+v.width>f&&(this.lastContentX+=f-(v.x+v.width)),v.y+v.height>h&&(this.lastContentY+=h-(v.y+v.height)),Object.assign(this.popContent.style,{left:`${this.lastContentX}px`,top:`${this.lastContentY}px`})}render(){return p`
2041
+ `;var Ah=Object.defineProperty,Ph=Object.getOwnPropertyDescriptor,ut=(s,e,o,r)=>{for(var t=r>1?void 0:r?Ph(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Ah(e,o,t),t};const Sh="sonic-pop";let ge=class extends D{constructor(){super(...arguments),this.open=!1,this.noToggle=!1,this.inline=!1,this.manual=!1,this.shadow="lg",this.placement="bottom",this.positioningRuns=!1,this.lastContentX=0,this.lastContentY=0,this.resizeObserver=new ResizeObserver(()=>this.computePosition(this.placement)),this.triggerElement=null,this.ancestorsHavingZIndex=new Set,this._handleKeyDown=s=>{s.key==="Escape"&&this.open&&(s.stopPropagation(),this.hide())}}runPositioningLoop(){this.positioningRuns&&(this.positioningRuns=!0,this.computePosition(this.placement),window.requestAnimationFrame(()=>this.runPositioningLoop()))}toggle(s){if(this.open&&this.noToggle)return;const e=s;s.type=="keydown"&&(e.key!="ArrowDown"||this.open)||(this.open||(this.triggerElement=s.target),this.open=!this.open,this.open?this.show():this.hide())}show(){this.setMaxZindex(),this.popContent?.style?.removeProperty("display"),this.open=!0,this.popContent.setAttribute("tabindex","0"),this.popBtn&&this.popContent&&!this.positioningRuns&&(this.positioningRuns=!0,this.lastContentX=0,this.lastContentY=0,this.runPositioningLoop()),this.dispatchEvent(new CustomEvent("show"))}hide(){this.resetZindexes(),this.open=!1,this.popContent.setAttribute("tabindex","-1"),this.positioningRuns=!1,this.triggerElement&&(this.triggerElement.focus(),this.triggerElement=null),Object.assign(this.popContent.style,{left:`${this.lastContentX}px`,top:`${this.lastContentY}px`}),this.dispatchEvent(new CustomEvent("hide"))}setMaxZindex(){ne.everyAncestors(this,s=>{const e=s;if(!e.className)return!0;if([...e.classList].includes("@container")){const o=e.style;o.zIndex="999999999";const r=getComputedStyle(e);return r.position!=="relative"&&r.position!=="absolute"&&(o.position="relative"),this.ancestorsHavingZIndex.add(s),!1}return!0})}resetZindexes(){this.ancestorsHavingZIndex.forEach(s=>{s.style.removeProperty("position"),s.style.removeProperty("z-index")}),this.ancestorsHavingZIndex.clear()}_handleClosePop(s){const e=s.composedPath(),o=e[0];ge.pops.forEach(r=>{const t=e.includes(r),i=e.includes(r.querySelector('[slot="content"]')),n=ne.getAncestorAttributeValue(o,"data-on-select")==="keep";s.type=="pointerdown"&&t||s.type=="click"&&(t&&n||!i)||r.hide()})}connectedCallback(){super.connectedCallback(),ge.pops.size==0&&(document.addEventListener("pointerdown",this._handleClosePop),document.addEventListener("click",this._handleClosePop),document.addEventListener("keydown",this._handleKeyDown)),ge.pops.add(this)}firstUpdated(s){super.firstUpdated(s),this.resizeObserver.observe(this.popContent)}disconnectedCallback(){this.popContent&&this.resizeObserver.unobserve(this.popContent),super.disconnectedCallback(),ge.pops.delete(this),ge.pops.size==0&&(document.removeEventListener("pointerdown",this._handleClosePop),document.removeEventListener("click",this._handleClosePop),document.removeEventListener("keydown",this._handleKeyDown))}computePosition(s){const e=s.split(" "),o=e[0];let r=e[1];const t=5,i=this.getBoundingClientRect(),a=ne.getScrollableAncestor(this.popContent)?.getBoundingClientRect(),c=Math.max(0,a?.left||0)+t,g=Math.max(0,a?.top||0)+t,b=Math.min(window.innerWidth,a?.right||window.innerWidth)-t,h=Math.min(window.innerHeight,a?.bottom||window.innerHeight)-t,x=i.left,A=i.top;let m=x,f=A,v=this.popContent?.getBoundingClientRect();const _=A-v.height,d=x-v.width,u=x+i.width,y=A+i.height,w=x+(i.width-v.width)*.5,C=A+(i.height-v.height)*.5;switch(o){case"bottom":f=y,r=="center"&&(m=w);break;case"top":f=_,r=="center"&&(m=w);break;case"left":m=d,r=="center"&&(f=C);break;case"right":m=u,r=="center"&&(f=C);break}this.lastContentX+=m-v.x,this.lastContentY+=f-v.y,Object.assign(this.popContent.style,{left:`${this.lastContentX}px`,top:`${this.lastContentY}px`}),v=this.popContent?.getBoundingClientRect(),v.x<c&&o=="left"&&(m=u),v.y<g&&o=="top"&&(f=y),v.x+v.width>b&&o=="right"&&(m=d),v.y+v.height>h&&o=="bottom"&&(f=_),this.lastContentX+=m-v.x,this.lastContentY+=f-v.y,Object.assign(this.popContent.style,{left:`${this.lastContentX}px`,top:`${this.lastContentY}px`}),v=this.popContent?.getBoundingClientRect(),v.x<c&&(this.lastContentX+=c-v.x),v.y<g&&(this.lastContentY+=g-v.y),Object.assign(this.popContent.style,{left:`${this.lastContentX}px`,top:`${this.lastContentY}px`}),v=this.popContent?.getBoundingClientRect(),v.x+v.width>b&&(this.lastContentX+=b-(v.x+v.width)),v.y+v.height>h&&(this.lastContentY+=h-(v.y+v.height)),Object.assign(this.popContent.style,{left:`${this.lastContentX}px`,top:`${this.lastContentY}px`})}render(){return p`
2042
2042
  <slot
2043
2043
  @click=${this.manual?()=>{}:this.toggle}
2044
2044
  @keydown=${this.manual?()=>{}:this.toggle}
@@ -2084,11 +2084,11 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
2084
2084
  :host([inline]) {
2085
2085
  vertical-align: baseline;
2086
2086
  }
2087
- `,Tl];ut([$()],ge.prototype,"open",2);ut([lt("slot:not([name=content])")],ge.prototype,"popBtn",2);ut([lt("slot[name=content]")],ge.prototype,"popContent",2);ut([l({type:Boolean})],ge.prototype,"noToggle",2);ut([l({type:Boolean,reflect:!0})],ge.prototype,"inline",2);ut([l({type:Boolean})],ge.prototype,"manual",2);ut([l({type:String,reflect:!0})],ge.prototype,"shadow",2);ut([l({type:String})],ge.prototype,"placement",2);ut([$()],ge.prototype,"triggerElement",2);ge=ut([k(Dh)],ge);var kh=Object.getOwnPropertyDescriptor,Ch=(s,e,o,r)=>{for(var t=r>1?void 0:r?kh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Ah="sonic-menu-item";let Na=class extends W{constructor(){super()}connectedCallback(){this.hasAttribute("variant")||(this.variant="ghost"),this.hasAttribute("type")||(this.type="default"),this.hasAttribute("shape")||(this.shape="block");const s=this.shape==="square"||this.shape==="circle";!this.hasAttribute("align")&&!s&&(this.align="left"),super.connectedCallback()}};Na=Ch([k(Ah)],Na);/**
2087
+ `,ql];ut([$()],ge.prototype,"open",2);ut([lt("slot:not([name=content])")],ge.prototype,"popBtn",2);ut([lt("slot[name=content]")],ge.prototype,"popContent",2);ut([l({type:Boolean})],ge.prototype,"noToggle",2);ut([l({type:Boolean,reflect:!0})],ge.prototype,"inline",2);ut([l({type:Boolean})],ge.prototype,"manual",2);ut([l({type:String,reflect:!0})],ge.prototype,"shadow",2);ut([l({type:String})],ge.prototype,"placement",2);ut([$()],ge.prototype,"triggerElement",2);ge=ut([k(Sh)],ge);var $h=Object.getOwnPropertyDescriptor,Fh=(s,e,o,r)=>{for(var t=r>1?void 0:r?$h(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Eh="sonic-menu-item";let Na=class extends W{constructor(){super()}connectedCallback(){this.hasAttribute("variant")||(this.variant="ghost"),this.hasAttribute("type")||(this.type="default"),this.hasAttribute("shape")||(this.shape="block");const s=this.shape==="square"||this.shape==="circle";!this.hasAttribute("align")&&!s&&(this.align="left"),super.connectedCallback()}};Na=Fh([k(Eh)],Na);/**
2088
2088
  * @license
2089
2089
  * Copyright 2021 Google LLC
2090
2090
  * SPDX-License-Identifier: BSD-3-Clause
2091
- */class Ol{constructor(e,{target:o,config:r,callback:t,skipInitial:i}){this.t=new Set,this.o=!1,this.i=!1,this.h=e,o!==null&&this.t.add(o??e),this.l=r,this.o=i??this.o,this.callback=t,window.ResizeObserver?(this.u=new ResizeObserver((n=>{this.handleChanges(n),this.h.requestUpdate()})),e.addController(this)):console.warn("ResizeController error: browser does not support ResizeObserver.")}handleChanges(e){this.value=this.callback?.(e,this.u)}hostConnected(){for(const e of this.t)this.observe(e)}hostDisconnected(){this.disconnect()}async hostUpdated(){!this.o&&this.i&&this.handleChanges([]),this.i=!1}observe(e){this.t.add(e),this.u.observe(e,this.l),this.i=!0,this.h.requestUpdate()}unobserve(e){this.t.delete(e),this.u.unobserve(e)}disconnect(){this.u.disconnect()}}var Ph=Object.defineProperty,Sh=Object.getOwnPropertyDescriptor,Ae=(s,e,o,r)=>{for(var t=r>1?void 0:r?Sh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Ph(e,o,t),t};let be=class extends $n(fl(gl(dt(D)))){constructor(){super(...arguments),this.size="md",this.placeholder="",this.filteredFields="",this.readonly=null,this.dataProviderExpression="",this.minSearchLength=0,this.key="",this.searchParameter="",this.propertyName="",this.hasInputPrefix=!1,this._resizeController=new Ol(this,{}),this.isPopVisible=!1,this.searchDataProvider="",this.initSearchDataProvider="",this.queueDataProvider="",this.initQueueDataProvider="",this.lastValidSearch="",this.updateSearchParameter=s=>{if(s==""&&this.isSearchParameter()){this.lastValidSearch="";return}this.queryQueueListItem(this.queueDataProvider,this.findSelection,this.setSearchFromSelection)===!1&&this.isSearchParameter()&&(this.lastValidSearch=s,this.searchPublisher?.set(this.lastValidSearch))},this.updatePopContentVisibility=s=>{this.isPopVisible=(s?.length||0)>=this.minSearchLength},this.initSearchParameter=()=>{this.queryQueueListItem(this.initQueueDataProvider,this.findSelection,this.setSearchFromSelection)},this.selectListItem=s=>{const e=this.propertyName==="_self"?s:s[this.propertyName||this.name];this.formValuePublisher?.set(e)},this.findSearchedItem=s=>(this.propertyName==="_self"?s:s[this.propertyName||this.searchParameter||this.name])==this.searchPublisher?.get(),this.findSelection=s=>(this.propertyName==="_self"?s:s[this.propertyName||this.name])==this.value,this.setSearchFromSelection=s=>{this.lastValidSearch=this.propertyName==="_self"?s:s[this.searchParameter||this.propertyName||this.name],this.isSearchParameter()&&this.searchPublisher?.set(this.lastValidSearch)},this.updateActiveSelection=()=>{this.queryQueueListItem(this.queueDataProvider,this.findSearchedItem,this.selectListItem),!this.select&&this.lastValidSearch&&this.lastValidSearch!=this.searchPublisher?.get()&&this.formValuePublisher?.get()&&this.formValuePublisher?.set("")},this.handleFocusOut=s=>{setTimeout(()=>{const e=document.activeElement;if(!e){this.popElement.hide();return}const o=this.popElement.contains(e)||this.popElement.shadowRoot?.contains(e),r=this.contains(e)||this.shadowRoot?.contains(e);!o&&!r&&this.popElement.hide()},0)}}hasSlotOrProps(){this.hasInputPrefix=!!this.slotInputPrefixNodes?.length}isSearchParameter(){return!this.searchParameter||this.searchParameter===this.name}connectedCallback(){super.connectedCallback();const s=this.searchParameter||this.name,e=this.getAncestorAttributeValue("formDataProvider"),o=e+"__"+this.name+"__autocomplete";this.initSearchDataProvider=`${o}_init_search__`,this.initQueueDataProvider=`${o}_init_queue__`,this.searchDataProvider=`${o}_search__`,this.queueDataProvider=`${o}_queue__`;const r=R.get;this.searchPublisher=r(this.searchDataProvider)[s],this.formValuePublisher=$e(r(e),this.name),this.countPublisher=r(this.queueDataProvider).resultCount,this.initCountPublisher=r(this.initQueueDataProvider).resultCount,this.value&&R.get(this.initSearchDataProvider)[this.name].set(this.value),this.initCountPublisher?.onAssign(this.initSearchParameter),this.formValuePublisher?.onAssign(this.updateSearchParameter),this.countPublisher?.onAssign(this.updateActiveSelection),this.searchPublisher?.onAssign(this.updatePopContentVisibility)}firstUpdated(s){super.firstUpdated(s),this.popElement.addEventListener("focusout",this.handleFocusOut)}disconnectedCallback(){super.disconnectedCallback(),this.initCountPublisher?.offAssign(this.initSearchParameter),this.formValuePublisher?.offAssign(this.updateSearchParameter),this.countPublisher?.offAssign(this.updateActiveSelection);const s=R.get;s(this.initSearchDataProvider).delete(),s(this.initQueueDataProvider).delete(),s(this.searchDataProvider).delete(),s(this.queueDataProvider).delete(),this.searchPublisher?.offAssign(this.updatePopContentVisibility),this.popElement.removeEventListener("focusout",this.handleFocusOut)}queryQueueListItem(s,e,o){const r=R.get(s);let t,i=r.get();if(!i||!Array.isArray(i)||!i.length)return!1;for(const n of i){let a=R.get(n.dataProvider).get();if(Array.isArray(a)&&(t=a.find(e),t))break}return t?(o(t),!0):!1}setSelectionRange(s,e){this.querySelector("sonic-input")?.setSelectionRange(s,e)}handleHide(){if(this.select){if(this.searchPublisher?.get()==""){this.lastValidSearch="",this.formValuePublisher?.set("");return}this.searchPublisher?.set(this.lastValidSearch)}}getInputValue(){return this.isSearchParameter()?this.searchPublisher?.get():this.lastValidSearch}handleFocus(){this.popElement.show()}render(){return p`
2091
+ */class Rl{constructor(e,{target:o,config:r,callback:t,skipInitial:i}){this.t=new Set,this.o=!1,this.i=!1,this.h=e,o!==null&&this.t.add(o??e),this.l=r,this.o=i??this.o,this.callback=t,window.ResizeObserver?(this.u=new ResizeObserver((n=>{this.handleChanges(n),this.h.requestUpdate()})),e.addController(this)):console.warn("ResizeController error: browser does not support ResizeObserver.")}handleChanges(e){this.value=this.callback?.(e,this.u)}hostConnected(){for(const e of this.t)this.observe(e)}hostDisconnected(){this.disconnect()}async hostUpdated(){!this.o&&this.i&&this.handleChanges([]),this.i=!1}observe(e){this.t.add(e),this.u.observe(e,this.l),this.i=!0,this.h.requestUpdate()}unobserve(e){this.t.delete(e),this.u.unobserve(e)}disconnect(){this.u.disconnect()}}var Lh=Object.defineProperty,Th=Object.getOwnPropertyDescriptor,Ae=(s,e,o,r)=>{for(var t=r>1?void 0:r?Th(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Lh(e,o,t),t};let be=class extends $n(fl(gl(dt(D)))){constructor(){super(...arguments),this.size="md",this.placeholder="",this.filteredFields="",this.readonly=null,this.dataProviderExpression="",this.minSearchLength=0,this.key="",this.searchParameter="",this.propertyName="",this.hasInputPrefix=!1,this._resizeController=new Rl(this,{}),this.isPopVisible=!1,this.searchDataProvider="",this.initSearchDataProvider="",this.queueDataProvider="",this.initQueueDataProvider="",this.lastValidSearch="",this.updateSearchParameter=s=>{if(s==""&&this.isSearchParameter()){this.lastValidSearch="";return}this.queryQueueListItem(this.queueDataProvider,this.findSelection,this.setSearchFromSelection)===!1&&this.isSearchParameter()&&(this.lastValidSearch=s,this.searchPublisher?.set(this.lastValidSearch))},this.updatePopContentVisibility=s=>{this.isPopVisible=(s?.length||0)>=this.minSearchLength},this.initSearchParameter=()=>{this.queryQueueListItem(this.initQueueDataProvider,this.findSelection,this.setSearchFromSelection)},this.selectListItem=s=>{const e=this.propertyName==="_self"?s:s[this.propertyName||this.name];this.formValuePublisher?.set(e)},this.findSearchedItem=s=>(this.propertyName==="_self"?s:s[this.propertyName||this.searchParameter||this.name])==this.searchPublisher?.get(),this.findSelection=s=>(this.propertyName==="_self"?s:s[this.propertyName||this.name])==this.value,this.setSearchFromSelection=s=>{this.lastValidSearch=this.propertyName==="_self"?s:s[this.searchParameter||this.propertyName||this.name],this.isSearchParameter()&&this.searchPublisher?.set(this.lastValidSearch)},this.updateActiveSelection=()=>{this.queryQueueListItem(this.queueDataProvider,this.findSearchedItem,this.selectListItem),!this.select&&this.lastValidSearch&&this.lastValidSearch!=this.searchPublisher?.get()&&this.formValuePublisher?.get()&&this.formValuePublisher?.set("")},this.handleFocusOut=s=>{setTimeout(()=>{const e=document.activeElement;if(!e){this.popElement.hide();return}const o=this.popElement.contains(e)||this.popElement.shadowRoot?.contains(e),r=this.contains(e)||this.shadowRoot?.contains(e);!o&&!r&&this.popElement.hide()},0)}}hasSlotOrProps(){this.hasInputPrefix=!!this.slotInputPrefixNodes?.length}isSearchParameter(){return!this.searchParameter||this.searchParameter===this.name}connectedCallback(){super.connectedCallback();const s=this.searchParameter||this.name,e=this.getAncestorAttributeValue("formDataProvider"),o=e+"__"+this.name+"__autocomplete";this.initSearchDataProvider=`${o}_init_search__`,this.initQueueDataProvider=`${o}_init_queue__`,this.searchDataProvider=`${o}_search__`,this.queueDataProvider=`${o}_queue__`;const r=R.get;this.searchPublisher=r(this.searchDataProvider)[s],this.formValuePublisher=$e(r(e),this.name),this.countPublisher=r(this.queueDataProvider).resultCount,this.initCountPublisher=r(this.initQueueDataProvider).resultCount,this.value&&R.get(this.initSearchDataProvider)[this.name].set(this.value),this.initCountPublisher?.onAssign(this.initSearchParameter),this.formValuePublisher?.onAssign(this.updateSearchParameter),this.countPublisher?.onAssign(this.updateActiveSelection),this.searchPublisher?.onAssign(this.updatePopContentVisibility)}firstUpdated(s){super.firstUpdated(s),this.popElement.addEventListener("focusout",this.handleFocusOut)}disconnectedCallback(){super.disconnectedCallback(),this.initCountPublisher?.offAssign(this.initSearchParameter),this.formValuePublisher?.offAssign(this.updateSearchParameter),this.countPublisher?.offAssign(this.updateActiveSelection);const s=R.get;s(this.initSearchDataProvider).delete(),s(this.initQueueDataProvider).delete(),s(this.searchDataProvider).delete(),s(this.queueDataProvider).delete(),this.searchPublisher?.offAssign(this.updatePopContentVisibility),this.popElement.removeEventListener("focusout",this.handleFocusOut)}queryQueueListItem(s,e,o){const r=R.get(s);let t,i=r.get();if(!i||!Array.isArray(i)||!i.length)return!1;for(const n of i){let a=R.get(n.dataProvider).get();if(Array.isArray(a)&&(t=a.find(e),t))break}return t?(o(t),!0):!1}setSelectionRange(s,e){this.querySelector("sonic-input")?.setSelectionRange(s,e)}handleHide(){if(this.select){if(this.searchPublisher?.get()==""){this.lastValidSearch="",this.formValuePublisher?.set("");return}this.searchPublisher?.set(this.lastValidSearch)}}getInputValue(){return this.isSearchParameter()?this.searchPublisher?.get():this.lastValidSearch}handleFocus(){this.popElement.show()}render(){return p`
2092
2092
  <sonic-pop manual style="display:block;" @hide=${this.handleHide}>
2093
2093
  <sonic-input
2094
2094
  class="form-element"
@@ -2174,7 +2174,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
2174
2174
  min-width: 14rem;
2175
2175
  width: 100%;
2176
2176
  }
2177
- `];Ae([l({type:String})],be.prototype,"size",2);Ae([l({type:String})],be.prototype,"placeholder",2);Ae([l()],be.prototype,"filteredFields",2);Ae([l({type:Boolean,reflect:!0})],be.prototype,"readonly",2);Ae([l({type:String})],be.prototype,"dataProviderExpression",2);Ae([l({type:Number})],be.prototype,"minSearchLength",2);Ae([l({type:Boolean})],be.prototype,"select",2);Ae([l({type:String})],be.prototype,"key",2);Ae([l({type:String})],be.prototype,"searchParameter",2);Ae([l({type:String})],be.prototype,"propertyName",2);Ae([Ce({slot:"prefix",flatten:!0})],be.prototype,"slotInputPrefixNodes",2);Ae([$()],be.prototype,"hasInputPrefix",2);Ae([lt("sonic-pop")],be.prototype,"popElement",2);Ae([$()],be.prototype,"isPopVisible",2);Ae([$()],be.prototype,"lastValidSearch",2);be=Ae([k("sonic-input-autocomplete")],be);var $h=Object.defineProperty,Fh=Object.getOwnPropertyDescriptor,Le=(s,e,o,r)=>{for(var t=r>1?void 0:r?Fh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&$h(e,o,t),t};const Eh="sonic-password-helper";let xe=class extends dt(D){constructor(){super(...arguments),this.minChars=8,this.hasNoChar=!0,this.hasEnoughChars=!1,this.hasMinuscule=!1,this.hasMajuscule=!1,this.hasNumber=!1,this.hasSpecialChar=!1,this.wording_password_helper_decription="Le mot de passe doit contenir au moins :",this.wording_password_helper_min_length="8 caractères",this.wording_password_helper_lower_case="1 minuscule",this.wording_password_helper_upper_case="1 majuscule",this.wording_password_helper_number="1 chiffre",this.wording_password_helper_special_char="1 caractère spécial"}connectedCallback(){super.connectedCallback(),this.name&&(this.checkValue=e=>{e?(this.hasNoChar=e.length==0,this.hasEnoughChars=e.length>this.minChars):(this.hasNoChar=!0,this.hasEnoughChars=!1),this.hasMinuscule=/[a-z]/.test(e),this.hasMajuscule=/[A-Z]/.test(e),this.hasNumber=/[0-9]/.test(e),this.hasSpecialChar=/[!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]/.test(e)},R.get(this.getAncestorAttributeValue("formDataProvider"))[this.name].onAssign(this.checkValue))}disconnectedCallback(){this.checkValue&&this.name&&R.get(this.getAncestorAttributeValue("formDataProvider"))[this.name].offAssign(this.checkValue),super.disconnectedCallback()}getIcon(e){return e?p`<sonic-icon library="heroicons" name="face-smile"></sonic-icon>`:p`<sonic-icon library="heroicons" name="x-mark"></sonic-icon>`}render(){return this.hasNoChar?S:p`
2177
+ `];Ae([l({type:String})],be.prototype,"size",2);Ae([l({type:String})],be.prototype,"placeholder",2);Ae([l()],be.prototype,"filteredFields",2);Ae([l({type:Boolean,reflect:!0})],be.prototype,"readonly",2);Ae([l({type:String})],be.prototype,"dataProviderExpression",2);Ae([l({type:Number})],be.prototype,"minSearchLength",2);Ae([l({type:Boolean})],be.prototype,"select",2);Ae([l({type:String})],be.prototype,"key",2);Ae([l({type:String})],be.prototype,"searchParameter",2);Ae([l({type:String})],be.prototype,"propertyName",2);Ae([Ce({slot:"prefix",flatten:!0})],be.prototype,"slotInputPrefixNodes",2);Ae([$()],be.prototype,"hasInputPrefix",2);Ae([lt("sonic-pop")],be.prototype,"popElement",2);Ae([$()],be.prototype,"isPopVisible",2);Ae([$()],be.prototype,"lastValidSearch",2);be=Ae([k("sonic-input-autocomplete")],be);var Oh=Object.defineProperty,Ih=Object.getOwnPropertyDescriptor,Le=(s,e,o,r)=>{for(var t=r>1?void 0:r?Ih(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Oh(e,o,t),t};const qh="sonic-password-helper";let xe=class extends dt(D){constructor(){super(...arguments),this.minChars=8,this.hasNoChar=!0,this.hasEnoughChars=!1,this.hasMinuscule=!1,this.hasMajuscule=!1,this.hasNumber=!1,this.hasSpecialChar=!1,this.wording_password_helper_decription="Le mot de passe doit contenir au moins :",this.wording_password_helper_min_length="8 caractères",this.wording_password_helper_lower_case="1 minuscule",this.wording_password_helper_upper_case="1 majuscule",this.wording_password_helper_number="1 chiffre",this.wording_password_helper_special_char="1 caractère spécial"}connectedCallback(){super.connectedCallback(),this.name&&(this.checkValue=e=>{e?(this.hasNoChar=e.length==0,this.hasEnoughChars=e.length>this.minChars):(this.hasNoChar=!0,this.hasEnoughChars=!1),this.hasMinuscule=/[a-z]/.test(e),this.hasMajuscule=/[A-Z]/.test(e),this.hasNumber=/[0-9]/.test(e),this.hasSpecialChar=/[!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]/.test(e)},R.get(this.getAncestorAttributeValue("formDataProvider"))[this.name].onAssign(this.checkValue))}disconnectedCallback(){this.checkValue&&this.name&&R.get(this.getAncestorAttributeValue("formDataProvider"))[this.name].offAssign(this.checkValue),super.disconnectedCallback()}getIcon(e){return e?p`<sonic-icon library="heroicons" name="face-smile"></sonic-icon>`:p`<sonic-icon library="heroicons" name="x-mark"></sonic-icon>`}render(){return this.hasNoChar?S:p`
2178
2178
  <div>${this.wording_password_helper_decription}</div>
2179
2179
  <div>
2180
2180
  ${this.getIcon(this.hasEnoughChars)}
@@ -2195,11 +2195,11 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
2195
2195
  ${this.getIcon(this.hasSpecialChar)}
2196
2196
  ${this.wording_password_helper_special_char}
2197
2197
  </div>
2198
- `}};Le([l()],xe.prototype,"name",2);Le([l()],xe.prototype,"minChars",2);Le([$()],xe.prototype,"hasNoChar",2);Le([$()],xe.prototype,"hasEnoughChars",2);Le([$()],xe.prototype,"hasMinuscule",2);Le([$()],xe.prototype,"hasMajuscule",2);Le([$()],xe.prototype,"hasNumber",2);Le([$()],xe.prototype,"hasSpecialChar",2);Le([l()],xe.prototype,"wording_password_helper_decription",2);Le([l()],xe.prototype,"wording_password_helper_min_length",2);Le([l()],xe.prototype,"wording_password_helper_lower_case",2);Le([l()],xe.prototype,"wording_password_helper_upper_case",2);Le([l()],xe.prototype,"wording_password_helper_number",2);Le([l()],xe.prototype,"wording_password_helper_special_char",2);xe=Le([k(Eh)],xe);var Lh=Object.defineProperty,Th=Object.getOwnPropertyDescriptor,hs=(s,e,o,r)=>{for(var t=r>1?void 0:r?Th(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Lh(e,o,t),t};const Oh="sonic-same-value-helper";let Nt=class extends dt(D){constructor(){super(...arguments),this.descriptionWhenEqual="Correspondance : oui",this.descriptionWhenNotEqual="Correspondance : non",this.areEqual=!1,this.hasNoChar=!0}connectedCallback(){super.connectedCallback();const e=R.get(this.getAncestorAttributeValue("formDataProvider"));this.name&&this.sameValueAs&&(this.checkValue=o=>{o?this.hasNoChar=o.length==0:this.hasNoChar=!0,this.name&&this.sameValueAs&&(this.areEqual=$e(e,this.name).get()==$e(e,this.sameValueAs).get())},$e(e,this.name).onAssign(this.checkValue),$e(e,this.sameValueAs).onAssign(this.checkValue))}disconnectedCallback(){if(this.checkValue&&this.name&&this.sameValueAs){const e=R.get(this.getAncestorAttributeValue("formDataProvider"));$e(e,this.name).offAssign(this.checkValue),$e(e,this.sameValueAs).offAssign(this.checkValue)}super.disconnectedCallback()}render(){return this.hasNoChar?S:p`
2198
+ `}};Le([l()],xe.prototype,"name",2);Le([l()],xe.prototype,"minChars",2);Le([$()],xe.prototype,"hasNoChar",2);Le([$()],xe.prototype,"hasEnoughChars",2);Le([$()],xe.prototype,"hasMinuscule",2);Le([$()],xe.prototype,"hasMajuscule",2);Le([$()],xe.prototype,"hasNumber",2);Le([$()],xe.prototype,"hasSpecialChar",2);Le([l()],xe.prototype,"wording_password_helper_decription",2);Le([l()],xe.prototype,"wording_password_helper_min_length",2);Le([l()],xe.prototype,"wording_password_helper_lower_case",2);Le([l()],xe.prototype,"wording_password_helper_upper_case",2);Le([l()],xe.prototype,"wording_password_helper_number",2);Le([l()],xe.prototype,"wording_password_helper_special_char",2);xe=Le([k(qh)],xe);var Rh=Object.defineProperty,Nh=Object.getOwnPropertyDescriptor,hs=(s,e,o,r)=>{for(var t=r>1?void 0:r?Nh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Rh(e,o,t),t};const Mh="sonic-same-value-helper";let Nt=class extends dt(D){constructor(){super(...arguments),this.descriptionWhenEqual="Correspondance : oui",this.descriptionWhenNotEqual="Correspondance : non",this.areEqual=!1,this.hasNoChar=!0}connectedCallback(){super.connectedCallback();const e=R.get(this.getAncestorAttributeValue("formDataProvider"));this.name&&this.sameValueAs&&(this.checkValue=o=>{o?this.hasNoChar=o.length==0:this.hasNoChar=!0,this.name&&this.sameValueAs&&(this.areEqual=$e(e,this.name).get()==$e(e,this.sameValueAs).get())},$e(e,this.name).onAssign(this.checkValue),$e(e,this.sameValueAs).onAssign(this.checkValue))}disconnectedCallback(){if(this.checkValue&&this.name&&this.sameValueAs){const e=R.get(this.getAncestorAttributeValue("formDataProvider"));$e(e,this.name).offAssign(this.checkValue),$e(e,this.sameValueAs).offAssign(this.checkValue)}super.disconnectedCallback()}render(){return this.hasNoChar?S:p`
2199
2199
  <span>
2200
2200
  ${this.areEqual?V(this.descriptionWhenEqual):V(this.descriptionWhenNotEqual)}
2201
2201
  </span>
2202
- `}};hs([l()],Nt.prototype,"name",2);hs([l()],Nt.prototype,"sameValueAs",2);hs([l()],Nt.prototype,"descriptionWhenEqual",2);hs([l()],Nt.prototype,"descriptionWhenNotEqual",2);hs([$()],Nt.prototype,"areEqual",2);hs([$()],Nt.prototype,"hasNoChar",2);Nt=hs([k(Oh)],Nt);var Ih=Object.defineProperty,qh=Object.getOwnPropertyDescriptor,_t=(s,e,o,r)=>{for(var t=r>1?void 0:r?qh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Ih(e,o,t),t};const Rh="sonic-checkbox";let Ee=class extends Pn(Mr(Ns(de(D)))){constructor(){super(...arguments),this.touched=!1,this.iconName="check",this.indeterminateIconName="minus-small",this.showAsIndeterminate=!1,this.hasDescription=!1,this.hasLabel=!1}connectedCallback(){this.type="checkbox",this.hasSlotOrProps(),super.connectedCallback()}willUpdate(s){this.hasSlotOrProps(),super.willUpdate(s),s.has("type")&&(this.type="checkbox")}hasSlotOrProps(){this.hasLabel=!!(this.label||this.slotLabelNodes?.length),this.hasDescription=!!(this.description||this.slotDescriptionNodes?.length)}render(){return p`
2202
+ `}};hs([l()],Nt.prototype,"name",2);hs([l()],Nt.prototype,"sameValueAs",2);hs([l()],Nt.prototype,"descriptionWhenEqual",2);hs([l()],Nt.prototype,"descriptionWhenNotEqual",2);hs([$()],Nt.prototype,"areEqual",2);hs([$()],Nt.prototype,"hasNoChar",2);Nt=hs([k(Mh)],Nt);var jh=Object.defineProperty,Uh=Object.getOwnPropertyDescriptor,_t=(s,e,o,r)=>{for(var t=r>1?void 0:r?Uh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&jh(e,o,t),t};const Bh="sonic-checkbox";let Ee=class extends Pn(Mr(Ns(de(D)))){constructor(){super(...arguments),this.touched=!1,this.iconName="check",this.indeterminateIconName="minus-small",this.showAsIndeterminate=!1,this.hasDescription=!1,this.hasLabel=!1}connectedCallback(){this.type="checkbox",this.hasSlotOrProps(),super.connectedCallback()}willUpdate(s){this.hasSlotOrProps(),super.willUpdate(s),s.has("type")&&(this.type="checkbox")}hasSlotOrProps(){this.hasLabel=!!(this.label||this.slotLabelNodes?.length),this.hasDescription=!!(this.description||this.slotDescriptionNodes?.length)}render(){return p`
2203
2203
  <label class="checkbox-container ${this.disabled?"disabled":""}">
2204
2204
 
2205
2205
  <span class="icon-container">
@@ -2349,7 +2349,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
2349
2349
  .hidden {
2350
2350
  display: none;
2351
2351
  }
2352
- `];_t([l({type:Boolean,reflect:!0})],Ee.prototype,"touched",2);_t([l({type:String})],Ee.prototype,"iconName",2);_t([l({type:String})],Ee.prototype,"indeterminateIconName",2);_t([l({type:Boolean})],Ee.prototype,"showAsIndeterminate",2);_t([l({type:Boolean})],Ee.prototype,"hasDescription",2);_t([l({type:Boolean})],Ee.prototype,"hasLabel",2);_t([Ce({flatten:!0})],Ee.prototype,"slotLabelNodes",2);_t([Ce({slot:"description",flatten:!0})],Ee.prototype,"slotDescriptionNodes",2);Ee=_t([k(Rh)],Ee);var Nh=Object.getOwnPropertyDescriptor,Mh=(s,e,o,r)=>{for(var t=r>1?void 0:r?Nh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const jh="sonic-radio";let Di=class extends Ee{constructor(){super(),this.radio=!0}willUpdate(s){const e=s.has("type");super.willUpdate(s),e&&(this.type="radio")}connectedCallback(){super.connectedCallback(),this.type="radio"}};Di.styles=[Ee.styles,L`
2352
+ `];_t([l({type:Boolean,reflect:!0})],Ee.prototype,"touched",2);_t([l({type:String})],Ee.prototype,"iconName",2);_t([l({type:String})],Ee.prototype,"indeterminateIconName",2);_t([l({type:Boolean})],Ee.prototype,"showAsIndeterminate",2);_t([l({type:Boolean})],Ee.prototype,"hasDescription",2);_t([l({type:Boolean})],Ee.prototype,"hasLabel",2);_t([Ce({flatten:!0})],Ee.prototype,"slotLabelNodes",2);_t([Ce({slot:"description",flatten:!0})],Ee.prototype,"slotDescriptionNodes",2);Ee=_t([k(Bh)],Ee);var zh=Object.getOwnPropertyDescriptor,Kh=(s,e,o,r)=>{for(var t=r>1?void 0:r?zh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Hh="sonic-radio";let Di=class extends Ee{constructor(){super(),this.radio=!0}willUpdate(s){const e=s.has("type");super.willUpdate(s),e&&(this.type="radio")}connectedCallback(){super.connectedCallback(),this.type="radio"}};Di.styles=[Ee.styles,L`
2353
2353
  :host input {
2354
2354
  border-radius: 50%;
2355
2355
  }
@@ -2365,7 +2365,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
2365
2365
  width: 0.6em;
2366
2366
  width: round(0.6em, 1px);
2367
2367
  }
2368
- `];Di=Mh([k(jh)],Di);var Uh=Object.getOwnPropertyDescriptor,Bh=(s,e,o,r)=>{for(var t=r>1?void 0:r?Uh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const zh="sonic-switch";let ki=class extends Ee{constructor(){super(),this.unique=!0}};ki.styles=[Ee.styles,L`
2368
+ `];Di=Kh([k(Hh)],Di);var Vh=Object.getOwnPropertyDescriptor,Wh=(s,e,o,r)=>{for(var t=r>1?void 0:r?Vh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Gh="sonic-switch";let ki=class extends Ee{constructor(){super(),this.unique=!0}};ki.styles=[Ee.styles,L`
2369
2369
  sonic-icon {
2370
2370
  display: none;
2371
2371
  }
@@ -2430,7 +2430,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
2430
2430
  input + sonic-icon {
2431
2431
  display: none;
2432
2432
  }
2433
- `];ki=Bh([k(zh)],ki);var Kh=Object.defineProperty,Hh=Object.getOwnPropertyDescriptor,ue=(s,e,o,r)=>{for(var t=r>1?void 0:r?Hh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Kh(e,o,t),t};const Vh="sonic-select";let ae=class extends Ns(de(D)){constructor(){super(...arguments),this.valueKey="value",this.wordingKey="wording",this.multiple=!1,this.status="default",this._options=[],this.hasDoneFirstUpdate=!1,this._value="",this.updateOptions=()=>{const s=this.querySelectorAll("option");s.length>0&&(this.options=Array.from(s).map(e=>({value:e.value,wording:e.text,selected:e.hasAttribute("selected")})))},this.forceAutoFill=!1,this.hasDescription=!1,this.hasLabel=!1,this.hasSuffix=!1,this.hasPrefix=!1}set options(s){this._options=s;for(const o of s)o.selected&&(this.value=o[this.valueKey]||"");!(this.value||this.getAttribute("value"))&&this._options.length>0&&(this.value=this._options[0][this.valueKey]),this.requestUpdate()}get options(){return this._options}firstUpdated(s){this.hasDoneFirstUpdate=!0,super.firstUpdated(s)}set value(s){s==null&&!this.hasDoneFirstUpdate||(s||(s=""),this._value!=s&&(this._value=s,this.updateFormPublisherValue(),this.requestUpdate()))}get value(){return this._value}updateFormPublisherValue(){this.setFormPublisherValue(this.value)}connectedCallback(){super.connectedCallback(),this.hasSlotOrProps(),this.updateOptions()}get description(){return this._description}set description(s){this.hasAttribute("description")&&!this.forceAutoFill&&(s=this.getAttribute("description")),this._description=s,this.requestUpdate()}get label(){return this._label}set label(s){this.hasAttribute("label")&&!this.forceAutoFill&&(s=this.getAttribute("label")),this._label=s,this.requestUpdate()}willUpdate(s){this.hasSlotOrProps(),super.willUpdate(s)}hasSlotOrProps(){this.hasLabel=!!(this.label||this.slotLabelNodes?.length),this.hasDescription=!!(this.description||this.slotDescriptionNodes?.length),this.hasSuffix=!!this.slotSuffixNodes?.length,this.hasPrefix=!!this.slotPrefixNodes?.length}validateFormElement(){const s=this.shadowRoot?.querySelector("select");if(!s||s.checkValidity())return;const e=this.getFormPublisher();e&&(e.isFormValid=!1),s.reportValidity()}render(){const s={"has-prefix":this.hasPrefix,"has-suffix":this.hasSuffix};return p`
2433
+ `];ki=Wh([k(Gh)],ki);var Jh=Object.defineProperty,Yh=Object.getOwnPropertyDescriptor,ue=(s,e,o,r)=>{for(var t=r>1?void 0:r?Yh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Jh(e,o,t),t};const Qh="sonic-select";let ae=class extends Ns(de(D)){constructor(){super(...arguments),this.valueKey="value",this.wordingKey="wording",this.multiple=!1,this.status="default",this._options=[],this.hasDoneFirstUpdate=!1,this._value="",this.updateOptions=()=>{const s=this.querySelectorAll("option");s.length>0&&(this.options=Array.from(s).map(e=>({value:e.value,wording:e.text,selected:e.hasAttribute("selected")})))},this.forceAutoFill=!1,this.hasDescription=!1,this.hasLabel=!1,this.hasSuffix=!1,this.hasPrefix=!1}set options(s){this._options=s;for(const o of s)o.selected&&(this.value=o[this.valueKey]||"");!(this.value||this.getAttribute("value"))&&this._options.length>0&&(this.value=this._options[0][this.valueKey]),this.requestUpdate()}get options(){return this._options}firstUpdated(s){this.hasDoneFirstUpdate=!0,super.firstUpdated(s)}set value(s){s==null&&!this.hasDoneFirstUpdate||(s||(s=""),this._value!=s&&(this._value=s,this.updateFormPublisherValue(),this.requestUpdate()))}get value(){return this._value}updateFormPublisherValue(){this.setFormPublisherValue(this.value)}connectedCallback(){super.connectedCallback(),this.hasSlotOrProps(),this.updateOptions()}get description(){return this._description}set description(s){this.hasAttribute("description")&&!this.forceAutoFill&&(s=this.getAttribute("description")),this._description=s,this.requestUpdate()}get label(){return this._label}set label(s){this.hasAttribute("label")&&!this.forceAutoFill&&(s=this.getAttribute("label")),this._label=s,this.requestUpdate()}willUpdate(s){this.hasSlotOrProps(),super.willUpdate(s)}hasSlotOrProps(){this.hasLabel=!!(this.label||this.slotLabelNodes?.length),this.hasDescription=!!(this.description||this.slotDescriptionNodes?.length),this.hasSuffix=!!this.slotSuffixNodes?.length,this.hasPrefix=!!this.slotPrefixNodes?.length}validateFormElement(){const s=this.shadowRoot?.querySelector("select");if(!s||s.checkValidity())return;const e=this.getFormPublisher();e&&(e.isFormValid=!1),s.reportValidity()}render(){const s={"has-prefix":this.hasPrefix,"has-suffix":this.hasSuffix};return p`
2434
2434
  <label
2435
2435
  for="form-element"
2436
2436
  class="${this.hasLabel?"form-label":"hidden"}"
@@ -2534,7 +2534,7 @@ var Sc=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var cy=Sc((Dy,es)
2534
2534
  :host([multiple]) sonic-icon {
2535
2535
  display: none !important;
2536
2536
  }
2537
- `];ue([l({type:String})],ae.prototype,"valueKey",2);ue([l({type:String})],ae.prototype,"wordingKey",2);ue([l({type:Boolean})],ae.prototype,"multiple",2);ue([l({type:String,reflect:!0})],ae.prototype,"size",2);ue([l({type:Number})],ae.prototype,"selectSize",2);ue([l({type:String,reflect:!0})],ae.prototype,"status",2);ue([l({type:Array})],ae.prototype,"options",1);ue([l({reflect:!0})],ae.prototype,"value",1);ue([l({type:Boolean})],ae.prototype,"forceAutoFill",2);ue([l()],ae.prototype,"description",1);ue([l()],ae.prototype,"label",1);ue([Ce({slot:"label",flatten:!0})],ae.prototype,"slotLabelNodes",2);ue([Ce({slot:"description",flatten:!0})],ae.prototype,"slotDescriptionNodes",2);ue([Ce({slot:"suffix",flatten:!0})],ae.prototype,"slotSuffixNodes",2);ue([Ce({slot:"prefix",flatten:!0})],ae.prototype,"slotPrefixNodes",2);ue([$()],ae.prototype,"hasDescription",2);ue([$()],ae.prototype,"hasLabel",2);ue([$()],ae.prototype,"hasSuffix",2);ue([$()],ae.prototype,"hasPrefix",2);ae=ue([k(Vh)],ae);var Wh=Object.defineProperty,Gh=Object.getOwnPropertyDescriptor,Oe=(s,e,o,r)=>{for(var t=r>1?void 0:r?Gh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Wh(e,o,t),t};const Jh="sonic-textarea";let _e=class extends Mr(Ns(de(D))){constructor(){super(...arguments),this.size="md",this.readonly=!1,this.resize="vertical",this.hasDescription=!1,this.hasLabel=!1}connectedCallback(){super.connectedCallback(),this.hasSlotOrProps()}willUpdate(s){this.hasSlotOrProps(),super.willUpdate(s)}hasSlotOrProps(){this.hasLabel=!!(this.label||this.slotLabelNodes?.length),this.hasDescription=!!(this.description||this.slotDescriptionNodes?.length)}validateFormElement(){const s=this.shadowRoot?.querySelector("textarea");if(!s||s.checkValidity())return;const e=this.getFormPublisher();e&&(e.isFormValid=!1),s.reportValidity()}render(){const s={resize:this.resize};return p`
2537
+ `];ue([l({type:String})],ae.prototype,"valueKey",2);ue([l({type:String})],ae.prototype,"wordingKey",2);ue([l({type:Boolean})],ae.prototype,"multiple",2);ue([l({type:String,reflect:!0})],ae.prototype,"size",2);ue([l({type:Number})],ae.prototype,"selectSize",2);ue([l({type:String,reflect:!0})],ae.prototype,"status",2);ue([l({type:Array})],ae.prototype,"options",1);ue([l({reflect:!0})],ae.prototype,"value",1);ue([l({type:Boolean})],ae.prototype,"forceAutoFill",2);ue([l()],ae.prototype,"description",1);ue([l()],ae.prototype,"label",1);ue([Ce({slot:"label",flatten:!0})],ae.prototype,"slotLabelNodes",2);ue([Ce({slot:"description",flatten:!0})],ae.prototype,"slotDescriptionNodes",2);ue([Ce({slot:"suffix",flatten:!0})],ae.prototype,"slotSuffixNodes",2);ue([Ce({slot:"prefix",flatten:!0})],ae.prototype,"slotPrefixNodes",2);ue([$()],ae.prototype,"hasDescription",2);ue([$()],ae.prototype,"hasLabel",2);ue([$()],ae.prototype,"hasSuffix",2);ue([$()],ae.prototype,"hasPrefix",2);ae=ue([k(Qh)],ae);var Zh=Object.defineProperty,Xh=Object.getOwnPropertyDescriptor,Oe=(s,e,o,r)=>{for(var t=r>1?void 0:r?Xh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Zh(e,o,t),t};const em="sonic-textarea";let _e=class extends Mr(Ns(de(D))){constructor(){super(...arguments),this.size="md",this.readonly=!1,this.resize="vertical",this.hasDescription=!1,this.hasLabel=!1}connectedCallback(){super.connectedCallback(),this.hasSlotOrProps()}willUpdate(s){this.hasSlotOrProps(),super.willUpdate(s)}hasSlotOrProps(){this.hasLabel=!!(this.label||this.slotLabelNodes?.length),this.hasDescription=!!(this.description||this.slotDescriptionNodes?.length)}validateFormElement(){const s=this.shadowRoot?.querySelector("textarea");if(!s||s.checkValidity())return;const e=this.getFormPublisher();e&&(e.isFormValid=!1),s.reportValidity()}render(){const s={resize:this.resize};return p`
2538
2538
  <label
2539
2539
  for="${this.id||"form-element"}"
2540
2540
  class="${this.hasLabel?"form-label":"hidden"}"
@@ -2583,7 +2583,7 @@ ${this.value}</textarea
2583
2583
  overflow-y: auto !important;
2584
2584
  font-size: inherit;
2585
2585
  }
2586
- `];Oe([l({type:String})],_e.prototype,"size",2);Oe([l({type:Number})],_e.prototype,"rows",2);Oe([l({type:Number})],_e.prototype,"cols",2);Oe([l({type:Number})],_e.prototype,"maxlength",2);Oe([l({type:Number})],_e.prototype,"minlength",2);Oe([l({type:String})],_e.prototype,"wrap",2);Oe([l({type:Boolean})],_e.prototype,"readonly",2);Oe([l({type:String})],_e.prototype,"placeholder",2);Oe([l({type:String})],_e.prototype,"resize",2);Oe([Ce({slot:"label",flatten:!0})],_e.prototype,"slotLabelNodes",2);Oe([Ce({slot:"description",flatten:!0})],_e.prototype,"slotDescriptionNodes",2);Oe([$()],_e.prototype,"hasDescription",2);Oe([$()],_e.prototype,"hasLabel",2);_e=Oe([k(Jh)],_e);var Yh=Object.getOwnPropertyDescriptor,Qh=(s,e,o,r)=>{for(var t=r>1?void 0:r?Yh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};let Ci=class extends D{render(){return p`<slot></slot>`}};Ci.styles=[L`
2586
+ `];Oe([l({type:String})],_e.prototype,"size",2);Oe([l({type:Number})],_e.prototype,"rows",2);Oe([l({type:Number})],_e.prototype,"cols",2);Oe([l({type:Number})],_e.prototype,"maxlength",2);Oe([l({type:Number})],_e.prototype,"minlength",2);Oe([l({type:String})],_e.prototype,"wrap",2);Oe([l({type:Boolean})],_e.prototype,"readonly",2);Oe([l({type:String})],_e.prototype,"placeholder",2);Oe([l({type:String})],_e.prototype,"resize",2);Oe([Ce({slot:"label",flatten:!0})],_e.prototype,"slotLabelNodes",2);Oe([Ce({slot:"description",flatten:!0})],_e.prototype,"slotDescriptionNodes",2);Oe([$()],_e.prototype,"hasDescription",2);Oe([$()],_e.prototype,"hasLabel",2);_e=Oe([k(em)],_e);var tm=Object.getOwnPropertyDescriptor,sm=(s,e,o,r)=>{for(var t=r>1?void 0:r?tm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};let Ci=class extends D{render(){return p`<slot></slot>`}};Ci.styles=[L`
2587
2587
  :host {
2588
2588
  font-size: 1.15rem;
2589
2589
  line-height: 1.2;
@@ -2600,7 +2600,7 @@ ${this.value}</textarea
2600
2600
  font-size: 1rem;
2601
2601
  }
2602
2602
  }
2603
- `];Ci=Qh([k("sonic-legend-description")],Ci);var Zh=Object.defineProperty,Xh=Object.getOwnPropertyDescriptor,ms=(s,e,o,r)=>{for(var t=r>1?void 0:r?Xh(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Zh(e,o,t),t};const em="sonic-legend";let wt=class extends D{constructor(){super(...arguments),this.forceAutoFill=!1}get description(){return this._description}set description(s){this.hasAttribute("description")&&!this.forceAutoFill&&(s=this.getAttribute("description")),this._description=s,this.requestUpdate()}get label(){return this._label}set label(s){this.hasAttribute("label")&&!this.forceAutoFill&&(s=this.getAttribute("label")),this._label=s,this.requestUpdate()}render(){return p`<legend part="legend">
2603
+ `];Ci=sm([k("sonic-legend-description")],Ci);var om=Object.defineProperty,rm=Object.getOwnPropertyDescriptor,ms=(s,e,o,r)=>{for(var t=r>1?void 0:r?rm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&om(e,o,t),t};const im="sonic-legend";let wt=class extends D{constructor(){super(...arguments),this.forceAutoFill=!1}get description(){return this._description}set description(s){this.hasAttribute("description")&&!this.forceAutoFill&&(s=this.getAttribute("description")),this._description=s,this.requestUpdate()}get label(){return this._label}set label(s){this.hasAttribute("label")&&!this.forceAutoFill&&(s=this.getAttribute("label")),this._label=s,this.requestUpdate()}render(){return p`<legend part="legend">
2604
2604
  ${this.iconName?p`<div class="icon">
2605
2605
  <sonic-icon
2606
2606
  name=${this.iconName}
@@ -2661,7 +2661,7 @@ ${this.value}</textarea
2661
2661
  .legend-content {
2662
2662
  flex-grow: 1;
2663
2663
  }
2664
- `];ms([l({type:Boolean})],wt.prototype,"forceAutoFill",2);ms([l()],wt.prototype,"description",1);ms([l()],wt.prototype,"label",1);ms([l({type:String})],wt.prototype,"iconName",2);ms([l({type:String})],wt.prototype,"iconLibrary",2);ms([l({type:String})],wt.prototype,"iconPrefix",2);wt=ms([k(em)],wt);var tm=Object.defineProperty,sm=Object.getOwnPropertyDescriptor,pt=(s,e,o,r)=>{for(var t=r>1?void 0:r?sm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&tm(e,o,t),t};const om="sonic-fieldset";let Ve=class extends de(D){constructor(){super(...arguments),this.disabled=!1,this.variant="default"}render(){return p`<fieldset
2664
+ `];ms([l({type:Boolean})],wt.prototype,"forceAutoFill",2);ms([l()],wt.prototype,"description",1);ms([l()],wt.prototype,"label",1);ms([l({type:String})],wt.prototype,"iconName",2);ms([l({type:String})],wt.prototype,"iconLibrary",2);ms([l({type:String})],wt.prototype,"iconPrefix",2);wt=ms([k(im)],wt);var nm=Object.defineProperty,am=Object.getOwnPropertyDescriptor,pt=(s,e,o,r)=>{for(var t=r>1?void 0:r?am(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&nm(e,o,t),t};const lm="sonic-fieldset";let We=class extends de(D){constructor(){super(...arguments),this.disabled=!1,this.variant="default"}render(){return p`<fieldset
2665
2665
  form="${T(this.form)}"
2666
2666
  ?disabled="${this.disabled}"
2667
2667
  >
@@ -2673,7 +2673,7 @@ ${this.value}</textarea
2673
2673
  iconLibrary=${T(this.iconLibrary)}
2674
2674
  ></sonic-legend>`:S}
2675
2675
  <slot></slot>
2676
- </fieldset>`}};Ve.styles=[L`
2676
+ </fieldset>`}};We.styles=[L`
2677
2677
  :host {
2678
2678
  --sc-fieldset-mt: 0;
2679
2679
  --sc-fieldset-mb: 1rem;
@@ -2722,7 +2722,7 @@ ${this.value}</textarea
2722
2722
  ::slotted(sonic-legend:last-child) {
2723
2723
  margin-bottom: 0;
2724
2724
  }
2725
- `];pt([l({type:Boolean,reflect:!0})],Ve.prototype,"disabled",2);pt([l({type:String})],Ve.prototype,"form",2);pt([l({type:String})],Ve.prototype,"label",2);pt([l({type:String})],Ve.prototype,"description",2);pt([l({type:String})],Ve.prototype,"iconName",2);pt([l({type:String})],Ve.prototype,"iconLibrary",2);pt([l({type:String})],Ve.prototype,"iconPrefix",2);pt([l({type:Boolean,reflect:!0})],Ve.prototype,"tight",2);pt([l({type:String,reflect:!0})],Ve.prototype,"variant",2);Ve=pt([k(om)],Ve);var rm=Object.defineProperty,im=Object.getOwnPropertyDescriptor,Mn=(s,e,o,r)=>{for(var t=r>1?void 0:r?im(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&rm(e,o,t),t};const nm="sonic-form-layout";let ao=class extends de(D){constructor(){super(...arguments),this._resizeController=new Ol(this,{}),this.oneFormElement=!1}onSlotChange(){let s=this.slottedElements;const e=["sonic-input","sonic-select","sonic-input-autocomplete",".form-item-container"];s=s.filter(o=>e.includes(o.nodeName.toLowerCase())),this.oneFormElement=s.length==1}render(){const s={"cq--md":this.offsetWidth>440,"one-form-element":this.oneFormElement};return p`<div class=${Nn(s)}>
2725
+ `];pt([l({type:Boolean,reflect:!0})],We.prototype,"disabled",2);pt([l({type:String})],We.prototype,"form",2);pt([l({type:String})],We.prototype,"label",2);pt([l({type:String})],We.prototype,"description",2);pt([l({type:String})],We.prototype,"iconName",2);pt([l({type:String})],We.prototype,"iconLibrary",2);pt([l({type:String})],We.prototype,"iconPrefix",2);pt([l({type:Boolean,reflect:!0})],We.prototype,"tight",2);pt([l({type:String,reflect:!0})],We.prototype,"variant",2);We=pt([k(lm)],We);var cm=Object.defineProperty,dm=Object.getOwnPropertyDescriptor,Mn=(s,e,o,r)=>{for(var t=r>1?void 0:r?dm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&cm(e,o,t),t};const um="sonic-form-layout";let ao=class extends de(D){constructor(){super(...arguments),this._resizeController=new Rl(this,{}),this.oneFormElement=!1}onSlotChange(){let s=this.slottedElements;const e=["sonic-input","sonic-select","sonic-input-autocomplete",".form-item-container"];s=s.filter(o=>e.includes(o.nodeName.toLowerCase())),this.oneFormElement=s.length==1}render(){const s={"cq--md":this.offsetWidth>440,"one-form-element":this.oneFormElement};return p`<div class=${Nn(s)}>
2726
2726
  <slot @slotchange=${this.onSlotChange}></slot>
2727
2727
  </div>`}};ao.styles=[L`
2728
2728
  :host {
@@ -2759,7 +2759,7 @@ ${this.value}</textarea
2759
2759
  ::slotted(sonic-divider) {
2760
2760
  --sc-divider-my: 0;
2761
2761
  }
2762
- `];Mn([Is({flatten:!0})],ao.prototype,"slottedElements",2);Mn([l({type:Boolean})],ao.prototype,"oneFormElement",2);ao=Mn([k(nm)],ao);var am=Object.defineProperty,lm=Object.getOwnPropertyDescriptor,jn=(s,e,o,r)=>{for(var t=r>1?void 0:r?lm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&am(e,o,t),t};const cm="sonic-form-actions";let lo=class extends D{constructor(){super(...arguments),this.direction="row",this.justify="flex-start"}render(){const s={flexDirection:this.direction,justifyContent:this.justify};return p`<slot style=${Fe(s)}></slot>`}};lo.styles=[L`
2762
+ `];Mn([Is({flatten:!0})],ao.prototype,"slottedElements",2);Mn([l({type:Boolean})],ao.prototype,"oneFormElement",2);ao=Mn([k(um)],ao);var pm=Object.defineProperty,hm=Object.getOwnPropertyDescriptor,jn=(s,e,o,r)=>{for(var t=r>1?void 0:r?hm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&pm(e,o,t),t};const mm="sonic-form-actions";let lo=class extends D{constructor(){super(...arguments),this.direction="row",this.justify="flex-start"}render(){const s={flexDirection:this.direction,justifyContent:this.justify};return p`<slot style=${Fe(s)}></slot>`}};lo.styles=[L`
2763
2763
  :host {
2764
2764
  display: block;
2765
2765
  }
@@ -2768,7 +2768,7 @@ ${this.value}</textarea
2768
2768
  flex-wrap: wrap;
2769
2769
  gap: 0.3rem;
2770
2770
  }
2771
- `];jn([l({type:String})],lo.prototype,"direction",2);jn([l({type:String})],lo.prototype,"justify",2);lo=jn([k(cm)],lo);var dm=Object.defineProperty,um=Object.getOwnPropertyDescriptor,Bt=(s,e,o,r)=>{for(var t=r>1?void 0:r?um(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&dm(e,o,t),t};const pm="sonic-group";let nt=class extends D{constructor(){super(...arguments),this.alignItems="center",this.hasDescription=!1,this.hasLabel=!1}updated(){const s=this.querySelectorAll("sonic-input, sonic-button, sonic-select"),e=s.length;e>1&&s.forEach((o,r)=>{const t=o;r===0?(t.style.setProperty("--sc-item-rounded-tr","0"),t.style.setProperty("--sc-item-rounded-br","0")):r===e-1?(t.style.setProperty("--sc-item-rounded-tl","0"),t.style.setProperty("--sc-item-rounded-bl","0")):(t.style.setProperty("--sc-item-rounded-tr","0"),t.style.setProperty("--sc-item-rounded-br","0"),t.style.setProperty("--sc-item-rounded-tl","0"),t.style.setProperty("--sc-item-rounded-bl","0"))})}connectedCallback(){super.connectedCallback(),this.hasSlotOrProps()}willUpdate(s){this.hasSlotOrProps(),super.willUpdate(s)}hasSlotOrProps(){this.hasLabel=!!(this.label||this.slotLabelNodes?.length),this.hasDescription=!!(this.description||this.slotDescriptionNodes?.length)}render(){const s={alignItems:this.alignItems};return p`<span class="${this.hasLabel?"form-label":"hidden"}"
2771
+ `];jn([l({type:String})],lo.prototype,"direction",2);jn([l({type:String})],lo.prototype,"justify",2);lo=jn([k(mm)],lo);var gm=Object.defineProperty,fm=Object.getOwnPropertyDescriptor,Bt=(s,e,o,r)=>{for(var t=r>1?void 0:r?fm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&gm(e,o,t),t};const bm="sonic-group";let nt=class extends D{constructor(){super(...arguments),this.alignItems="center",this.hasDescription=!1,this.hasLabel=!1}updated(){const s=this.querySelectorAll("sonic-input, sonic-button, sonic-select"),e=s.length;e>1&&s.forEach((o,r)=>{const t=o;r===0?(t.style.setProperty("--sc-item-rounded-tr","0"),t.style.setProperty("--sc-item-rounded-br","0")):r===e-1?(t.style.setProperty("--sc-item-rounded-tl","0"),t.style.setProperty("--sc-item-rounded-bl","0")):(t.style.setProperty("--sc-item-rounded-tr","0"),t.style.setProperty("--sc-item-rounded-br","0"),t.style.setProperty("--sc-item-rounded-tl","0"),t.style.setProperty("--sc-item-rounded-bl","0"))})}connectedCallback(){super.connectedCallback(),this.hasSlotOrProps()}willUpdate(s){this.hasSlotOrProps(),super.willUpdate(s)}hasSlotOrProps(){this.hasLabel=!!(this.label||this.slotLabelNodes?.length),this.hasDescription=!!(this.description||this.slotDescriptionNodes?.length)}render(){const s={alignItems:this.alignItems};return p`<span class="${this.hasLabel?"form-label":"hidden"}"
2772
2772
  >${this.label?V(this.label):""}<slot
2773
2773
  name="label"
2774
2774
  @slotchange=${this.hasSlotOrProps}
@@ -2801,7 +2801,7 @@ ${this.value}</textarea
2801
2801
  ::slotted(sonic-select) {
2802
2802
  flex-grow: 1;
2803
2803
  }
2804
- `];Bt([l({type:String})],nt.prototype,"alignItems",2);Bt([l({type:String})],nt.prototype,"label",2);Bt([l({type:String})],nt.prototype,"description",2);Bt([Ce({slot:"label",flatten:!0})],nt.prototype,"slotLabelNodes",2);Bt([Ce({slot:"description",flatten:!0})],nt.prototype,"slotDescriptionNodes",2);Bt([$()],nt.prototype,"hasDescription",2);Bt([$()],nt.prototype,"hasLabel",2);nt=Bt([k(pm)],nt);var hm=Object.defineProperty,mm=Object.getOwnPropertyDescriptor,ht=(s,e,o,r)=>{for(var t=r>1?void 0:r?mm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&hm(e,o,t),t};const gm="sonic-image";let We=class extends D{constructor(){super(...arguments),this.rounded="none",this.src="",this.alt="",this.loading="lazy",this.ratio="auto",this.objectPosition="center center",this.imageRendering="auto",this.cover=!1}firstUpdated(s){if(this.transition){const e=this.shadowRoot?.querySelector("img");if(!e)return;e.onload=function(){e.classList.add("loaded")}}super.firstUpdated(s)}render(){const s={aspectRatio:this.cover?"auto":this.ratio,imageRendering:this.imageRendering,objectPosition:this.objectPosition};return p`<div part="image">
2804
+ `];Bt([l({type:String})],nt.prototype,"alignItems",2);Bt([l({type:String})],nt.prototype,"label",2);Bt([l({type:String})],nt.prototype,"description",2);Bt([Ce({slot:"label",flatten:!0})],nt.prototype,"slotLabelNodes",2);Bt([Ce({slot:"description",flatten:!0})],nt.prototype,"slotDescriptionNodes",2);Bt([$()],nt.prototype,"hasDescription",2);Bt([$()],nt.prototype,"hasLabel",2);nt=Bt([k(bm)],nt);var ym=Object.defineProperty,vm=Object.getOwnPropertyDescriptor,ht=(s,e,o,r)=>{for(var t=r>1?void 0:r?vm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&ym(e,o,t),t};const wm="sonic-image";let Ge=class extends D{constructor(){super(...arguments),this.rounded="none",this.src="",this.alt="",this.loading="lazy",this.ratio="auto",this.objectPosition="center center",this.imageRendering="auto",this.cover=!1}firstUpdated(s){if(this.transition){const e=this.shadowRoot?.querySelector("img");if(!e)return;e.onload=function(){e.classList.add("loaded")}}super.firstUpdated(s)}render(){const s={aspectRatio:this.cover?"auto":this.ratio,imageRendering:this.imageRendering,objectPosition:this.objectPosition};return p`<div part="image">
2805
2805
  <picture part="picture"
2806
2806
  ><img
2807
2807
  part="img"
@@ -2810,7 +2810,7 @@ ${this.value}</textarea
2810
2810
  alt="${this.alt}"
2811
2811
  style=${Fe(s)}
2812
2812
  /></picture>
2813
- </div>`}};We.styles=[L`
2813
+ </div>`}};Ge.styles=[L`
2814
2814
  :host {
2815
2815
  --sc-img-radius: 0;
2816
2816
  --sc-img-bg: var(--sc-placeholder-bg, rgba(12, 12, 12, 0.05));
@@ -2884,7 +2884,7 @@ ${this.value}</textarea
2884
2884
  opacity: 1;
2885
2885
  scale: 1;
2886
2886
  }
2887
- `];ht([l({type:String})],We.prototype,"rounded",2);ht([l({type:String})],We.prototype,"src",2);ht([l({type:String})],We.prototype,"alt",2);ht([l({type:String})],We.prototype,"loading",2);ht([l({type:String,reflect:!0})],We.prototype,"transition",2);ht([l({type:String})],We.prototype,"ratio",2);ht([l({type:String})],We.prototype,"objectPosition",2);ht([l({type:String})],We.prototype,"imageRendering",2);ht([l({type:Boolean,reflect:!0})],We.prototype,"cover",2);We=ht([k(gm)],We);var fm=Object.defineProperty,bm=Object.getOwnPropertyDescriptor,Ie=(s,e,o,r)=>{for(var t=r>1?void 0:r?bm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&fm(e,o,t),t};const ym="sonic-menu";let De=class extends D{constructor(){super(...arguments),this.direction="column",this.gap="var(--sc-menu-gap)",this.align="left",this.shadow=null,this.moreShape="circle",this.scrollable=!1,this.observer=null,this.attributeObserver=null,this.minWidth="0",this.hasMoreElements=!1,this.handleScrollEnd=()=>{this.setScrollShadow(this.menuContent,this.direction)},this.updateIsScollable=()=>{this.scrollable&&(this.initScrollable(),this.setScrollShadow(this.menuContent,this.direction))}}checkIfMore(){this.hasMoreElements=!!this.moreElements?.length}moreSlotChange(){this.checkIfMore(),this.updateIsScollable()}updated(s){const e=this.querySelector(".more-btn");this.size&&e&&e.setAttribute("size",this.size),super.updated(s)}setDividersSize(s){s.forEach(e=>{e.setAttribute("size","sm"),this.direction=="row"?e.style.setProperty("margin","0 .1rem "):e.style.setProperty("margin"," 0.1rem 0")})}mainSlotChange(){this.setChildrenSize(this.menuChildren),this.setDividersSize(this.menuChildren),this.updateIsScollable(),this.updateScrollPosition(),this.observeMenuItemsAttributes()}observeMenuItemsAttributes(){this.attributeObserver?.disconnect(),this.attributeObserver=new MutationObserver(()=>{this.updateScrollPosition()}),this.menuChildren.forEach(s=>{this.attributeObserver.observe(s,{attributes:!0,attributeFilter:["active"]})})}updateScrollPosition(){if(this.scrollable){const s=this.menuChildren.filter(e=>e.hasAttribute("active")&&e.getAttribute("active")!=="false");s.length===1&&requestAnimationFrame(()=>{s[0].scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})})}}connectedCallback(){this.observer=new ResizeObserver(this.updateIsScollable),this.observer.observe(this),super.connectedCallback()}firstUpdated(s){this.menuContent.addEventListener("scrollend",this.handleScrollEnd)}disconnectedCallback(){this.observer?.disconnect(),this.attributeObserver?.disconnect(),this.menuContent.removeEventListener("scrollend",this.handleScrollEnd),super.disconnectedCallback()}initScrollable(){let s=!1,e,o;this.scrollable&&(this.addEventListener("mousedown",r=>{s=!0,this.classList.add("active"),e=r.pageX-this.menuContent.offsetLeft,o=this.menuContent.scrollLeft}),this.addEventListener("mouseleave",()=>{s=!1,this.classList.remove("active")}),this.addEventListener("mouseup",()=>{s=!1,this.classList.remove("active")}),this.addEventListener("mousemove",r=>{if(!s)return;r.preventDefault();const i=(r.pageX-this.menuContent.offsetLeft-e)*1.5;this.menuContent.scrollLeft=o-i,this.setScrollShadow(this.menuContent,this.direction)}),this.addEventListener("scroll",r=>{r.preventDefault(),this.setScrollShadow(this.menuContent,this.direction)}))}setScrollShadow(s,e){e=="row"?(s.scrollLeft>0?this.classList.add("shadow-left"):this.classList.remove("shadow-left"),s.scrollLeft<s.scrollWidth-s.offsetWidth?this.classList.add("shadow-right"):this.classList.remove("shadow-right")):e=="column"&&(s.scrollTop>0?this.classList.add("shadow-top"):this.classList.remove("shadow-top"),s.scrollTop<s.scrollHeight-(s.offsetHeight+1)?this.classList.add("shadow-bottom"):this.classList.remove("shadow-bottom"))}setChildrenSize(s){s.forEach(e=>{this.size&&e.setAttribute("size",this.size),this.align&&e.getAttribute("shape")!="square"&&e.getAttribute("shape")!="circle"&&e.setAttribute("align",this.align),this.direction=="row"&&e.getAttribute("shape")=="block"&&e.setAttribute("shape","default")})}render(){const s={minWidth:this.minWidth,flexDirection:this.direction},e=this.direction=="row",o={gap:this.gap,flexDirection:this.direction},r={display:"block",alignSelf:e?"center":"flex-start",justifySelf:"center",flexDirection:this.direction},t={marginLeft:e?"":".55em"};return p`<menu
2887
+ `];ht([l({type:String})],Ge.prototype,"rounded",2);ht([l({type:String})],Ge.prototype,"src",2);ht([l({type:String})],Ge.prototype,"alt",2);ht([l({type:String})],Ge.prototype,"loading",2);ht([l({type:String,reflect:!0})],Ge.prototype,"transition",2);ht([l({type:String})],Ge.prototype,"ratio",2);ht([l({type:String})],Ge.prototype,"objectPosition",2);ht([l({type:String})],Ge.prototype,"imageRendering",2);ht([l({type:Boolean,reflect:!0})],Ge.prototype,"cover",2);Ge=ht([k(wm)],Ge);var xm=Object.defineProperty,_m=Object.getOwnPropertyDescriptor,Ie=(s,e,o,r)=>{for(var t=r>1?void 0:r?_m(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&xm(e,o,t),t};const Dm="sonic-menu";let De=class extends D{constructor(){super(...arguments),this.direction="column",this.gap="var(--sc-menu-gap)",this.align="left",this.shadow=null,this.moreShape="circle",this.scrollable=!1,this.observer=null,this.attributeObserver=null,this.minWidth="0",this.hasMoreElements=!1,this.handleScrollEnd=()=>{this.setScrollShadow(this.menuContent,this.direction)},this.updateIsScollable=()=>{this.scrollable&&(this.initScrollable(),this.setScrollShadow(this.menuContent,this.direction))}}checkIfMore(){this.hasMoreElements=!!this.moreElements?.length}moreSlotChange(){this.checkIfMore(),this.updateIsScollable()}updated(s){const e=this.querySelector(".more-btn");this.size&&e&&e.setAttribute("size",this.size),super.updated(s)}setDividersSize(s){s.forEach(e=>{e.setAttribute("size","sm"),this.direction=="row"?e.style.setProperty("margin","0 .1rem "):e.style.setProperty("margin"," 0.1rem 0")})}mainSlotChange(){this.setChildrenSize(this.menuChildren),this.setDividersSize(this.menuChildren),this.updateIsScollable(),this.updateScrollPosition(),this.observeMenuItemsAttributes()}observeMenuItemsAttributes(){this.attributeObserver?.disconnect(),this.attributeObserver=new MutationObserver(()=>{this.updateScrollPosition()}),this.menuChildren.forEach(s=>{this.attributeObserver.observe(s,{attributes:!0,attributeFilter:["active"]})})}updateScrollPosition(){if(this.scrollable){const s=this.menuChildren.filter(e=>e.hasAttribute("active")&&e.getAttribute("active")!=="false");s.length===1&&requestAnimationFrame(()=>{s[0].scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})})}}connectedCallback(){this.observer=new ResizeObserver(this.updateIsScollable),this.observer.observe(this),super.connectedCallback()}firstUpdated(s){this.menuContent.addEventListener("scrollend",this.handleScrollEnd)}disconnectedCallback(){this.observer?.disconnect(),this.attributeObserver?.disconnect(),this.menuContent.removeEventListener("scrollend",this.handleScrollEnd),super.disconnectedCallback()}initScrollable(){let s=!1,e,o;this.scrollable&&(this.addEventListener("mousedown",r=>{s=!0,this.classList.add("active"),e=r.pageX-this.menuContent.offsetLeft,o=this.menuContent.scrollLeft}),this.addEventListener("mouseleave",()=>{s=!1,this.classList.remove("active")}),this.addEventListener("mouseup",()=>{s=!1,this.classList.remove("active")}),this.addEventListener("mousemove",r=>{if(!s)return;r.preventDefault();const i=(r.pageX-this.menuContent.offsetLeft-e)*1.5;this.menuContent.scrollLeft=o-i,this.setScrollShadow(this.menuContent,this.direction)}),this.addEventListener("scroll",r=>{r.preventDefault(),this.setScrollShadow(this.menuContent,this.direction)}))}setScrollShadow(s,e){e=="row"?(s.scrollLeft>0?this.classList.add("shadow-left"):this.classList.remove("shadow-left"),s.scrollLeft<s.scrollWidth-s.offsetWidth?this.classList.add("shadow-right"):this.classList.remove("shadow-right")):e=="column"&&(s.scrollTop>0?this.classList.add("shadow-top"):this.classList.remove("shadow-top"),s.scrollTop<s.scrollHeight-(s.offsetHeight+1)?this.classList.add("shadow-bottom"):this.classList.remove("shadow-bottom"))}setChildrenSize(s){s.forEach(e=>{this.size&&e.setAttribute("size",this.size),this.align&&e.getAttribute("shape")!="square"&&e.getAttribute("shape")!="circle"&&e.setAttribute("align",this.align),this.direction=="row"&&e.getAttribute("shape")=="block"&&e.setAttribute("shape","default")})}render(){const s={minWidth:this.minWidth,flexDirection:this.direction},e=this.direction=="row",o={gap:this.gap,flexDirection:this.direction},r={display:"block",alignSelf:e?"center":"flex-start",justifySelf:"center",flexDirection:this.direction},t={marginLeft:e?"":".55em"};return p`<menu
2888
2888
  part="menu"
2889
2889
  class="shadowable"
2890
2890
  style=${Fe(s)}
@@ -3043,14 +3043,14 @@ ${this.value}</textarea
3043
3043
  rgba(0, 0, 0, 0) 100%
3044
3044
  );
3045
3045
  }
3046
- `,Tl];Ie([l({type:String,reflect:!0})],De.prototype,"size",2);Ie([l({type:String,reflect:!0})],De.prototype,"direction",2);Ie([l({type:String})],De.prototype,"gap",2);Ie([l({type:String,reflect:!0})],De.prototype,"align",2);Ie([l({type:String,reflect:!0})],De.prototype,"shadow",2);Ie([l({type:String})],De.prototype,"moreShape",2);Ie([l({type:Boolean})],De.prototype,"scrollable",2);Ie([l({type:String})],De.prototype,"minWidth",2);Ie([lt("menu")],De.prototype,"menu",2);Ie([lt("#menu-content")],De.prototype,"menuContent",2);Ie([Is({selector:"*"})],De.prototype,"menuChildren",2);Ie([Is({slot:"more",selector:"*"})],De.prototype,"moreElements",2);Ie([$()],De.prototype,"hasMoreElements",2);De=Ie([k(ym)],De);var vm=Object.defineProperty,wm=Object.getOwnPropertyDescriptor,Il=(s,e,o,r)=>{for(var t=r>1?void 0:r?wm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&vm(e,o,t),t};const xm="sonic-modal-actions";let ir=class extends D{firstUpdated(s){this.buttons?.forEach(e=>{e.hasAttribute("hideModal")&&e.addEventListener("click",()=>{Ot.getClosestElement(this,"sonic-modal")?.hide()})}),super.firstUpdated(s)}render(){return p`<slot></slot>`}};ir.styles=[L`
3046
+ `,ql];Ie([l({type:String,reflect:!0})],De.prototype,"size",2);Ie([l({type:String,reflect:!0})],De.prototype,"direction",2);Ie([l({type:String})],De.prototype,"gap",2);Ie([l({type:String,reflect:!0})],De.prototype,"align",2);Ie([l({type:String,reflect:!0})],De.prototype,"shadow",2);Ie([l({type:String})],De.prototype,"moreShape",2);Ie([l({type:Boolean})],De.prototype,"scrollable",2);Ie([l({type:String})],De.prototype,"minWidth",2);Ie([lt("menu")],De.prototype,"menu",2);Ie([lt("#menu-content")],De.prototype,"menuContent",2);Ie([Is({selector:"*"})],De.prototype,"menuChildren",2);Ie([Is({slot:"more",selector:"*"})],De.prototype,"moreElements",2);Ie([$()],De.prototype,"hasMoreElements",2);De=Ie([k(Dm)],De);var km=Object.defineProperty,Cm=Object.getOwnPropertyDescriptor,Nl=(s,e,o,r)=>{for(var t=r>1?void 0:r?Cm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&km(e,o,t),t};const Am="sonic-modal-actions";let ir=class extends D{firstUpdated(s){this.buttons?.forEach(e=>{e.hasAttribute("hideModal")&&e.addEventListener("click",()=>{Ot.getClosestElement(this,"sonic-modal")?.hide()})}),super.firstUpdated(s)}render(){return p`<slot></slot>`}};ir.styles=[L`
3047
3047
  :host {
3048
3048
  display: flex;
3049
3049
  gap: 0.5rem;
3050
3050
  margin-top: auto;
3051
3051
  padding-top: 1.5rem;
3052
3052
  }
3053
- `];Il([Is({selector:"sonic-button"})],ir.prototype,"buttons",2);ir=Il([k(xm)],ir);var _m=Object.defineProperty,Dm=Object.getOwnPropertyDescriptor,Gr=(s,e,o,r)=>{for(var t=r>1?void 0:r?Dm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&_m(e,o,t),t};const km="sonic-modal-close";let co=class extends D{constructor(){super(...arguments),this.translation={fr:"Fermer la fenêtre",en:"Close window",de:"Fenster schließen",nl:"Venster sluiten",es:"Cerrar"}}connectedCallback(){super.connectedCallback(),this.lang=document.documentElement.lang?.split("-")[0]??"fr"}render(){return p`<sonic-button
3053
+ `];Nl([Is({selector:"sonic-button"})],ir.prototype,"buttons",2);ir=Nl([k(Am)],ir);var Pm=Object.defineProperty,Sm=Object.getOwnPropertyDescriptor,Gr=(s,e,o,r)=>{for(var t=r>1?void 0:r?Sm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Pm(e,o,t),t};const $m="sonic-modal-close";let co=class extends D{constructor(){super(...arguments),this.translation={fr:"Fermer la fenêtre",en:"Close window",de:"Fenster schließen",nl:"Venster sluiten",es:"Cerrar"}}connectedCallback(){super.connectedCallback(),this.lang=document.documentElement.lang?.split("-")[0]??"fr"}render(){return p`<sonic-button
3054
3054
  noAutoFill
3055
3055
  data-aria-label=${this.translation[this.lang]}
3056
3056
  reset=${T(this.reset)}
@@ -3058,12 +3058,12 @@ ${this.value}</textarea
3058
3058
  @click=${this.handleClick}
3059
3059
  type=${T(this.type)}
3060
3060
  ><sonic-icon name="cancel" size="lg"></sonic-icon
3061
- ></sonic-button>`}handleClick(){ne.getClosestElement(this,"sonic-modal").hide()}};Gr([l()],co.prototype,"translation",2);Gr([l()],co.prototype,"reset",2);Gr([l()],co.prototype,"type",2);co=Gr([k(km)],co);var Cm=Object.getOwnPropertyDescriptor,Am=(s,e,o,r)=>{for(var t=r>1?void 0:r?Cm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Pm="sonic-modal-content";let Ai=class extends D{render(){return p`<slot></slot>`}};Ai.styles=[L`
3061
+ ></sonic-button>`}handleClick(){ne.getClosestElement(this,"sonic-modal").hide()}};Gr([l()],co.prototype,"translation",2);Gr([l()],co.prototype,"reset",2);Gr([l()],co.prototype,"type",2);co=Gr([k($m)],co);var Fm=Object.getOwnPropertyDescriptor,Em=(s,e,o,r)=>{for(var t=r>1?void 0:r?Fm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Lm="sonic-modal-content";let Ai=class extends D{render(){return p`<slot></slot>`}};Ai.styles=[L`
3062
3062
  :host {
3063
3063
  display: block;
3064
3064
  width: 100%;
3065
3065
  }
3066
- `];Ai=Am([k(Pm)],Ai);var Sm=Object.getOwnPropertyDescriptor,$m=(s,e,o,r)=>{for(var t=r>1?void 0:r?Sm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Fm="sonic-modal-subtitle";let Pi=class extends D{render(){return p`<slot></slot>`}};Pi.styles=[L`
3066
+ `];Ai=Em([k(Lm)],Ai);var Tm=Object.getOwnPropertyDescriptor,Om=(s,e,o,r)=>{for(var t=r>1?void 0:r?Tm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Im="sonic-modal-subtitle";let Pi=class extends D{render(){return p`<slot></slot>`}};Pi.styles=[L`
3067
3067
  :host {
3068
3068
  font-size: 1.25rem;
3069
3069
  display: block;
@@ -3075,7 +3075,7 @@ ${this.value}</textarea
3075
3075
  font-weight: var(--sc-headings-font-weight, 700);
3076
3076
  font-style: var(--sc-headings-font-style, normal);
3077
3077
  }
3078
- `];Pi=$m([k(Fm)],Pi);var Em=Object.getOwnPropertyDescriptor,Lm=(s,e,o,r)=>{for(var t=r>1?void 0:r?Em(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Tm="sonic-modal-title";let Si=class extends D{render(){return p`<slot></slot>`}};Si.styles=[L`
3078
+ `];Pi=Om([k(Im)],Pi);var qm=Object.getOwnPropertyDescriptor,Rm=(s,e,o,r)=>{for(var t=r>1?void 0:r?qm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Nm="sonic-modal-title";let Si=class extends D{render(){return p`<slot></slot>`}};Si.styles=[L`
3079
3079
  :host {
3080
3080
  font-weight: bold;
3081
3081
  font-size: 1.5rem;
@@ -3088,7 +3088,7 @@ ${this.value}</textarea
3088
3088
  font-weight: var(--sc-headings-font-weight, 700);
3089
3089
  font-style: var(--sc-headings-font-style, normal);
3090
3090
  }
3091
- `];Si=Lm([k(Tm)],Si);const Ma=new WeakMap;function Om(s){const e=Ma.get(s);if(e)return e;const o=new CSSStyleSheet;return o.replaceSync(s.cssText),Ma.set(s,o),o}function Im(s){return s instanceof vn}function ql(s){return s?(Array.isArray(s)?s:[s]).flatMap(o=>Array.isArray(o)?ql(o):o instanceof CSSStyleSheet?[o]:Im(o)?[Om(o)]:[]):[]}var qm=Object.defineProperty,Rm=Object.getOwnPropertyDescriptor,oe=(s,e,o,r)=>{for(var t=r>1?void 0:r?Rm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&qm(e,o,t),t};const Rl="sonic-modal";let K=class extends de(D){constructor(){super(...arguments),this.forceAction=!1,this.noCloseButton=!1,this.removeOnHide=!1,this.removeHashOnHide=!1,this.align="left",this.maxWidth="min(100vw, 40rem)",this.maxHeight="90vh",this.width="100%",this.height="fit-content",this.effect="slide",this.fullScreen=!1,this.visible=!1,this.closeOnLocationChange=!1,this.location="",this._animationState="hidden",this._adoptedStyleSheets=[],this._animationConfig={quartOut:"cubic-bezier(0.165, 0.84, 0.44, 1)",quadOut:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",linear:"linear",translateY:"translateY(2.5rem)",durationIn:300,durationOut:300}}static create(s){const e=document.createElement(Rl);return e.options=s,s.removeHashOnHide===!0&&e.setAttribute("removeHashOnHide","true"),s.removeOnHide===!0&&e.setAttribute("removeOnHide","true"),s.closeOnLocationChange===!0&&e.setAttribute("closeOnLocationChange","true"),s.maxWidth&&(e.maxWidth=s?.maxWidth),s.width&&(e.width=s?.width),s.maxHeight&&(e.maxHeight=s?.maxHeight),s.height&&(e.height=s?.height),s.forceAction&&(e.forceAction=!0),s.fullScreen&&(e.fullScreen=s?.fullScreen),s.effect&&(e.effect=s?.effect),s.noCloseButton&&(e.noCloseButton=!0),s.closeButtonType&&(e.closeButtonType=s?.closeButtonType),s.styleSheet&&(e.styleSheet=s?.styleSheet),s.paddingX&&(e.paddingX=s?.paddingX),s.paddingY&&(e.paddingY=s?.paddingY),s.zIndex&&(e.zIndex=s?.zIndex),Ne.getPopContainer().appendChild(e),e.updateComplete.then(()=>{e.show()}),e}connectedCallback(){K.modals.push(this),me.onChange(this),super.connectedCallback()}disconnectedCallback(){me.offChange(this),K.modals.splice(K.modals.indexOf(this),1),this.removeEventListener("keydown",this.handleEscape),super.disconnectedCallback()}firstUpdated(){this.addEventListener("keydown",this.handleEscape)}willUpdate(s){if(this.closeOnLocationChange&&s.has("location")){const e=s.get("location");e&&this.location&&this.location!==e&&setTimeout(()=>{this.hide()},50)}s.has("zIndex")&&this.style.setProperty("--sc_z-index",this.zIndex||"990"),s.has("paddingX")&&this.style.setProperty("--sc-modal-px",this.paddingX||""),s.has("paddingY")&&this.style.setProperty("--sc-modal-py",this.paddingY||""),super.willUpdate(s)}updated(s){const e=!s.get("visible")&&this.visible,o=s.get("visible")&&!this.visible;e&&this._animationState==="hidden"?this.show():o&&this._animationState==="visible"&&this.hide(),s.has("styleSheet")&&this.syncAdoptedStyleSheets()}handleOverlayClick(s){!this.forceAction&&this._animationState==="visible"&&this.hide()}render(){const s={maxWidth:this.maxWidth,maxHeight:this.maxHeight,width:this.width,height:this.height,pointerEvents:this._animationState!=="hidden"?"auto":"none"},e={display:this.fullScreen?"none":"block",pointerEvents:this._animationState==="visible"?"auto":"none"};return p`
3091
+ `];Si=Rm([k(Nm)],Si);const Ma=new WeakMap;function Mm(s){const e=Ma.get(s);if(e)return e;const o=new CSSStyleSheet;return o.replaceSync(s.cssText),Ma.set(s,o),o}function jm(s){return s instanceof vn}function Ml(s){return s?(Array.isArray(s)?s:[s]).flatMap(o=>Array.isArray(o)?Ml(o):o instanceof CSSStyleSheet?[o]:jm(o)?[Mm(o)]:[]):[]}var Um=Object.defineProperty,Bm=Object.getOwnPropertyDescriptor,oe=(s,e,o,r)=>{for(var t=r>1?void 0:r?Bm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Um(e,o,t),t};const jl="sonic-modal";let K=class extends de(D){constructor(){super(...arguments),this.forceAction=!1,this.noCloseButton=!1,this.removeOnHide=!1,this.removeHashOnHide=!1,this.align="left",this.maxWidth="min(100vw, 40rem)",this.maxHeight="90vh",this.width="100%",this.height="fit-content",this.effect="slide",this.fullScreen=!1,this.visible=!1,this.closeOnLocationChange=!1,this.location="",this._animationState="hidden",this._adoptedStyleSheets=[],this._animationConfig={quartOut:"cubic-bezier(0.165, 0.84, 0.44, 1)",quadOut:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",linear:"linear",translateY:"translateY(2.5rem)",durationIn:300,durationOut:300}}static create(s){const e=document.createElement(jl);return e.options=s,s.removeHashOnHide===!0&&e.setAttribute("removeHashOnHide","true"),s.removeOnHide===!0&&e.setAttribute("removeOnHide","true"),s.closeOnLocationChange===!0&&e.setAttribute("closeOnLocationChange","true"),s.maxWidth&&(e.maxWidth=s?.maxWidth),s.width&&(e.width=s?.width),s.maxHeight&&(e.maxHeight=s?.maxHeight),s.height&&(e.height=s?.height),s.forceAction&&(e.forceAction=!0),s.fullScreen&&(e.fullScreen=s?.fullScreen),s.effect&&(e.effect=s?.effect),s.noCloseButton&&(e.noCloseButton=!0),s.closeButtonType&&(e.closeButtonType=s?.closeButtonType),s.styleSheet&&(e.styleSheet=s?.styleSheet),s.paddingX&&(e.paddingX=s?.paddingX),s.paddingY&&(e.paddingY=s?.paddingY),s.zIndex&&(e.zIndex=s?.zIndex),Ne.getPopContainer().appendChild(e),e.updateComplete.then(()=>{e.show()}),e}connectedCallback(){K.modals.push(this),me.onChange(this),super.connectedCallback()}disconnectedCallback(){me.offChange(this),K.modals.splice(K.modals.indexOf(this),1),this.removeEventListener("keydown",this.handleEscape),super.disconnectedCallback()}firstUpdated(){this.addEventListener("keydown",this.handleEscape)}willUpdate(s){if(this.closeOnLocationChange&&s.has("location")){const e=s.get("location");e&&this.location&&this.location!==e&&setTimeout(()=>{this.hide()},50)}s.has("zIndex")&&this.style.setProperty("--sc_z-index",this.zIndex||"990"),s.has("paddingX")&&this.style.setProperty("--sc-modal-px",this.paddingX||""),s.has("paddingY")&&this.style.setProperty("--sc-modal-py",this.paddingY||""),super.willUpdate(s)}updated(s){const e=!s.get("visible")&&this.visible,o=s.get("visible")&&!this.visible;e&&this._animationState==="hidden"?this.show():o&&this._animationState==="visible"&&this.hide(),s.has("styleSheet")&&this.syncAdoptedStyleSheets()}handleOverlayClick(s){!this.forceAction&&this._animationState==="visible"&&this.hide()}render(){const s={maxWidth:this.maxWidth,maxHeight:this.maxHeight,width:this.width,height:this.height,pointerEvents:this._animationState!=="hidden"?"auto":"none"},e={display:this.fullScreen?"none":"block",pointerEvents:this._animationState==="visible"?"auto":"none"};return p`
3092
3092
  <div
3093
3093
  id="backdrop"
3094
3094
  @click=${this.handleOverlayClick}
@@ -3111,7 +3111,7 @@ ${this.value}</textarea
3111
3111
  <slot></slot>
3112
3112
  </div>`:S}
3113
3113
  </dialog>
3114
- `}syncAdoptedStyleSheets(){if(!(this.renderRoot instanceof ShadowRoot))return;const s=ql(this.styleSheet),e=this.renderRoot.adoptedStyleSheets.filter(o=>!this._adoptedStyleSheets.includes(o));this.renderRoot.adoptedStyleSheets=[...e,...s],this._adoptedStyleSheets=s}modalFragment(s){const e=this.options?.[s];if(!e)return S;let o;switch(e instanceof Object?o=e:o=V(e),s){case"title":return p`<sonic-modal-title>${o}</sonic-modal-title>`;case"subtitle":return p`<sonic-modal-subtitle>${o}</sonic-modal-subtitle>`;case"content":return p`<sonic-modal-content>${o}</sonic-modal-content>`;case"actions":return p`<sonic-modal-actions>${o}</sonic-modal-actions>`;default:return S}}async show(){this._modalElement.show(),this._animationState="in",await this.animation("in"),this._animationState="visible",this.visible=!0,this.dispatchEvent(new CustomEvent("show")),this._modalElement.focus()}async hide(){this._animationState="out",this.dispatchEvent(new CustomEvent("hide")),await this.animation("out"),this._modalElement.close(),this._animationState="hidden",this.visible=!1,this.hasAttribute("resetDataProviderOnHide")&&R.get(this.getAttribute("resetDataProviderOnHide")).set({}),this.removeHashOnHide&&window.history.replaceState({},"",window.location.pathname),this.removeOnHide&&this.remove(),this.dispatchEvent(new CustomEvent("hidden"))}async dispose(){await this.hide(),this.remove()}static disposeAll(){K.modals.forEach(s=>{s.dispose()})}handleEscape(s){if(s.key==="Escape"){s.preventDefault();const e=K.modals.filter(o=>o._animationState!=="hidden"&&!o.forceAction);e.length>0&&e[e.length-1].hide()}}animation(s){return new Promise(e=>{const{quartOut:o,linear:r,translateY:t,durationIn:i,durationOut:n,quadOut:a}=this._animationConfig,c=this._modalElement;if(!c)return e();const g=s==="in",f=g?i:n,h=!this.fullScreen&&g?100:0;this.fullScreen||(g?this.style.setProperty("--sc_backdrop-opacity","0.8"):setTimeout(()=>{this.style.setProperty("--sc_backdrop-opacity","0")},150));const w=[];this.effect==="slide"&&(w.push(c.animate([{transform:g?t:"translateY(0)"},{transform:g?"translateY(0)":t}],{duration:f,easing:g?o:a,fill:"both",delay:h})),w.push(c.animate([{opacity:g?0:1},{opacity:g?1:0}],{duration:f,easing:r,fill:"both",delay:h}))),Promise.all(w.map(A=>A.finished)).then(()=>e())})}};K.styles=[Ms,L`
3114
+ `}syncAdoptedStyleSheets(){if(!(this.renderRoot instanceof ShadowRoot))return;const s=Ml(this.styleSheet),e=this.renderRoot.adoptedStyleSheets.filter(o=>!this._adoptedStyleSheets.includes(o));this.renderRoot.adoptedStyleSheets=[...e,...s],this._adoptedStyleSheets=s}modalFragment(s){const e=this.options?.[s];if(!e)return S;let o;switch(e instanceof Object?o=e:o=V(e),s){case"title":return p`<sonic-modal-title>${o}</sonic-modal-title>`;case"subtitle":return p`<sonic-modal-subtitle>${o}</sonic-modal-subtitle>`;case"content":return p`<sonic-modal-content>${o}</sonic-modal-content>`;case"actions":return p`<sonic-modal-actions>${o}</sonic-modal-actions>`;default:return S}}async show(){this._modalElement.show(),this._animationState="in",await this.animation("in"),this._animationState="visible",this.visible=!0,this.dispatchEvent(new CustomEvent("show")),this._modalElement.focus()}async hide(){this._animationState="out",this.dispatchEvent(new CustomEvent("hide")),await this.animation("out"),this._modalElement.close(),this._animationState="hidden",this.visible=!1,this.hasAttribute("resetDataProviderOnHide")&&R.get(this.getAttribute("resetDataProviderOnHide")).set({}),this.removeHashOnHide&&window.history.replaceState({},"",window.location.pathname),this.removeOnHide&&this.remove(),this.dispatchEvent(new CustomEvent("hidden"))}async dispose(){await this.hide(),this.remove()}static disposeAll(){K.modals.forEach(s=>{s.dispose()})}handleEscape(s){if(s.key==="Escape"){s.preventDefault();const e=K.modals.filter(o=>o._animationState!=="hidden"&&!o.forceAction);e.length>0&&e[e.length-1].hide()}}animation(s){return new Promise(e=>{const{quartOut:o,linear:r,translateY:t,durationIn:i,durationOut:n,quadOut:a}=this._animationConfig,c=this._modalElement;if(!c)return e();const g=s==="in",b=g?i:n,h=!this.fullScreen&&g?100:0;this.fullScreen||(g?this.style.setProperty("--sc_backdrop-opacity","0.8"):setTimeout(()=>{this.style.setProperty("--sc_backdrop-opacity","0")},150));const x=[];this.effect==="slide"&&(x.push(c.animate([{transform:g?t:"translateY(0)"},{transform:g?"translateY(0)":t}],{duration:b,easing:g?o:a,fill:"both",delay:h})),x.push(c.animate([{opacity:g?0:1},{opacity:g?1:0}],{duration:b,easing:r,fill:"both",delay:h}))),Promise.all(x.map(A=>A.finished)).then(()=>e())})}};K.styles=[Ms,L`
3115
3115
  :host {
3116
3116
  --sc-modal-py: 2.5rem;
3117
3117
  --sc-modal-px: 1.5rem;
@@ -3262,10 +3262,10 @@ ${this.value}</textarea
3262
3262
  transform: scale(0) !important;
3263
3263
  transition: 0.2s linear !important;
3264
3264
  }
3265
- `];K.modals=[];oe([l({type:Boolean})],K.prototype,"forceAction",2);oe([l({type:Boolean})],K.prototype,"noCloseButton",2);oe([l({type:Boolean})],K.prototype,"removeOnHide",2);oe([l({type:Boolean})],K.prototype,"removeHashOnHide",2);oe([l({type:String,reflect:!0})],K.prototype,"align",2);oe([l({type:String})],K.prototype,"paddingX",2);oe([l({type:String})],K.prototype,"paddingY",2);oe([l({type:String})],K.prototype,"maxWidth",2);oe([l({type:String})],K.prototype,"maxHeight",2);oe([l({type:String})],K.prototype,"zIndex",2);oe([l({type:String})],K.prototype,"width",2);oe([l({type:String})],K.prototype,"height",2);oe([l({type:String})],K.prototype,"effect",2);oe([l({attribute:!1})],K.prototype,"styleSheet",2);oe([l({type:Object})],K.prototype,"options",2);oe([l({type:Boolean,reflect:!0})],K.prototype,"fullScreen",2);oe([l({type:Boolean,reflect:!0})],K.prototype,"visible",2);oe([l({type:String})],K.prototype,"closeButtonType",2);oe([lt("#modal")],K.prototype,"_modalElement",2);oe([l({type:Boolean})],K.prototype,"closeOnLocationChange",2);oe([$()],K.prototype,"location",2);oe([$()],K.prototype,"_animationState",2);K=oe([k(Rl)],K);typeof window<"u"&&(window.SonicModal=K);var Nm=Object.defineProperty,Mm=Object.getOwnPropertyDescriptor,mt=(s,e,o,r)=>{for(var t=r>1?void 0:r?Mm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Nm(e,o,t),t};const jm={warning:"warning-circled-outline",success:"check-circled-outline",error:"warning-circled-outline",info:"info-empty",default:"info-empty"},Um="sonic-alert";let Ge=class extends D{constructor(){super(...arguments),this.label="",this.noIcon=!1,this.text="",this.id=new Date().getTime().toString(),this.dismissible=!1,this.background=!1,this.status="default",this.dismissForever=!1}connectedCallback(){if(this.dismissForever){const s=localStorage.getItem("sonic-alert-dismissed")||"{}";JSON.parse(s)[this.id]&&this.remove()}super.connectedCallback()}render(){return p`
3265
+ `];K.modals=[];oe([l({type:Boolean})],K.prototype,"forceAction",2);oe([l({type:Boolean})],K.prototype,"noCloseButton",2);oe([l({type:Boolean})],K.prototype,"removeOnHide",2);oe([l({type:Boolean})],K.prototype,"removeHashOnHide",2);oe([l({type:String,reflect:!0})],K.prototype,"align",2);oe([l({type:String})],K.prototype,"paddingX",2);oe([l({type:String})],K.prototype,"paddingY",2);oe([l({type:String})],K.prototype,"maxWidth",2);oe([l({type:String})],K.prototype,"maxHeight",2);oe([l({type:String})],K.prototype,"zIndex",2);oe([l({type:String})],K.prototype,"width",2);oe([l({type:String})],K.prototype,"height",2);oe([l({type:String})],K.prototype,"effect",2);oe([l({attribute:!1})],K.prototype,"styleSheet",2);oe([l({type:Object})],K.prototype,"options",2);oe([l({type:Boolean,reflect:!0})],K.prototype,"fullScreen",2);oe([l({type:Boolean,reflect:!0})],K.prototype,"visible",2);oe([l({type:String})],K.prototype,"closeButtonType",2);oe([lt("#modal")],K.prototype,"_modalElement",2);oe([l({type:Boolean})],K.prototype,"closeOnLocationChange",2);oe([$()],K.prototype,"location",2);oe([$()],K.prototype,"_animationState",2);K=oe([k(jl)],K);typeof window<"u"&&(window.SonicModal=K);var zm=Object.defineProperty,Km=Object.getOwnPropertyDescriptor,mt=(s,e,o,r)=>{for(var t=r>1?void 0:r?Km(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&zm(e,o,t),t};const Hm={warning:"warning-circled-outline",success:"check-circled-outline",error:"warning-circled-outline",info:"info-empty",default:"info-empty"},Vm="sonic-alert";let Je=class extends D{constructor(){super(...arguments),this.label="",this.noIcon=!1,this.text="",this.id=new Date().getTime().toString(),this.dismissible=!1,this.background=!1,this.status="default",this.dismissForever=!1}connectedCallback(){if(this.dismissForever){const s=localStorage.getItem("sonic-alert-dismissed")||"{}";JSON.parse(s)[this.id]&&this.remove()}super.connectedCallback()}render(){return p`
3266
3266
  <slot name="icon" class="${this.noIcon?"hidden":""}"
3267
3267
  >${this.noIcon?S:p`<div>
3268
- ${this.status&&p`<sonic-icon name=${jm[this.status]}></sonic-icon>`}
3268
+ ${this.status&&p`<sonic-icon name=${Hm[this.status]}></sonic-icon>`}
3269
3269
  </div>`}</slot
3270
3270
  >
3271
3271
  <div class="content">
@@ -3281,7 +3281,7 @@ ${this.value}</textarea
3281
3281
  >
3282
3282
  <sonic-icon name="cancel"></sonic-icon>
3283
3283
  </sonic-button>`:S}
3284
- `}close(){if(this.remove(),this.dismissForever){const s=localStorage.getItem("sonic-alert-dismissed")||"{}",e=JSON.parse(s);e[this.id]=!0,localStorage.setItem("sonic-alert-dismissed",JSON.stringify(e))}}};Ge.styles=[ct,L`
3284
+ `}close(){if(this.remove(),this.dismissForever){const s=localStorage.getItem("sonic-alert-dismissed")||"{}",e=JSON.parse(s);e[this.id]=!0,localStorage.setItem("sonic-alert-dismissed",JSON.stringify(e))}}};Je.styles=[ct,L`
3285
3285
  :host {
3286
3286
  --sc_color: var(--sc-base-content, #000);
3287
3287
  --sc_rounded: var(--sc-rounded);
@@ -3368,7 +3368,7 @@ ${this.value}</textarea
3368
3368
  top: 0.4rem;
3369
3369
  right: 0.3rem;
3370
3370
  }
3371
- `];mt([l({type:String})],Ge.prototype,"label",2);mt([l({type:Boolean,reflect:!0})],Ge.prototype,"noIcon",2);mt([l({type:String})],Ge.prototype,"text",2);mt([l({type:String})],Ge.prototype,"id",2);mt([l({type:String,reflect:!0})],Ge.prototype,"size",2);mt([l({type:Boolean,reflect:!0})],Ge.prototype,"dismissible",2);mt([l({type:Boolean,reflect:!0})],Ge.prototype,"background",2);mt([l({type:String,reflect:!0})],Ge.prototype,"status",2);mt([l({type:Boolean,reflect:!0})],Ge.prototype,"dismissForever",2);Ge=mt([k(Um)],Ge);var Bm=Object.defineProperty,zm=Object.getOwnPropertyDescriptor,To=(s,e,o,r)=>{for(var t=r>1?void 0:r?zm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Bm(e,o,t),t};const Km="sonic-alert-messages";let ns=class extends de(D){constructor(){super(...arguments),this.size="md",this.background=!1,this.noIcon=!1,this.messages=[]}render(){return this.messages?.length?p`<div class="container">
3371
+ `];mt([l({type:String})],Je.prototype,"label",2);mt([l({type:Boolean,reflect:!0})],Je.prototype,"noIcon",2);mt([l({type:String})],Je.prototype,"text",2);mt([l({type:String})],Je.prototype,"id",2);mt([l({type:String,reflect:!0})],Je.prototype,"size",2);mt([l({type:Boolean,reflect:!0})],Je.prototype,"dismissible",2);mt([l({type:Boolean,reflect:!0})],Je.prototype,"background",2);mt([l({type:String,reflect:!0})],Je.prototype,"status",2);mt([l({type:Boolean,reflect:!0})],Je.prototype,"dismissForever",2);Je=mt([k(Vm)],Je);var Wm=Object.defineProperty,Gm=Object.getOwnPropertyDescriptor,To=(s,e,o,r)=>{for(var t=r>1?void 0:r?Gm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Wm(e,o,t),t};const Jm="sonic-alert-messages";let ns=class extends de(D){constructor(){super(...arguments),this.size="md",this.background=!1,this.noIcon=!1,this.messages=[]}render(){return this.messages?.length?p`<div class="container">
3372
3372
  ${vl(this.messages,s=>s.type=="public"?p`<sonic-alert
3373
3373
  status=${s.status||"default"}
3374
3374
  text=${T(s.content)}
@@ -3383,7 +3383,7 @@ ${this.value}</textarea
3383
3383
  grid-template-columns: minmax(0, 1fr);
3384
3384
  width: 100%;
3385
3385
  }
3386
- `];To([l({type:String})],ns.prototype,"size",2);To([l({type:Boolean})],ns.prototype,"background",2);To([l({type:Boolean})],ns.prototype,"noIcon",2);To([l({type:Array})],ns.prototype,"messages",2);ns=To([k(Km)],ns);var Hm=Object.defineProperty,Vm=Object.getOwnPropertyDescriptor,Nl=(s,e,o,r)=>{for(var t=r>1?void 0:r?Vm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Hm(e,o,t),t};const Wm="sonic-toast-message-subscriber";let $i=class extends de(D){constructor(){super(...arguments),this._messages=[]}get messages(){return this._messages}set messages(s){this._messages=s,this.messages&&s.forEach(e=>{e.type=="public"&&j.add({text:e.content||"",status:e.status})})}render(){return S}};Nl([l({type:Array})],$i.prototype,"messages",1);$i=Nl([k(Wm)],$i);var Gm=Object.defineProperty,Jm=Object.getOwnPropertyDescriptor,Oo=(s,e,o,r)=>{for(var t=r>1?void 0:r?Jm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Gm(e,o,t),t};const Ym="sonic-tooltip";let as=class extends D{constructor(){super(),this.label="",this.disabled=!1,this.focusable=!1,this.lastKeyWasTab=!1,this.handleKeyDown=s=>{s.key==="Tab"&&(this.lastKeyWasTab=!0)},this.handleMouseDown=()=>{this.lastKeyWasTab=!1,this.classList.remove("keyboard-focus")},this.handleFocusIn=()=>{this.lastKeyWasTab&&this.classList.add("keyboard-focus"),this.lastKeyWasTab=!1},this.handleFocusOut=()=>{this.classList.remove("keyboard-focus"),this.lastKeyWasTab=!1},this.boundHandleKeyDown=this.handleKeyDown.bind(this),this.boundHandleMouseDown=this.handleMouseDown.bind(this)}connectedCallback(){super.connectedCallback(),this.addEventListener("focusin",this.handleFocusIn),this.addEventListener("focusout",this.handleFocusOut),document.addEventListener("keydown",this.boundHandleKeyDown,!0),document.addEventListener("mousedown",this.boundHandleMouseDown,!0)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("focusin",this.handleFocusIn),this.removeEventListener("focusout",this.handleFocusOut),document.removeEventListener("keydown",this.boundHandleKeyDown,!0),document.removeEventListener("mousedown",this.boundHandleMouseDown,!0)}willUpdate(s){if(s.has("disabled")){const e=s.get("disabled")===!0;this.disabled?(this.setAttribute("tabindex","-1"),this.classList.remove("keyboard-focus")):!this.disabled&&e&&(this.focusable?this.setAttribute("tabindex","0"):this.removeAttribute("tabindex"))}s.has("focusable")&&(this.focusable&&!this.disabled?this.setAttribute("tabindex","0"):!this.focusable&&!this.disabled&&this.removeAttribute("tabindex")),super.willUpdate(s)}render(){const s=this.disabled||this.label==""?"disabled":"";return p`<div
3386
+ `];To([l({type:String})],ns.prototype,"size",2);To([l({type:Boolean})],ns.prototype,"background",2);To([l({type:Boolean})],ns.prototype,"noIcon",2);To([l({type:Array})],ns.prototype,"messages",2);ns=To([k(Jm)],ns);var Ym=Object.defineProperty,Qm=Object.getOwnPropertyDescriptor,Ul=(s,e,o,r)=>{for(var t=r>1?void 0:r?Qm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Ym(e,o,t),t};const Zm="sonic-toast-message-subscriber";let $i=class extends de(D){constructor(){super(...arguments),this._messages=[]}get messages(){return this._messages}set messages(s){this._messages=s,this.messages&&s.forEach(e=>{e.type=="public"&&j.add({text:e.content||"",status:e.status})})}render(){return S}};Ul([l({type:Array})],$i.prototype,"messages",1);$i=Ul([k(Zm)],$i);var Xm=Object.defineProperty,eg=Object.getOwnPropertyDescriptor,Oo=(s,e,o,r)=>{for(var t=r>1?void 0:r?eg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Xm(e,o,t),t};const tg="sonic-tooltip";let as=class extends D{constructor(){super(),this.label="",this.disabled=!1,this.focusable=!1,this.lastKeyWasTab=!1,this.handleKeyDown=s=>{s.key==="Tab"&&(this.lastKeyWasTab=!0)},this.handleMouseDown=()=>{this.lastKeyWasTab=!1,this.classList.remove("keyboard-focus")},this.handleFocusIn=()=>{this.lastKeyWasTab&&this.classList.add("keyboard-focus"),this.lastKeyWasTab=!1},this.handleFocusOut=()=>{this.classList.remove("keyboard-focus"),this.lastKeyWasTab=!1},this.boundHandleKeyDown=this.handleKeyDown.bind(this),this.boundHandleMouseDown=this.handleMouseDown.bind(this)}connectedCallback(){super.connectedCallback(),this.addEventListener("focusin",this.handleFocusIn),this.addEventListener("focusout",this.handleFocusOut),document.addEventListener("keydown",this.boundHandleKeyDown,!0),document.addEventListener("mousedown",this.boundHandleMouseDown,!0)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("focusin",this.handleFocusIn),this.removeEventListener("focusout",this.handleFocusOut),document.removeEventListener("keydown",this.boundHandleKeyDown,!0),document.removeEventListener("mousedown",this.boundHandleMouseDown,!0)}willUpdate(s){if(s.has("disabled")){const e=s.get("disabled")===!0;this.disabled?(this.setAttribute("tabindex","-1"),this.classList.remove("keyboard-focus")):!this.disabled&&e&&(this.focusable?this.setAttribute("tabindex","0"):this.removeAttribute("tabindex"))}s.has("focusable")&&(this.focusable&&!this.disabled?this.setAttribute("tabindex","0"):!this.focusable&&!this.disabled&&this.removeAttribute("tabindex")),super.willUpdate(s)}render(){const s=this.disabled||this.label==""?"disabled":"";return p`<div
3387
3387
  data-tooltip-text="${this.label.trim().replace("&nbsp;"," ")}"
3388
3388
  class="tooltip ${s}"
3389
3389
  >
@@ -3494,11 +3494,11 @@ ${this.value}</textarea
3494
3494
  bottom: 0;
3495
3495
  left: var(--sc-tooltip-position);
3496
3496
  }
3497
- `];Oo([l({type:String})],as.prototype,"label",2);Oo([l({type:String,reflect:!0})],as.prototype,"placement",2);Oo([l({type:Boolean})],as.prototype,"disabled",2);Oo([l({type:Boolean})],as.prototype,"focusable",2);as=Oo([k(Ym)],as);var Qm=Object.defineProperty,Zm=Object.getOwnPropertyDescriptor,gt=(s,e,o,r)=>{for(var t=r>1?void 0:r?Zm(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Qm(e,o,t),t};const Xm="sonic-divider";let Je=class extends D{constructor(){super(...arguments),this.label="",this.align="center",this.vertical=!1,this.noMargin=!1,this.dashed=!1,this.dotted=!1}firstUpdated(s){super.firstUpdated(s),(this.label||this.slotNodes?.length)&&this.divider?.classList.add("has-text")}render(){return p`<div part="divider">
3497
+ `];Oo([l({type:String})],as.prototype,"label",2);Oo([l({type:String,reflect:!0})],as.prototype,"placement",2);Oo([l({type:Boolean})],as.prototype,"disabled",2);Oo([l({type:Boolean})],as.prototype,"focusable",2);as=Oo([k(tg)],as);var sg=Object.defineProperty,og=Object.getOwnPropertyDescriptor,gt=(s,e,o,r)=>{for(var t=r>1?void 0:r?og(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&sg(e,o,t),t};const rg="sonic-divider";let Ye=class extends D{constructor(){super(...arguments),this.label="",this.align="center",this.vertical=!1,this.noMargin=!1,this.dashed=!1,this.dotted=!1}firstUpdated(s){super.firstUpdated(s),(this.label||this.slotNodes?.length)&&this.divider?.classList.add("has-text")}render(){return p`<div part="divider">
3498
3498
  <span class="text"
3499
3499
  >${V(this.label?this.label:"")}<slot></slot
3500
3500
  ></span>
3501
- </div>`}};Je.styles=[L`
3501
+ </div>`}};Ye.styles=[L`
3502
3502
  :host {
3503
3503
  --sc-divider-my: 0.5rem;
3504
3504
  --sc-divider-mx: 0;
@@ -3629,7 +3629,7 @@ ${this.value}</textarea
3629
3629
  :host([dashed]) {
3630
3630
  --sc-divider-border-style: dashed;
3631
3631
  }
3632
- `];gt([Ce({flatten:!0})],Je.prototype,"slotNodes",2);gt([lt("div")],Je.prototype,"divider",2);gt([l({type:String})],Je.prototype,"label",2);gt([l({type:String,reflect:!0})],Je.prototype,"size",2);gt([l({type:String,reflect:!0})],Je.prototype,"align",2);gt([l({type:Boolean,reflect:!0})],Je.prototype,"vertical",2);gt([l({type:Boolean,reflect:!0})],Je.prototype,"noMargin",2);gt([l({type:Boolean,reflect:!0})],Je.prototype,"dashed",2);gt([l({type:Boolean,reflect:!0})],Je.prototype,"dotted",2);Je=gt([k(Xm)],Je);var eg=Object.getOwnPropertyDescriptor,tg=(s,e,o,r)=>{for(var t=r>1?void 0:r?eg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const sg="sonic-card-header-description";let Fi=class extends D{render(){return p`<slot></slot>`}};Fi.styles=[L`
3632
+ `];gt([Ce({flatten:!0})],Ye.prototype,"slotNodes",2);gt([lt("div")],Ye.prototype,"divider",2);gt([l({type:String})],Ye.prototype,"label",2);gt([l({type:String,reflect:!0})],Ye.prototype,"size",2);gt([l({type:String,reflect:!0})],Ye.prototype,"align",2);gt([l({type:Boolean,reflect:!0})],Ye.prototype,"vertical",2);gt([l({type:Boolean,reflect:!0})],Ye.prototype,"noMargin",2);gt([l({type:Boolean,reflect:!0})],Ye.prototype,"dashed",2);gt([l({type:Boolean,reflect:!0})],Ye.prototype,"dotted",2);Ye=gt([k(rg)],Ye);var ig=Object.getOwnPropertyDescriptor,ng=(s,e,o,r)=>{for(var t=r>1?void 0:r?ig(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const ag="sonic-card-header-description";let Fi=class extends D{render(){return p`<slot></slot>`}};Fi.styles=[L`
3633
3633
  :host() {
3634
3634
  display: block;
3635
3635
  font-size: 0.7em;
@@ -3637,7 +3637,7 @@ ${this.value}</textarea
3637
3637
  font-family: var(--sc-font-family-base, sans-serif);
3638
3638
  font-weight: var(--sc-font-style-base, normal);
3639
3639
  }
3640
- `];Fi=tg([k(sg)],Fi);var og=Object.defineProperty,rg=Object.getOwnPropertyDescriptor,Un=(s,e,o,r)=>{for(var t=r>1?void 0:r?rg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&og(e,o,t),t};const ig="sonic-card-header";let uo=class extends D{render(){return p`
3640
+ `];Fi=ng([k(ag)],Fi);var lg=Object.defineProperty,cg=Object.getOwnPropertyDescriptor,Un=(s,e,o,r)=>{for(var t=r>1?void 0:r?cg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&lg(e,o,t),t};const dg="sonic-card-header";let uo=class extends D{render(){return p`
3641
3641
  <div class="header-content">
3642
3642
  ${V(this.label)}
3643
3643
  ${this.description?p`<sonic-card-header-description
@@ -3684,15 +3684,15 @@ ${this.value}</textarea
3684
3684
  ::slotted(sonic-card-header-description) {
3685
3685
  margin-top: 0.1em;
3686
3686
  }
3687
- `];Un([l()],uo.prototype,"label",2);Un([l()],uo.prototype,"description",2);uo=Un([k(ig)],uo);var ng=Object.getOwnPropertyDescriptor,ag=(s,e,o,r)=>{for(var t=r>1?void 0:r?ng(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const lg="sonic-card-main";let Ei=class extends D{render(){return p`<slot></slot>`}};Ei.styles=[L`
3687
+ `];Un([l()],uo.prototype,"label",2);Un([l()],uo.prototype,"description",2);uo=Un([k(dg)],uo);var ug=Object.getOwnPropertyDescriptor,pg=(s,e,o,r)=>{for(var t=r>1?void 0:r?ug(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const hg="sonic-card-main";let Ei=class extends D{render(){return p`<slot></slot>`}};Ei.styles=[L`
3688
3688
  :host {
3689
3689
  display: block;
3690
3690
  }
3691
- `];Ei=ag([k(lg)],Ei);var cg=Object.getOwnPropertyDescriptor,dg=(s,e,o,r)=>{for(var t=r>1?void 0:r?cg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const ug="sonic-card-footer";let Li=class extends D{render(){return p` <slot></slot> `}};Li.styles=[L`
3691
+ `];Ei=pg([k(hg)],Ei);var mg=Object.getOwnPropertyDescriptor,gg=(s,e,o,r)=>{for(var t=r>1?void 0:r?mg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const fg="sonic-card-footer";let Li=class extends D{render(){return p` <slot></slot> `}};Li.styles=[L`
3692
3692
  :host {
3693
3693
  display: block;
3694
3694
  }
3695
- `];Li=dg([k(ug)],Li);const Bn=L`
3695
+ `];Li=gg([k(fg)],Li);const Bn=L`
3696
3696
  :host {
3697
3697
  --sc-_color: inherit;
3698
3698
  color: var(--sc-_color);
@@ -3717,7 +3717,7 @@ ${this.value}</textarea
3717
3717
  .inherit-color {
3718
3718
  color: var(--sc-_color);
3719
3719
  }
3720
- `,pg=L`
3720
+ `,bg=L`
3721
3721
  :host {
3722
3722
  --sc-_color: inherit;
3723
3723
  --sc-_bg: inherit;
@@ -3780,7 +3780,7 @@ ${this.value}</textarea
3780
3780
  .inherit-bg {
3781
3781
  color: inherit;
3782
3782
  }
3783
- `;var hg=Object.defineProperty,mg=Object.getOwnPropertyDescriptor,Ml=(s,e,o,r)=>{for(var t=r>1?void 0:r?mg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&hg(e,o,t),t};const gg="sonic-card";let nr=class extends D{constructor(){super(...arguments),this.type="base"}render(){return p`<slot></slot> `}};nr.styles=[pg,L`
3783
+ `;var yg=Object.defineProperty,vg=Object.getOwnPropertyDescriptor,Bl=(s,e,o,r)=>{for(var t=r>1?void 0:r?vg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&yg(e,o,t),t};const wg="sonic-card";let nr=class extends D{constructor(){super(...arguments),this.type="base"}render(){return p`<slot></slot> `}};nr.styles=[bg,L`
3784
3784
  * {
3785
3785
  box-sizing: border-box;
3786
3786
  }
@@ -3810,7 +3810,7 @@ ${this.value}</textarea
3810
3810
  box-shadow: var(--sc-_shadow);
3811
3811
  color: var(--sc-_color);
3812
3812
  }
3813
- `];Ml([l({type:String,reflect:!0})],nr.prototype,"type",2);nr=Ml([k(gg)],nr);var fg=Object.defineProperty,bg=Object.getOwnPropertyDescriptor,Io=(s,e,o,r)=>{for(var t=r>1?void 0:r?bg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&fg(e,o,t),t};const yg="sonic-tr";let ls=class extends de(D){constructor(){super(...arguments),this._metadata_={}}willUpdate(s){s.has("_metadata_")&&(this.even=!!this._metadata_.even,this.odd=!!this._metadata_.odd,this.last=!!this._metadata_.lastChild),super.willUpdate(s)}render(){return p`<slot></slot>`}};ls.styles=[Bn,L`
3813
+ `];Bl([l({type:String,reflect:!0})],nr.prototype,"type",2);nr=Bl([k(wg)],nr);var xg=Object.defineProperty,_g=Object.getOwnPropertyDescriptor,Io=(s,e,o,r)=>{for(var t=r>1?void 0:r?_g(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&xg(e,o,t),t};const Dg="sonic-tr";let ls=class extends de(D){constructor(){super(...arguments),this._metadata_={}}willUpdate(s){s.has("_metadata_")&&(this.even=!!this._metadata_.even,this.odd=!!this._metadata_.odd,this.last=!!this._metadata_.lastChild),super.willUpdate(s)}render(){return p`<slot></slot>`}};ls.styles=[Bn,L`
3814
3814
  :host {
3815
3815
  display: table-row;
3816
3816
  }
@@ -3828,7 +3828,7 @@ ${this.value}</textarea
3828
3828
  :host(:hover) {
3829
3829
  background: var(--sc-table-hover-bg) !important;
3830
3830
  }
3831
- `];Io([l({type:Object})],ls.prototype,"_metadata_",2);Io([l({type:Boolean,reflect:!0})],ls.prototype,"even",2);Io([l({type:Boolean,reflect:!0})],ls.prototype,"odd",2);Io([l({type:Boolean,reflect:!0})],ls.prototype,"last",2);ls=Io([k(yg)],ls);var vg=Object.defineProperty,wg=Object.getOwnPropertyDescriptor,gs=(s,e,o,r)=>{for(var t=r>1?void 0:r?wg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&vg(e,o,t),t};const xg="sonic-th";let xt=class extends D{render(){const s={textAlign:this.align,minWidth:this.minWidth,maxWidth:this.maxWidth,width:this.width};return p`<th
3831
+ `];Io([l({type:Object})],ls.prototype,"_metadata_",2);Io([l({type:Boolean,reflect:!0})],ls.prototype,"even",2);Io([l({type:Boolean,reflect:!0})],ls.prototype,"odd",2);Io([l({type:Boolean,reflect:!0})],ls.prototype,"last",2);ls=Io([k(Dg)],ls);var kg=Object.defineProperty,Cg=Object.getOwnPropertyDescriptor,gs=(s,e,o,r)=>{for(var t=r>1?void 0:r?Cg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&kg(e,o,t),t};const Ag="sonic-th";let xt=class extends D{render(){const s={textAlign:this.align,minWidth:this.minWidth,maxWidth:this.maxWidth,width:this.width};return p`<th
3832
3832
  part="th"
3833
3833
  style=${Fe(s)}
3834
3834
  colspan=${T(this.colSpan)}
@@ -3858,7 +3858,7 @@ ${this.value}</textarea
3858
3858
  :host([noBorder]) th {
3859
3859
  border-bottom: none;
3860
3860
  }
3861
- `];gs([l({type:Number})],xt.prototype,"colSpan",2);gs([l({type:Number})],xt.prototype,"rowSpan",2);gs([l({type:String})],xt.prototype,"align",2);gs([l({type:String})],xt.prototype,"minWidth",2);gs([l({type:String})],xt.prototype,"maxWidth",2);gs([l({type:String})],xt.prototype,"width",2);xt=gs([k(xg)],xt);var _g=Object.defineProperty,Dg=Object.getOwnPropertyDescriptor,zt=(s,e,o,r)=>{for(var t=r>1?void 0:r?Dg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&_g(e,o,t),t};const kg="sonic-td";let at=class extends D{render(){const s={textAlign:this.align,verticalAlign:this.vAlign,minWidth:this.minWidth,maxWidth:this.maxWidth,width:this.width};return p`<td part="td" style=${Fe(s)} colspan=${T(this.colSpan)} rowspan=${T(this.rowSpan)}>
3861
+ `];gs([l({type:Number})],xt.prototype,"colSpan",2);gs([l({type:Number})],xt.prototype,"rowSpan",2);gs([l({type:String})],xt.prototype,"align",2);gs([l({type:String})],xt.prototype,"minWidth",2);gs([l({type:String})],xt.prototype,"maxWidth",2);gs([l({type:String})],xt.prototype,"width",2);xt=gs([k(Ag)],xt);var Pg=Object.defineProperty,Sg=Object.getOwnPropertyDescriptor,zt=(s,e,o,r)=>{for(var t=r>1?void 0:r?Sg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Pg(e,o,t),t};const $g="sonic-td";let at=class extends D{render(){const s={textAlign:this.align,verticalAlign:this.vAlign,minWidth:this.minWidth,maxWidth:this.maxWidth,width:this.width};return p`<td part="td" style=${Fe(s)} colspan=${T(this.colSpan)} rowspan=${T(this.rowSpan)}>
3862
3862
  <slot></slot>
3863
3863
  </td>`}};at.styles=[Bn,L`
3864
3864
  :host {
@@ -3873,11 +3873,11 @@ ${this.value}</textarea
3873
3873
  border-right: var(--sc-table-td-border-r, none);
3874
3874
  border-left: var(--sc-table-td-border-l, none);
3875
3875
  }
3876
- `];zt([l({type:Number})],at.prototype,"colSpan",2);zt([l({type:Number})],at.prototype,"rowSpan",2);zt([l({type:String})],at.prototype,"align",2);zt([l({type:String})],at.prototype,"vAlign",2);zt([l({type:String})],at.prototype,"minWidth",2);zt([l({type:String})],at.prototype,"maxWidth",2);zt([l({type:String})],at.prototype,"width",2);at=zt([k(kg)],at);var Cg=Object.getOwnPropertyDescriptor,Ag=(s,e,o,r)=>{for(var t=r>1?void 0:r?Cg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Pg="sonic-thead";let Ti=class extends D{render(){return p`<slot></slot>`}};Ti.styles=[L`
3876
+ `];zt([l({type:Number})],at.prototype,"colSpan",2);zt([l({type:Number})],at.prototype,"rowSpan",2);zt([l({type:String})],at.prototype,"align",2);zt([l({type:String})],at.prototype,"vAlign",2);zt([l({type:String})],at.prototype,"minWidth",2);zt([l({type:String})],at.prototype,"maxWidth",2);zt([l({type:String})],at.prototype,"width",2);at=zt([k($g)],at);var Fg=Object.getOwnPropertyDescriptor,Eg=(s,e,o,r)=>{for(var t=r>1?void 0:r?Fg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Lg="sonic-thead";let Ti=class extends D{render(){return p`<slot></slot>`}};Ti.styles=[L`
3877
3877
  :host {
3878
3878
  display: table-header-group;
3879
3879
  }
3880
- `];Ti=Ag([k(Pg)],Ti);var Sg=Object.getOwnPropertyDescriptor,$g=(s,e,o,r)=>{for(var t=r>1?void 0:r?Sg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Fg="sonic-tbody";let Oi=class extends D{render(){return p`<tbody part="tbody">
3880
+ `];Ti=Eg([k(Lg)],Ti);var Tg=Object.getOwnPropertyDescriptor,Og=(s,e,o,r)=>{for(var t=r>1?void 0:r?Tg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Ig="sonic-tbody";let Oi=class extends D{render(){return p`<tbody part="tbody">
3881
3881
  <slot></slot>
3882
3882
  </tbody>`}};Oi.styles=[L`
3883
3883
  :host {
@@ -3896,20 +3896,20 @@ ${this.value}</textarea
3896
3896
  border-bottom: var(--sc-form-border-width) solid
3897
3897
  var(--sc-base-200, rgba(0, 0, 0, 0.12)) !important;
3898
3898
  }
3899
- `];Oi=$g([k(Fg)],Oi);var Eg=Object.getOwnPropertyDescriptor,Lg=(s,e,o,r)=>{for(var t=r>1?void 0:r?Eg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Tg="sonic-tfoot";let Ii=class extends D{render(){return p`<tfoot>
3899
+ `];Oi=Og([k(Ig)],Oi);var qg=Object.getOwnPropertyDescriptor,Rg=(s,e,o,r)=>{for(var t=r>1?void 0:r?qg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Ng="sonic-tfoot";let Ii=class extends D{render(){return p`<tfoot>
3900
3900
  <slot></slot>
3901
3901
  </tfoot>`}};Ii.styles=[L`
3902
3902
  :host {
3903
3903
  display: contents;
3904
3904
  }
3905
- `];Ii=Lg([k(Tg)],Ii);var Og=Object.getOwnPropertyDescriptor,Ig=(s,e,o,r)=>{for(var t=r>1?void 0:r?Og(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const qg="sonic-caption";let qi=class extends D{render(){return p`<slot></slot>`}};qi.styles=[L`
3905
+ `];Ii=Rg([k(Ng)],Ii);var Mg=Object.getOwnPropertyDescriptor,jg=(s,e,o,r)=>{for(var t=r>1?void 0:r?Mg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Ug="sonic-caption";let qi=class extends D{render(){return p`<slot></slot>`}};qi.styles=[L`
3906
3906
  :host {
3907
3907
  display: table-caption;
3908
3908
  font-size: 0.75rem;
3909
3909
  color: var(--sc-table-caption-color);
3910
3910
  padding: var(--sc-table-td-py) var(--sc-table-td-px) calc(2 * var(--sc-table-td-py));
3911
3911
  }
3912
- `];qi=Ig([k(qg)],qi);var Rg=Object.defineProperty,Ng=Object.getOwnPropertyDescriptor,Ks=(s,e,o,r)=>{for(var t=r>1?void 0:r?Ng(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Rg(e,o,t),t};const Mg="sonic-table";let Mt=class extends D{render(){const s={maxHeight:this.maxHeight};return p`
3912
+ `];qi=jg([k(Ug)],qi);var Bg=Object.defineProperty,zg=Object.getOwnPropertyDescriptor,Ks=(s,e,o,r)=>{for(var t=r>1?void 0:r?zg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Bg(e,o,t),t};const Kg="sonic-table";let Mt=class extends D{render(){const s={maxHeight:this.maxHeight};return p`
3913
3913
  <div
3914
3914
  class="table-container ${this.noCustomScroll?"":"custom-scroll"}"
3915
3915
  style=${Fe(s)}
@@ -3963,7 +3963,7 @@ ${this.value}</textarea
3963
3963
  --sc-table-td-border-b: var(--sc-table-bw) solid
3964
3964
  var(--sc-table-border-color);
3965
3965
  }
3966
- `];Ks([l({type:String,reflect:!0})],Mt.prototype,"size",2);Ks([l({type:Boolean,reflect:!0})],Mt.prototype,"bordered",2);Ks([l({type:Boolean,reflect:!0})],Mt.prototype,"rounded",2);Ks([l({type:Boolean,reflect:!0})],Mt.prototype,"noCustomScroll",2);Ks([l({type:String})],Mt.prototype,"maxHeight",2);Mt=Ks([k(Mg)],Mt);const jl="AES-CBC",jg=256;async function Ug(){return crypto.subtle.generateKey({name:jl,length:jg},!0,["encrypt","decrypt"])}function Bg(s){return btoa(String.fromCharCode(...new Uint8Array(s)))}async function zg(s,e,o){const r=new TextEncoder().encode(s),t=await crypto.subtle.encrypt({name:jl,iv:o.buffer},e,r);return Bg(t)}const Kg=L`
3966
+ `];Ks([l({type:String,reflect:!0})],Mt.prototype,"size",2);Ks([l({type:Boolean,reflect:!0})],Mt.prototype,"bordered",2);Ks([l({type:Boolean,reflect:!0})],Mt.prototype,"rounded",2);Ks([l({type:Boolean,reflect:!0})],Mt.prototype,"noCustomScroll",2);Ks([l({type:String})],Mt.prototype,"maxHeight",2);Mt=Ks([k(Kg)],Mt);const zl="AES-CBC",Hg=256;async function Vg(){return crypto.subtle.generateKey({name:zl,length:Hg},!0,["encrypt","decrypt"])}function Wg(s){return btoa(String.fromCharCode(...new Uint8Array(s)))}async function Gg(s,e,o){const r=new TextEncoder().encode(s),t=await crypto.subtle.encrypt({name:zl,iv:o.buffer},e,r);return Wg(t)}const Jg=L`
3967
3967
  @keyframes altcha-spinner {
3968
3968
  to {
3969
3969
  transform: rotate(360deg);
@@ -4186,7 +4186,7 @@ ${this.value}</textarea
4186
4186
  animation: altcha-spinner 0.75s infinite linear;
4187
4187
  transform-origin: center;
4188
4188
  }
4189
- `;var Hg=Object.defineProperty,Vg=Object.getOwnPropertyDescriptor,Jr=(s,e,o,r)=>{for(var t=r>1?void 0:r?Vg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Hg(e,o,t),t};const Wg="supersoniks_altcha",Gg="Si2\\]X8M4!n9DCLd";let ja=!1;const Jg="sonic-captcha";let As=class extends dt(D){constructor(){super(...arguments),this.key="",this.action=null,this.zIndex=9999,this.onCaptchaTokenChanged=s=>{s=="request_token"&&(this.formPublisher&&this.formPublisher.captchaToken.set(""),this.requestToken())},this.maxNumber=5e4,this.chalengeUrl="https://altcha.supersoniks.org/get-challenge"}connectedCallback(){if(document.location.protocol.includes("https")){if(!ja){const s=document.createElement("script");s.type="module",this.setAttribute("async",""),this.setAttribute("defer",""),s.src="https://cdn.jsdelivr.net/gh/altcha-org/altcha/dist/altcha.min.js",ja=!0,document.head.appendChild(s)}this.generateEncryptedKey(),super.connectedCallback(),this.formPublisher=ko(this.getAncestorAttributeValue("headersDataProvider")??this.getAncestorAttributeValue("formDataProvider")),this.formPublisher&&!this.formPublisher.captchaToken.get()&&(this.formPublisher.needsCaptchaValidation.set(!0),this.formPublisher.captchaToken.onAssign(this.onCaptchaTokenChanged))}}disconnectedCallback(){this.formPublisher&&(this.formPublisher.captchaToken.offAssign(this.onCaptchaTokenChanged),this.formPublisher.captchaToken.set(""),this.formPublisher.needsCaptchaValidation.set(!1)),super.disconnectedCallback()}requestToken(){if(!this.formPublisher)return;const s=this.shadowRoot.querySelector("form");if(!s)return;const e=new FormData(s);this.formPublisher.captchaKey.set(this.key),this.formPublisher.captchaToken.set(e.get("altcha")?.toString()||"")}async generateEncryptedKey(){if(this.key)return;const s=await Ug(),e=new TextEncoder().encode(Gg),o=await zg(Wg,s,e);this.key=o}render(){if(!this.key)return S;const e=Ot.getLanguage().match("^fr\\b")?{aria:"Visitez altcha.org",error:"La vérification a échoué, réessayez plus tard.",expired:"La vérification a expiré, réessayez.",footer:"Protégé par Altcha",label:"Je ne suis pas un robot.",verified:"Vérifié",verifying:"Vérification en cours...",wait:"Vérification en cours… Veuillez patienter."}:{aria:"Visit altcha.org",error:"Verification failed, try again later.",expired:"Verification expired, try again.",footer:"Protected by Altcha",label:"I'm not a robot.",verified:"Verified",verifying:"Verifying...",wait:"Verifying... Please wait."};return p`
4189
+ `;var Yg=Object.defineProperty,Qg=Object.getOwnPropertyDescriptor,Jr=(s,e,o,r)=>{for(var t=r>1?void 0:r?Qg(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Yg(e,o,t),t};const Zg="supersoniks_altcha",Xg="Si2\\]X8M4!n9DCLd";let ja=!1;const ef="sonic-captcha";let As=class extends dt(D){constructor(){super(...arguments),this.key="",this.action=null,this.zIndex=9999,this.onCaptchaTokenChanged=s=>{s=="request_token"&&(this.formPublisher&&this.formPublisher.captchaToken.set(""),this.requestToken())},this.maxNumber=5e4,this.chalengeUrl="https://altcha.supersoniks.org/get-challenge"}connectedCallback(){if(document.location.protocol.includes("https")){if(!ja){const s=document.createElement("script");s.type="module",this.setAttribute("async",""),this.setAttribute("defer",""),s.src="https://cdn.jsdelivr.net/gh/altcha-org/altcha/dist/altcha.min.js",ja=!0,document.head.appendChild(s)}this.generateEncryptedKey(),super.connectedCallback(),this.formPublisher=ko(this.getAncestorAttributeValue("headersDataProvider")??this.getAncestorAttributeValue("formDataProvider")),this.formPublisher&&!this.formPublisher.captchaToken.get()&&(this.formPublisher.needsCaptchaValidation.set(!0),this.formPublisher.captchaToken.onAssign(this.onCaptchaTokenChanged))}}disconnectedCallback(){this.formPublisher&&(this.formPublisher.captchaToken.offAssign(this.onCaptchaTokenChanged),this.formPublisher.captchaToken.set(""),this.formPublisher.needsCaptchaValidation.set(!1)),super.disconnectedCallback()}requestToken(){if(!this.formPublisher)return;const s=this.shadowRoot.querySelector("form");if(!s)return;const e=new FormData(s);this.formPublisher.captchaKey.set(this.key),this.formPublisher.captchaToken.set(e.get("altcha")?.toString()||"")}async generateEncryptedKey(){if(this.key)return;const s=await Vg(),e=new TextEncoder().encode(Xg),o=await Gg(Zg,s,e);this.key=o}render(){if(!this.key)return S;const e=Ot.getLanguage().match("^fr\\b")?{aria:"Visitez altcha.org",error:"La vérification a échoué, réessayez plus tard.",expired:"La vérification a expiré, réessayez.",footer:"Protégé par Altcha",label:"Je ne suis pas un robot.",verified:"Vérifié",verifying:"Vérification en cours...",wait:"Vérification en cours… Veuillez patienter."}:{aria:"Visit altcha.org",error:"Verification failed, try again later.",expired:"Verification expired, try again.",footer:"Protected by Altcha",label:"I'm not a robot.",verified:"Verified",verifying:"Verifying...",wait:"Verifying... Please wait."};return p`
4190
4190
  <form>
4191
4191
  <altcha-widget
4192
4192
  challengeurl="${this.chalengeUrl}?key=${this.key}&maxNumber=${this.maxNumber}"
@@ -4198,7 +4198,7 @@ ${this.value}</textarea
4198
4198
  ></altcha-widget>
4199
4199
  </form>
4200
4200
  <slot></slot>
4201
- `}};As.styles=[Kg,L`
4201
+ `}};As.styles=[Jg,L`
4202
4202
  :host {
4203
4203
  --altcha-border-width: var(--sc-border-width, 1px);
4204
4204
  --altcha-border-radius: var(--sc-rounded);
@@ -4217,9 +4217,9 @@ ${this.value}</textarea
4217
4217
  --altcha-color-footer-bg: var(--sc-base-100, #000);
4218
4218
  --altcha-max-width: 260px;
4219
4219
  }
4220
- `];Jr([l()],As.prototype,"key",2);Jr([l()],As.prototype,"action",2);Jr([l({type:Number})],As.prototype,"zIndex",2);As=Jr([k(Jg)],As);window.queueMicrotask=window.queueMicrotask||function(s){Promise.resolve().then(s).catch(e=>setTimeout(()=>{throw e}))};class Yg extends Cn{constructor(e){super(e),this.observables=new Set,this.cleanupWatchers=[],this.onAssign=o=>{this.setValue(o)},this.node=e.options?.host}teardownWatchers(){this.cleanupWatchers.forEach(e=>e()),this.cleanupWatchers=[]}normalizeInput(e){return wl(e)?e.path:e}render(e){const o=this.normalizeInput(e),r=this.pathTemplate!==o;return r&&(this.pathTemplate=o,this.teardownWatchers()),(r||!this.resolvedPath)&&queueMicrotask(()=>{!this.isConnected||!this.pathTemplate||this.setupSubscription()}),Me}setupSubscription(){const e=this.node,o=this.pathTemplate;if(!e||!o)return;this.teardownWatchers();const r=rs(o);if(r.length>0)for(const t of r)this.cleanupWatchers.push(Cs(tr.watcherStore,tr.hooked,e,t,()=>this.refreshSubscription()));this.refreshSubscription()}refreshSubscription(){const e=this.node,o=this.pathTemplate;if(!o)return;const r=rs(o).length>0;let t=o;if(r)if(!e)t=null;else{const i=Xt(e,o);t=i.ready?i.path:null}if(t!==this.resolvedPath){if(!t){this.unsubscribe(),this.resolvedPath=void 0,this.setValue(void 0);return}this.resolvedPath=t,this.subscribe(t)}}subscribe(e){this.unsubscribe(),this.onAssign=o=>{this.setValue(o)},this.observables=Or(e),this.observables.forEach(o=>{o.onAssign(this.onAssign)})}unsubscribe(){this.observables.forEach(e=>e.offAssign(this.onAssign)),this.observables.clear()}disconnected(){this.teardownWatchers(),this.unsubscribe(),this.resolvedPath=void 0}reconnected(){this.pathTemplate&&this.setupSubscription()}}const Ul=Ut(Yg),Qg=Ul,Bl=Ul,ar=Bl;window["concorde-directives-data-provider"]=window["concorde-directives-data-provider"]||{};window["concorde-directives-data-provider"]={dp:ko,dataProvider:Ic,sub:Bl,subscribe:Qg,get:it,set:N};const Zg=j,Xg=K;window["concorde-components"]=window["concorde-components"]||{};window["concorde-components"]={SonicToast:Zg,SonicModal:Xg};const ef=window;ef.concordeIsLoaded=!0;window.dispatchEvent(new CustomEvent("concorde-loaded"));const tf="/docs-mock-api-sw.js";async function sf(){if(!("serviceWorker"in navigator)){console.warn("[docs-mock-api] Service Workers not supported");return}try{const s=await navigator.serviceWorker.register(tf,{scope:"/"});return s.waiting&&await s.update(),await navigator.serviceWorker.ready,s}catch(s){console.error("[docs-mock-api] Service Worker registration failed",s);return}}const Kt="/docs-mock-api",Dt=Kt,zn=`${Kt}/geo/`,Yr=`${Kt}/jokes`,Kn="docs-mock-valid-token",zl="docs-mock-stale-token",Ua="docs-mock-fresh-token",of="docs-mock-events-token",ui=()=>({serviceURL:Kt,token:null,userName:null,password:null,authToken:null,tokenProvider:null}),Kl=new I("submit-example"),Hl=new I("submit-example-result"),Ri=new I("submit-clear-form"),Vl=new I("submit-nested-form"),Wl=new I("submit-nested-result"),Gl=new I("submit-formdata-form"),Jl=new I("submit-formdata-result"),Yl=new I("submit-get-form"),Ql=new I("submit-get-result"),Zl=new I("submit-native-form"),rf=new I("submit-event-form"),Xl=new I("submit-endpoint-form"),ec=new I("submit-endpoint-result"),Hn=new I("docsApiConfBearer"),tc=new I("docsApiConfTokenProvider"),sc=new I("docsApiConfStaleToken"),Ni=new I("docsApiConfWordingVersion"),Vo=new I("input-filter"),Wo=new I("select-filter"),Ba=new I("jokeFilter"),nf=new I("jokeFilterRadio"),za=new I("jokeFilterswitch"),oc=new I("filter"),Vn=new I("visibilitySettings"),Wn=new I("toggleLoaderForm"),af=new I("docsUserScopeA"),Mi=new I("docsUserScopeB"),lf=new I("docsUserPreview"),cf=new I("docsUserStatic"),ji=new I("demoData"),rc=new I("demoUser"),df=new I("demoSettings"),ic=new I("demoUserSettings"),xs=new I("publishDemo"),qo=new I("waitAncestorDemo"),Ui=new I("autoValue1"),Bi=new I("autoValue2"),Qr=new I("bindReflectDemo"),Tt=new I("demoUsers"),Lt=new I("demoUsersAlt"),nc=new I("demoUsersSettings"),ac=new I("demoUsersAltSettings"),Jt=()=>({email:"eve.holt@reqres.in",password:"pistol"});function uf(){N(Kl,Jt()),N(Ri,Jt()),N(Vl,Jt()),N(Gl,Jt()),N(Yl,{email:"demo@example.com",password:"secret"}),N(Zl,Jt()),N(rf,Jt()),N(Xl,Jt()),N(Hn,{...ui(),token:Kn}),N(tc,{...ui(),userName:"demo",password:"secret",tokenProvider:"auth/token"}),N(sc,{...ui(),token:zl,userName:"demo",password:"secret",tokenProvider:"auth/token"}),N(Ni,1),N(Vo,{contains:"chien"}),N(Wo,{lang:"fr"}),N(oc,{q:""}),N(Vn,{togglePlan:"true"}),N(Wn,{toggleLoader:""}),N(af,{first_name:"Paul",last_name:"Metrand",email:"paul@example.com",avatar:"https://i.pravatar.cc/150?u=paul"}),N(Mi,{first_name:"Marie",last_name:"Dupont",email:"marie@example.com",avatar:"https://i.pravatar.cc/150?u=marie"}),N(lf,{first_name:"Paul",last_name:"Metrand",email:"paul@example.com",avatar:"https://i.pravatar.cc/150?u=paul"}),N(cf,{first_name:"Paul",last_name:"Metrand",email:"paul@example.com",avatar:"https://i.pravatar.cc/150?u=paul"}),N(ji,{title:"Initial Title",user:{name:"Initial User"},count:0}),N(rc,{name:"Demo User",email:"demo@example.com"}),N(df,{theme:"light",language:"en"}),N(ic,{theme:"light",language:"en"}),N(xs,{email:"",message:""}),N(qo,{message:"Context from ancestor"}),N(Ui,10),N(Bi,20),N(Qr,{count:0}),N(Tt,[{id:1,firstName:"Alice",lastName:"Smith",email:"alice.smith@example.com"},{id:2,firstName:"Bob",lastName:"Johnson",email:"bob.johnson@example.com"},{id:3,firstName:"Carol",lastName:"Williams",email:"carol.williams@example.com"},{id:4,firstName:"David",lastName:"Brown",email:"david.brown@example.com"},{id:5,firstName:"Eve",lastName:"Jones",email:"eve.jones@example.com"},{id:6,firstName:"Frank",lastName:"Garcia",email:"frank.garcia@example.com"},{id:7,firstName:"Grace",lastName:"Miller",email:"grace.miller@example.com"},{id:8,firstName:"Henry",lastName:"Davis",email:"henry.davis@example.com"},{id:9,firstName:"Ivy",lastName:"Martinez",email:"ivy.martinez@example.com"},{id:10,firstName:"Jack",lastName:"Taylor",email:"jack.taylor@example.com"}]),N(Lt,[{id:11,firstName:"Sophie",lastName:"Lindquist",email:"sophie.lindquist@example.com"},{id:12,firstName:"Mateo",lastName:"Ortega",email:"mateo.ortega@example.com"},{id:13,firstName:"Jin",lastName:"Park",email:"jin.park@example.com"},{id:14,firstName:"Fatima",lastName:"El-Sayed",email:"fatima.el-sayed@example.com"},{id:15,firstName:"Lars",lastName:"Johansson",email:"lars.johansson@example.com"},{id:16,firstName:"Amara",lastName:"Singh",email:"amara.singh@example.com"},{id:17,firstName:"Zuri",lastName:"Okafor",email:"zuri.okafor@example.com"},{id:18,firstName:"Luca",lastName:"Rossi",email:"luca.rossi@example.com"},{id:19,firstName:"Ava",lastName:"Murphy",email:"ava.murphy@example.com"},{id:20,firstName:"Noah",lastName:"Keller",email:"noah.keller@example.com"}]),N(nc,[{theme:"light",language:"en"},{theme:"dark",language:"fr"},{theme:"auto",language:"es"},{theme:"light",language:"en"},{theme:"dark",language:"fr"},{theme:"auto",language:"es"},{theme:"light",language:"en"},{theme:"dark",language:"fr"},{theme:"auto",language:"es"},{theme:"light",language:"en"}]),N(ac,[{theme:"dark",language:"de"},{theme:"light",language:"it"},{theme:"auto",language:"ja"},{theme:"dark",language:"pt"},{theme:"light",language:"ru"},{theme:"auto",language:"zh"},{theme:"dark",language:"ar"},{theme:"light",language:"sv"},{theme:"auto",language:"nl"},{theme:"dark",language:"pl"}])}uf();const Gn=s=>{s.pathname==="/"&&s.hash===""?document.documentElement.setAttribute("data-home",""):document.documentElement.removeAttribute("data-home")},Jn=()=>document.location,pf=Jn();Gn(pf);window.addEventListener("popstate",s=>{Gn(Jn())});window.addEventListener("hashchange",()=>{Gn(Jn())});const hf=L`*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1em;margin-bottom:1em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;padding-inline-start:1.625em;margin-top:1em;margin-bottom:1em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;padding-inline-start:1.625em;margin-top:1em;margin-bottom:1em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"\`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"\`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: var(--sc-base-content);--tw-prose-headings: var(--sc-base-900);--tw-prose-lead: var(--sc-base-content);--tw-prose-links: var(--sc-base-900);--tw-prose-bold: var(--sc-base-content);--tw-prose-counters: var(--sc-base-500);--tw-prose-bullets: var(--sc-base-300);--tw-prose-hr: var(--sc-base-200);--tw-prose-quotes: var(--sc-base-content);--tw-prose-quote-borders: var(--sc-base-200);--tw-prose-captions: var(--sc-base-500);--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: var(--sc-info);--tw-prose-pre-code: var(--sc-base-200);--tw-prose-pre-bg: var(--sc-base-800);--tw-prose-th-borders: var(--sc-base-300);--tw-prose-td-borders: var(--sc-base-200);--tw-prose-invert-body: var(--sc-base-300);--tw-prose-invert-headings: var(--sc-base);--tw-prose-invert-lead: var(--sc-base-400);--tw-prose-invert-links: var(--sc-base);--tw-prose-invert-bold: var(--sc-base);--tw-prose-invert-counters: var(--sc-base-400);--tw-prose-invert-bullets: var(--sc-base-600);--tw-prose-invert-hr: var(--sc-base-700);--tw-prose-invert-quotes: var(--sc-base-100);--tw-prose-invert-quote-borders: var(--sc-base-700);--tw-prose-invert-captions: var(--sc-base-400);--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: var(--sc-base);--tw-prose-invert-pre-code: var(--sc-base-300);--tw-prose-invert-pre-bg: var(--sc-base-900);--tw-prose-invert-th-borders: var(--sc-base-600);--tw-prose-invert-td-borders: var(--sc-base-700);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose{line-height:1.5}.prose :where(strong a):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:bolder}.prose :where(iframe[src*=youtu]):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--sc-rounded-md)}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.\\!relative{position:relative!important}.relative{position:relative}.sticky{position:sticky}.\\!left-0{left:0!important}.\\!top-0{top:0!important}.-top-1{top:-.25rem}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.left-0{left:0}.right-1{right:.25rem}.right-2{right:.5rem}.top-0{top:0}.top-16{top:4rem}.top-\\[4\\.2rem\\]{top:4.2rem}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-\\[3000\\]{z-index:3000}.col-span-2{grid-column:span 2 / span 2}.col-span-full{grid-column:1 / -1}.m-2{margin:.5rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-40{margin-bottom:10rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-3{margin-left:.75rem}.ml-5{margin-left:1.25rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-9{margin-top:2.25rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.size-40{width:10rem;height:10rem}.size-\\[2\\.4rem\\]{width:2.4rem;height:2.4rem}.h-1\\/2{height:50%}.h-10{height:2.5rem}.h-12{height:3rem}.h-24{height:6rem}.h-3{height:.75rem}.h-4{height:1rem}.h-96{height:24rem}.h-full{height:100%}.max-h-96{max-height:24rem}.max-h-\\[50vh\\]{max-height:50vh}.max-h-\\[calc\\(100vh_-_4\\.2rem\\)\\]{max-height:calc(100vh - 4.2rem)}.min-h-\\[100vh\\]{min-height:100vh}.w-1\\/2{width:50%}.w-1\\/3{width:33.333333%}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-64{width:16rem}.w-\\[5rem\\]{width:5rem}.w-full{width:100%}.min-w-\\[8rem\\]{min-width:8rem}.max-w-\\[29ch\\]{max-width:29ch}.max-w-\\[40rem\\]{max-width:40rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-prose{max-width:70ch}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.-translate-y-1\\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\\/2{--tw-translate-x: 50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1\\/2{--tw-translate-y: 50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-\\[55deg\\]{--tw-rotate: 55deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.resize{resize:both}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\\[minmax\\(10rem\\,15rem\\)_minmax\\(0\\,1fr\\)\\]{grid-template-columns:minmax(10rem,15rem) minmax(0,1fr)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.break-all{word-break:break-all}.rounded{border-radius:var(--sc-rounded)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--sc-rounded-lg)}.rounded-md{border-radius:var(--sc-rounded-md)}.rounded-xl{border-radius:var(--sc-rounded-xl)}.border{border-width:var(--sc-border-width)}.border-0{border-width:0px}.border-b{border-bottom-width:var(--sc-border-width)}.border-b-\\[\\.18rem\\]{border-bottom-width:.18rem}.border-t{border-top-width:var(--sc-border-width)}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-current{border-color:currentColor}.border-danger{border-color:var(--sc-danger)}.border-info{border-color:var(--sc-info)}.border-neutral-100{border-color:var(--sc-base-100)}.border-neutral-200{border-color:var(--sc-base-200)}.border-neutral-300{border-color:var(--sc-base-300)}.border-success{border-color:var(--sc-success)}.bg-info{background-color:var(--sc-info)}.bg-neutral-0{background-color:var(--sc-base)}.bg-neutral-100{background-color:var(--sc-base-100)}.bg-neutral-200{background-color:var(--sc-base-200)}.bg-neutral-50{background-color:var(--sc-base-50)}.bg-neutral-900{background-color:var(--sc-base-900)}.bg-success{background-color:var(--sc-success)}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.from-\\[rgba\\(0\\,0\\,10\\,\\.2\\)\\]{--tw-gradient-from: rgba(0,0,10,.2) var(--tw-gradient-from-position);--tw-gradient-to: rgba(0, 0, 10, 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pl-5{padding-left:1.25rem}.pl-\\[\\.75rem\\]{padding-left:.75rem}.pt-3{padding-top:.75rem}.pt-\\[20vh\\]{padding-top:20vh}.text-center{text-align:center}.font-headings{font-family:var(--sc-headings-font-family, var(--sc-font-family-base, sans-serif))}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-sm{font-size:.875rem}.text-xl{font-size:1.25rem}.text-xs{font-size:.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-\\[1\\.5\\]{line-height:1.5}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-content{color:var(--sc-base-content)}.text-contrast-content{color:var(--sc-contrast-content)}.text-danger{color:var(--sc-danger)}.text-info{color:var(--sc-info)}.text-neutral-0{color:var(--sc-base)}.text-neutral-300{color:var(--sc-base-300)}.text-neutral-400{color:var(--sc-base-400)}.text-neutral-500{color:var(--sc-base-500)}.text-neutral-600{color:var(--sc-base-600)}.text-neutral-700{color:var(--sc-base-700)}.text-neutral-900{color:var(--sc-base-900)}.text-success{color:var(--sc-success)}.underline{text-decoration-line:underline}.opacity-40{opacity:.4}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-lg{--tw-drop-shadow: drop-shadow(0 10px 8px rgb(0 0 0 / .04)) drop-shadow(0 4px 3px rgb(0 0 0 / .1));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:ClashGrotesk-Variable;src:url("+new URL('../fonts/ClashGrotesk-Variable.woff2', import.meta.url).href+") format("woff2"),url("+new URL('../fonts/ClashGrotesk-Variable.woff', import.meta.url).href+") format("woff"),url("+new URL('../fonts/ClashGrotesk-Variable.ttf', import.meta.url).href+") format("truetype");font-weight:200 700;font-display:swap;font-style:normal}:root{--sc-headings-font-family: "ClashGrotesk-Variable", sans-serif;--sc-font-family-base: "ClashGrotesk-Variable", sans-serif;--sc-headings-font-weight: 400;--sc-rounded: .5rem;--sc-border-width: max(2px, .18rem)}[data-concorde-theme=light]{--sc-base: #fffcf0;--sc-base-content: #111111;--sc-primary: #111111;--sc-primary-content: #fffcf0;--sc-base-50: #f4f1e6;--sc-base-100: #e9e6dc;--sc-base-200: #ceccc3;--sc-base-300: #bcbab1;--sc-base-400: #96948e;--sc-base-500: #7d7c77;--sc-base-600: #5a5956;--sc-base-700: #393937;--sc-base-800: #252524;--sc-base-900: #111111;--sc-info: #3b82f6;--sc-info-content: #ffffff;--sc-success: #10b981;--sc-success-content: #ffffff;--sc-warning: #fb923c;--sc-warning-content: #111827;--sc-danger: #dc2626;--sc-danger-content: #ffffff}[data-concorde-theme=dark]{--sc-base: #0a0a0a;--sc-base-content: #dadad9;--sc-primary: #ffef8a;--sc-primary-content: #111827;--sc-base-50: #141414;--sc-base-100: #1c1c1c;--sc-base-200: #2f2f2f;--sc-base-300: #3e3e3e;--sc-base-400: #5f5f5f;--sc-base-500: #767676;--sc-base-600: #9a9a9a;--sc-base-700: #c0c0bf;--sc-base-800: #dadad9;--sc-base-900: #f5f5f4;--sc-info: #3a85f7;--sc-info-content: #ffffff;--sc-success: #0fba7f;--sc-success-content: #ffffff;--sc-warning: #fc8f3b;--sc-warning-content: #111827;--sc-danger: #dd2528;--sc-danger-content: #ffffff}[data-concorde-theme=light],[data-concorde-theme=dark]{--sc-input-bg: var(--sc-base-100);--sc-input-border-color: var(--sc-base-100)}html{font-family:var(--sc-font-family-base, sans-serif)}h2{border-bottom:var(--sc-border-width) solid;padding-bottom:.1em}p,ul,ol{font-family:Arial,Helvetica,sans-serif}body{background:var(--sc-base);color:var(--sc-base-content)}html{scroll-behavior:smooth}.animated-text{display:block;position:relative;overflow:hidden}.animated-text span{display:block;position:absolute;width:100%;height:100%;top:0;left:0;transform:translateY(108%);animation:slideUp 4.5s cubic-bezier(.17,.67,.61,1.13) infinite}.animated-text span:nth-child(2){animation-delay:1.5s}.animated-text span:nth-child(3){animation-delay:3s}@keyframes slideUp{0%{transform:translateY(108%)}7%{transform:translateY(0)}33%{transform:translateY(0)}40%{transform:translateY(-108%)}to{transform:translateY(-108%)}}.custom-scroll{overflow:auto!important}.custom-scroll:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 2rem 2rem var(--sc-base-900)}.custom-scroll::-webkit-scrollbar{width:.5rem;height:.5rem;border:solid .15rem transparent;border-radius:var(--sc-rounded);background:transparent}.custom-scroll::-webkit-scrollbar-thumb{opacity:0;-webkit-transition:box-shadow .2s;transition:box-shadow .2s;border:solid .15rem transparent}@media (min-width: 1024px){.lg\\:prose-lg{font-size:1.125rem;line-height:1.7777778}.lg\\:prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\\:prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.lg\\:prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6666667em;margin-bottom:1.6666667em;padding-inline-start:1em}.lg\\:prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.lg\\:prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;margin-top:1.8666667em;margin-bottom:1.0666667em;line-height:1.3333333}.lg\\:prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;margin-top:1.6666667em;margin-bottom:.6666667em;line-height:1.5}.lg\\:prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:.4444444em;line-height:1.5555556}.lg\\:prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.lg\\:prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;border-radius:.3125rem;padding-top:.2222222em;padding-inline-end:.4444444em;padding-bottom:.2222222em;padding-inline-start:.4444444em}.lg\\:prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.lg\\:prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.lg\\:prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.lg\\:prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding-top:1em;padding-inline-end:1.5em;padding-bottom:1em;padding-inline-start:1.5em}.lg\\:prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.5555556em}.lg\\:prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.5555556em}.lg\\:prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;margin-bottom:.6666667em}.lg\\:prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.lg\\:prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.lg\\:prose-lg :where(.lg\\:prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:prose-lg :where(.lg\\:prose-lg>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.lg\\:prose-lg :where(.lg\\:prose-lg>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.lg\\:prose-lg :where(.lg\\:prose-lg>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.lg\\:prose-lg :where(.lg\\:prose-lg>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.lg\\:prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\\:prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.lg\\:prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-inline-start:1.5555556em}.lg\\:prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:3.1111111em;margin-bottom:3.1111111em}.lg\\:prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\\:prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\\:prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\\:prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\\:prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.lg\\:prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.lg\\:prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.lg\\:prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.lg\\:prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.75em;padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.lg\\:prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.lg\\:prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.lg\\:prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.lg\\:prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.lg\\:prose-lg :where(.lg\\:prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\\:prose-lg :where(.lg\\:prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}}.hover\\:bg-neutral-50:hover{background-color:var(--sc-base-50)}.prose-h1\\:text-\\[4\\.2em\\] :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:4.2em}.prose-h1\\:font-normal :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){font-weight:400}.prose-li\\:my-\\[\\.2em\\] :is(:where(li):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:.2em;margin-bottom:.2em}@media (min-width: 640px){.sm\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 768px){.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:text-5xl{font-size:3rem}}@media (min-width: 1024px){.lg\\:min-w-\\[19rem\\]{min-width:19rem}.lg\\:max-w-\\[19ch\\]{max-width:19ch}.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\\:px-20{padding-left:5rem;padding-right:5rem}.lg\\:text-7xl{font-size:4.5rem}.lg\\:leading-\\[1\\.5\\]{line-height:1.5}}@media (min-width: 1280px){.xl\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\\:text-8xl{font-size:6rem}}.dark\\:block:where(.dark,.dark *){display:block}.dark\\:hidden:where(.dark,.dark *){display:none}.dark\\:border-neutral-700:where(.dark,.dark *){border-color:var(--sc-base-700)}.dark\\:bg-neutral-300:where(.dark,.dark *){background-color:var(--sc-base-300)}.dark\\:text-neutral-400:where(.dark,.dark *){color:var(--sc-base-400)}.dark\\:text-neutral-600:where(.dark,.dark *){color:var(--sc-base-600)}.dark\\:opacity-60:where(.dark,.dark *){opacity:.6}.\\[\\&\\[active\\]\\]\\:min-w-\\[13rem\\][active]{min-width:13rem}.\\[\\&\\[active\\]\\]\\:rounded-full[active]{border-radius:9999px}.\\[\\&\\[active\\]\\]\\:bg-danger[active]{background-color:var(--sc-danger)}.\\[\\&\\[active\\]\\]\\:font-black[active]{font-weight:900}.\\[\\&\\[active\\]\\]\\:text-danger-content[active]{color:var(--sc-danger-content)}.\\[\\&\\[active\\]\\]\\:text-success[active]{color:var(--sc-success)}[data-home] .\\[\\[data-home\\]_\\&\\]\\:hidden{display:none}`,q=L`
4221
- ${wn(hf)}
4222
- `,Ka=JSON.parse('[{"search":"Date","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"date":{"count":2,"title":"","type":"page"}}}}},{"search":"Nothing is displayed.\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"no-attribute":{"count":1,"title":"No attribute","type":"paragraph"}}}}},{"search":"Displays the current date.\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"now":{"count":1,"title":"Now","type":"paragraph"}}}}},{"search":"Displays a date from a timestamp.\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"date":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Displays a date from a string.\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"date_string":{"count":1,"title":"Date_string","type":"paragraph"}}}}},{"search":"Displays a period of time from start_date to end_date.When by itself start_date will act as dateif a start_date is not specified it will be set by the current date.if the end_date is anterior to start date date it will be used as the start_date. \\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"start_date--end_date":{"count":1,"title":"Start_date / end_date","type":"paragraph"}}}}},{"search":"ISO 639-1 Language Codes\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"language":{"count":1,"title":"Language","type":"paragraph"}}}}},{"search":"For the list of supported timeZones, run Intl.supportedValuesOf(&#39;timeZone&#39;) in the console\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"time_zone":{"count":1,"title":"Time_zone","type":"paragraph"}}}}},{"search":"Deprecated\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"renderif":{"count":1,"title":".renderIf","type":"paragraph"}}},"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"headersdataprovider":{"count":1,"title":"HeadersDataProvider","type":"paragraph"}}}}},{"search":"Fetch","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"fetch":{"count":1,"title":"","type":"page"}}}}},{"search":"New apps: prefer @get for a typed GET on a component, or List / Queue with fetch for collections. Use Local API demos (serviceURL=&quot;/docs-mock-api&quot;) to try examples offline.\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"fetch":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The sonic-fetch component requests and stores API data. It extends the Fetcher and Subscriber mixins.\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"fetch":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"In order to work properly the sonic-fetch component needs at least the following attributes. \\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"basic-usage":{"count":1,"title":"Basic usage","type":"paragraph"}}}}},{"search":"If no endPoint is specified it will be filled by the dataProvider ID instead \\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"dataprovider-as-an-endpoint":{"count":1,"title":"DataProvider as an endPoint","type":"paragraph"}}}}},{"search":"When the key attribute is present, only a sub-part of the data received is injected into the dataProvider.\\nWe can use the dot syntax to target what we want to keep.\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"key":{"count":1,"title":"Key","type":"paragraph"}}}}},{"search":"For example if the data is {my:{data:{a:1,b:2}}} and the key is key=&quot;my.data&quot;, the data available in the dataProvider will be {a:1 , b:2}\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"key":{"count":1,"title":"Key","type":"paragraph"}}}}},{"search":"if the mime type of the content returned by the service begins with text/, then the dataProvider has a key named &quot;text&quot; which contains the text returned by the service.\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"text-mode":{"count":1,"title":"Text mode","type":"paragraph"}}}}},{"search":"The noLoader attribute disables display of the default loader\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"noloader":{"count":1,"title":"NoLoader","type":"paragraph"}}}}},{"search":"if","files":{"core/components/functional/if/if.md":{"title":"if","hashes":{"if":{"count":1,"title":"","type":"page"}}}}},{"search":"The sonic-if component shows its slot when .condition is true. In Lit, bind .condition from store-driven state (@subscribe on a formDataProvider field) — live preview and TypeScript source are the same file (docs-lit-demo):\\n","files":{"core/components/functional/if/if.md":{"title":"if","hashes":{"if":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"\\n","files":{"core/components/functional/if/if.md":{"title":"if","hashes":{"if":{"count":1,"title":"","type":"paragraph"}}},"core/components/functional/list/list.md":{"title":"List","hashes":{"row-renderer-items--recommended":{"count":1,"title":"Row renderer (`items`) — recommended","type":"paragraph"},"alternating-row-layouts":{"count":2,"title":"Alternating row layouts","type":"paragraph"},"separator-and-empty-list":{"count":1,"title":"Separator and empty list","type":"paragraph"},"fetch--extractvalues":{"count":1,"title":"Fetch + `extractValues`","type":"paragraph"}}},"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"lazy-load--offset-and-limit":{"count":1,"title":"Lazy load — `$offset` and `$limit`","type":"paragraph"},"simple-batch-no-lazy-scroll":{"count":1,"title":"Simple batch (no lazy scroll)","type":"paragraph"}}},"core/components/functional/router/router.md":{"title":"Router","hashes":{"static-routes-no-parameters":{"count":1,"title":"Static routes (no parameters)","type":"paragraph"},"url-pattern-name":{"count":1,"title":"Url-pattern (`:name`)","type":"paragraph"}}},"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"form-and-result-handling":{"count":1,"title":"Form and result handling","type":"paragraph"},"native-html-form":{"count":1,"title":"Native HTML form","type":"paragraph"},"sendasformdata":{"count":1,"title":"sendAsFormData","type":"paragraph"},"submit-result-key":{"count":1,"title":"submit-result-key","type":"paragraph"},"cleareddataonsuccess":{"count":1,"title":"clearedDataOnSuccess","type":"paragraph"},"custom-submit-event":{"count":1,"title":"Custom `submit` event","type":"paragraph"},"endpoint-vs-dataprovider":{"count":1,"title":"endPoint vs dataProvider","type":"paragraph"},"methodget":{"count":1,"title":"method=\\"get\\"","type":"paragraph"}}},"core/components/ui/form/checkbox/checkbox.md":{"title":"Checkbox","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}},"core/components/ui/form/input/input.md":{"title":"Input","hashes":{"list":{"count":1,"title":"List","type":"paragraph"},"example-of-use--search--queue":{"count":1,"title":"Example of use — search + queue","type":"paragraph"}}},"core/components/ui/form/radio/radio.md":{"title":"Radio","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}},"core/components/ui/form/select/select.md":{"title":"Select","hashes":{"example-of-use--language-filter--queue":{"count":1,"title":"Example of use — language filter + queue","type":"paragraph"}}},"core/components/ui/form/switch/switch.md":{"title":"Switch","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}},"core/components/ui/icon/icon.md":{"title":"Icon","hashes":{"custom":{"count":1,"title":"Custom","type":"paragraph"}}},"core/components/ui/loader/loader.md":{"title":"Loader","hashes":{"fixed-mode":{"count":1,"title":"Fixed mode","type":"paragraph"}}},"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"bearer-token-static":{"count":1,"title":"Bearer token (static)","type":"paragraph"},"tokenprovider--basic-auth":{"count":1,"title":"tokenProvider + Basic auth","type":"paragraph"},"http-498--stale-token-refresh":{"count":1,"title":"HTTP 498 — stale token refresh","type":"paragraph"},"eventsapitoken":{"count":1,"title":"eventsApiToken","type":"paragraph"},"wording-api":{"count":1,"title":"Wording API","type":"paragraph"},"scoped-attributes-html--sonic-scope":{"count":1,"title":"Scoped attributes (HTML / sonic-scope)","type":"paragraph"}}}}},{"search":"Plain HTML without Lit: HTML integration.\\n","files":{"core/components/functional/if/if.md":{"title":"if","hashes":{"if":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"List","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"list":{"count":1,"title":"","type":"page"}}}}},{"search":"Try offline: serviceURL=&quot;/docs-mock-api&quot; and dataProvider=&quot;api/users&quot; with key=&quot;data&quot; — see Local API demos. Recommended patterns: Data flow.\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"list":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The sonic-list component renders one row per entry in props (array from fetch or set on the element).\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"list":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"List extends Subscriber and Fetcher:\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"list":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"From a Lit parent, pass a function on the items property (ListItems). Each row is wrapped in a sonic-subscriber with dataProvider=&quot;…/list-item/n&quot; (hover rows with debug).\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"row-renderer-items--recommended":{"count":1,"title":"Row renderer (`items`) — recommended","type":"paragraph"}}}}},{"search":"Use .items=${fn} (property binding): Lit passes functions only as properties, not as HTML attributes — @property({ type: Function }) does not change that. Same for .noItems, .separator, .skeleton. The callback receives each row object (replacing data-bind / &lt;sonic-value&gt; in a &lt;template&gt;).\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"row-renderer-items--recommended":{"count":1,"title":"Row renderer (`items`) — recommended","type":"paragraph"}}}}},{"search":"Live demo + TypeScript source (one file, no Markdown copy):\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"row-renderer-items--recommended":{"count":1,"title":"Row renderer (`items`) — recommended","type":"paragraph"}}}}},{"search":"Implementation: src/docs/example/docs-users-list.ts — row markup in the items callback (item.first_name, …), same idea as replacing data-bind / &lt;sonic-value&gt; in a &lt;template&gt;.\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"row-renderer-items--recommended":{"count":1,"title":"Row renderer (`items`) — recommended","type":"paragraph"}}}}},{"search":"Use metadata (even, odd, firstChild, …) or fields on each item (e.g. tpl with templateKey):\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"alternating-row-layouts":{"count":1,"title":"Alternating row layouts","type":"paragraph"}}}}},{"search":"For plain HTML hosts, you can still declare &lt;template&gt; children (and data-value for templateKey, separator, no-item). That path is for HTML integration — not used in Concorde doc live demos.\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"html-template-children-integration-without-lit":{"count":1,"title":"HTML `<template>` children (integration without Lit)","type":"paragraph"}}}}},{"search":"Each list row still gets dataProvider=&quot;[list]/list-item/[index]&quot;.\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"html-template-children-integration-without-lit":{"count":1,"title":"HTML `<template>` children (integration without Lit)","type":"paragraph"}}}}},{"search":"Mix","files":{"core/components/functional/mix/mix.md":{"title":"Mix","hashes":{"mix":{"count":1,"title":"","type":"page"}}}}},{"search":"Mix allows you to mix several subsets of dataProvider in a new key/value structure which is itself associated with a new dataProvider. The data update is then bidirectional.\\n","files":{"core/components/functional/mix/mix.md":{"title":"Mix","hashes":{"mix":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Dot notation is supported to extract a sub-part of the data.\\n","files":{"core/components/functional/mix/mix.md":{"title":"Mix","hashes":{"mix":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"For example, if we declare dataproviders as follows :\\n\\nWe can rearrange the data as follows\\n\\nThen we can change values in both dataProviders programaticaly this way, they will stay in sync\\n\\nOr by using a form element\\n\\n","files":{"core/components/functional/mix/mix.md":{"title":"Mix","hashes":{"mix":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Queue","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"queue":{"count":1,"title":"","type":"page"}}}}},{"search":"Try offline: serviceURL=&quot;/docs-mock-api&quot; — see Local API demos. Row rendering: Data flow (.items property binding).\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"queue":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"sonic-queue loads data in batches. Each batch is an internal List with its own dataProvider (…/list-item/0, …/1, …).\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"queue":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"When the expression contains $offset and $limit, the queue:\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"lazy-load--offset-and-limit":{"count":1,"title":"Lazy load — `$offset` and `$limit`","type":"paragraph"}}}}},{"search":"The doc mock implements this on GET /docs-mock-api/api/users?offset=…&amp;per_page=… (paginateUsers in src/docs/mock-api/router.ts).\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"lazy-load--offset-and-limit":{"count":1,"title":"Lazy load — `$offset` and `$limit`","type":"paragraph"}}}}},{"search":"Wrap the queue in a fixed height with overflow-y-auto so lazy load triggers when scrolling inside the box (same layout as the TS starter demo-queue-templates).\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"lazy-load--offset-and-limit":{"count":1,"title":"Lazy load — `$offset` and `$limit`","type":"paragraph"}}}}},{"search":"Try scrolling after load — batches of 4 users. Search e.g. George, Bluth, or zzz for empty results.\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"lazy-load--offset-and-limit":{"count":1,"title":"Lazy load — `$offset` and `$limit`","type":"paragraph"}}}}},{"search":"Without $offset in the expression, the queue behaves like a single list (one batch), e.g. geo communes below.\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"expression-example":{"count":1,"title":"Expression example","type":"paragraph"}}}}},{"search":"One search field (name=&quot;q&quot;) on formDataProvider=&quot;filter&quot;. The queue listens via dataFilterProvider=&quot;filter&quot; and, on change:\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"filter--datafilterprovider--q":{"count":1,"title":"Filter — `dataFilterProvider` + `q`","type":"paragraph"}}}}},{"search":"Use filteredFields only when the form has extra fields that must not be sent to the API (e.g. filteredFields=&quot;rememberMe internalId&quot;).\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"filter--datafilterprovider--q":{"count":1,"title":"Filter — `dataFilterProvider` + `q`","type":"paragraph"}}}}},{"search":"The mock API filters before pagination — same haystack logic as the starter (filterDocsUsers in src/docs/mock-api/fixtures.ts, used by paginateUsers in router.ts / Service Worker):\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"filter--datafilterprovider--q":{"count":1,"title":"Filter — `dataFilterProvider` + `q`","type":"paragraph"}}}}},{"search":"Geo communes: expression uses $limit only (no $offset) — one request, one batch.\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"simple-batch-no-lazy-scroll":{"count":1,"title":"Simple batch (no lazy scroll)","type":"paragraph"}}}}},{"search":"Optional for hosts without Lit — see HTML integration.\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"html-template-children":{"count":1,"title":"HTML `<template>` children","type":"paragraph"}}}}},{"search":"Router","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"router":{"count":1,"title":"","type":"page"}}}}},{"search":"sonic-router watches document.location (pathname + hash) and renders the matching view.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"router":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"From a Lit parent, pass a .routes map (property binding — same rule as .items on list): keys are path patterns, values are render functions. Use fallback when nothing matches.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"router":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Legacy HTML &lt;template data-route=&quot;…&quot;&gt; remains for hosts without Lit — HTML integration.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"router":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Route keys are matched against pathname + hash. A simple hash route #home matches when the location contains that segment.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"static-routes-no-parameters":{"count":1,"title":"Static routes (no parameters)","type":"paragraph"}}}}},{"search":"On the doc site, the page URL is already a hash (#…/router.md/router). Demos append a second hash for in-page routes (#…/router#home), use href + autoActive=&quot;strict&quot; on sonic-button for the active state, and history.replaceState on click so markdown is not reloaded (setDocsDemoSubHash in src/docs/docs-location.ts).\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"static-routes-no-parameters":{"count":1,"title":"Static routes (no parameters)","type":"paragraph"}}}}},{"search":"Two styles (see router.demo.ts and docs-router-params-demo):\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"routes-with-parameters":{"count":1,"title":"Routes with parameters","type":"paragraph"}}}}},{"search":"Key uses :param segments. The render function receives an object { param: string }.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"url-pattern-name":{"count":1,"title":"Url-pattern (`:name`)","type":"paragraph"}}}}},{"search":"Key is a RegExp string with (\\\\d+) / (\\\\w+) groups. The render function receives an array of captured strings (in order).\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"regexp-capturing-groups":{"count":1,"title":"RegExp (capturing groups)","type":"paragraph"}}}}},{"search":"With parameters you usually render data directly in Lit (${id}). The old &lt;template data-route&gt; + dataProviderExpression pattern scoped a dataProvider for data-bind / fetch children — prefer @subscribe or explicit props when using .routes.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"regexp-capturing-groups":{"count":1,"title":"RegExp (capturing groups)","type":"paragraph"}}}}},{"search":"Always use .routes=${…} in Lit templates: route handlers are functions and must be set as properties, not HTML attributes.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"routes-binding":{"count":1,"title":"`.routes` binding","type":"paragraph"}}}}},{"search":"Separate component: redirect when data appears on a publisher (login steps, wizards). Not part of the .routes map.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"sonic-redirect":{"count":1,"title":"`sonic-redirect`","type":"paragraph"}}}}},{"search":"Example: combine with .routes and submit for login / logout / profile steps.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"sonic-redirect":{"count":1,"title":"`sonic-redirect`","type":"paragraph"}}}}},{"search":"sonic-router-demo (router.demo.ts) — home, user profile (#user/:id/:slug), products RegExp, fallback 404.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"package-demo":{"count":1,"title":"Package demo","type":"paragraph"}}}}},{"search":"SDUI","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"sdui":{"count":1,"title":"","type":"page"}}}}},{"search":"SDUI stands for Server Driven User Interfaces.\\nBasically, it generates a user interface based on a JSON SDUI Descriptor.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"what-is-sdui":{"count":1,"title":"What is SDUI?","type":"paragraph"}}}}},{"search":"SDUI extends the mixin Subscriber.\\nThis means that you must set a dataProvider with an id pointing to the publisher that will hold your SDUI Descriptor.\\nThis also means that it has a reactive property named props that you can set with the JSON SDUI Descriptor in order to configure it.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"subscriber-extension":{"count":1,"title":"Subscriber extension:","type":"paragraph"}}}}},{"search":"SDUI extends the mixin Fetcher as Fetch and List.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"fetcher-extension":{"count":1,"title":"Fetcher extension:","type":"paragraph"}}}}},{"search":"In this case, it will parse the JSON coming from the request.\\nThe JSON must comply with the SDUI descriptor format.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"fetcher-extension":{"count":1,"title":"Fetcher extension:","type":"paragraph"}}}}},{"search":"As a fetcher, invalidating the publisher or updating the endpoint will trigger a new fetch and update accordingly.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"fetcher-extension":{"count":1,"title":"Fetcher extension:","type":"paragraph"}}}}},{"search":"It has no shadowdom, and its display style is set to contents, so an empty SDUI has the fewest impact on the layout.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"rendering":{"count":1,"title":"Rendering:","type":"paragraph"}}}}},{"search":"An SDUINode represents an HTMLElement.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"descriptor":{"count":1,"title":"Descriptor","type":"paragraph"}}}}},{"search":"TypeScript definition:\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"descriptor":{"count":1,"title":"Descriptor","type":"paragraph"}}}}},{"search":"Summary of properties:\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"descriptor":{"count":1,"title":"Descriptor","type":"paragraph"}}}}},{"search":"Use it if you prefer to define your node entirely using an HTML string.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"markup":{"count":1,"title":"Markup","type":"paragraph"}}}}},{"search":"Here we use the field tagName of SDUINode to create an element with tag name sonic-input.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"tag-name":{"count":1,"title":"Tag name","type":"paragraph"}}}}},{"search":"A string key/value pair storing each attribute name/value of the HTML element created.\\nAs no tag name is defined, a div element is created.\\nHere we define the style attribute to create a tiny red square.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"attributes":{"count":1,"title":"Attributes","type":"paragraph"}}}}},{"search":"Children of the current node can be added using the field nodes recursively.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"nodes":{"count":1,"title":"Nodes","type":"paragraph"}}}}},{"search":"As no tag name is defined, a div element is created, and then we use innerHTML to add content to it.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"innerhtml":{"count":1,"title":"InnerHTML","type":"paragraph"}}}}},{"search":"Use them if you want to wrap the component with some HTML string.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"prefix-and-suffix":{"count":1,"title":"Prefix and suffix","type":"paragraph"}}}}},{"search":"The libraryKey of SDUINode is an identifier that points to an SDUINode description in the library to be used as a model for this node.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"Note that the SDUI has a default library containing some basic component definitions useful for form declaration (see default-library.json).\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"This example uses the library key submit which points to a sonic-submit containing a button also coming from the library.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"The element named button in the library is a sonic-button of type success containing a check icon as a prefix.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"Since the submit library element contains an attribute contentElementSelector with the value sonic-button, the &quot;injected content&quot; is put inside the button.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"We used innerHTML for the sake of simplicity, but you can use nodes to add any complex content.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"This special field lets you inject the content at any place in the HTML flow already set inside the parent SDUI component by using a CSS selector.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"parentelementselector":{"count":1,"title":"parentElementSelector","type":"paragraph"}}}}},{"search":"⚠️ Note that it doesn&#39;t work with top-level nodes.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"parentelementselector":{"count":1,"title":"parentElementSelector","type":"paragraph"}}}}},{"search":"The transformers let you transform the structure of the SDUI Descriptor into a new one before parsing and rendering it.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"transformers":{"count":1,"title":"Transformers:","type":"paragraph"}}}}},{"search":"To enable it, you must fill the transformation attribute of the component with a URL pointing to a Transform descriptor.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"transformers":{"count":1,"title":"Transformers:","type":"paragraph"}}}}},{"search":"Each key of the library will be merged with the current library in the SDUI Descriptor, by replacing or creating items library key by key.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"the-library":{"count":1,"title":"The library:","type":"paragraph"}}}}},{"search":"Each transform represents an action that will be done on the SDUI descriptor before the creation of the entire UI.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"the-transform-actions":{"count":1,"title":"The transform actions:","type":"paragraph"}}}}},{"search":"The action that will be done is a verb:\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"the-transform-actions":{"count":1,"title":"The transform actions:","type":"paragraph"}}}}},{"search":"This is an HTML attribute to set on the component if needed. In this case, the component will not treat its props value directly as an SDUI descriptor. Internally, it will basically extract the SDUIDescriptor by doing something like this: const sduiDescriptor = this.props[this.sduikey].\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"sduikey":{"count":1,"title":"sduiKey","type":"paragraph"}}}}},{"search":"This is an HTML attribute to set on the component if needed. In this case, the component will automatically create a sonic-toast-message-subscriber component. The data found in props[messageKey] will be treated as the data expected by the sonic-toast-message-subscriber. So, by respecting the format of data supported by this component, you will be able to show multiple toasts in the result of a request.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"messagekey":{"count":1,"title":"messageKey","type":"paragraph"}}}}},{"search":"Example of JSON with messageKey=messages:\\n\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"messagekey":{"count":1,"title":"messageKey","type":"paragraph"}}}}},{"search":"This is an HTML attribute to set on the component if needed. You can set a URL pointing to a JSON describing a library with the same structure as the library in the SDUIDescriptor. The component will simply override its library with the given one.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library":{"count":1,"title":"library","type":"paragraph"}}}}},{"search":"Here is a little playground to let you test some simple tricks.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"playground":{"count":1,"title":"Playground","type":"paragraph"}}}}},{"search":"States","files":{"core/components/functional/states/states.md":{"title":"States","hashes":{"states":{"count":1,"title":"","type":"page"}}}}},{"search":"When using capturing groups () the stored values are accessible via the dataProviderExpressione.g., data-value=&quot;#couleur_(\\\\d+)&quot; =&gt; dataProviderExpression=&quot;api/unknown/$1&quot;\\n","files":{"core/components/functional/states/states.md":{"title":"States","hashes":{"regexp":{"count":1,"title":"Regexp","type":"paragraph"}}}}},{"search":"Same as RegExp but using url patternse.g., data-value=&quot;#couleur_:id&quot; =&gt; dataProviderExpression=&quot;api/unknown/:id&quot;\\n","files":{"core/components/functional/states/states.md":{"title":"States","hashes":{"url-pattern":{"count":1,"title":"Url-pattern","type":"paragraph"}}}}},{"search":"Submit","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"submit":{"count":1,"title":"","type":"page"}}}}},{"search":"Live demos: &lt;docs-lit-demo&gt; + src/docs/example/docs-submit-demos.ts. Use Local API demos (serviceURL=&quot;/docs-mock-api&quot;).\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"submit":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"sonic-submit sends the formDataProvider publisher to a REST endpoint (same configuration model as fetch: serviceURL on an ancestor, path via dataProvider or endPoint).\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"overview":{"count":1,"title":"Overview","type":"paragraph"}}}}},{"search":"While a REST submit runs, the slot is wrapped with data-disabled (faded, no pointer events). With native, validation and loader still run, then the browser performs a normal form submission.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"overview":{"count":1,"title":"Overview","type":"paragraph"}}}}},{"search":"POST to mock api/register; result publisher submit-example-result.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"form-and-result-handling":{"count":1,"title":"Form and result handling","type":"paragraph"}}}}},{"search":"With native, Concorde does not call fetch. After form validation it:\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"native-html-form":{"count":1,"title":"Native HTML form","type":"paragraph"}}}}},{"search":"Use a real &lt;form action=&quot;…&quot; method=&quot;post&quot;&gt; ancestor. For SPAs, a named target (e.g. iframe) avoids leaving the doc page.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"native-html-form":{"count":1,"title":"Native HTML form","type":"paragraph"}}}}},{"search":"Sends fields as multipart/form-data instead of application/json (response is still parsed as JSON).\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"sendasformdata":{"count":1,"title":"sendAsFormData","type":"paragraph"}}}}},{"search":"When the API wraps the payload (e.g. { data: { id, token } }), set submit-result-key=&quot;data&quot; on sonic-submit so submitResultDataProvider receives only the inner object.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"submit-result-key":{"count":1,"title":"submit-result-key","type":"paragraph"}}}}},{"search":"Mock endpoint: POST /docs-mock-api/api/register/nested.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"submit-result-key":{"count":1,"title":"submit-result-key","type":"paragraph"}}}}},{"search":"Lists one or more publisher ids (space-separated). After the API returns a result object, each is set to {} — useful to reset the form publisher.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"cleareddataonsuccess":{"count":1,"title":"clearedDataOnSuccess","type":"paragraph"}}}}},{"search":"Listen for the bubbling submit event; event.detail is the same result written to submitResultDataProvider (if configured).\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"custom-submit-event":{"count":1,"title":"Custom `submit` event","type":"paragraph"}}}}},{"search":"Ancestor dataProvider is the default path; endPoint on sonic-submit overrides it for that button only.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"endpoint-vs-dataprovider":{"count":1,"title":"endPoint vs dataProvider","type":"paragraph"}}}}},{"search":"Appends publisher fields as a query string on the endpoint, then performs a GET. The mock route api/register/echo returns the query for inspection.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"methodget":{"count":1,"title":"method=\\"get\\"","type":"paragraph"}}}}},{"search":"You can use dot notation in name on form controls; the publisher stores nested objects:\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"dot-notation-formdataprovider-shape":{"count":1,"title":"dot notation (formDataProvider shape)","type":"paragraph"}}}}},{"search":"Stored shape:\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"dot-notation-formdataprovider-shape":{"count":1,"title":"dot notation (formDataProvider shape)","type":"paragraph"}}}}},{"search":"Subscriber","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"subscriber":{"count":1,"title":"","type":"page"}}}}},{"search":"La mixin Subscriber permet lier un composant à un publisher.\\nLa liaison à un publisher se fait via l&#39;attribut dataProvider du composant qui représente ce que l&#39;on obtient en appellant PublisherManager.get(dataProvider).\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"subscriber":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Les propriétés du composant sont automatiquement remplies avec les propriétés du même nom dans les données du publisher.\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"subscriber":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Le composant est automatiquement mis à jour lorsque les données du publisher sont mises à jour.\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"subscriber":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Id of the dataProvider that the component will subscribe to\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"dataprovider":{"count":1,"title":"DataProvider","type":"paragraph"}}}}},{"search":"Data object (json) that will be passed to the dataProvider\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"props":{"count":1,"title":"Props","type":"paragraph"}}}}},{"search":"Helper, display the data held by the dataProvider in a floating div\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"debug":{"count":1,"title":"Debug","type":"paragraph"}}}}},{"search":"Docs coming soon\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"noautofill":{"count":1,"title":"NoAutofill","type":"paragraph"},"propertymap":{"count":1,"title":"PropertyMap","type":"paragraph"},"bindpublisher":{"count":1,"title":"BindPublisher","type":"paragraph"},"instancecounter":{"count":1,"title":"instanceCounter","type":"paragraph"},"publisher":{"count":1,"title":"Publisher","type":"paragraph"},"args":{"count":1,"title":"Args","type":"paragraph"}}}}},{"search":"Permet de mapper un nom de propriété de donnée source vers une propriété du subscriber à la volée\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"propertymap":{"count":1,"title":"PropertyMap","type":"paragraph"}}}}},{"search":"On peut utiliser cette fonction pour lier un publisher spécifique au composant si besoin.\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"bindpublisher":{"count":1,"title":"BindPublisher","type":"paragraph"}}}}},{"search":"Par défaut on crée un shadow dom mais on peut demander à ne pas en avoir via cette propriété et un attribut associé.Cela se fait à l&#39;initialisation uniquement et n&#39;est pas modifiable lors de la vie du composant.\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"noshadowdom":{"count":1,"title":"NoShadowDom","type":"paragraph"}}}}},{"search":"styles ??title ??_props ??onAssign ??defferedDebug ??\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"other-attributes-gathered-from-subscriberstoriests":{"count":1,"title":"Other attributes gathered from subscriber.stories.ts","type":"paragraph"}}}}},{"search":"Value","files":{"core/components/functional/value/value.md":{"title":"Value","hashes":{"value":{"count":1,"title":"","type":"page"}}}}},{"search":"Simply shows a value from a data provider.\\nYou can target sub data value using dot syntax.\\nThe value reacts to changes.\\n","files":{"core/components/functional/value/value.md":{"title":"Value","hashes":{"value":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Alert","files":{"core/components/ui/alert/alert.md":{"title":"Alert","hashes":{"alert":{"count":1,"title":"","type":"page"}}}}},{"search":"Badge","files":{"core/components/ui/badge/badge.md":{"title":"Badge","hashes":{"badge":{"count":1,"title":"","type":"page"}}}}},{"search":"Button","files":{"core/components/ui/button/button.md":{"title":"Button","hashes":{"button":{"count":1,"title":"","type":"page"}}}}},{"search":"The length of the button depends on the size of its content\\n\\n","files":{"core/components/ui/button/button.md":{"title":"Button","hashes":{"loading":{"count":1,"title":"Loading","type":"paragraph"}}}}},{"search":"Captcha","files":{"core/components/ui/captcha/captcha.md":{"title":"Captcha","hashes":{"captcha":{"count":1,"title":"","type":"page"}}}}},{"search":"Card","files":{"core/components/ui/card/card.md":{"title":"Card","hashes":{"card":{"count":1,"title":"","type":"page"}}}}},{"search":"Divider","files":{"core/components/ui/divider/divider.md":{"title":"Divider","hashes":{"divider":{"count":1,"title":"","type":"page"}}}}},{"search":"Checkbox","files":{"core/components/ui/form/checkbox/checkbox.md":{"title":"Checkbox","hashes":{"checkbox":{"count":1,"title":"","type":"page"}}}}},{"search":"Checked blacklistFlags values are sent to the mock API (?blacklistFlags=racist,sexist,…), which excludes jokes whose flags match (see filterDocsJokes in src/docs/mock-api/fixtures.ts).\\n","files":{"core/components/ui/form/checkbox/checkbox.md":{"title":"Checkbox","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}}}},{"search":"Fieldset","files":{"core/components/ui/form/fieldset/fieldset.md":{"title":"Fieldset","hashes":{"fieldset":{"count":1,"title":"","type":"page"}}}}},{"search":"Form-actions","files":{"core/components/ui/form/form-actions/form-actions.md":{"title":"Form-actions","hashes":{"form-actions":{"count":1,"title":"","type":"page"}}}}},{"search":"Form-layout","files":{"core/components/ui/form/form-layout/form-layout.md":{"title":"Form-layout","hashes":{"form-layout":{"count":1,"title":"","type":"page"}}}}},{"search":"Input","files":{"core/components/ui/form/input/input.md":{"title":"Input","hashes":{"input":{"count":1,"title":"","type":"page"}}}}},{"search":"Liste des types\\n","files":{"core/components/ui/form/input/input.md":{"title":"Input","hashes":{"type":{"count":1,"title":"Type","type":"paragraph"}}}}},{"search":"Filter with formDataProvider + name=&quot;contains&quot; (mock API: substring on joke text). Caption and rows via Lit (@subscribe, .items on sonic-queue):\\n","files":{"core/components/ui/form/input/input.md":{"title":"Input","hashes":{"example-of-use--search--queue":{"count":1,"title":"Example of use — search + queue","type":"paragraph"}}}}},{"search":"Input-autocomplete","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"page"}}}}},{"search":"The input-autocomplete component brings input and queue together in order to create a suggest behavior. This is why this component is partially configured as a form input and as a queue.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Please note that only basic text input params and methods are implemented at this time. You should also be sure to understand the behavior of a queue in order to take full advantage of the input-autocomplete component.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Here are some of the features of the input-autocomplete component:\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Doc examples below use HTML binding on suggestion rows. The Lit equivalent uses an items callback with the row object (see docs-queue-geo-demo in src/docs/example/docs-queue-demos.ts). Embedding without Lit: HTML integration.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"If you are looking for a component to provide a suggest behavior, the input-autocomplete component is a good option. \\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"In this example, the input will use its name as the search parameter when calling the service responsible for autocompletion.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"simple-example":{"count":1,"title":"Simple Example","type":"paragraph"}}}}},{"search":"The template is used to render the list items of results.\\nThe list items are responsible for making a selection.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"simple-example":{"count":1,"title":"Simple Example","type":"paragraph"}}}}},{"search":"This time, we added buttons with the same name as the input while keeping the same data provider.\\nThe result is that when you select an item, the input takes the value of the selected item, completing the classic suggest behavior.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"simple-example":{"count":1,"title":"Simple Example","type":"paragraph"}}}}},{"search":"In this example, the search parameter is separated from the name of the input. This means that the input will use the name &quot;nom&quot; as the search parameter, but the form data provider will be filled with the data named &quot;siren&quot; from the selected list item.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"value-different-from-search-parameter":{"count":1,"title":"Value different from search parameter","type":"paragraph"}}}}},{"search":"To do this, we need to use the searchParam attribute on the input element. This attribute specifies the name of the search parameter that will be used.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"value-different-from-search-parameter":{"count":1,"title":"Value different from search parameter","type":"paragraph"}}}}},{"search":"We also need to use the name and value attribute on the list items. This attribute specifies the value of the data provider that will be used for the selected list item.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"value-different-from-search-parameter":{"count":1,"title":"Value different from search parameter","type":"paragraph"}}}}},{"search":"By using these attributes, we can separate the search parameter from the name of the input and still fill the form data provider with the data from the selected list item.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"value-different-from-search-parameter":{"count":1,"title":"Value different from search parameter","type":"paragraph"}}}}},{"search":"This example is the same as the previous one, except that the select attribute is used. This attribute changes the look and feel of the component slightly.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"select-autocomplete--value-different-from-search-parameter":{"count":1,"title":"Select autocomplete / value different from search parameter","type":"paragraph"}}}}},{"search":"Now the text is less free because, you must select either something from the list given by the service, or nothing else.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"select-autocomplete--value-different-from-search-parameter":{"count":1,"title":"Select autocomplete / value different from search parameter","type":"paragraph"}}}}},{"search":"The following code shows how to use the select attribute in an autocomplete input:\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"select-autocomplete--value-different-from-search-parameter":{"count":1,"title":"Select autocomplete / value different from search parameter","type":"paragraph"}}}}},{"search":"At the moment you can enable keyboard up/down by adding an attribut &quot;data-keyboard-nav&quot; on the component and its listItems\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"keyboard-navigation":{"count":1,"title":"keyboard navigation","type":"paragraph"}}}}},{"search":"Radio","files":{"core/components/ui/form/radio/radio.md":{"title":"Radio","hashes":{"radio":{"count":1,"title":"","type":"page"}}}}},{"search":"Same mock filter as Checkbox (blacklistFlags query param). Radio sends one flag at a time.\\n","files":{"core/components/ui/form/radio/radio.md":{"title":"Radio","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}}}},{"search":"Select","files":{"core/components/ui/form/select/select.md":{"title":"Select","hashes":{"select":{"count":1,"title":"","type":"page"}}}}},{"search":"name=&quot;lang&quot; is sent as ?lang=fr|en to the doc mock API (filterDocsJokes). Same pattern as Input (contains):\\n","files":{"core/components/ui/form/select/select.md":{"title":"Select","hashes":{"example-of-use--language-filter--queue":{"count":1,"title":"Example of use — language filter + queue","type":"paragraph"}}}}},{"search":"Switch","files":{"core/components/ui/form/switch/switch.md":{"title":"Switch","hashes":{"switch":{"count":1,"title":"","type":"page"}}}}},{"search":"Same mock filter as Checkbox; switches can enable several flags (comma-separated in the query).\\n","files":{"core/components/ui/form/switch/switch.md":{"title":"Switch","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}}}},{"search":"Textarea","files":{"core/components/ui/form/textarea/textarea.md":{"title":"Textarea","hashes":{"textarea":{"count":1,"title":"","type":"page"}}}}},{"search":"Group","files":{"core/components/ui/group/group.md":{"title":"Group","hashes":{"group":{"count":1,"title":"","type":"page"}}}}},{"search":"Icon","files":{"core/components/ui/icon/icon.md":{"title":"Icon","hashes":{"icon":{"count":1,"title":"","type":"page"}}}}},{"search":"Image","files":{"core/components/ui/image/image.md":{"title":"Image","hashes":{"image":{"count":1,"title":"","type":"page"}}}}},{"search":"Link","files":{"core/components/ui/link/link.md":{"title":"Link","hashes":{"link":{"count":1,"title":"","type":"page"}}}}},{"search":"Loader","files":{"core/components/ui/loader/loader.md":{"title":"Loader","hashes":{"loader":{"count":1,"title":"","type":"page"}}}}},{"search":"Menu","files":{"core/components/ui/menu/menu.md":{"title":"Menu","hashes":{"menu":{"count":1,"title":"","type":"page"}}}}},{"search":"Modal","files":{"core/components/ui/modal/modal.md":{"title":"Modal","hashes":{"modal":{"count":1,"title":"","type":"page"}}}}},{"search":"Pop","files":{"core/components/ui/pop/pop.md":{"title":"Pop","hashes":{"pop":{"count":1,"title":"","type":"page"}}}}},{"search":"Progress bar","files":{"core/components/ui/progress/progress.md":{"title":"Progress bar","hashes":{"progress-bar":{"count":1,"title":"","type":"page"}}}}},{"search":"Displays an indicator showing the completion progress of a task.\\n","files":{"core/components/ui/progress/progress.md":{"title":"Progress bar","hashes":{"progress-bar":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Table","files":{"core/components/ui/table/table.md":{"title":"Table","hashes":{"table":{"count":1,"title":"","type":"page"}}}}},{"search":"Values available : primary, info, success, warning, danger\\n","files":{"core/components/ui/table/table.md":{"title":"Table","hashes":{"type":{"count":1,"title":"Type","type":"paragraph"}}}}},{"search":"The following attributes will be used to set the style of the component : \\n","files":{"core/components/ui/table/table.md":{"title":"Table","hashes":{"cell-style-attributes":{"count":1,"title":"Cell style attributes","type":"paragraph"}}}}},{"search":"Every table is responsive by default\\n","files":{"core/components/ui/table/table.md":{"title":"Table","hashes":{"responsive":{"count":1,"title":"Responsive","type":"paragraph"}}}}},{"search":"Toast","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"toast":{"count":1,"title":"","type":"page"}}}}},{"search":"Les statuts disponibles sont : success, error, warning, info ou vide (par défaut).\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"statut":{"count":1,"title":"Statut","type":"paragraph"}}}}},{"search":"Le contenu du toast peut contenir du HTML.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"avec-contenu-html":{"count":1,"title":"Avec contenu HTML","type":"paragraph"}}}}},{"search":"Par défaut, les toasts disparaissent automatiquement. Avec preserve: true, le toast reste affiché jusqu&#39;à ce qu&#39;il soit fermé manuellement.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"persistance":{"count":1,"title":"Persistance","type":"paragraph"}}}}},{"search":"Avec dismissForever: true et un id, le toast peut être masqué définitivement. Une fois fermé, il ne réapparaîtra plus même après rechargement de la page.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"masquer-définitivement":{"count":1,"title":"Masquer définitivement","type":"paragraph"}}}}},{"search":"Avec ghost: true, le toast devient semi-transparent et non-interactif.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"fantôme":{"count":1,"title":"Fantôme","type":"paragraph"}}}}},{"search":"Supprime tous les toasts sauf ceux marqués comme ghost.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"tout-supprimer":{"count":1,"title":"Tout supprimer","type":"paragraph"}}}}},{"search":"Supprime tous les toasts d&#39;un statut spécifique.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"supprimer-par-statut":{"count":1,"title":"Supprimer par statut","type":"paragraph"}}}}},{"search":"Supprime tous les toasts qui ne sont pas marqués comme preserve.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"supprimer-les-éléments-temporaires":{"count":1,"title":"Supprimer les éléments temporaires","type":"paragraph"}}}}},{"search":"Tooltip","files":{"core/components/ui/tooltip/tooltip.md":{"title":"Tooltip","hashes":{"tooltip":{"count":1,"title":"","type":"page"}}}}},{"search":"By default, tooltip is centered next to its content\\n","files":{"core/components/ui/tooltip/tooltip.md":{"title":"Tooltip","hashes":{"placement":{"count":1,"title":"Placement","type":"paragraph"}}}}},{"search":"Data flow","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"data-flow":{"count":1,"title":"","type":"page"}}}}},{"search":"Recommended patterns for new Concorde apps (Lit + TypeScript). Under the hood, data lives in a DataProvider store (legacy Publisher API: Legacy: Sharing data).\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"data-flow":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Skill: concorde-get-set-dp in the package ai/ folder.\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"quick-map":{"count":1,"title":"Quick map","type":"paragraph"}}}}},{"search":"const cartKey = new DataProviderKey&lt;{ items: string[] }&gt;(&quot;cart&quot;);\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"dataproviderkey":{"count":1,"title":"DataProviderKey","type":"paragraph"}}}}},{"search":"set(cartKey, { items: [] });\\ndp(cartKey.items).set([&quot;a&quot;, &quot;b&quot;]);\\nget(cartKey);\\n \\n\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"dataproviderkey":{"count":1,"title":"DataProviderKey","type":"paragraph"}}}}},{"search":"Dynamic paths (users.${userId}) → decorators or sub() — not get(&quot;users.${id}&quot;) in imperative code.\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"dataproviderkey":{"count":1,"title":"DataProviderKey","type":"paragraph"}}}}},{"search":"DataProviderKey\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"dataproviderkey":{"count":1,"title":"DataProviderKey","type":"paragraph"}}}}},{"search":"Walkthrough: My first component\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"decorators":{"count":1,"title":"Decorators","type":"paragraph"}}}}},{"search":"Interactive routes mirror these patterns (/concepts/*, /demo/*).\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"starter-kit":{"count":1,"title":"Starter kit","type":"paragraph"}}}}},{"search":"lit + tailwind + vite","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit--tailwind--vite":{"count":1,"title":"","type":"page"}}}}},{"search":"Some notes for an overview of Concorde&#39;s functioning\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit--tailwind--vite":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"A web component is simply a custom HTML element created using web standards:\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"standard-web-components":{"count":1,"title":"Standard Web components","type":"paragraph"}}}}},{"search":"web component = Custom Elements + shadowDom + HTML templates\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"standard-web-components":{"count":1,"title":"Standard Web components","type":"paragraph"}}}}},{"search":"Concorde components are written using the lightweight Lit library: https://lit.dev/.\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit-library":{"count":1,"title":"Lit Library","type":"paragraph"}}}}},{"search":"A good portion of the elements documented on the Lit website are standard JavaScript concepts (e.g., mixins, tagged template literals).\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit-library":{"count":1,"title":"Lit Library","type":"paragraph"}}}}},{"search":"The library simplifies the writing of web components by automating certain tasks:\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit-library":{"count":1,"title":"Lit Library","type":"paragraph"}}}}},{"search":"Our use of Lit rarely goes beyond this hello world\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit-library":{"count":1,"title":"Lit Library","type":"paragraph"}}}}},{"search":"We write the components in TypeScript, which is then compiled into JS.\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"typescript-language":{"count":1,"title":"Typescript Language","type":"paragraph"}}}}},{"search":"Static and inferred typing provides stronger validation of the program&#39;s functioning during compilation.\\nHowever, we often use the &quot;any&quot; type due to time constraints.\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"typescript-language":{"count":1,"title":"Typescript Language","type":"paragraph"}}}}},{"search":"Lit uses TypeScript to simplify development through metadata:\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"typescript-language":{"count":1,"title":"Typescript Language","type":"paragraph"}}}}},{"search":"☢️Warning:\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"typescript-language":{"count":1,"title":"Typescript Language","type":"paragraph"}}}}},{"search":"Compatibility issues may arise when using JS libraries, particularly regarding DOM traversal.\\nThis is because these libraries are blocked from traversing the DOM due to the presence of the shadow DOM.\\nHere are some examples of things that may cause problems:\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"compatibility-with-classic-js-libraries":{"count":1,"title":"Compatibility with Classic JS Libraries","type":"paragraph"}}}}},{"search":"🧱 Creating components\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"topics-to-explore-for-further-learning":{"count":1,"title":"Topics to Explore for Further Learning","type":"paragraph"}}}}},{"search":"🎨 Adding styles\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"topics-to-explore-for-further-learning":{"count":1,"title":"Topics to Explore for Further Learning","type":"paragraph"}}}}},{"search":"🥨 Sharing data\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"topics-to-explore-for-further-learning":{"count":1,"title":"Topics to Explore for Further Learning","type":"paragraph"}}}}},{"search":"Legacy: Subscriber mixin","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"legacy-subscriber-mixin":{"count":1,"title":"","type":"page"}}}}},{"search":"New app components: My first component and Data flow — extend LitElement with decorators (@subscribe, @ancestorAttribute, …). This mixin remains in core components (sonic-list, sonic-fetch, …) and legacy tutorials.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"legacy-subscriber-mixin":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The Subscriber mixin was commonly extended by Concorde core components and older destination components. Pure UI components usually don&#39;t extend it, especially those outside of form components.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"legacy-subscriber-mixin":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Upon being added to the DOM (connectedCallback), subscribers search for the first occurrence of the dataProvider attribute in their parent&#39;s HTML structure.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"The value of this attribute is the DataProvider path (see Data flow and DataProviderKey; legacy API: Sharing Data).\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"The subscriber then subscribes to the publisher as a data template to be filled.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"The reactive properties of the component reflect in real-time the properties with the same name in the publisher.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"This functionality is commonly used in the generic components fetch, queue, and list.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"If the subscriber is inside another subscriber, it can subscribe to a data of its parent using the attribute subDataProvider = &#39;address.of.my.data&#39; instead of the parent&#39;s data. This allows for dynamic behavior.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"In a similar manner, searching for ancestor attributes can be used to configure automatic translation for any property starting with &quot;wording&quot; and ending with a label identifier recognized by the wordingProvider API.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"automated-translation":{"count":1,"title":"Automated Translation","type":"paragraph"}}}}},{"search":"Normally, this API is globally configured and not within the component. Therefore, remember to prefix translatable label identifiers present in the ticketing system, for example, with &quot;wording&quot;.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"automated-translation":{"count":1,"title":"Automated Translation","type":"paragraph"}}}}},{"search":"The value of this property can be provided as a JSON object or any other value. This value is then assigned to the associated publisher via the dataProvider attribute. As a result, the reactive properties of all subscribers associated with the same dataProvider are filled as mentioned above.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"reactive-property-props":{"count":1,"title":"Reactive Property `props`","type":"paragraph"}}}}},{"search":"It is possible to disable the automatic filling of reactive properties in a particular component. To do so, set the variable noAutoFill = true in the component&#39;s class. However, the reactive property props will still be updated.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"disabling-automatic-filling-of-reactive-properties":{"count":1,"title":"Disabling Automatic Filling of Reactive Properties","type":"paragraph"}}}}},{"search":"For example, sonic-subscriber and sonic-fetch have this attribute because they do not have reactive properties.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"disabling-automatic-filling-of-reactive-properties":{"count":1,"title":"Disabling Automatic Filling of Reactive Properties","type":"paragraph"}}}}},{"search":"☢ CAUTION: When creating an object of type Subscriber or Fetcher, make sure to use the mixins and not directly extend the concrete fetch component (sonic-fetch) and subscriber component (sonic-subscriber). This is because the noAutofill = true attribute is set in those components.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"disabling-automatic-filling-of-reactive-properties":{"count":1,"title":"Disabling Automatic Filling of Reactive Properties","type":"paragraph"}}}}},{"search":"TIPS: \\nIf you disable automatic filling, you will likely make the rendering dynamic by writing expressions like this.props.my.subproperty. If props is updated, the rendering will be triggered. However, if this.props.my.subproperty is directly modified, the rendering will not be triggered. To achieve more reactivity, you can enable rendering when any subproperty is modified. Simply set the variable renderOnPropsInternalChange = true in the class that implements the corresponding mixin.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"disabling-automatic-filling-of-reactive-properties":{"count":1,"title":"Disabling Automatic Filling of Reactive Properties","type":"paragraph"}}}}},{"search":"Suppose that:\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"In a Lit app, use the same data with data configuration (@subscribe + DataProviderKey) on a small row component — see docs-user in src/docs/example/users.ts.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"For HTML-only embedding (no Lit), attribute binding is described in HTML integration and in the Legacy Subscriber mixin pages.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"This pattern also illustrates:\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"Note: Data binding implies that updating the img.src data via the publisher will change the photo without any additional calls.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"Special Variables:\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"Disabling this functionality:\\nYou can disable data binding if it is not needed by calling DataBinding.disable().\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"@ancestorAttribute","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"ancestorattribute":{"count":1,"title":"","type":"page"}}}}},{"search":"The @ancestorAttribute decorator automatically injects the value of an ancestor&#39;s attribute into a class property at the time of connectedCallback.\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"ancestorattribute":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"This decorator uses HTML.getAncestorAttributeValue to traverse up the DOM tree from the current element and find the first ancestor that has the specified attribute. The value of this attribute is then assigned to the decorated property.\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"The component reads dataProvider and testAttribute from its ancestor wrapper.\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"@customElement(&quot;demo-ancestor-attribute&quot;)\\nexport class DemoAncestorAttribute extends LitElement {\\n @ancestorAttribute(&quot;dataProvider&quot;)\\n dataProvider: string | null = null;\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @ancestorAttribute(&quot;testAttribute&quot;)\\n testAttribute: string | null = null;\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" render() {\\n return html &lt;section&gt; &lt;p&gt;dataProvider: &lt;strong&gt;${this.dataProvider || &quot;null&quot;}&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;testAttribute: &lt;strong&gt;${this.testAttribute || &quot;null&quot;}&lt;/strong&gt;&lt;/p&gt; &lt;/section&gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"This decorator is particularly useful for:\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"use-cases":{"count":1,"title":"Use cases","type":"paragraph"}}},"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"use-cases":{"count":1,"title":"Use cases","type":"paragraph"}}},"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"use-cases":{"count":1,"title":"Use cases","type":"paragraph"}}}}},{"search":"@autoSubscribe","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"autosubscribe":{"count":1,"title":"","type":"page"}}}}},{"search":"Legacy: prefer @subscribe + DataProviderKey. Examples below may still show PublisherManager for existing codebases.\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"autosubscribe":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The @autoSubscribe decorator automatically detects which publishers are accessed within a method and subscribes to them. When any of these publishers change, the method is automatically re-executed.\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"autosubscribe":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"This decorator wraps a method to track which publishers are accessed during its execution. It then subscribes to all accessed publishers, and when any of them change, the method is re-executed. This provides automatic reactivity without manually managing subscriptions.\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":" @state() displayText: string = &quot;&quot;;\\n @state() computedValue: number = 0;\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @autoSubscribe()\\n updateDisplay() {\\n const value1 = PublisherManager.get(&quot;autoValue1&quot;).get() || 0;\\n const value2 = PublisherManager.get(&quot;autoValue2&quot;).get() || 0;\\n this.computedValue = value1 + value2;\\n this.displayText = ${value1} + ${value2} = ${this.computedValue};\\n }\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" render() {\\n return html &lt;p&gt;&lt;strong&gt;${this.displayText}&lt;/strong&gt;&lt;/p&gt; &lt;div&gt; &lt;sonic-button @click=${() =&gt; this.randomizeValue(&quot;autoValue1&quot;)}&gt; Randomize Value 1 &lt;/sonic-button&gt; &lt;sonic-button @click=${() =&gt; this.randomizeValue(&quot;autoValue2&quot;)}&gt; Randomize Value 2 &lt;/sonic-button&gt; &lt;/div&gt; ;\\n }\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" randomizeValue(publisherId: string) {\\n const value = PublisherManager.get(publisherId);\\n value.set(Math.floor(Math.random() * 100));\\n }\\n}\\n\\n\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" }\\n}\\n \\n\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"example-with-render-method":{"count":1,"title":"Example with render method","type":"paragraph"}}},"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"},"example-with-nested-paths":{"count":1,"title":"Example with nested paths","type":"paragraph"}}}}},{"search":"@customElement(&quot;shopping-cart&quot;)\\nexport class ShoppingCart extends LitElement {\\n items: any[] = [];\\n total: number = 0;\\n discount: number = 0;\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" @autoSubscribe()\\n calculateTotal() {\\n const cart = PublisherManager.get(&quot;cart&quot;);\\n const promo = PublisherManager.get(&quot;promo&quot;);\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" }\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}},"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" connectedCallback() {\\n super.connectedCallback();\\n this.calculateTotal();\\n }\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" render() {\\n return html &lt;div class=&quot;cart&quot;&gt; &lt;h2&gt;Shopping Cart&lt;/h2&gt; ${this.items.map(item =&gt; html\\n ${item.name} x${item.quantity} - ${item.price}€\\n )} &lt;div class=&quot;total&quot;&gt; &lt;p&gt;Subtotal: ${this.total + this.discount}€&lt;/p&gt; &lt;p&gt;Discount: -${this.discount}€&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Total: ${this.total}€&lt;/strong&gt;&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; ;\\n }\\n}\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":"// When you update the publishers, calculateTotal is automatically called:\\nconst cart = PublisherManager.get(&quot;cart&quot;);\\ncart.items.set([\\n { name: &quot;Product 1&quot;, price: 10, quantity: 2 },\\n { name: &quot;Product 2&quot;, price: 15, quantity: 1 }\\n]);\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":"const promo = PublisherManager.get(&quot;promo&quot;);\\npromo.code.set(&quot;SAVE10&quot;);\\n// calculateTotal will be automatically called and the UI will update\\n \\n\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":"@bind","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"bind":{"count":1,"title":"","type":"page"}}}}},{"search":"Binds a class property to a path in a publisher. The property updates when publisher data changes.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"bind":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"For Lit re-renders, also add @state() on the same property.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"bind":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"See also: @subscribe, @handle, @publish, @get.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"bind":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The decorator subscribes to the DataProvider store using dot notation or a DataProviderKey. Updates flow into the decorated property (Data flow).\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":" @bind(&quot;demoData.firstName&quot;)\\n @state()\\n firstName = &quot;&quot;;\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":" @bind(&quot;demoData.lastName&quot;)\\n @state()\\n lastName: string = &quot;&quot;;\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":" @bind(&quot;demoData.count&quot;)\\n @state()\\n count: number = 0;\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":" render() {\\n return //......\\n }\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":" updateData() {\\n set(demoDataKey, { ...get(demoDataKey), count: get(demoDataKey).count + 1 });\\n // see demo-bind in src/docs/example/decorators-demo-bind-demos.ts\\n const randomIndex = Math.floor(Math.random() * demoUsers.get().length);\\n const randomUser = demoUsers.get()[randomIndex];\\n demoData.set({\\n firstName: randomUser.firstName,\\n lastName: randomUser.lastName,\\n count: (demoData.count.get() || 0) + 1,\\n });\\n }\\n}\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":"@bind accepts either a string path (legacy) or a DataProviderKey&lt;T&gt;. The property type must match T. Use reflect: true to push local writes back to the publisher (see below). See DataProviderKey.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"dataproviderkey-strict-typing":{"count":1,"title":"`DataProviderKey` (strict typing)","type":"paragraph"}}}}},{"search":"type Data = { count: number };\\nconst dataKey = new DataProviderKey(&quot;data&quot;);\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"dataproviderkey-strict-typing":{"count":1,"title":"`DataProviderKey` (strict typing)","type":"paragraph"}}}}},{"search":"@bind(dataKey.count, { reflect: true })\\n@state()\\ncount: number = 0;\\n \\n\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"dataproviderkey-strict-typing":{"count":1,"title":"`DataProviderKey` (strict typing)","type":"paragraph"}}}}},{"search":"Two-way sync: reads from the publisher and local assignments call publisher.set(...). An internal guard avoids infinite loops.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"reflect-reflect-true":{"count":1,"title":"Reflect (`reflect: true`)","type":"paragraph"}}}}},{"search":" @bind(&quot;bindReflectDemo.count&quot;, { reflect: true })\\n @state()\\n withReflect: number = 0;\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"reflect-reflect-true":{"count":1,"title":"Reflect (`reflect: true`)","type":"paragraph"}}}}},{"search":" @bind(&quot;bindReflectDemo.count&quot;)\\n @state()\\n withoutReflect: number = 0;\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"reflect-reflect-true":{"count":1,"title":"Reflect (`reflect: true`)","type":"paragraph"}}}}},{"search":" render() {\\n return html &lt;div class=&quot;mb-3&quot;&gt; from publisher : ${sub(&quot;bindReflectDemo.count&quot;) || 0} &lt;br /&gt; from component with reflect : ${this.withReflect || 0} &lt;br /&gt; from component without reflect : ${this.withoutReflect || 0} &lt;/div&gt; &lt;sonic-button @click=${() =&gt; this.withReflect++} &gt;Increment with reflect&lt;/sonic-button &gt; &lt;sonic-button @click=${() =&gt; this.withoutReflect++} &gt;Increment without reflect&lt;/sonic-button &gt; ;\\n }\\n}\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"reflect-reflect-true":{"count":1,"title":"Reflect (`reflect: true`)","type":"paragraph"}}}}},{"search":"Use ${prop} or ${this.prop} inside a normal string literal (not a JS template literal with backticks). @bind re-subscribes when a reactive dependency changes.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"dynamic-paths":{"count":1,"title":"Dynamic paths","type":"paragraph"}}}}},{"search":"Properties referenced in the pattern must be reactive (@property, etc.) or you must call requestUpdate manually.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"dynamic-paths":{"count":1,"title":"Dynamic paths","type":"paragraph"}}}}},{"search":"Works with any component that has the usual DOM lifecycle (LitElement, Subscriber mixin, etc.).\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"notes":{"count":1,"title":"Notes","type":"paragraph"}}}}},{"search":"Shared data: Sharing data.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"notes":{"count":1,"title":"Notes","type":"paragraph"}}}}},{"search":"@get","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"get":{"count":1,"title":"","type":"page"}}}}},{"search":"Loads data through API.getDetailed. The decorated property is ApiGetResult&lt;T&gt; | null: request, response (or null for dataProvider(...) resolution without HTTP), and typed result.\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"get":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Pass an Endpoint&lt;T&gt; as the first argument. Import get and ApiGetResult from @supersoniks/concorde/decorators, and Endpoint from @supersoniks/concorde/utils/endpoint.\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"get":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Same demo service as sonic-queue (/docs-mock-api/geo/). Publisher setup lives in decorators-demo-geo.ts and decorators-demo-subscribe-publish-get-demos.ts.\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"minimal-example":{"count":1,"title":"Minimal example","type":"paragraph"}}}}},{"search":"Dynamic config and endpoint path (demo-api-get-configuration-key in doc sources):\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"live-demos":{"count":1,"title":"Live demos","type":"paragraph"}}}}},{"search":"Scoped @get with @publish / @subscribe on the payload (see @publish and @subscribe) — wrap under an ancestor with serviceURL=&quot;/docs-mock-api/geo/&quot;:\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"live-demos":{"count":1,"title":"Live demos","type":"paragraph"}}}}},{"search":"Stale responses are ignored if the path or generation changed before the request finished.\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"live-demos":{"count":1,"title":"Live demos","type":"paragraph"}}}}},{"search":"@handle","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"handle":{"count":1,"title":"","type":"page"}}}}},{"search":"Typed callback on one or more DataProviderKey&lt;T&gt; paths: invokes the decorated method when a publisher assigns a value (calculations, side effects, updating other @state properties, etc.).\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"handle":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Unlike @subscribe, nothing is bound to the decorated member — only your method runs. @handle is typed and accepts up to 3 keys plus an optional trailing HandleOptions object. It supersedes the string-based @onAssign.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"handle":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"By default the method is called on every assignment, even when the value is null / undefined. Use the options below to restrict that.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"handle":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"@customElement(&quot;demo-handle&quot;)\\nexport class DemoHandle extends LitElement {\\n @state() doubled = 0;\\n @state() lastUpdate = &quot;&quot;;\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @handle(demoDataKey.count)\\n onCountChange(count: number) {\\n this.doubled = count * 2;\\n this.lastUpdate = new Date().toLocaleTimeString();\\n }\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" incrementCount() {\\n const data = get(demoDataKey);\\n set(demoDataKey, { ...data, count: data.count + 1 });\\n }\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" render() {\\n return html &amp;lt;p&amp;gt;Doubled count: ${this.doubled}&amp;lt;/p&amp;gt; &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Last update: ${this.lastUpdate}&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt; &amp;lt;sonic-button @click=${this.incrementCount}&amp;gt;Increment&amp;lt;/sonic-button&amp;gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"Placeholders in DataProviderKey resolve from the host component’s properties (same rules as @bind / @subscribe).\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"dynamic-path":{"count":1,"title":"Dynamic path","type":"paragraph"}}}}},{"search":"@customElement(&quot;demo-handle-dynamic&quot;)\\nexport class DemoHandleDynamic extends LitElement {\\n @property({ type: Number })\\n userIndex = 0;\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"dynamic-path":{"count":1,"title":"Dynamic path","type":"paragraph"}}}}},{"search":" @state() displayName = &quot;&quot;;\\n @state() lastUpdate = &quot;&quot;;\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"dynamic-path":{"count":1,"title":"Dynamic path","type":"paragraph"}}}}},{"search":" @handle(new DataProviderKey&lt;User, { userIndex: number }&gt;(&quot;demoUsers.${userIndex}&quot;))\\n onUserAssigned(user: User) {\\n this.displayName = ${user.firstName} ${user.lastName};\\n this.lastUpdate = new Date().toLocaleTimeString();\\n }\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"dynamic-path":{"count":1,"title":"Dynamic path","type":"paragraph"}}}}},{"search":" render() {\\n return html...;\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"dynamic-path":{"count":1,"title":"Dynamic path","type":"paragraph"}}}}},{"search":"@handle accepts up to 3 keys; the method receives one strongly-typed argument per key, in order. Each assignment triggers the method, so make your method safe against partial values (or use waitForAllDefined, see below).\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"multiple-paths":{"count":1,"title":"Multiple paths","type":"paragraph"}}}}},{"search":"@customElement(&quot;demo-handle-multi&quot;)\\nexport class DemoHandleMulti extends LitElement {\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"multiple-paths":{"count":1,"title":"Multiple paths","type":"paragraph"}}}}},{"search":" // show: boolean, isIdle: boolean — fully typed from the keys\\n @handle(config.onInactivity.stillHere.show, idle.isIdle)\\n onInactivity(show: boolean, isIdle: boolean) {\\n if (show === true &amp;&amp; isIdle === true) this.openModal();\\n else this.closeModal();\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"multiple-paths":{"count":1,"title":"Multiple paths","type":"paragraph"}}}}},{"search":"Pass an options object as the last argument. The names map to real situations seen in the apps.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"options-handleoptions":{"count":1,"title":"Options (`HandleOptions`)","type":"paragraph"}}}}},{"search":"Only call the method once all watched keys are defined (non null / undefined). This reproduces the historical @onAssign semantics — use it when the logic only makes sense with every source ready (e.g. building a date from date + timeZone + direction).\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"waitforalldefined":{"count":1,"title":"`waitForAllDefined`","type":"paragraph"}}}}},{"search":"Do not call the method when a received value belongs to one of the listed categories (the Skip enum). Each entry is a named category — not a value — so there is no value/pattern ambiguity (e.g. {} is Skip.EmptyObject, an explicit &quot;empty object&quot; category, never a value comparison).\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"skip":{"count":1,"title":"`skip`","type":"paragraph"}}}}},{"search":"Useful when a not-yet-initialized publisher emits {} as a &quot;loading&quot; state. For a specific value (e.g. a particular string), guard inside the method instead.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"skip":{"count":1,"title":"`skip`","type":"paragraph"}}}}},{"search":"Options can be combined, e.g. @handle(a, b, { waitForAllDefined: true, skip: [Skip.Nullish] }). For any arbitrary validation on a specific value, just guard inside the method (if (!isValid(v)) return;) — that is exactly what an accept-style predicate would do, since @handle only runs your method.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"skip":{"count":1,"title":"`skip`","type":"paragraph"}}}}},{"search":"See also DataProviderKey.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"highlights":{"count":1,"title":"Highlights","type":"paragraph"}}}}},{"search":"@onAssign","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"onassign":{"count":1,"title":"","type":"page"}}}}},{"search":"New apps: use @handle with DataProviderKey (Data flow). @onAssign uses untyped string paths; it remains documented for existing codebases — see Migrating to @handle below.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"onassign":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The @onAssign decorator allows you to execute a method when one or more publishers are updated. The method is called only when all specified publishers have been assigned values.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"onassign":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"For a typed equivalent (recommended), use @handle.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"onassign":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"This decorator subscribes to one or more publishers by string path (legacy). When all specified publishers have been assigned values (via set), the decorated method is called with all the values as arguments. Prefer @handle + DataProviderKey and get / set from Data flow.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"This is particularly useful when you need to wait for multiple data sources to be ready before executing logic.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":" @state() userWithSettings: any = null;\\n @state() isReady: boolean = false;\\n @state() lastUpdate: string = &quot;&quot;;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @onAssign(&quot;demoUser&quot;, &quot;demoUserSettings&quot;)\\n handleDataReady(user: any, settings: any) {\\n this.isReady = Object.keys(user).length &gt; 0 &amp;&amp; Object.keys(settings).length &gt; 0;\\n this.userWithSettings = { ...user, ...settings };\\n this.lastUpdate = new Date().toLocaleTimeString();\\n this.requestUpdate();\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" render() {\\n const { name, email, theme, language } = this.userWithSettings;\\n return //...\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" updateData() {\\n const user = PublisherManager.get(&quot;demoUser&quot;);\\n const userSettings = PublisherManager.get(&quot;demoUserSettings&quot;);\\n const userNumber = Math.floor(Math.random() * 100);\\n user.set({\\n name: User n°${userNumber},\\n email: user-${userNumber}@example.com,\\n });\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @onAssign(&quot;store.product&quot;, &quot;store.inventory&quot;)\\n handleProductData(product: any, inventory: any) {\\n this.product = product;\\n this.inventory = inventory;\\n this.requestUpdate();\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"example-with-nested-paths":{"count":1,"title":"Example with nested paths","type":"paragraph"}}}}},{"search":" render() {\\n if (!this.product) return html&lt;div&gt;Loading...&lt;/div&gt;;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"example-with-nested-paths":{"count":1,"title":"Example with nested paths","type":"paragraph"}}}}},{"search":"The path uses dot notation to navigate through the publisher structure:\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"path-syntax":{"count":1,"title":"Path syntax","type":"paragraph"}}}}},{"search":"You can now build the paths dynamically by referencing the host class properties inside the strings passed to @onAssign. Two placeholder syntaxes are supported:\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":"Each placeholder is replaced at runtime with the current value of the corresponding property. @onAssign automatically watches those properties and:\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" @property({ type: String })\\n dataProvider: &quot;demoUsers&quot; | &quot;demoUsersAlt&quot; = &quot;demoUsers&quot;;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" @property({ type: Number })\\n userIndex: number = 0;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" @state() user: any = null;\\n @state() userSettings: any = null;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" @onAssign(&quot;${dataProvider}.${userIndex}&quot;, &quot;${dataProvider}Settings.${userIndex}&quot;)\\n handleUserDataReady(user: any, settings: any) {\\n this.user = user;\\n this.userSettings = settings;\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" updateUserIndex(e: Event) {\\n this.userIndex = parseInt((e.target as HTMLInputElement).value);\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" updateDataProvider(e: Event) {\\n this.dataProvider = (e.target as HTMLSelectElement).value as\\n | &quot;demoUsers&quot;\\n | &quot;demoUsersAlt&quot;;\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" updateCurrentUserData() {\\n const usersPublisher = PublisherManager.get(this.dataProvider);\\n const settingsPublisher = PublisherManager.get(\\n ${this.dataProvider}Settings\\n );\\n const userPublisher = Objects.traverse(\\n usersPublisher,\\n [String(this.userIndex)]\\n ) as PublisherProxy;\\n const settingPublisher = Objects.traverse(\\n settingsPublisher,\\n [String(this.userIndex)]\\n ) as PublisherProxy;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" render() {\\n return html &amp;lt;div class=&quot;flex flex-col gap-2&quot;&amp;gt; &amp;lt;sonic-select label=&quot;Users set&quot; @change=${this.updateDataProvider}&amp;gt; &amp;lt;option value=&quot;demoUsers&quot;&amp;gt;First set of users&amp;lt;/option&amp;gt; &amp;lt;option value=&quot;demoUsersAlt&quot;&amp;gt;Second set of users&amp;lt;/option&amp;gt; &amp;lt;/sonic-select&amp;gt; &amp;lt;sonic-input type=&quot;number&quot; .value=${this.userIndex} @input=${this.updateUserIndex} min=&quot;0&quot; max=&quot;9&quot; label=&quot;Index&quot; class=&quot;block&quot; &amp;gt;&amp;lt;/sonic-input&amp;gt; &amp;lt;sonic-button @click=${this.updateCurrentUserData}&amp;gt; Update current user data &amp;lt;/sonic-button&amp;gt; &amp;lt;div class=&quot;flex flex-col gap-2 border p-2&quot;&amp;gt; &amp;lt;div&amp;gt; &amp;lt;sonic-icon name=&quot;user&quot; library=&quot;heroicons&quot;&amp;gt;&amp;lt;/sonic-icon&amp;gt; ${this.user?.firstName} ${this.user?.lastName} &amp;lt;/div&amp;gt; &amp;lt;div&amp;gt; &amp;lt;sonic-icon name=&quot;envelope&quot; library=&quot;heroicons&quot;&amp;gt;&amp;lt;/sonic-icon&amp;gt; ${this.user?.email} &amp;lt;/div&amp;gt; &amp;lt;div&amp;gt; Theme: ${this.userSettings?.theme} | Language: ${this.userSettings?.language} &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":"⚠️ Use classic string literals: @onAssign(&quot;${dataProvider}.${profileId}&quot;, &quot;settings.${profileId}&quot;). Do not use template literals (backticks), otherwise JavaScript would try to interpolate the value immediately.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":"Additional constraints:\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":"@customElement(&quot;order-summary&quot;)\\nexport class OrderSummary extends LitElement {\\n order: any = null;\\n customer: any = null;\\n shipping: any = null;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" @onAssign(&quot;orderData&quot;, &quot;customerData&quot;, &quot;shippingData&quot;)\\n handleOrderReady(order: any, customer: any, shipping: any) {\\n this.order = order;\\n this.customer = customer;\\n this.shipping = shipping;\\n this.requestUpdate();\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" render() {\\n if (!this.order || !this.customer || !this.shipping) {\\n return html&lt;div&gt;Loading order details...&lt;/div&gt;;\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" }\\n}\\n// Somewhere in your code, update the publishers:\\nconst orderPub = PublisherManager.get(&quot;orderData&quot;);\\nconst customerPub = PublisherManager.get(&quot;customerData&quot;);\\nconst shippingPub = PublisherManager.get(&quot;shippingData&quot;);\\n// The method will be called only when all three are set:\\norderPub.set({ id: &quot;123&quot;, total: 99.99 });\\ncustomerPub.set({ name: &quot;John Doe&quot;, email: &quot;john@example.com&quot; });\\nshippingPub.set({ address: &quot;123 Main St&quot; });\\n// handleOrderReady will be called with all three values\\n \\n\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":"@handle is the typed successor of @onAssign. The key behavioral difference: @onAssign waits for all values to be defined before calling the method, whereas @handle calls it on every assignment by default. Use the waitForAllDefined option to keep the old semantics.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"migrating-to-handle":{"count":1,"title":"Migrating to @handle","type":"paragraph"}}}}},{"search":"// After — same &quot;wait for everything&quot; behavior, but typed\\nconst user = new DataProviderKey&lt;User&gt;(&quot;demoUser&quot;);\\nconst settings = new DataProviderKey&lt;Settings&gt;(&quot;demoUserSettings&quot;);\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"equivalent-semantics-waitforalldefined":{"count":1,"title":"Equivalent semantics (`waitForAllDefined`)","type":"paragraph"}}}}},{"search":"@handle(user, settings, { waitForAllDefined: true })\\nhandleDataReady(user: User, settings: Settings) { /* ... */ }\\n \\n\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"equivalent-semantics-waitforalldefined":{"count":1,"title":"Equivalent semantics (`waitForAllDefined`)","type":"paragraph"}}}}},{"search":"// After\\nconst settings = new DataProviderKey&lt;AppSettings&gt;(&quot;settings&quot;);\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"single-path":{"count":1,"title":"Single path","type":"paragraph"}}}}},{"search":"@handle(settings.modules.logs_route.enabled)\\nonLogRoute(value: boolean) { /* ... */ }\\n \\n\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"single-path":{"count":1,"title":"Single path","type":"paragraph"}}}}},{"search":"@handle is capped at 3 keys. For the rare case of 4 or more publishers, keep @onAssign for now, or split the logic into several @handle methods that each store their value and call a shared method (guarding against partial values).\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"4-paths":{"count":1,"title":"4+ paths","type":"paragraph"}}}}},{"search":"@publish","files":{"docs/_decorators/publish.md":{"title":"@publish","hashes":{"publish":{"count":1,"title":"","type":"page"}}}}},{"search":"Write-only binding: assigning to the property publishes to the DataProviderKey path. No read subscription (inverse of @subscribe).\\n","files":{"docs/_decorators/publish.md":{"title":"@publish","hashes":{"publish":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Similar to the “reflect” half of @bind without listening to the publisher.\\n","files":{"docs/_decorators/publish.md":{"title":"@publish","hashes":{"publish":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Dynamic paths use the same placeholder rules as @bind / @subscribe.\\n","files":{"docs/_decorators/publish.md":{"title":"@publish","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":"@subscribe","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"subscribe":{"count":1,"title":"","type":"page"}}}}},{"search":"Keeps a Lit property in sync with a read-only slice of the DataProvider store. You pass a DataProviderKey; when that path changes, the property updates and the component re-renders.\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"subscribe":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Typical setup (same idea as My first component):\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"subscribe":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"For writing back to the store from component state, use @publish. In templates, the same paths work with sub().\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"subscribe":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"type Data = { count: number };\\nconst dataKey = new DataProviderKey&lt;Data&gt;(&quot;data&quot;);\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"import":{"count":1,"title":"Import","type":"paragraph"}}}}},{"search":"@subscribe(dataKey.count)\\n@state()\\ncount = 0;\\n \\n\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"import":{"count":1,"title":"Import","type":"paragraph"}}}}},{"search":"The key path is fixed. The property type must match T at that segment.\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"static-path":{"count":1,"title":"Static path","type":"paragraph"}}}}},{"search":"@subscribe(cartKey)\\n@state()\\ncart: { items: string[] } | null = null;\\n \\n\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"static-path":{"count":1,"title":"Static path","type":"paragraph"}}}}},{"search":"Placeholders ${prop} in the key string are resolved from properties on the same component. Declare them in the key’s second generic so TypeScript expects them on the host:\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"dynamic-path-and-scope":{"count":1,"title":"Dynamic path and scope","type":"paragraph"}}}}},{"search":"@subscribe(new DataProviderKey&lt;User, { userIndex: number }&gt;(&quot;demoUsers.${userIndex}&quot;))\\n@state()\\nuser: User | null = null;\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"dynamic-path-and-scope":{"count":1,"title":"Dynamic path and scope","type":"paragraph"}}}}},{"search":"@property({ type: Number }) userIndex = 0;\\n \\n\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"dynamic-path-and-scope":{"count":1,"title":"Dynamic path and scope","type":"paragraph"}}}}},{"search":"When userIndex changes, @subscribe re-resolves the path and refreshes user.\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"dynamic-path-and-scope":{"count":1,"title":"Dynamic path and scope","type":"paragraph"}}}}},{"search":"List items (and wrappers like &lt;div dataProvider=&quot;…&quot;&gt;) set which branch the child reads. Pattern from the tutorial:\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"row--ancestor-scope":{"count":1,"title":"Row / ancestor scope","type":"paragraph"}}}}},{"search":"@ancestorAttribute(&quot;dataProvider&quot;)\\ndataProvider: string | null = null;\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"row--ancestor-scope":{"count":1,"title":"Row / ancestor scope","type":"paragraph"}}}}},{"search":"@subscribe(rowKey)\\n@state()\\nuser: User | null = null;\\n \\n\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"row--ancestor-scope":{"count":1,"title":"Row / ancestor scope","type":"paragraph"}}}}},{"search":"@awaitConnectedAncestors and @dispatchConnectedEvent","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"awaitconnectedancestors-and-dispatchconnectedevent":{"count":1,"title":"","type":"page"}}}}},{"search":"The @awaitConnectedAncestors and @dispatchConnectedEvent decorators delay a web component&#39;s initialization until its matching ancestors have executed their connectedCallback. This is when contextual elements (publisher, dataProvider, etc.) are configured.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"awaitconnectedancestors-and-dispatchconnectedevent":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"When a child component attaches to the DOM, its ancestors may not yet be initialized (especially if custom element definitions are loaded asynchronously). The @awaitConnectedAncestors decorator delays the component&#39;s connectedCallback until all ancestors matching the provided CSS selectors have executed their connectedCallback.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"The @dispatchConnectedEvent decorator allows ancestors to signal they are ready by dispatching the sonic-connected event at the end of their connectedCallback. The event bubbles, so it can be listened to from anywhere (e.g. document.addEventListener(CONNECTED, handler)).\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"Ancestors that are not web components (no hyphen in tag name) are considered connected by default and do not need to emit the event.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"An ancestor container decorated with @dispatchConnectedEvent() signals when it is ready. A child component decorated with @awaitConnectedAncestors(&quot;demo-wait-ancestor-container[dataProvider]&quot;) waits for this container to be initialized before initializing itself. Parameters are CSS selectors (element.matches()).\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"The parent is registered via customElements.define() (vanilla JS) rather than @customElement, so it can be defined later—e.g. when the user clicks a button. This demonstrates the child waiting until the parent exists.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"// Parent: registered later via customElements.define(), not @customElement\\n@dispatchConnectedEvent()\\nexport class DemoWaitAncestorContainer extends LitElement {\\n render() {\\n return html&lt;slot&gt;&lt;/slot&gt;;\\n }\\n}\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"// Child: waits for parent before initializing\\n@customElement(&quot;demo-wait-ancestor-value&quot;)\\n@awaitConnectedAncestors(&quot;demo-wait-ancestor-container[dataProvider]&quot;)\\nexport class DemoWaitAncestorValue extends LitElement {\\n @ancestorAttribute(&quot;dataProvider&quot;)\\n dataProvider: string | null = null;\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @state() initializedAt: string = &quot;&quot;;\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" connectedCallback() {\\n super.connectedCallback();\\n this.initializedAt = new Date().toISOString();\\n }\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" render() {\\n return html &lt;p&gt;DataProvider from ancestor: &lt;strong&gt;${this.dataProvider || &quot;—&quot;}&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Initialized at: ${this.initializedAt || &quot;(waiting for parent…)&quot;}&lt;/p&gt; ;\\n }\\n}\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"// Demo section: register parent via customElements.define() when user clicks\\n@customElement(&quot;demo-wait-ancestors-section&quot;)\\nexport class DemoWaitAncestorsSection extends LitElement {\\n registerParent() {\\n if (!customElements.get(&quot;demo-wait-ancestor-container&quot;)) {\\n customElements.define(&quot;demo-wait-ancestor-container&quot;, DemoWaitAncestorContainer);\\n }\\n }\\n render() {\\n return html &lt;sonic-button @click=${this.registerParent}&gt;Register parent component&lt;/sonic-button&gt; &lt;demo-wait-ancestor-container dataProvider=&quot;waitAncestorDemo&quot;&gt; &lt;demo-wait-ancestor-value&gt;&lt;/demo-wait-ancestor-value&gt; &lt;/demo-wait-ancestor-container&gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"The child waits for all specified ancestors. Register outer first, then inner — the child initializes only when both are ready.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"multiple-ancestors":{"count":1,"title":"Multiple ancestors","type":"paragraph"}}}}},{"search":"When the parent is defined at load and already in the DOM, the child initializes immediately (no delay).\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"ancestors-already-connected":{"count":1,"title":"Ancestors already connected","type":"paragraph"}}}}},{"search":"Static (both in DOM from start):\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"ancestors-already-connected":{"count":1,"title":"Ancestors already connected","type":"paragraph"}}}}},{"search":"Dynamic (child added on button click):\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"ancestors-already-connected":{"count":1,"title":"Ancestors already connected","type":"paragraph"}}}}},{"search":"Parameters are CSS selectors matched via element.matches() — e.g. &quot;sonic-subscriber&quot;, &quot;sonic-subscriber[dataProvider]&quot;, &quot;.my-container&quot;, or multiple: &quot;sonic-subscriber&quot;, &quot;sonic-sdui&quot;.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"css-selector-support":{"count":1,"title":"CSS selector support","type":"paragraph"}}}}},{"search":"These decorators are particularly useful for:\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"use-cases":{"count":1,"title":"Use cases","type":"paragraph"}}}}},{"search":"The sonic-connected event bubbles, so you can listen to it from anywhere:\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"listening-to-the-connected-event":{"count":1,"title":"Listening to the connected event","type":"paragraph"}}}}},{"search":"someConnectable.addEventListener(CONNECTED, (e) =&gt; {\\n console.log(&quot;Component connected:&quot;, e.target);\\n});\\n \\n\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"listening-to-the-connected-event":{"count":1,"title":"Listening to the connected event","type":"paragraph"}}}}},{"search":"sub()","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"sub":{"count":1,"title":"","type":"page"}}}}},{"search":"Read-only Lit directive: displays the current DataProvider value and updates whenever it is assigned.\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"sub":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"const counterKey = new DataProviderKey&lt;{ count: number }&gt;(&quot;myCounter&quot;);\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dataproviderkey-static":{"count":1,"title":"DataProviderKey (static)","type":"paragraph"}}}}},{"search":"render() {\\n return html&amp;lt;p&amp;gt;${sub(counterKey.count)}&amp;lt;/p&amp;gt;;\\n}\\n \\n\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dataproviderkey-static":{"count":1,"title":"DataProviderKey (static)","type":"paragraph"}}}}},{"search":"Like @subscribe: the path is resolved on the template host component; the directive re-subscribes when observed props change.\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dynamic-dataproviderkey-prop":{"count":1,"title":"Dynamic DataProviderKey (`${prop}`)","type":"paragraph"}}}}},{"search":"type User = { firstName: string; lastName: string; email: string };\\nconst userKey = new DataProviderKey&lt;User, { userIndex: number }&gt;(\\n &quot;demoUsers.${userIndex}&quot;,\\n);\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dynamic-dataproviderkey-prop":{"count":1,"title":"Dynamic DataProviderKey (`${prop}`)","type":"paragraph"}}}}},{"search":"@customElement(&quot;demo-sub-dynamic&quot;)\\nexport class DemoSubDynamic extends LitElement {\\n @property({ type: Number }) userIndex = 0;\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dynamic-dataproviderkey-prop":{"count":1,"title":"Dynamic DataProviderKey (`${prop}`)","type":"paragraph"}}}}},{"search":" render() {\\n return html &amp;lt;p&amp;gt;${sub(userKey.email)}&amp;lt;/p&amp;gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dynamic-dataproviderkey-prop":{"count":1,"title":"Dynamic DataProviderKey (`${prop}`)","type":"paragraph"}}}}},{"search":"Do not replace sub(path) with get(path) in a template: get returns a one-time snapshot.\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"sub-vs-get--set--dp":{"count":1,"title":"sub() vs get() / set() / dp()","type":"paragraph"}}}}},{"search":"See DataProviderKey, @subscribe, and the concorde-get-set-dp migration skill.\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"sub-vs-get--set--dp":{"count":1,"title":"sub() vs get() / set() / dp()","type":"paragraph"}}}}},{"search":"AI agents (skills & AGENTS.md)","files":{"docs/_getting-started/ai-agents.md":{"title":"AI agents (skills & AGENTS.md)","hashes":{"ai-agents-skills--agentsmd":{"count":1,"title":"","type":"page"}}}}},{"search":"Concorde ships skills, rules, and a root AGENTS.md so Cursor, JetBrains AI Assistant, and other coding agents follow framework patterns (DataProvider, decorators, short imports, scope, theme, migrations).\\n","files":{"docs/_getting-started/ai-agents.md":{"title":"AI agents (skills & AGENTS.md)","hashes":{"ai-agents-skills--agentsmd":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"On a starter project, run yarn ai:sync after install. On a manual / brownfield project, install Concorde first, then use ai-init below.\\n","files":{"docs/_getting-started/ai-agents.md":{"title":"AI agents (skills & AGENTS.md)","hashes":{"ai-agents-skills--agentsmd":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"node node_modules/@supersoniks/concorde/scripts/ai-init.mjs\\n \\n\\n","files":{"docs/_getting-started/ai-agents.md":{"title":"AI agents (skills & AGENTS.md)","hashes":{"manual--existing-project":{"count":1,"title":"Manual / existing project","type":"paragraph"}}}}},{"search":"Source files in the npm package: node_modules/@supersoniks/concorde/ai/ (see also ai/README.md in the Concorde repository).\\n","files":{"docs/_getting-started/ai-agents.md":{"title":"AI agents (skills & AGENTS.md)","hashes":{"workflow":{"count":1,"title":"Workflow","type":"paragraph"}}}}},{"search":"Manual installation (Vite)","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"manual-installation-vite":{"count":1,"title":"","type":"page"}}}}},{"search":"Legacy — for brownfield apps or custom stacks. New projects should use the starter.\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"manual-installation-vite":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Tailwind configuration is not covered here yet.\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"brand-new-vite-project":{"count":1,"title":"Brand New Vite Project","type":"paragraph"}}}}},{"search":"Using Lit with TypeScript requires the following configuration in the &quot;compilerOptions&quot; section of the tsconfig.json file:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"creating-the-project":{"count":1,"title":"Creating the Project","type":"paragraph"}}}}},{"search":"Navigate to the project folder created and perform the installation:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"installing-concorde":{"count":1,"title":"Installing Concorde","type":"paragraph"}}}}},{"search":"Agent skills (AGENTS.md, Cursor / JetBrains): see AI agents — run node node_modules/@supersoniks/concorde/scripts/ai-init.mjs after install.\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"installing-concorde":{"count":1,"title":"Installing Concorde","type":"paragraph"}}}}},{"search":"Shortcut imports work by default in JavaScript, but in TypeScript, they are activated by choice as they inject data into tsconfig.json. Here is the command:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"shortcut-imports":{"count":1,"title":"Shortcut Imports","type":"paragraph"}}}}},{"search":"Shortcut imports replace the actual paths with aliases as follows:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"shortcut-imports":{"count":1,"title":"Shortcut Imports","type":"paragraph"}}}}},{"search":"The original paths remain accessible. Shortcut imports are used for the examples later in this documentation.\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"shortcut-imports":{"count":1,"title":"Shortcut Imports","type":"paragraph"}}}}},{"search":"Import needed component in main.ts or wherever you want to use it:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"simple-integration-in-html":{"count":1,"title":"Simple Integration in HTML","type":"paragraph"}}}}},{"search":"Then in the render function ofyour component or in the HTML of the web page that includes the compiled JS, use the component as follows:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"simple-integration-in-html":{"count":1,"title":"Simple Integration in HTML","type":"paragraph"}}}}},{"search":"For example, create a file my-element.ts at the root:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"using-a-mixin-to-create-a-new-lit-component":{"count":1,"title":"Using a Mixin to Create a New Lit Component","type":"paragraph"}}}}},{"search":"@customElement(&quot;my-element&quot;)\\nexport class SonicComponent extends Fetcher(Subscriber(LitElement)) {\\n @property() email = &quot;&quot;;\\n @property() first_name = &quot;&quot;;\\n @property() last_name = &quot;&quot;;\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"using-a-mixin-to-create-a-new-lit-component":{"count":1,"title":"Using a Mixin to Create a New Lit Component","type":"paragraph"}}}}},{"search":" render() {\\n return html&lt;div&gt; ${this.first_name} ${this.last_name} : ${this.email} &lt;/div&gt;;\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"using-a-mixin-to-create-a-new-lit-component":{"count":1,"title":"Using a Mixin to Create a New Lit Component","type":"paragraph"}}}}},{"search":"Import component main.ts or main.js or any other component that uses it to be compiled\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"using-a-mixin-to-create-a-new-lit-component":{"count":1,"title":"Using a Mixin to Create a New Lit Component","type":"paragraph"}}}}},{"search":"In the HTML of a JS or TS component or in the HTML of the web page containing the compiled JS:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"using-a-mixin-to-create-a-new-lit-component":{"count":1,"title":"Using a Mixin to Create a New Lit Component","type":"paragraph"}}}}},{"search":"Installation","files":{"docs/_getting-started/concorde-outside.md":{"title":"Installation","hashes":{"installation":{"count":1,"title":"","type":"page"}}}}},{"search":"The following command creates a new Vite project in TypeScript mode with Tailwind and an example component to get started.\\n","files":{"docs/_getting-started/concorde-outside.md":{"title":"Installation","hashes":{"starter":{"count":1,"title":"Starter","type":"paragraph"}}}}},{"search":"Then, from the project folder:\\n","files":{"docs/_getting-started/concorde-outside.md":{"title":"Installation","hashes":{"starter":{"count":1,"title":"Starter","type":"paragraph"}}}}},{"search":"Creating components","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"creating-components":{"count":1,"title":"","type":"page"}}}}},{"search":"New app components: start with My first component and Data flow. The Subscriber mixin below is legacy.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"creating-components":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"In this document, we consider the src directory of the project as the root.\\nWe describe how we organize our components as an example, however it depends on your project.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"where-to-put-it":{"count":1,"title":"Where to put it?","type":"paragraph"}}}}},{"search":"In concorde each component is currently organized in the following directory structure (at least we try):\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"where-to-put-it":{"count":1,"title":"Where to put it?","type":"paragraph"}}}}},{"search":"You can copy example.ts from the source to the desired destination to start with.\\nThis file contains a web component in the form of a class that extends the Subscriber mixin, with a reactive property and a render function.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"starting-from-a-simple-model":{"count":1,"title":"Starting from a Simple Model","type":"paragraph"}}}}},{"search":"@customElement(&quot;sonic-example&quot;)\\nexport class SonicComponent extends Subscriber(LitElement) {\\n @property() text = &quot;Example&quot;;\\n render() {\\n return html${this.text};\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"starting-from-a-simple-model":{"count":1,"title":"Starting from a Simple Model","type":"paragraph"}}}}},{"search":"You can remove the dependency on Subscriber if automatic population of the component with external data is not required.\\nFor example, for a UI component:\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"starting-from-a-simple-model":{"count":1,"title":"Starting from a Simple Model","type":"paragraph"}}}}},{"search":"@customElement(&quot;sonic-example&quot;)\\nexport class SonicComponent extends LitElement {\\n @property() text = &quot;Example&quot;;\\n render() {\\n return html${this.text};\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"starting-from-a-simple-model":{"count":1,"title":"Starting from a Simple Model","type":"paragraph"}}}}},{"search":"Regarding Subscriber, see:\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"starting-from-a-simple-model":{"count":1,"title":"Starting from a Simple Model","type":"paragraph"}}}}},{"search":"The class name is not necessarily important. However, it is important to give it a component name prefixed with &quot;sonic&quot; (or a prefix of your own) using the dedicated metadata already present in the copied document. For example, a button component would be named as follows:\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"naming-the-component":{"count":1,"title":"Naming the Component","type":"paragraph"}}}}},{"search":"For less generic components with a specific destination, we advise to include the destination in the name.\\nFor example, for a &quot;title&quot; component in the &quot;event&quot; destination, the name would be simply:\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"naming-the-component":{"count":1,"title":"Naming the Component","type":"paragraph"}}}}},{"search":"To do this, study the functioning of https://lit.dev and also refer to Subscriber.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"creating-reactive-properties-and-modifying-the-render-function":{"count":1,"title":"Creating Reactive Properties and Modifying the Render Function","type":"paragraph"}}}}},{"search":"The HTML structure of a component should remain as simple as possible.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"html-structure-of-a-component":{"count":1,"title":"HTML Structure of a Component","type":"paragraph"}}}}},{"search":"Ideally, there should be only one additional level of elements in addition to slots.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"html-structure-of-a-component":{"count":1,"title":"HTML Structure of a Component","type":"paragraph"}}}}},{"search":"This leads to the creation of more components and thus raises questions about the hierarchical organization of files. However, this tends to atomize their roles.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"html-structure-of-a-component":{"count":1,"title":"HTML Structure of a Component","type":"paragraph"}}}}},{"search":"To compile the component, it needs to be referenced somewhere through an import statement. In particular, it is important to reference it in any component that uses it.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"referencing-it":{"count":1,"title":"Referencing It","type":"paragraph"}}}}},{"search":"In the case where it can be directly used in a page, it should also be globally referenced, especially considering the creation of specific bundles in the future.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"referencing-it":{"count":1,"title":"Referencing It","type":"paragraph"}}}}},{"search":"Here&#39;s where we add imports based on the component&#39;s location inside concorde as an example\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"referencing-it":{"count":1,"title":"Referencing It","type":"paragraph"}}}}},{"search":"As a reminder, the component is simply integrated into the context by adding a tag with the component&#39;s name, for example:\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"using-it":{"count":1,"title":"Using It","type":"paragraph"}}}}},{"search":"My first component","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"my-first-component":{"count":1,"title":"","type":"page"}}}}},{"search":"Build a Lit user card with Tailwind and Concorde UI, then connect it to the DataProvider store: declare the data configuration (type, key, scope), and let @subscribe keep the card in sync.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"my-first-component":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Legacy approach with the Subscriber mixin: Legacy: My first subscriber.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"my-first-component":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Export Tailwind once (e.g. src/docs/tailwind.ts in this repo):\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"}}}}},{"search":"export const tailwind = css${unsafeCSS(tailwindImport)};\\n \\n\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"}}}}},{"search":"User card — plain Lit properties and UI components (no store yet):\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"}}}}},{"search":"@customElement(&quot;docs-user&quot;)\\nexport class DocsUser extends LitElement {\\n static styles = [tailwind];\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"},"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":" @property({ type: String }) first_name = &quot;&quot;;\\n @property({ type: String }) last_name = &quot;&quot;;\\n @property({ type: String }) email = &quot;&quot;;\\n @property({ type: String }) avatar = &quot;&quot;;\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"}}}}},{"search":" render() {\\n return html&amp;lt;div class=&quot;flex items-center gap-3 rounded-md p-2&quot;&amp;gt; &amp;lt;sonic-image src=${this.avatar} rounded=&quot;md&quot; ratio=&quot;1/1&quot; class=&quot;w-16&quot;&amp;gt;&amp;lt;/sonic-image&amp;gt; &amp;lt;div&amp;gt; &amp;lt;div&amp;gt;${this.first_name} &amp;lt;span class=&quot;font-bold&quot;&amp;gt;${this.last_name}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div class=&quot;text-sm text-neutral-400&quot;&amp;gt;${this.email}&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;;\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"}}}}},{"search":"The card does not hard-code user fields anymore. You declare what is stored, where it lives, and which ancestor scope applies — then @subscribe mirrors that object on the component.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"2-data-configuration":{"count":1,"title":"2. Data configuration","type":"paragraph"}}}}},{"search":"DocsUserData documents the fields you expect at this scope (first name, email, avatar, …). TypeScript checks that user matches that shape.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"type--shape-of-the-data":{"count":1,"title":"Type — shape of the data","type":"paragraph"}}}}},{"search":"docsUserRowKey points at the store segment to read. The path &quot;${dataProvider}&quot; is resolved at runtime from a property on the component (see scope below).\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"key--path-in-the-dataprovider":{"count":1,"title":"Key — path in the DataProvider","type":"paragraph"}}}}},{"search":"export const docsUserRowKey = new DataProviderKey&lt;\\n DocsUserData,\\n { dataProvider: string | null }\\n&gt;(&quot;${dataProvider}&quot;);\\n \\n\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"key--path-in-the-dataprovider":{"count":1,"title":"Key — path in the DataProvider","type":"paragraph"}}}}},{"search":"The second generic ({ dataProvider: string | null }) lists what the host must expose so &quot;${dataProvider}&quot; can be resolved. See DataProviderKey.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"key--path-in-the-dataprovider":{"count":1,"title":"Key — path in the DataProvider","type":"paragraph"}}}}},{"search":"A parent sets dataProvider=${docsUserScopeAKey.path} (or a list row sets …/list-item/0). @ancestorAttribute copies that attribute onto this.dataProvider, so the key resolves to the correct branch.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"scope--which-store-segment-applies":{"count":1,"title":"Scope — which store segment applies","type":"paragraph"}}}}},{"search":"@subscribe watches docsUserRowKey and updates user when the store changes. Use @state() so Lit re-renders. The template reads this.user like any other property.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":" @ancestorAttribute(&quot;dataProvider&quot;)\\n dataProvider: string | null = null;\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":" @subscribe(docsUserRowKey)\\n @state()\\n user: DocsUserData | null = null;\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":" render() {\\n const u = this.user;\\n if (!u) return nothing;\\n return html&amp;lt;div class=&quot;flex items-center gap-3 rounded-md p-2&quot;&amp;gt; &amp;lt;sonic-image src=${u.avatar} rounded=&quot;md&quot; ratio=&quot;1/1&quot; class=&quot;w-16&quot;&amp;gt;&amp;lt;/sonic-image&amp;gt; &amp;lt;div&amp;gt; &amp;lt;div&amp;gt;${u.first_name} &amp;lt;span class=&quot;font-bold&quot;&amp;gt;${u.last_name}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div class=&quot;text-sm text-neutral-400&quot;&amp;gt;${u.email}&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;;\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":"Live code: src/docs/example/users.ts. In this repo, imports use core/… paths (short @supersoniks/concorde/… exports apply in consumer apps only).\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":"The same docs-user is mounted twice. Each copy inherits a different nearest dataProvider — that is the row/list scope:\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"two-scopes-one-component":{"count":1,"title":"Two scopes, one component","type":"paragraph"}}}}},{"search":"Markup (two isolated stores; keys from docs-provider-keys.ts):\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"two-scopes-one-component":{"count":1,"title":"Two scopes, one component","type":"paragraph"}}}}},{"search":"Seeded in docs-provider-keys.ts (set(docsUserScopeAKey, …)): Paul / Marie. Without @ancestorAttribute, both cards would not know which store to read.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"two-scopes-one-component":{"count":1,"title":"Two scopes, one component","type":"paragraph"}}}}},{"search":"Use a Lit parent and the items renderer (not HTML &lt;template&gt; children). The callback receives each row object from fetch — render fields directly (${item.first_name}, …), like porting a template that used data-bind / &lt;sonic-value&gt;.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"3-fetch-users--sonic-list-with-items":{"count":1,"title":"3. Fetch users — `sonic-list` with `.items`","type":"paragraph"}}}}},{"search":"Wrapper (docs-users-list.ts):\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"3-fetch-users--sonic-list-with-items":{"count":1,"title":"3. Fetch users — `sonic-list` with `.items`","type":"paragraph"}}}}},{"search":"@customElement(&quot;docs-users-list&quot;)\\nexport class DocsUsersList extends LitElement {\\n private items = ({ first_name, last_name, email, avatar }) =&gt; html &amp;lt;div class=&quot;flex gap-3&quot;&amp;gt; &amp;lt;sonic-image src=${avatar} ...&amp;gt;&amp;lt;/sonic-image&amp;gt; &amp;lt;div&amp;gt;${first_name} &amp;lt;b&amp;gt;${last_name}&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div class=&quot;text-sm text-neutral-400&quot;&amp;gt;${email}&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; ;\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"3-fetch-users--sonic-list-with-items":{"count":1,"title":"3. Fetch users — `sonic-list` with `.items`","type":"paragraph"}}}}},{"search":" render() {\\n return html &amp;lt;sonic-list fetch dataProvider=${usersListEndpoint.path} key=&quot;data&quot; .items=${this.items}&amp;gt;&amp;lt;/sonic-list&amp;gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"3-fetch-users--sonic-list-with-items":{"count":1,"title":"3. Fetch users — `sonic-list` with `.items`","type":"paragraph"}}}}},{"search":"See Local API demos for serviceURL=&quot;/docs-mock-api&quot;.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"3-fetch-users--sonic-list-with-items":{"count":1,"title":"3. Fetch users — `sonic-list` with `.items`","type":"paragraph"}}}}},{"search":"Edit fields in a form; the card follows the same docsUserRowKey when the preview host sets dataProvider=&quot;userPreview&quot;.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"4-form-preview-with-formdataprovider":{"count":1,"title":"4. Form preview with `formDataProvider`","type":"paragraph"}}}}},{"search":"Use formDataProvider + name on inputs — no manual @input handlers (Data flow).\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"4-form-preview-with-formdataprovider":{"count":1,"title":"4. Form preview with `formDataProvider`","type":"paragraph"}}}}},{"search":"Legacy: My first subscriber component","files":{"docs/_getting-started/my-first-subscriber.md":{"title":"Legacy: My first subscriber component","hashes":{"legacy-my-first-subscriber-component":{"count":1,"title":"","type":"page"}}}}},{"search":"New projects: use My first component (@ancestorAttribute, @subscribe + DataProviderKey, .items on lists) and Data flow. This page documents the Subscriber mixin used by older apps and core components.\\n","files":{"docs/_getting-started/my-first-subscriber.md":{"title":"Legacy: My first subscriber component","hashes":{"legacy-my-first-subscriber-component":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Learn how to build a component with the Subscriber mixin, styled with Tailwind, filled from a DataProvider via automatic property mapping.\\n","files":{"docs/_getting-started/my-first-subscriber.md":{"title":"Legacy: My first subscriber component","hashes":{"legacy-my-first-subscriber-component":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"See Legacy: Subscriber mixin.\\n","files":{"docs/_getting-started/my-first-subscriber.md":{"title":"Legacy: My first subscriber component","hashes":{"add-subscriber-mixin":{"count":1,"title":"Add Subscriber mixin","type":"paragraph"}}}}},{"search":"Legacy: Sharing data","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"legacy-sharing-data":{"count":1,"title":"","type":"page"}}}}},{"search":"New apps: Data flow (get / set / DataProviderKey, decorators). This page documents the historical Publisher proxy API (PublisherManager, publisher.set, onAssign, …).\\n","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"legacy-sharing-data":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"This section describes how data is shared between graphical and non-graphical components.\\n","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"legacy-sharing-data":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Graphical components should not reference each other directly — they stay decoupled via a publish/subscribe store.\\n","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"legacy-sharing-data":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"❇️ Order of creation vs subscription theoretically does not matter.\\n","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"Modern equivalent: get / set / @handle — see Data flow.\\n","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"methods":{"count":1,"title":"Methods","type":"paragraph"}}}}},{"search":"Introduction","files":{"docs/_getting-started/start.md":{"title":"Introduction","hashes":{"introduction":{"count":1,"title":"","type":"page"}}}}},{"search":"Based on lit.dev, Concorde is a collection of web components for shared apps and websites.Build UIs without tying components to a specific host stack, while keeping visual consistency through a small set of CSS variables.\\n","files":{"docs/_getting-started/start.md":{"title":"Introduction","hashes":{"what-is-concorde":{"count":1,"title":"What is Concorde?","type":"paragraph"}}}}},{"search":"In 2022, Supersoniks needed a new ticketing stack for nearly 100 sites — mobile apps, modern sites, and legacy PHP without bundlers.One composable web-component library replaced many one-off apps. Lit was chosen for broad runtime compatibility.\\n","files":{"docs/_getting-started/start.md":{"title":"Introduction","hashes":{"why-and-use-case":{"count":1,"title":"Why and use case","type":"paragraph"}}}}},{"search":"Legacy (Subscriber mixin, Publisher API): Legacy section at the bottom of the sidebar.\\n","files":{"docs/_getting-started/start.md":{"title":"Introduction","hashes":{"learn-concorde":{"count":1,"title":"Learn Concorde","type":"paragraph"}}}}},{"search":"The starter runs yarn ai:sync for you. Details: AI agents (skills). Manual Vite setup: Legacy: Manual installation.\\n","files":{"docs/_getting-started/start.md":{"title":"Introduction","hashes":{"start-a-new-project":{"count":1,"title":"Start a new project","type":"paragraph"}}}}},{"search":"Adding styles","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"adding-styles":{"count":1,"title":"","type":"page"}}}}},{"search":"No style crosses the shadow root of a component, except for inheritable properties (which have the &quot;inherit&quot; property possible) and CSS variables.\\nProperties integrated via a &quot;slot&quot; remain stylizable in a conventional way.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"normal-behavior":{"count":1,"title":"Normal Behavior","type":"paragraph"}}}}},{"search":"The declaration of reactive properties is useful for selecting a particular configuration that mostly affects a set of properties.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"choosing-style-presets-via-reactive-properties":{"count":1,"title":"Choosing Style Presets via Reactive Properties:","type":"paragraph"}}}}},{"search":"For example, a size property (xs, sm, md, xl) will affect margins, font, line heights to align them with the corresponding CSS vars, which can be customized using the methods mentioned earlier if necessary.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"choosing-style-presets-via-reactive-properties":{"count":1,"title":"Choosing Style Presets via Reactive Properties:","type":"paragraph"}}}}},{"search":"It is recommended to use the {reflect: true} property for reactive properties that have an associated style on the :host(). For example: :host([type=&#39;primary&#39;]){...}\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"choosing-style-presets-via-reactive-properties":{"count":1,"title":"Choosing Style Presets via Reactive Properties:","type":"paragraph"}}}}},{"search":"☢️ Caution: Passing class names via reactive properties / HTML attributes of the component should be avoided as it can quickly lead to difficult-to-manage situations.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"choosing-style-presets-via-reactive-properties":{"count":1,"title":"Choosing Style Presets via Reactive Properties:","type":"paragraph"}}}}},{"search":"By default, the display property is inline.\\nTherefore, be careful to define it according to the needs, as one might mistakenly expect it to be block as with a regular &lt;div&gt;.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"css-display-property":{"count":1,"title":"CSS \\"display\\" Property","type":"paragraph"}}}}},{"search":"☢️ Caution: Defining the display property as contents may seem attractive at first, but:\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"css-display-property":{"count":1,"title":"CSS \\"display\\" Property","type":"paragraph"}}}}},{"search":"tailwind has been integrated into Concorde and is available in scoped components (with Shadow DOM).\\nTo use it, you need to import the following:\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"tailwind-functional-classes":{"count":1,"title":"TAILWIND Functional Classes","type":"paragraph"}}}}},{"search":"Then include the tailwind style in the static styles property of the component:\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"tailwind-functional-classes":{"count":1,"title":"TAILWIND Functional Classes","type":"paragraph"}}}}},{"search":"Finally, use it in the HTML within the render function:\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"tailwind-functional-classes":{"count":1,"title":"TAILWIND Functional Classes","type":"paragraph"}}}}},{"search":"The colors from Concorde&#39;s theme are referenced in Tailwind&#39;s theme.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"tailwind-functional-classes":{"count":1,"title":"TAILWIND Functional Classes","type":"paragraph"}}}}},{"search":"This operation is particularly useful when it comes to adding behavior to a simple existing element.\\nIt may also become necessary to establish compatibility with a traditional JS library.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"usefulness":{"count":1,"title":"Usefulness","type":"paragraph"}}}}},{"search":"For example, with a text input:\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"usefulness":{"count":1,"title":"Usefulness","type":"paragraph"}}}}},{"search":"If there is no shadow DOM (see the noShadowDom property of Subscriber):\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"consequences":{"count":1,"title":"Consequences","type":"paragraph"}}}}},{"search":"For example, the components queue, list, and fetch do not have a shadow DOM.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"consequences":{"count":1,"title":"Consequences","type":"paragraph"}}}}},{"search":"ℹ️ Note: Specifically in this case, it may be useful to set the display property to contents.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"consequences":{"count":1,"title":"Consequences","type":"paragraph"}}}}},{"search":"API configuration","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"api-configuration":{"count":1,"title":"","type":"page"}}}}},{"search":"APIConfiguration is the object built by HTML.getApiConfiguration from ancestor attributes on the DOM (or from a typed publisher — see @get configuration key). It is passed to API by fetchers, sonic-submit, the wording() directive, and @get.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"api-configuration":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Mock service: same Local API demos Service Worker / Vite middleware. Routes used on this page are listed in the API config routes section below.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"api-configuration":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Lit / TypeScript: store the same shape in a publisher and pass DataProviderKey&lt;APIConfiguration&gt; as the second argument of @get (see DataProviderKey).\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"attribute-map":{"count":1,"title":"Attribute map","type":"paragraph"}}}}},{"search":"Publisher docsApiConfBearerKey (set(docsApiConfBearerKey, { token: &quot;docs-mock-valid-token&quot;, … })) — mock returns the protected payload.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"bearer-token-static":{"count":1,"title":"Bearer token (static)","type":"paragraph"}}}}},{"search":"No static token: API.auth() calls GET /docs-mock-api/auth/token with Basic demo / secret, stores token, then calls the protected route.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"tokenprovider--basic-auth":{"count":1,"title":"tokenProvider + Basic auth","type":"paragraph"}}}}},{"search":"Initial token=&quot;docs-mock-stale-token&quot; → mock responds 498 → Concorde invalidates the token, runs auth() again (same tokenProvider + Basic), retries with docs-mock-fresh-token.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"http-498--stale-token-refresh":{"count":1,"title":"HTTP 498 — stale token refresh","type":"paragraph"}}}}},{"search":"Attribute eventsApiToken on an ancestor maps to authToken in config (used as Bearer when calling tokenProvider, instead of Basic).\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"eventsapitoken":{"count":1,"title":"eventsApiToken","type":"paragraph"}}}}},{"search":"wordingProvider=&quot;wording/labels?lang=fr&quot; + wording(&#39;api-config.greeting&#39;) in Lit. Mock returns label map from labels[] query params.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"wording-api":{"count":1,"title":"Wording API","type":"paragraph"}}}}},{"search":"Attributes on sonic-scope (or any ancestor) are visible to descendants via getAncestorAttributeValue.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"scoped-attributes-html--sonic-scope":{"count":1,"title":"Scoped attributes (HTML / sonic-scope)","type":"paragraph"}}}}},{"search":"Mock tokens (doc only): docs-mock-valid-token, docs-mock-stale-token (498), docs-mock-fresh-token (after refresh). Basic: demo / secret. Events token: docs-mock-events-token.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"api-config-routes":{"count":1,"title":"API config routes","type":"paragraph"}}}}},{"search":"Implementation: src/docs/mock-api/api-config-mock.ts (bundled in the Service Worker with router.ts).\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"api-config-routes":{"count":1,"title":"API config routes","type":"paragraph"}}}}},{"search":"DataProviderKey","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"dataproviderkey":{"count":1,"title":"","type":"page"}}}}},{"search":"The DataProviderKey&lt;T&gt; utility provides type-safe navigation through composite data structures. Each property or index access extends the path, and the final key can be retrieved via toString() or the path property.\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"dataproviderkey":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"For a single HTTP path string (no dot-syntax), see Endpoint. For DataProviderKey&lt;APIConfiguration&gt;, see API configuration.\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"dataproviderkey":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"DataProviderKey uses a Proxy to intercept property access and build a cumulative path string. TypeScript infers the nested type at each level, so myKey.items[0] is correctly typed as DataProviderKey&lt;Item&gt; when items is Item[].\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"In Lit demos, bind HTML attributes from a key’s .path (single source of truth), and use get / set / dp instead of PublisherManager.get(&quot;…&quot;):\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"export const myFormKey = new DataProviderKey&lt;{ email: string }&gt;(&quot;myForm&quot;);\\nset(myFormKey, { email: &quot;a@b.c&quot; });\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"// template: formDataProvider=${myFormKey.path}\\n \\n\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"Use placeholders ${prop} or {$prop} in the path string. The path is resolved at runtime from the component&#39;s properties. The type remains declarative:\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"dynamic-paths":{"count":1,"title":"Dynamic paths","type":"paragraph"}}}}},{"search":"Dynamic keys are not supported by get, set, or dp — those APIs take a snapshot at call time with no component context. For dynamic paths use decorators (@subscribe, @publish, @handle) or sub(key) in Lit templates (resolves ${…} from the host component). See sub().\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"dynamic-paths":{"count":1,"title":"Dynamic paths","type":"paragraph"}}}}},{"search":"For programmatic access, pass a DataProviderKey or a static path string. Dynamic placeholders are rejected:\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"get--set--dp-with-static-keys":{"count":1,"title":"get / set / dp with static keys","type":"paragraph"}}}}},{"search":"The final path is built by concatenating each accessed property with a dot:\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"path-retrieval":{"count":1,"title":"Path retrieval","type":"paragraph"}}}}},{"search":"Use toString() or path to get the full path string:\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"path-retrieval":{"count":1,"title":"Path retrieval","type":"paragraph"}}}}},{"search":"Use DataProviderKey with @subscribe (read-only), @publish (write-only), or @handle (method callback on assign). With @subscribe / @publish, the decorated property must match the key’s value type. With @handle, the method receives (value: T).\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"integration-with-subscribe-publish-and-handle":{"count":1,"title":"Integration with @subscribe, @publish and @handle","type":"paragraph"}}}}},{"search":"These decorators support dynamic paths: &quot;base.${prop}&quot; in the constructor. A wrong property type (e.g. number for DataProviderKey&lt;string&gt;) is a TypeScript error. See @handle for method callbacks.\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"integration-with-subscribe-publish-and-handle":{"count":1,"title":"Integration with @subscribe, @publish and @handle","type":"paragraph"}}}}},{"search":"Local API demos (offline)","files":{"docs/_misc/docs-mock-api.md":{"title":"Local API demos (offline)","hashes":{"local-api-demos-offline":{"count":1,"title":"","type":"page"}}}}},{"search":"The Concorde doc site does not call fragile third-party APIs during yarn dev. A Service Worker and the Vite dev middleware serve /docs-mock-api/* on the same origin.\\n","files":{"docs/_misc/docs-mock-api.md":{"title":"Local API demos (offline)","hashes":{"local-api-demos-offline":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"TypeScript constants: src/docs/mock-api/urls.ts (DOCS_MOCK_REQRES_SERVICE, DOCS_MOCK_GEO_SERVICE, …).\\n","files":{"docs/_misc/docs-mock-api.md":{"title":"Local API demos (offline)","hashes":{"how-it-works":{"count":1,"title":"How it works","type":"paragraph"}}}}},{"search":"ALTCHA (sonic-captcha) is not mocked — it still uses the Supersoniks service.\\n","files":{"docs/_misc/docs-mock-api.md":{"title":"Local API demos (offline)","hashes":{"pagination-get-apiusers":{"count":1,"title":"Pagination `GET /api/users`","type":"paragraph"}}}}},{"search":"In TypeScript demos, import from src/docs/mock-api/urls.ts (e.g. DOCS_MOCK_REQRES_SERVICE on serviceURL).\\n","files":{"docs/_misc/docs-mock-api.md":{"title":"Local API demos (offline)","hashes":{"pagination-get-apiusers":{"count":1,"title":"Pagination `GET /api/users`","type":"paragraph"}}}}},{"search":"Endpoint","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"endpoint":{"count":1,"title":"","type":"page"}}}}},{"search":"Endpoint&lt;T, U&gt; describes a single HTTP path (or a path accepted by API.get) and carries the expected response type T. Unlike DataProviderKey, there is no dot-navigation: the path is one string.\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"endpoint":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The optional second generic U (default any) describes host properties used to resolve dynamic segments in the path (${…} / {$…}), for example with the @get decorator.\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"endpoint":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"const one = new Endpoint&lt;User, { userId: string }&gt;(&quot;users/${userId}&quot;);\\n// userId on the host class is observed when used with @get\\n \\n\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"construction":{"count":1,"title":"Construction","type":"paragraph"}}}}},{"search":"Endpoint.normalizePath trims the string, rejects an empty path, strips leading slashes for paths relative to serviceURL, collapses duplicate slashes, and validates absolute http(s):// URLs.\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"normalization":{"count":1,"title":"Normalization","type":"paragraph"}}}}},{"search":"getDataProviderKey() returns a typed publisher key whose path matches the endpoint path (payload typing follows ApiGetResult for this endpoint). Useful when pairing @get with @publish / @subscribe (see @get).\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"publisher-key-for-payloads":{"count":1,"title":"Publisher key for payloads","type":"paragraph"}}}}},{"search":"Endpoint.looksLikeDataProviderPath(path) returns true for strings shaped like dataProvider(id)…, which API.get can resolve without HTTP.\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"data-provider-paths":{"count":1,"title":"Data-provider paths","type":"paragraph"}}}}},{"search":"HTML integration (no Lit)","files":{"docs/_misc/html-integration.md":{"title":"HTML integration (no Lit)","hashes":{"html-integration-no-lit":{"count":1,"title":"","type":"page"}}}}},{"search":"Some hosts (legacy PHP pages, static HTML) embed Concorde components without a Lit build step. They can use HTML attributes such as data-bind, dataProvider, and formDataProvider on tags directly in the page.\\n","files":{"docs/_misc/html-integration.md":{"title":"HTML integration (no Lit)","hashes":{"html-integration-no-lit":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"That style is not what we demonstrate in this doc site: live examples are Lit components under src/docs/example/, registered once and reused from Markdown via tags like &lt;docs-joke-search-demo&gt;.\\n","files":{"docs/_misc/html-integration.md":{"title":"HTML integration (no Lit)","hashes":{"html-integration-no-lit":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"New application code in TypeScript should use @subscribe, formDataProvider + name, and Lit templates — not HTML data-bind.\\n","files":{"docs/_misc/html-integration.md":{"title":"HTML integration (no Lit)","hashes":{"html-integration-no-lit":{"count":1,"title":"","type":"paragraph"}}}}}]');var mf=Object.defineProperty,gf=Object.getOwnPropertyDescriptor,Yn=(s,e,o,r)=>{for(var t=r>1?void 0:r?gf(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&mf(e,o,t),t};const ff="docs-search",bf=window,yf=bf.fuzzysort;let po=class extends D{constructor(){super(...arguments),this.hidePopMenu=!1,this.setFocus=!1}search(s){R.get("searchSelection").selection=null;const e=yf.go(s,Ka,{key:"search"}),o=[],r=new Map,t=[];for(const i of e){if(i.score<-1e5)continue;const n=i.obj;for(const a in n.files)for(const c in n.files[a].hashes){const g=n.files[a].hashes[c];if(t.includes(a+":"+c))continue;t.push(a+":"+c);const f=n.files[a].title,h={href:"#"+a+"/"+c,part:g.title||"...",search:g.type=="page"?"Page":this.getResultSearchString(i),index:Ka.indexOf(n),template:g.type=="page"?"page":null};if(r.has(f))r.get(f).items.push(h);else{const w={title:f,items:[h]};r.set(f,w),o.push(w)}}}this.shadowRoot?.querySelector("sonic-pop")?.show();for(const i of o)i.items.sort((n,a)=>n.index-a.index);R.get("searchResult").set(o)}getResultSearchString(s){const e=s.p;return s.target.split("").map((r,t)=>e.includes(t)?"<span class='font-bold' style='color:var(--sc-info)'>"+r+"</span>":r).join("")}connectedCallback(){R.get("docsSearch").search.onAssign(s=>this.search(s)),super.connectedCallback()}firstUpdated(){this.setFocus&&setTimeout(()=>{this.shadowRoot?.querySelector("sonic-input")?.focus(),this.shadowRoot?.querySelector("sonic-pop")?.show()},100)}render(){return p`
4220
+ `];Jr([l()],As.prototype,"key",2);Jr([l()],As.prototype,"action",2);Jr([l({type:Number})],As.prototype,"zIndex",2);As=Jr([k(ef)],As);window.queueMicrotask=window.queueMicrotask||function(s){Promise.resolve().then(s).catch(e=>setTimeout(()=>{throw e}))};class tf extends Cn{constructor(e){super(e),this.observables=new Set,this.cleanupWatchers=[],this.onAssign=o=>{this.setValue(o)},this.node=e.options?.host}teardownWatchers(){this.cleanupWatchers.forEach(e=>e()),this.cleanupWatchers=[]}normalizeInput(e){return wl(e)?e.path:e}render(e){const o=this.normalizeInput(e),r=this.pathTemplate!==o;return r&&(this.pathTemplate=o,this.teardownWatchers()),(r||!this.resolvedPath)&&queueMicrotask(()=>{!this.isConnected||!this.pathTemplate||this.setupSubscription()}),Me}setupSubscription(){const e=this.node,o=this.pathTemplate;if(!e||!o)return;this.teardownWatchers();const r=rs(o);if(r.length>0)for(const t of r)this.cleanupWatchers.push(Cs(tr.watcherStore,tr.hooked,e,t,()=>this.refreshSubscription()));this.refreshSubscription()}refreshSubscription(){const e=this.node,o=this.pathTemplate;if(!o)return;const r=rs(o).length>0;let t=o;if(r)if(!e)t=null;else{const i=Xt(e,o);t=i.ready?i.path:null}if(t!==this.resolvedPath){if(!t){this.unsubscribe(),this.resolvedPath=void 0,this.setValue(void 0);return}this.resolvedPath=t,this.subscribe(t)}}subscribe(e){this.unsubscribe(),this.onAssign=o=>{this.setValue(o)},this.observables=Or(e),this.observables.forEach(o=>{o.onAssign(this.onAssign)})}unsubscribe(){this.observables.forEach(e=>e.offAssign(this.onAssign)),this.observables.clear()}disconnected(){this.teardownWatchers(),this.unsubscribe(),this.resolvedPath=void 0}reconnected(){this.pathTemplate&&this.setupSubscription()}}const Kl=Ut(tf),sf=Kl,Hl=Kl,ar=Hl;window["concorde-directives-data-provider"]=window["concorde-directives-data-provider"]||{};window["concorde-directives-data-provider"]={dp:ko,dataProvider:Nc,sub:Hl,subscribe:sf,get:it,set:N};const of=j,rf=K;window["concorde-components"]=window["concorde-components"]||{};window["concorde-components"]={SonicToast:of,SonicModal:rf};const nf=window;nf.concordeIsLoaded=!0;window.dispatchEvent(new CustomEvent("concorde-loaded"));const af="/docs-mock-api-sw.js";async function lf(){if(!("serviceWorker"in navigator)){console.warn("[docs-mock-api] Service Workers not supported");return}try{const s=await navigator.serviceWorker.register(af,{scope:"/"});return s.waiting&&await s.update(),await navigator.serviceWorker.ready,s}catch(s){console.error("[docs-mock-api] Service Worker registration failed",s);return}}const Kt="/docs-mock-api",Dt=Kt,zn=`${Kt}/geo/`,Yr=`${Kt}/jokes`,Kn="docs-mock-valid-token",Vl="docs-mock-stale-token",Ua="docs-mock-fresh-token",cf="docs-mock-events-token",ui=()=>({serviceURL:Kt,token:null,userName:null,password:null,authToken:null,tokenProvider:null}),Wl=new I("submit-example"),Gl=new I("submit-example-result"),Ri=new I("submit-clear-form"),Jl=new I("submit-nested-form"),Yl=new I("submit-nested-result"),Ql=new I("submit-formdata-form"),Zl=new I("submit-formdata-result"),Xl=new I("submit-get-form"),ec=new I("submit-get-result"),tc=new I("submit-native-form"),df=new I("submit-event-form"),sc=new I("submit-endpoint-form"),oc=new I("submit-endpoint-result"),Hn=new I("docsApiConfBearer"),rc=new I("docsApiConfTokenProvider"),ic=new I("docsApiConfStaleToken"),Ni=new I("docsApiConfWordingVersion"),Vo=new I("input-filter"),Wo=new I("select-filter"),Ba=new I("jokeFilter"),uf=new I("jokeFilterRadio"),za=new I("jokeFilterswitch"),nc=new I("filter"),Vn=new I("visibilitySettings"),Wn=new I("toggleLoaderForm"),pf=new I("docsUserScopeA"),Mi=new I("docsUserScopeB"),hf=new I("docsUserPreview"),mf=new I("docsUserStatic"),ji=new I("demoData"),ac=new I("demoUser"),gf=new I("demoSettings"),lc=new I("demoUserSettings"),xs=new I("publishDemo"),qo=new I("waitAncestorDemo"),Ui=new I("autoValue1"),Bi=new I("autoValue2"),Qr=new I("bindReflectDemo"),Tt=new I("demoUsers"),Lt=new I("demoUsersAlt"),cc=new I("demoUsersSettings"),dc=new I("demoUsersAltSettings"),Jt=()=>({email:"eve.holt@reqres.in",password:"pistol"});function ff(){N(Wl,Jt()),N(Ri,Jt()),N(Jl,Jt()),N(Ql,Jt()),N(Xl,{email:"demo@example.com",password:"secret"}),N(tc,Jt()),N(df,Jt()),N(sc,Jt()),N(Hn,{...ui(),token:Kn}),N(rc,{...ui(),userName:"demo",password:"secret",tokenProvider:"auth/token"}),N(ic,{...ui(),token:Vl,userName:"demo",password:"secret",tokenProvider:"auth/token"}),N(Ni,1),N(Vo,{contains:"chien"}),N(Wo,{lang:"fr"}),N(nc,{q:""}),N(Vn,{togglePlan:"true"}),N(Wn,{toggleLoader:""}),N(pf,{first_name:"Paul",last_name:"Metrand",email:"paul@example.com",avatar:"https://i.pravatar.cc/150?u=paul"}),N(Mi,{first_name:"Marie",last_name:"Dupont",email:"marie@example.com",avatar:"https://i.pravatar.cc/150?u=marie"}),N(hf,{first_name:"Paul",last_name:"Metrand",email:"paul@example.com",avatar:"https://i.pravatar.cc/150?u=paul"}),N(mf,{first_name:"Paul",last_name:"Metrand",email:"paul@example.com",avatar:"https://i.pravatar.cc/150?u=paul"}),N(ji,{title:"Initial Title",user:{name:"Initial User"},count:0}),N(ac,{name:"Demo User",email:"demo@example.com"}),N(gf,{theme:"light",language:"en"}),N(lc,{theme:"light",language:"en"}),N(xs,{email:"",message:""}),N(qo,{message:"Context from ancestor"}),N(Ui,10),N(Bi,20),N(Qr,{count:0}),N(Tt,[{id:1,firstName:"Alice",lastName:"Smith",email:"alice.smith@example.com"},{id:2,firstName:"Bob",lastName:"Johnson",email:"bob.johnson@example.com"},{id:3,firstName:"Carol",lastName:"Williams",email:"carol.williams@example.com"},{id:4,firstName:"David",lastName:"Brown",email:"david.brown@example.com"},{id:5,firstName:"Eve",lastName:"Jones",email:"eve.jones@example.com"},{id:6,firstName:"Frank",lastName:"Garcia",email:"frank.garcia@example.com"},{id:7,firstName:"Grace",lastName:"Miller",email:"grace.miller@example.com"},{id:8,firstName:"Henry",lastName:"Davis",email:"henry.davis@example.com"},{id:9,firstName:"Ivy",lastName:"Martinez",email:"ivy.martinez@example.com"},{id:10,firstName:"Jack",lastName:"Taylor",email:"jack.taylor@example.com"}]),N(Lt,[{id:11,firstName:"Sophie",lastName:"Lindquist",email:"sophie.lindquist@example.com"},{id:12,firstName:"Mateo",lastName:"Ortega",email:"mateo.ortega@example.com"},{id:13,firstName:"Jin",lastName:"Park",email:"jin.park@example.com"},{id:14,firstName:"Fatima",lastName:"El-Sayed",email:"fatima.el-sayed@example.com"},{id:15,firstName:"Lars",lastName:"Johansson",email:"lars.johansson@example.com"},{id:16,firstName:"Amara",lastName:"Singh",email:"amara.singh@example.com"},{id:17,firstName:"Zuri",lastName:"Okafor",email:"zuri.okafor@example.com"},{id:18,firstName:"Luca",lastName:"Rossi",email:"luca.rossi@example.com"},{id:19,firstName:"Ava",lastName:"Murphy",email:"ava.murphy@example.com"},{id:20,firstName:"Noah",lastName:"Keller",email:"noah.keller@example.com"}]),N(cc,[{theme:"light",language:"en"},{theme:"dark",language:"fr"},{theme:"auto",language:"es"},{theme:"light",language:"en"},{theme:"dark",language:"fr"},{theme:"auto",language:"es"},{theme:"light",language:"en"},{theme:"dark",language:"fr"},{theme:"auto",language:"es"},{theme:"light",language:"en"}]),N(dc,[{theme:"dark",language:"de"},{theme:"light",language:"it"},{theme:"auto",language:"ja"},{theme:"dark",language:"pt"},{theme:"light",language:"ru"},{theme:"auto",language:"zh"},{theme:"dark",language:"ar"},{theme:"light",language:"sv"},{theme:"auto",language:"nl"},{theme:"dark",language:"pl"}])}ff();const Gn=s=>{s.pathname==="/"&&s.hash===""?document.documentElement.setAttribute("data-home",""):document.documentElement.removeAttribute("data-home")},Jn=()=>document.location,bf=Jn();Gn(bf);window.addEventListener("popstate",s=>{Gn(Jn())});window.addEventListener("hashchange",()=>{Gn(Jn())});const yf=L`*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1em;margin-bottom:1em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;padding-inline-start:1.625em;margin-top:1em;margin-bottom:1em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;padding-inline-start:1.625em;margin-top:1em;margin-bottom:1em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"\`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"\`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: var(--sc-base-content);--tw-prose-headings: var(--sc-base-900);--tw-prose-lead: var(--sc-base-content);--tw-prose-links: var(--sc-base-900);--tw-prose-bold: var(--sc-base-content);--tw-prose-counters: var(--sc-base-500);--tw-prose-bullets: var(--sc-base-300);--tw-prose-hr: var(--sc-base-200);--tw-prose-quotes: var(--sc-base-content);--tw-prose-quote-borders: var(--sc-base-200);--tw-prose-captions: var(--sc-base-500);--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: var(--sc-info);--tw-prose-pre-code: var(--sc-base-200);--tw-prose-pre-bg: var(--sc-base-800);--tw-prose-th-borders: var(--sc-base-300);--tw-prose-td-borders: var(--sc-base-200);--tw-prose-invert-body: var(--sc-base-300);--tw-prose-invert-headings: var(--sc-base);--tw-prose-invert-lead: var(--sc-base-400);--tw-prose-invert-links: var(--sc-base);--tw-prose-invert-bold: var(--sc-base);--tw-prose-invert-counters: var(--sc-base-400);--tw-prose-invert-bullets: var(--sc-base-600);--tw-prose-invert-hr: var(--sc-base-700);--tw-prose-invert-quotes: var(--sc-base-100);--tw-prose-invert-quote-borders: var(--sc-base-700);--tw-prose-invert-captions: var(--sc-base-400);--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: var(--sc-base);--tw-prose-invert-pre-code: var(--sc-base-300);--tw-prose-invert-pre-bg: var(--sc-base-900);--tw-prose-invert-th-borders: var(--sc-base-600);--tw-prose-invert-td-borders: var(--sc-base-700);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose{line-height:1.5}.prose :where(strong a):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:bolder}.prose :where(iframe[src*=youtu]):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--sc-rounded-md)}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.\\!relative{position:relative!important}.relative{position:relative}.sticky{position:sticky}.\\!left-0{left:0!important}.\\!top-0{top:0!important}.-top-1{top:-.25rem}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.left-0{left:0}.right-1{right:.25rem}.right-2{right:.5rem}.top-0{top:0}.top-16{top:4rem}.top-\\[4\\.2rem\\]{top:4.2rem}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-\\[3000\\]{z-index:3000}.col-span-2{grid-column:span 2 / span 2}.col-span-full{grid-column:1 / -1}.m-2{margin:.5rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-40{margin-bottom:10rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-3{margin-left:.75rem}.ml-5{margin-left:1.25rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-9{margin-top:2.25rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.size-40{width:10rem;height:10rem}.size-\\[2\\.4rem\\]{width:2.4rem;height:2.4rem}.h-1\\/2{height:50%}.h-10{height:2.5rem}.h-12{height:3rem}.h-24{height:6rem}.h-3{height:.75rem}.h-4{height:1rem}.h-96{height:24rem}.h-full{height:100%}.max-h-96{max-height:24rem}.max-h-\\[50vh\\]{max-height:50vh}.max-h-\\[calc\\(100vh_-_4\\.2rem\\)\\]{max-height:calc(100vh - 4.2rem)}.min-h-\\[100vh\\]{min-height:100vh}.w-1\\/2{width:50%}.w-1\\/3{width:33.333333%}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-64{width:16rem}.w-\\[5rem\\]{width:5rem}.w-full{width:100%}.min-w-\\[8rem\\]{min-width:8rem}.max-w-\\[29ch\\]{max-width:29ch}.max-w-\\[40rem\\]{max-width:40rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-prose{max-width:70ch}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.-translate-y-1\\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\\/2{--tw-translate-x: 50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1\\/2{--tw-translate-y: 50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-\\[55deg\\]{--tw-rotate: 55deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.resize{resize:both}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\\[minmax\\(10rem\\,15rem\\)_minmax\\(0\\,1fr\\)\\]{grid-template-columns:minmax(10rem,15rem) minmax(0,1fr)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.break-all{word-break:break-all}.rounded{border-radius:var(--sc-rounded)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--sc-rounded-lg)}.rounded-md{border-radius:var(--sc-rounded-md)}.rounded-xl{border-radius:var(--sc-rounded-xl)}.border{border-width:var(--sc-border-width)}.border-0{border-width:0px}.border-b{border-bottom-width:var(--sc-border-width)}.border-b-\\[\\.18rem\\]{border-bottom-width:.18rem}.border-t{border-top-width:var(--sc-border-width)}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-current{border-color:currentColor}.border-danger{border-color:var(--sc-danger)}.border-info{border-color:var(--sc-info)}.border-neutral-100{border-color:var(--sc-base-100)}.border-neutral-200{border-color:var(--sc-base-200)}.border-neutral-300{border-color:var(--sc-base-300)}.border-success{border-color:var(--sc-success)}.bg-info{background-color:var(--sc-info)}.bg-neutral-0{background-color:var(--sc-base)}.bg-neutral-100{background-color:var(--sc-base-100)}.bg-neutral-200{background-color:var(--sc-base-200)}.bg-neutral-50{background-color:var(--sc-base-50)}.bg-neutral-900{background-color:var(--sc-base-900)}.bg-success{background-color:var(--sc-success)}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.from-\\[rgba\\(0\\,0\\,10\\,\\.2\\)\\]{--tw-gradient-from: rgba(0,0,10,.2) var(--tw-gradient-from-position);--tw-gradient-to: rgba(0, 0, 10, 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pl-5{padding-left:1.25rem}.pl-\\[\\.75rem\\]{padding-left:.75rem}.pt-3{padding-top:.75rem}.pt-\\[20vh\\]{padding-top:20vh}.text-center{text-align:center}.font-headings{font-family:var(--sc-headings-font-family, var(--sc-font-family-base, sans-serif))}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-sm{font-size:.875rem}.text-xl{font-size:1.25rem}.text-xs{font-size:.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-\\[1\\.5\\]{line-height:1.5}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-content{color:var(--sc-base-content)}.text-contrast-content{color:var(--sc-contrast-content)}.text-danger{color:var(--sc-danger)}.text-info{color:var(--sc-info)}.text-neutral-0{color:var(--sc-base)}.text-neutral-300{color:var(--sc-base-300)}.text-neutral-400{color:var(--sc-base-400)}.text-neutral-500{color:var(--sc-base-500)}.text-neutral-600{color:var(--sc-base-600)}.text-neutral-700{color:var(--sc-base-700)}.text-neutral-900{color:var(--sc-base-900)}.text-success{color:var(--sc-success)}.underline{text-decoration-line:underline}.opacity-40{opacity:.4}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-lg{--tw-drop-shadow: drop-shadow(0 10px 8px rgb(0 0 0 / .04)) drop-shadow(0 4px 3px rgb(0 0 0 / .1));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:ClashGrotesk-Variable;src:url("+new URL('../fonts/ClashGrotesk-Variable.woff2', import.meta.url).href+") format("woff2"),url("+new URL('../fonts/ClashGrotesk-Variable.woff', import.meta.url).href+") format("woff"),url("+new URL('../fonts/ClashGrotesk-Variable.ttf', import.meta.url).href+") format("truetype");font-weight:200 700;font-display:swap;font-style:normal}:root{--sc-headings-font-family: "ClashGrotesk-Variable", sans-serif;--sc-font-family-base: "ClashGrotesk-Variable", sans-serif;--sc-headings-font-weight: 400;--sc-rounded: .5rem;--sc-border-width: max(2px, .18rem)}[data-concorde-theme=light]{--sc-base: #fffcf0;--sc-base-content: #111111;--sc-primary: #111111;--sc-primary-content: #fffcf0;--sc-base-50: #f4f1e6;--sc-base-100: #e9e6dc;--sc-base-200: #ceccc3;--sc-base-300: #bcbab1;--sc-base-400: #96948e;--sc-base-500: #7d7c77;--sc-base-600: #5a5956;--sc-base-700: #393937;--sc-base-800: #252524;--sc-base-900: #111111;--sc-info: #3b82f6;--sc-info-content: #ffffff;--sc-success: #10b981;--sc-success-content: #ffffff;--sc-warning: #fb923c;--sc-warning-content: #111827;--sc-danger: #dc2626;--sc-danger-content: #ffffff}[data-concorde-theme=dark]{--sc-base: #0a0a0a;--sc-base-content: #dadad9;--sc-primary: #ffef8a;--sc-primary-content: #111827;--sc-base-50: #141414;--sc-base-100: #1c1c1c;--sc-base-200: #2f2f2f;--sc-base-300: #3e3e3e;--sc-base-400: #5f5f5f;--sc-base-500: #767676;--sc-base-600: #9a9a9a;--sc-base-700: #c0c0bf;--sc-base-800: #dadad9;--sc-base-900: #f5f5f4;--sc-info: #3a85f7;--sc-info-content: #ffffff;--sc-success: #0fba7f;--sc-success-content: #ffffff;--sc-warning: #fc8f3b;--sc-warning-content: #111827;--sc-danger: #dd2528;--sc-danger-content: #ffffff}[data-concorde-theme=light],[data-concorde-theme=dark]{--sc-input-bg: var(--sc-base-100);--sc-input-border-color: var(--sc-base-100)}html{font-family:var(--sc-font-family-base, sans-serif)}h2{border-bottom:var(--sc-border-width) solid;padding-bottom:.1em}p,ul,ol{font-family:Arial,Helvetica,sans-serif}body{background:var(--sc-base);color:var(--sc-base-content)}html{scroll-behavior:smooth}.animated-text{display:block;position:relative;overflow:hidden}.animated-text span{display:block;position:absolute;width:100%;height:100%;top:0;left:0;transform:translateY(108%);animation:slideUp 4.5s cubic-bezier(.17,.67,.61,1.13) infinite}.animated-text span:nth-child(2){animation-delay:1.5s}.animated-text span:nth-child(3){animation-delay:3s}@keyframes slideUp{0%{transform:translateY(108%)}7%{transform:translateY(0)}33%{transform:translateY(0)}40%{transform:translateY(-108%)}to{transform:translateY(-108%)}}.custom-scroll{overflow:auto!important}.custom-scroll:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 2rem 2rem var(--sc-base-900)}.custom-scroll::-webkit-scrollbar{width:.5rem;height:.5rem;border:solid .15rem transparent;border-radius:var(--sc-rounded);background:transparent}.custom-scroll::-webkit-scrollbar-thumb{opacity:0;-webkit-transition:box-shadow .2s;transition:box-shadow .2s;border:solid .15rem transparent}@media (min-width: 1024px){.lg\\:prose-lg{font-size:1.125rem;line-height:1.7777778}.lg\\:prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\\:prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.lg\\:prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6666667em;margin-bottom:1.6666667em;padding-inline-start:1em}.lg\\:prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.lg\\:prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;margin-top:1.8666667em;margin-bottom:1.0666667em;line-height:1.3333333}.lg\\:prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;margin-top:1.6666667em;margin-bottom:.6666667em;line-height:1.5}.lg\\:prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:.4444444em;line-height:1.5555556}.lg\\:prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.lg\\:prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;border-radius:.3125rem;padding-top:.2222222em;padding-inline-end:.4444444em;padding-bottom:.2222222em;padding-inline-start:.4444444em}.lg\\:prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.lg\\:prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.lg\\:prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.lg\\:prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding-top:1em;padding-inline-end:1.5em;padding-bottom:1em;padding-inline-start:1.5em}.lg\\:prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.5555556em}.lg\\:prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.5555556em}.lg\\:prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;margin-bottom:.6666667em}.lg\\:prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.lg\\:prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4444444em}.lg\\:prose-lg :where(.lg\\:prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:prose-lg :where(.lg\\:prose-lg>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.lg\\:prose-lg :where(.lg\\:prose-lg>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.lg\\:prose-lg :where(.lg\\:prose-lg>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.lg\\:prose-lg :where(.lg\\:prose-lg>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.lg\\:prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\\:prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.lg\\:prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-inline-start:1.5555556em}.lg\\:prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:3.1111111em;margin-bottom:3.1111111em}.lg\\:prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\\:prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\\:prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\\:prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\\:prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.lg\\:prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.lg\\:prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.lg\\:prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.lg\\:prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.75em;padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.lg\\:prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.lg\\:prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.lg\\:prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.lg\\:prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.lg\\:prose-lg :where(.lg\\:prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.lg\\:prose-lg :where(.lg\\:prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}}.hover\\:bg-neutral-50:hover{background-color:var(--sc-base-50)}.prose-h1\\:text-\\[4\\.2em\\] :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:4.2em}.prose-h1\\:font-normal :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){font-weight:400}.prose-li\\:my-\\[\\.2em\\] :is(:where(li):not(:where([class~=not-prose],[class~=not-prose] *))){margin-top:.2em;margin-bottom:.2em}@media (min-width: 640px){.sm\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 768px){.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:text-5xl{font-size:3rem}}@media (min-width: 1024px){.lg\\:min-w-\\[19rem\\]{min-width:19rem}.lg\\:max-w-\\[19ch\\]{max-width:19ch}.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\\:px-20{padding-left:5rem;padding-right:5rem}.lg\\:text-7xl{font-size:4.5rem}.lg\\:leading-\\[1\\.5\\]{line-height:1.5}}@media (min-width: 1280px){.xl\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\\:text-8xl{font-size:6rem}}.dark\\:block:where(.dark,.dark *){display:block}.dark\\:hidden:where(.dark,.dark *){display:none}.dark\\:border-neutral-700:where(.dark,.dark *){border-color:var(--sc-base-700)}.dark\\:bg-neutral-300:where(.dark,.dark *){background-color:var(--sc-base-300)}.dark\\:text-neutral-400:where(.dark,.dark *){color:var(--sc-base-400)}.dark\\:text-neutral-600:where(.dark,.dark *){color:var(--sc-base-600)}.dark\\:opacity-60:where(.dark,.dark *){opacity:.6}.\\[\\&\\[active\\]\\]\\:min-w-\\[13rem\\][active]{min-width:13rem}.\\[\\&\\[active\\]\\]\\:rounded-full[active]{border-radius:9999px}.\\[\\&\\[active\\]\\]\\:bg-danger[active]{background-color:var(--sc-danger)}.\\[\\&\\[active\\]\\]\\:font-black[active]{font-weight:900}.\\[\\&\\[active\\]\\]\\:text-danger-content[active]{color:var(--sc-danger-content)}.\\[\\&\\[active\\]\\]\\:text-success[active]{color:var(--sc-success)}[data-home] .\\[\\[data-home\\]_\\&\\]\\:hidden{display:none}`,q=L`
4221
+ ${wn(yf)}
4222
+ `,Ka=JSON.parse('[{"search":"Date","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"date":{"count":2,"title":"","type":"page"}}}}},{"search":"Nothing is displayed.\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"no-attribute":{"count":1,"title":"No attribute","type":"paragraph"}}}}},{"search":"Displays the current date.\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"now":{"count":1,"title":"Now","type":"paragraph"}}}}},{"search":"Displays a date from a timestamp.\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"date":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Displays a date from a string.\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"date_string":{"count":1,"title":"Date_string","type":"paragraph"}}}}},{"search":"Displays a period of time from start_date to end_date.When by itself start_date will act as dateif a start_date is not specified it will be set by the current date.if the end_date is anterior to start date date it will be used as the start_date. \\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"start_date--end_date":{"count":1,"title":"Start_date / end_date","type":"paragraph"}}}}},{"search":"ISO 639-1 Language Codes\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"language":{"count":1,"title":"Language","type":"paragraph"}}}}},{"search":"For the list of supported timeZones, run Intl.supportedValuesOf(&#39;timeZone&#39;) in the console\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"time_zone":{"count":1,"title":"Time_zone","type":"paragraph"}}}}},{"search":"Deprecated\\n","files":{"core/components/functional/date/date.md":{"title":"Date","hashes":{"renderif":{"count":1,"title":".renderIf","type":"paragraph"}}},"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"headersdataprovider":{"count":1,"title":"HeadersDataProvider","type":"paragraph"}}}}},{"search":"Fetch","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"fetch":{"count":1,"title":"","type":"page"}}}}},{"search":"New apps: prefer @get for a typed GET on a component, or List / Queue with fetch for collections. Use Local API demos (serviceURL=&quot;/docs-mock-api&quot;) to try examples offline.\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"fetch":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The sonic-fetch component requests and stores API data. It extends the Fetcher and Subscriber mixins.\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"fetch":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"In order to work properly the sonic-fetch component needs at least the following attributes. \\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"basic-usage":{"count":1,"title":"Basic usage","type":"paragraph"}}}}},{"search":"If no endPoint is specified it will be filled by the dataProvider ID instead \\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"dataprovider-as-an-endpoint":{"count":1,"title":"DataProvider as an endPoint","type":"paragraph"}}}}},{"search":"When the key attribute is present, only a sub-part of the data received is injected into the dataProvider.\\nWe can use the dot syntax to target what we want to keep.\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"key":{"count":1,"title":"Key","type":"paragraph"}}}}},{"search":"For example if the data is {my:{data:{a:1,b:2}}} and the key is key=&quot;my.data&quot;, the data available in the dataProvider will be {a:1 , b:2}\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"key":{"count":1,"title":"Key","type":"paragraph"}}}}},{"search":"if the mime type of the content returned by the service begins with text/, then the dataProvider has a key named &quot;text&quot; which contains the text returned by the service.\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"text-mode":{"count":1,"title":"Text mode","type":"paragraph"}}}}},{"search":"The noLoader attribute disables display of the default loader\\n","files":{"core/components/functional/fetch/fetch.md":{"title":"Fetch","hashes":{"noloader":{"count":1,"title":"NoLoader","type":"paragraph"}}}}},{"search":"if","files":{"core/components/functional/if/if.md":{"title":"if","hashes":{"if":{"count":1,"title":"","type":"page"}}}}},{"search":"The sonic-if component shows its slot when .condition is true. In Lit, bind .condition from store-driven state (@subscribe on a formDataProvider field) — live preview and TypeScript source are the same file (docs-lit-demo):\\n","files":{"core/components/functional/if/if.md":{"title":"if","hashes":{"if":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"\\n","files":{"core/components/functional/if/if.md":{"title":"if","hashes":{"if":{"count":1,"title":"","type":"paragraph"}}},"core/components/functional/list/list.md":{"title":"List","hashes":{"row-renderer-items--recommended":{"count":1,"title":"Row renderer (`items`) — recommended","type":"paragraph"},"alternating-row-layouts":{"count":2,"title":"Alternating row layouts","type":"paragraph"},"separator-and-empty-list":{"count":1,"title":"Separator and empty list","type":"paragraph"},"fetch--extractvalues":{"count":1,"title":"Fetch + `extractValues`","type":"paragraph"}}},"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"lazy-load--offset-and-limit":{"count":1,"title":"Lazy load — `$offset` and `$limit`","type":"paragraph"},"simple-batch-no-lazy-scroll":{"count":1,"title":"Simple batch (no lazy scroll)","type":"paragraph"}}},"core/components/functional/router/router.md":{"title":"Router","hashes":{"static-routes-no-parameters":{"count":1,"title":"Static routes (no parameters)","type":"paragraph"},"url-pattern-name":{"count":1,"title":"Url-pattern (`:name`)","type":"paragraph"}}},"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"form-and-result-handling":{"count":1,"title":"Form and result handling","type":"paragraph"},"native-html-form":{"count":1,"title":"Native HTML form","type":"paragraph"},"sendasformdata":{"count":1,"title":"sendAsFormData","type":"paragraph"},"submit-result-key":{"count":1,"title":"submit-result-key","type":"paragraph"},"cleareddataonsuccess":{"count":1,"title":"clearedDataOnSuccess","type":"paragraph"},"custom-submit-event":{"count":1,"title":"Custom `submit` event","type":"paragraph"},"endpoint-vs-dataprovider":{"count":1,"title":"endPoint vs dataProvider","type":"paragraph"},"methodget":{"count":1,"title":"method=\\"get\\"","type":"paragraph"}}},"core/components/ui/form/checkbox/checkbox.md":{"title":"Checkbox","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}},"core/components/ui/form/input/input.md":{"title":"Input","hashes":{"list":{"count":1,"title":"List","type":"paragraph"},"example-of-use--search--queue":{"count":1,"title":"Example of use — search + queue","type":"paragraph"}}},"core/components/ui/form/radio/radio.md":{"title":"Radio","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}},"core/components/ui/form/select/select.md":{"title":"Select","hashes":{"example-of-use--language-filter--queue":{"count":1,"title":"Example of use — language filter + queue","type":"paragraph"}}},"core/components/ui/form/switch/switch.md":{"title":"Switch","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}},"core/components/ui/icon/icon.md":{"title":"Icon","hashes":{"custom":{"count":1,"title":"Custom","type":"paragraph"}}},"core/components/ui/loader/loader.md":{"title":"Loader","hashes":{"fixed-mode":{"count":1,"title":"Fixed mode","type":"paragraph"}}},"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"bearer-token-static":{"count":1,"title":"Bearer token (static)","type":"paragraph"},"tokenprovider--basic-auth":{"count":1,"title":"tokenProvider + Basic auth","type":"paragraph"},"http-498--stale-token-refresh":{"count":1,"title":"HTTP 498 — stale token refresh","type":"paragraph"},"eventsapitoken":{"count":1,"title":"eventsApiToken","type":"paragraph"},"wording-api":{"count":1,"title":"Wording API","type":"paragraph"},"scoped-attributes-html--sonic-scope":{"count":1,"title":"Scoped attributes (HTML / sonic-scope)","type":"paragraph"}}}}},{"search":"Plain HTML without Lit: HTML integration.\\n","files":{"core/components/functional/if/if.md":{"title":"if","hashes":{"if":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"List","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"list":{"count":1,"title":"","type":"page"}}}}},{"search":"Try offline: serviceURL=&quot;/docs-mock-api&quot; and dataProvider=&quot;api/users&quot; with key=&quot;data&quot; — see Local API demos. Recommended patterns: Data flow.\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"list":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The sonic-list component renders one row per entry in props (array from fetch or set on the element).\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"list":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"List extends Subscriber and Fetcher:\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"list":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"From a Lit parent, pass a function on the items property (ListItems). Each row is wrapped in a sonic-subscriber with dataProvider=&quot;…/list-item/n&quot; (hover rows with debug).\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"row-renderer-items--recommended":{"count":1,"title":"Row renderer (`items`) — recommended","type":"paragraph"}}}}},{"search":"Use .items=${fn} (property binding): Lit passes functions only as properties, not as HTML attributes — @property({ type: Function }) does not change that. Same for .noItems, .separator, .skeleton. The callback receives each row object (replacing data-bind / &lt;sonic-value&gt; in a &lt;template&gt;).\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"row-renderer-items--recommended":{"count":1,"title":"Row renderer (`items`) — recommended","type":"paragraph"}}}}},{"search":"Live demo + TypeScript source (one file, no Markdown copy):\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"row-renderer-items--recommended":{"count":1,"title":"Row renderer (`items`) — recommended","type":"paragraph"}}}}},{"search":"Implementation: src/docs/example/docs-users-list.ts — row markup in the items callback (item.first_name, …), same idea as replacing data-bind / &lt;sonic-value&gt; in a &lt;template&gt;.\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"row-renderer-items--recommended":{"count":1,"title":"Row renderer (`items`) — recommended","type":"paragraph"}}}}},{"search":"Use metadata (even, odd, firstChild, …) or fields on each item (e.g. tpl with templateKey):\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"alternating-row-layouts":{"count":1,"title":"Alternating row layouts","type":"paragraph"}}}}},{"search":"For plain HTML hosts, you can still declare &lt;template&gt; children (and data-value for templateKey, separator, no-item). That path is for HTML integration — not used in Concorde doc live demos.\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"html-template-children-integration-without-lit":{"count":1,"title":"HTML `<template>` children (integration without Lit)","type":"paragraph"}}}}},{"search":"Each list row still gets dataProvider=&quot;[list]/list-item/[index]&quot;.\\n","files":{"core/components/functional/list/list.md":{"title":"List","hashes":{"html-template-children-integration-without-lit":{"count":1,"title":"HTML `<template>` children (integration without Lit)","type":"paragraph"}}}}},{"search":"Mix","files":{"core/components/functional/mix/mix.md":{"title":"Mix","hashes":{"mix":{"count":1,"title":"","type":"page"}}}}},{"search":"Mix allows you to mix several subsets of dataProvider in a new key/value structure which is itself associated with a new dataProvider. The data update is then bidirectional.\\n","files":{"core/components/functional/mix/mix.md":{"title":"Mix","hashes":{"mix":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Dot notation is supported to extract a sub-part of the data.\\n","files":{"core/components/functional/mix/mix.md":{"title":"Mix","hashes":{"mix":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"For example, if we declare dataproviders as follows :\\n\\nWe can rearrange the data as follows\\n\\nThen we can change values in both dataProviders programaticaly this way, they will stay in sync\\n\\nOr by using a form element\\n\\n","files":{"core/components/functional/mix/mix.md":{"title":"Mix","hashes":{"mix":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Queue","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"queue":{"count":1,"title":"","type":"page"}}}}},{"search":"Try offline: serviceURL=&quot;/docs-mock-api&quot; — see Local API demos. Row rendering: Data flow (.items property binding).\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"queue":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"sonic-queue loads data in batches. Each batch is an internal List with its own dataProvider (…/list-item/0, …/1, …).\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"queue":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"When the expression contains $offset and $limit, the queue:\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"lazy-load--offset-and-limit":{"count":1,"title":"Lazy load — `$offset` and `$limit`","type":"paragraph"}}}}},{"search":"The doc mock implements this on GET /docs-mock-api/api/users?offset=…&amp;per_page=… (paginateUsers in src/docs/mock-api/router.ts).\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"lazy-load--offset-and-limit":{"count":1,"title":"Lazy load — `$offset` and `$limit`","type":"paragraph"}}}}},{"search":"Wrap the queue in a fixed height with overflow-y-auto so lazy load triggers when scrolling inside the box (same layout as the TS starter demo-queue-templates).\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"lazy-load--offset-and-limit":{"count":1,"title":"Lazy load — `$offset` and `$limit`","type":"paragraph"}}}}},{"search":"Try scrolling after load — batches of 4 users. Search e.g. George, Bluth, or zzz for empty results.\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"lazy-load--offset-and-limit":{"count":1,"title":"Lazy load — `$offset` and `$limit`","type":"paragraph"}}}}},{"search":"Without $offset in the expression, the queue behaves like a single list (one batch), e.g. geo communes below.\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"expression-example":{"count":1,"title":"Expression example","type":"paragraph"}}}}},{"search":"One search field (name=&quot;q&quot;) on formDataProvider=&quot;filter&quot;. The queue listens via dataFilterProvider=&quot;filter&quot; and, on change:\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"filter--datafilterprovider--q":{"count":1,"title":"Filter — `dataFilterProvider` + `q`","type":"paragraph"}}}}},{"search":"Use filteredFields only when the form has extra fields that must not be sent to the API (e.g. filteredFields=&quot;rememberMe internalId&quot;).\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"filter--datafilterprovider--q":{"count":1,"title":"Filter — `dataFilterProvider` + `q`","type":"paragraph"}}}}},{"search":"The mock API filters before pagination — same haystack logic as the starter (filterDocsUsers in src/docs/mock-api/fixtures.ts, used by paginateUsers in router.ts / Service Worker):\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"filter--datafilterprovider--q":{"count":1,"title":"Filter — `dataFilterProvider` + `q`","type":"paragraph"}}}}},{"search":"Geo communes: expression uses $limit only (no $offset) — one request, one batch.\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"simple-batch-no-lazy-scroll":{"count":1,"title":"Simple batch (no lazy scroll)","type":"paragraph"}}}}},{"search":"Optional for hosts without Lit — see HTML integration.\\n","files":{"core/components/functional/queue/queue.md":{"title":"Queue","hashes":{"html-template-children":{"count":1,"title":"HTML `<template>` children","type":"paragraph"}}}}},{"search":"Router","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"router":{"count":1,"title":"","type":"page"}}}}},{"search":"sonic-router watches document.location (pathname + hash) and renders the matching view.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"router":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"From a Lit parent, pass a .routes map (property binding — same rule as .items on list): keys are path patterns, values are render functions. Use fallback when nothing matches.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"router":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Legacy HTML &lt;template data-route=&quot;…&quot;&gt; remains for hosts without Lit — HTML integration.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"router":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Route keys are matched against pathname + hash. A simple hash route #home matches when the location contains that segment.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"static-routes-no-parameters":{"count":1,"title":"Static routes (no parameters)","type":"paragraph"}}}}},{"search":"On the doc site, the page URL is already a hash (#…/router.md/router). Demos append a second hash for in-page routes (#…/router#home), use href + autoActive=&quot;strict&quot; on sonic-button for the active state, and history.replaceState on click so markdown is not reloaded (setDocsDemoSubHash in src/docs/docs-location.ts).\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"static-routes-no-parameters":{"count":1,"title":"Static routes (no parameters)","type":"paragraph"}}}}},{"search":"Two styles (see router.demo.ts and docs-router-params-demo):\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"routes-with-parameters":{"count":1,"title":"Routes with parameters","type":"paragraph"}}}}},{"search":"Key uses :param segments. The render function receives an object { param: string }.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"url-pattern-name":{"count":1,"title":"Url-pattern (`:name`)","type":"paragraph"}}}}},{"search":"Key is a RegExp string with (\\\\d+) / (\\\\w+) groups. The render function receives an array of captured strings (in order).\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"regexp-capturing-groups":{"count":1,"title":"RegExp (capturing groups)","type":"paragraph"}}}}},{"search":"With parameters you usually render data directly in Lit (${id}). The old &lt;template data-route&gt; + dataProviderExpression pattern scoped a dataProvider for data-bind / fetch children — prefer @subscribe or explicit props when using .routes.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"regexp-capturing-groups":{"count":1,"title":"RegExp (capturing groups)","type":"paragraph"}}}}},{"search":"Always use .routes=${…} in Lit templates: route handlers are functions and must be set as properties, not HTML attributes.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"routes-binding":{"count":1,"title":"`.routes` binding","type":"paragraph"}}}}},{"search":"Separate component: redirect when data appears on a publisher (login steps, wizards). Not part of the .routes map.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"sonic-redirect":{"count":1,"title":"`sonic-redirect`","type":"paragraph"}}}}},{"search":"Example: combine with .routes and submit for login / logout / profile steps.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"sonic-redirect":{"count":1,"title":"`sonic-redirect`","type":"paragraph"}}}}},{"search":"sonic-router-demo (router.demo.ts) — home, user profile (#user/:id/:slug), products RegExp, fallback 404.\\n","files":{"core/components/functional/router/router.md":{"title":"Router","hashes":{"package-demo":{"count":1,"title":"Package demo","type":"paragraph"}}}}},{"search":"SDUI","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"sdui":{"count":1,"title":"","type":"page"}}}}},{"search":"SDUI stands for Server Driven User Interfaces.\\nBasically, it generates a user interface based on a JSON SDUI Descriptor.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"what-is-sdui":{"count":1,"title":"What is SDUI?","type":"paragraph"}}}}},{"search":"SDUI extends the mixin Subscriber.\\nThis means that you must set a dataProvider with an id pointing to the publisher that will hold your SDUI Descriptor.\\nThis also means that it has a reactive property named props that you can set with the JSON SDUI Descriptor in order to configure it.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"subscriber-extension":{"count":1,"title":"Subscriber extension:","type":"paragraph"}}}}},{"search":"SDUI extends the mixin Fetcher as Fetch and List.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"fetcher-extension":{"count":1,"title":"Fetcher extension:","type":"paragraph"}}}}},{"search":"In this case, it will parse the JSON coming from the request.\\nThe JSON must comply with the SDUI descriptor format.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"fetcher-extension":{"count":1,"title":"Fetcher extension:","type":"paragraph"}}}}},{"search":"As a fetcher, invalidating the publisher or updating the endpoint will trigger a new fetch and update accordingly.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"fetcher-extension":{"count":1,"title":"Fetcher extension:","type":"paragraph"}}}}},{"search":"It has no shadowdom, and its display style is set to contents, so an empty SDUI has the fewest impact on the layout.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"rendering":{"count":1,"title":"Rendering:","type":"paragraph"}}}}},{"search":"An SDUINode represents an HTMLElement.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"descriptor":{"count":1,"title":"Descriptor","type":"paragraph"}}}}},{"search":"TypeScript definition:\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"descriptor":{"count":1,"title":"Descriptor","type":"paragraph"}}}}},{"search":"Summary of properties:\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"descriptor":{"count":1,"title":"Descriptor","type":"paragraph"}}}}},{"search":"Use it if you prefer to define your node entirely using an HTML string.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"markup":{"count":1,"title":"Markup","type":"paragraph"}}}}},{"search":"Here we use the field tagName of SDUINode to create an element with tag name sonic-input.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"tag-name":{"count":1,"title":"Tag name","type":"paragraph"}}}}},{"search":"A string key/value pair storing each attribute name/value of the HTML element created.\\nAs no tag name is defined, a div element is created.\\nHere we define the style attribute to create a tiny red square.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"attributes":{"count":1,"title":"Attributes","type":"paragraph"}}}}},{"search":"Children of the current node can be added using the field nodes recursively.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"nodes":{"count":1,"title":"Nodes","type":"paragraph"}}}}},{"search":"As no tag name is defined, a div element is created, and then we use innerHTML to add content to it.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"innerhtml":{"count":1,"title":"InnerHTML","type":"paragraph"}}}}},{"search":"Use them if you want to wrap the component with some HTML string.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"prefix-and-suffix":{"count":1,"title":"Prefix and suffix","type":"paragraph"}}}}},{"search":"The libraryKey of SDUINode is an identifier that points to an SDUINode description in the library to be used as a model for this node.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"Note that the SDUI has a default library containing some basic component definitions useful for form declaration (see default-library.json).\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"This example uses the library key submit which points to a sonic-submit containing a button also coming from the library.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"The element named button in the library is a sonic-button of type success containing a check icon as a prefix.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"Since the submit library element contains an attribute contentElementSelector with the value sonic-button, the &quot;injected content&quot; is put inside the button.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"We used innerHTML for the sake of simplicity, but you can use nodes to add any complex content.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library-key-and-contentelementselector":{"count":1,"title":"Library key and contentElementSelector","type":"paragraph"}}}}},{"search":"This special field lets you inject the content at any place in the HTML flow already set inside the parent SDUI component by using a CSS selector.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"parentelementselector":{"count":1,"title":"parentElementSelector","type":"paragraph"}}}}},{"search":"⚠️ Note that it doesn&#39;t work with top-level nodes.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"parentelementselector":{"count":1,"title":"parentElementSelector","type":"paragraph"}}}}},{"search":"The transformers let you transform the structure of the SDUI Descriptor into a new one before parsing and rendering it.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"transformers":{"count":1,"title":"Transformers:","type":"paragraph"}}}}},{"search":"To enable it, you must fill the transformation attribute of the component with a URL pointing to a Transform descriptor.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"transformers":{"count":1,"title":"Transformers:","type":"paragraph"}}}}},{"search":"Each key of the library will be merged with the current library in the SDUI Descriptor, by replacing or creating items library key by key.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"the-library":{"count":1,"title":"The library:","type":"paragraph"}}}}},{"search":"Each transform represents an action that will be done on the SDUI descriptor before the creation of the entire UI.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"the-transform-actions":{"count":1,"title":"The transform actions:","type":"paragraph"}}}}},{"search":"The action that will be done is a verb:\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"the-transform-actions":{"count":1,"title":"The transform actions:","type":"paragraph"}}}}},{"search":"This is an HTML attribute to set on the component if needed. In this case, the component will not treat its props value directly as an SDUI descriptor. Internally, it will basically extract the SDUIDescriptor by doing something like this: const sduiDescriptor = this.props[this.sduikey].\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"sduikey":{"count":1,"title":"sduiKey","type":"paragraph"}}}}},{"search":"This is an HTML attribute to set on the component if needed. In this case, the component will automatically create a sonic-toast-message-subscriber component. The data found in props[messageKey] will be treated as the data expected by the sonic-toast-message-subscriber. So, by respecting the format of data supported by this component, you will be able to show multiple toasts in the result of a request.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"messagekey":{"count":1,"title":"messageKey","type":"paragraph"}}}}},{"search":"Example of JSON with messageKey=messages:\\n\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"messagekey":{"count":1,"title":"messageKey","type":"paragraph"}}}}},{"search":"This is an HTML attribute to set on the component if needed. You can set a URL pointing to a JSON describing a library with the same structure as the library in the SDUIDescriptor. The component will simply override its library with the given one.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"library":{"count":1,"title":"library","type":"paragraph"}}}}},{"search":"Here is a little playground to let you test some simple tricks.\\n","files":{"core/components/functional/sdui/sdui.md":{"title":"SDUI","hashes":{"playground":{"count":1,"title":"Playground","type":"paragraph"}}}}},{"search":"States","files":{"core/components/functional/states/states.md":{"title":"States","hashes":{"states":{"count":1,"title":"","type":"page"}}}}},{"search":"When using capturing groups () the stored values are accessible via the dataProviderExpressione.g., data-value=&quot;#couleur_(\\\\d+)&quot; =&gt; dataProviderExpression=&quot;api/unknown/$1&quot;\\n","files":{"core/components/functional/states/states.md":{"title":"States","hashes":{"regexp":{"count":1,"title":"Regexp","type":"paragraph"}}}}},{"search":"Same as RegExp but using url patternse.g., data-value=&quot;#couleur_:id&quot; =&gt; dataProviderExpression=&quot;api/unknown/:id&quot;\\n","files":{"core/components/functional/states/states.md":{"title":"States","hashes":{"url-pattern":{"count":1,"title":"Url-pattern","type":"paragraph"}}}}},{"search":"Submit","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"submit":{"count":1,"title":"","type":"page"}}}}},{"search":"Live demos: &lt;docs-lit-demo&gt; + src/docs/example/docs-submit-demos.ts. Use Local API demos (serviceURL=&quot;/docs-mock-api&quot;).\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"submit":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"sonic-submit sends the formDataProvider publisher to a REST endpoint (same configuration model as fetch: serviceURL on an ancestor, path via dataProvider or endPoint).\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"overview":{"count":1,"title":"Overview","type":"paragraph"}}}}},{"search":"While a REST submit runs, the slot is wrapped with data-disabled (faded, no pointer events). With native, validation and loader still run, then the browser performs a normal form submission.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"overview":{"count":1,"title":"Overview","type":"paragraph"}}}}},{"search":"POST to mock api/register; result publisher submit-example-result.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"form-and-result-handling":{"count":1,"title":"Form and result handling","type":"paragraph"}}}}},{"search":"With native, Concorde does not call fetch. After form validation it:\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"native-html-form":{"count":1,"title":"Native HTML form","type":"paragraph"}}}}},{"search":"Use a real &lt;form action=&quot;…&quot; method=&quot;post&quot;&gt; ancestor. For SPAs, a named target (e.g. iframe) avoids leaving the doc page.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"native-html-form":{"count":1,"title":"Native HTML form","type":"paragraph"}}}}},{"search":"Sends fields as multipart/form-data instead of application/json (response is still parsed as JSON).\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"sendasformdata":{"count":1,"title":"sendAsFormData","type":"paragraph"}}}}},{"search":"When the API wraps the payload (e.g. { data: { id, token } }), set submit-result-key=&quot;data&quot; on sonic-submit so submitResultDataProvider receives only the inner object.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"submit-result-key":{"count":1,"title":"submit-result-key","type":"paragraph"}}}}},{"search":"Mock endpoint: POST /docs-mock-api/api/register/nested.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"submit-result-key":{"count":1,"title":"submit-result-key","type":"paragraph"}}}}},{"search":"Lists one or more publisher ids (space-separated). After the API returns a result object, each is set to {} — useful to reset the form publisher.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"cleareddataonsuccess":{"count":1,"title":"clearedDataOnSuccess","type":"paragraph"}}}}},{"search":"Listen for the bubbling submit event; event.detail is the same result written to submitResultDataProvider (if configured).\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"custom-submit-event":{"count":1,"title":"Custom `submit` event","type":"paragraph"}}}}},{"search":"Ancestor dataProvider is the default path; endPoint on sonic-submit overrides it for that button only.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"endpoint-vs-dataprovider":{"count":1,"title":"endPoint vs dataProvider","type":"paragraph"}}}}},{"search":"Appends publisher fields as a query string on the endpoint, then performs a GET. The mock route api/register/echo returns the query for inspection.\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"methodget":{"count":1,"title":"method=\\"get\\"","type":"paragraph"}}}}},{"search":"You can use dot notation in name on form controls; the publisher stores nested objects:\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"dot-notation-formdataprovider-shape":{"count":1,"title":"dot notation (formDataProvider shape)","type":"paragraph"}}}}},{"search":"Stored shape:\\n","files":{"core/components/functional/submit/submit.md":{"title":"Submit","hashes":{"dot-notation-formdataprovider-shape":{"count":1,"title":"dot notation (formDataProvider shape)","type":"paragraph"}}}}},{"search":"Subscriber","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"subscriber":{"count":1,"title":"","type":"page"}}}}},{"search":"La mixin Subscriber permet lier un composant à un publisher.\\nLa liaison à un publisher se fait via l&#39;attribut dataProvider du composant qui représente ce que l&#39;on obtient en appellant PublisherManager.get(dataProvider).\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"subscriber":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Les propriétés du composant sont automatiquement remplies avec les propriétés du même nom dans les données du publisher.\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"subscriber":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Le composant est automatiquement mis à jour lorsque les données du publisher sont mises à jour.\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"subscriber":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Id of the dataProvider that the component will subscribe to\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"dataprovider":{"count":1,"title":"DataProvider","type":"paragraph"}}}}},{"search":"Data object (json) that will be passed to the dataProvider\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"props":{"count":1,"title":"Props","type":"paragraph"}}}}},{"search":"Helper, display the data held by the dataProvider in a floating div\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"debug":{"count":1,"title":"Debug","type":"paragraph"}}}}},{"search":"Docs coming soon\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"noautofill":{"count":1,"title":"NoAutofill","type":"paragraph"},"propertymap":{"count":1,"title":"PropertyMap","type":"paragraph"},"bindpublisher":{"count":1,"title":"BindPublisher","type":"paragraph"},"instancecounter":{"count":1,"title":"instanceCounter","type":"paragraph"},"publisher":{"count":1,"title":"Publisher","type":"paragraph"},"args":{"count":1,"title":"Args","type":"paragraph"}}}}},{"search":"Permet de mapper un nom de propriété de donnée source vers une propriété du subscriber à la volée\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"propertymap":{"count":1,"title":"PropertyMap","type":"paragraph"}}}}},{"search":"On peut utiliser cette fonction pour lier un publisher spécifique au composant si besoin.\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"bindpublisher":{"count":1,"title":"BindPublisher","type":"paragraph"}}}}},{"search":"Par défaut on crée un shadow dom mais on peut demander à ne pas en avoir via cette propriété et un attribut associé.Cela se fait à l&#39;initialisation uniquement et n&#39;est pas modifiable lors de la vie du composant.\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"noshadowdom":{"count":1,"title":"NoShadowDom","type":"paragraph"}}}}},{"search":"styles ??title ??_props ??onAssign ??defferedDebug ??\\n","files":{"core/components/functional/subscriber/subscriber.md":{"title":"Subscriber","hashes":{"other-attributes-gathered-from-subscriberstoriests":{"count":1,"title":"Other attributes gathered from subscriber.stories.ts","type":"paragraph"}}}}},{"search":"Value","files":{"core/components/functional/value/value.md":{"title":"Value","hashes":{"value":{"count":1,"title":"","type":"page"}}}}},{"search":"Simply shows a value from a data provider.\\nYou can target sub data value using dot syntax.\\nThe value reacts to changes.\\n","files":{"core/components/functional/value/value.md":{"title":"Value","hashes":{"value":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Alert","files":{"core/components/ui/alert/alert.md":{"title":"Alert","hashes":{"alert":{"count":1,"title":"","type":"page"}}}}},{"search":"Badge","files":{"core/components/ui/badge/badge.md":{"title":"Badge","hashes":{"badge":{"count":1,"title":"","type":"page"}}}}},{"search":"Button","files":{"core/components/ui/button/button.md":{"title":"Button","hashes":{"button":{"count":1,"title":"","type":"page"}}}}},{"search":"The length of the button depends on the size of its content\\n\\n","files":{"core/components/ui/button/button.md":{"title":"Button","hashes":{"loading":{"count":1,"title":"Loading","type":"paragraph"}}}}},{"search":"Captcha","files":{"core/components/ui/captcha/captcha.md":{"title":"Captcha","hashes":{"captcha":{"count":1,"title":"","type":"page"}}}}},{"search":"Card","files":{"core/components/ui/card/card.md":{"title":"Card","hashes":{"card":{"count":1,"title":"","type":"page"}}}}},{"search":"Divider","files":{"core/components/ui/divider/divider.md":{"title":"Divider","hashes":{"divider":{"count":1,"title":"","type":"page"}}}}},{"search":"Checkbox","files":{"core/components/ui/form/checkbox/checkbox.md":{"title":"Checkbox","hashes":{"checkbox":{"count":1,"title":"","type":"page"}}}}},{"search":"Checked blacklistFlags values are sent to the mock API (?blacklistFlags=racist,sexist,…), which excludes jokes whose flags match (see filterDocsJokes in src/docs/mock-api/fixtures.ts).\\n","files":{"core/components/ui/form/checkbox/checkbox.md":{"title":"Checkbox","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}}}},{"search":"Fieldset","files":{"core/components/ui/form/fieldset/fieldset.md":{"title":"Fieldset","hashes":{"fieldset":{"count":1,"title":"","type":"page"}}}}},{"search":"Form-actions","files":{"core/components/ui/form/form-actions/form-actions.md":{"title":"Form-actions","hashes":{"form-actions":{"count":1,"title":"","type":"page"}}}}},{"search":"Form-layout","files":{"core/components/ui/form/form-layout/form-layout.md":{"title":"Form-layout","hashes":{"form-layout":{"count":1,"title":"","type":"page"}}}}},{"search":"Input","files":{"core/components/ui/form/input/input.md":{"title":"Input","hashes":{"input":{"count":1,"title":"","type":"page"}}}}},{"search":"Liste des types\\n","files":{"core/components/ui/form/input/input.md":{"title":"Input","hashes":{"type":{"count":1,"title":"Type","type":"paragraph"}}}}},{"search":"Filter with formDataProvider + name=&quot;contains&quot; (mock API: substring on joke text). Caption and rows via Lit (@subscribe, .items on sonic-queue):\\n","files":{"core/components/ui/form/input/input.md":{"title":"Input","hashes":{"example-of-use--search--queue":{"count":1,"title":"Example of use — search + queue","type":"paragraph"}}}}},{"search":"Input-autocomplete","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"page"}}}}},{"search":"The input-autocomplete component brings input and queue together in order to create a suggest behavior. This is why this component is partially configured as a form input and as a queue.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Please note that only basic text input params and methods are implemented at this time. You should also be sure to understand the behavior of a queue in order to take full advantage of the input-autocomplete component.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Here are some of the features of the input-autocomplete component:\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Doc examples below use HTML binding on suggestion rows. The Lit equivalent uses an items callback with the row object (see docs-queue-geo-demo in src/docs/example/docs-queue-demos.ts). Embedding without Lit: HTML integration.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"If you are looking for a component to provide a suggest behavior, the input-autocomplete component is a good option. \\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"input-autocomplete":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"In this example, the input will use its name as the search parameter when calling the service responsible for autocompletion.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"simple-example":{"count":1,"title":"Simple Example","type":"paragraph"}}}}},{"search":"The template is used to render the list items of results.\\nThe list items are responsible for making a selection.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"simple-example":{"count":1,"title":"Simple Example","type":"paragraph"}}}}},{"search":"This time, we added buttons with the same name as the input while keeping the same data provider.\\nThe result is that when you select an item, the input takes the value of the selected item, completing the classic suggest behavior.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"simple-example":{"count":1,"title":"Simple Example","type":"paragraph"}}}}},{"search":"In this example, the search parameter is separated from the name of the input. This means that the input will use the name &quot;nom&quot; as the search parameter, but the form data provider will be filled with the data named &quot;siren&quot; from the selected list item.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"value-different-from-search-parameter":{"count":1,"title":"Value different from search parameter","type":"paragraph"}}}}},{"search":"To do this, we need to use the searchParam attribute on the input element. This attribute specifies the name of the search parameter that will be used.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"value-different-from-search-parameter":{"count":1,"title":"Value different from search parameter","type":"paragraph"}}}}},{"search":"We also need to use the name and value attribute on the list items. This attribute specifies the value of the data provider that will be used for the selected list item.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"value-different-from-search-parameter":{"count":1,"title":"Value different from search parameter","type":"paragraph"}}}}},{"search":"By using these attributes, we can separate the search parameter from the name of the input and still fill the form data provider with the data from the selected list item.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"value-different-from-search-parameter":{"count":1,"title":"Value different from search parameter","type":"paragraph"}}}}},{"search":"This example is the same as the previous one, except that the select attribute is used. This attribute changes the look and feel of the component slightly.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"select-autocomplete--value-different-from-search-parameter":{"count":1,"title":"Select autocomplete / value different from search parameter","type":"paragraph"}}}}},{"search":"Now the text is less free because, you must select either something from the list given by the service, or nothing else.\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"select-autocomplete--value-different-from-search-parameter":{"count":1,"title":"Select autocomplete / value different from search parameter","type":"paragraph"}}}}},{"search":"The following code shows how to use the select attribute in an autocomplete input:\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"select-autocomplete--value-different-from-search-parameter":{"count":1,"title":"Select autocomplete / value different from search parameter","type":"paragraph"}}}}},{"search":"At the moment you can enable keyboard up/down by adding an attribut &quot;data-keyboard-nav&quot; on the component and its listItems\\n","files":{"core/components/ui/form/input-autocomplete/input-autocomplete.md":{"title":"Input-autocomplete","hashes":{"keyboard-navigation":{"count":1,"title":"keyboard navigation","type":"paragraph"}}}}},{"search":"Radio","files":{"core/components/ui/form/radio/radio.md":{"title":"Radio","hashes":{"radio":{"count":1,"title":"","type":"page"}}}}},{"search":"Same mock filter as Checkbox (blacklistFlags query param). Radio sends one flag at a time.\\n","files":{"core/components/ui/form/radio/radio.md":{"title":"Radio","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}}}},{"search":"Select","files":{"core/components/ui/form/select/select.md":{"title":"Select","hashes":{"select":{"count":1,"title":"","type":"page"}}}}},{"search":"name=&quot;lang&quot; is sent as ?lang=fr|en to the doc mock API (filterDocsJokes). Same pattern as Input (contains):\\n","files":{"core/components/ui/form/select/select.md":{"title":"Select","hashes":{"example-of-use--language-filter--queue":{"count":1,"title":"Example of use — language filter + queue","type":"paragraph"}}}}},{"search":"Switch","files":{"core/components/ui/form/switch/switch.md":{"title":"Switch","hashes":{"switch":{"count":1,"title":"","type":"page"}}}}},{"search":"Same mock filter as Checkbox; switches can enable several flags (comma-separated in the query).\\n","files":{"core/components/ui/form/switch/switch.md":{"title":"Switch","hashes":{"example-of-use--blacklist--queue":{"count":1,"title":"Example of use — blacklist + queue","type":"paragraph"}}}}},{"search":"Textarea","files":{"core/components/ui/form/textarea/textarea.md":{"title":"Textarea","hashes":{"textarea":{"count":1,"title":"","type":"page"}}}}},{"search":"Group","files":{"core/components/ui/group/group.md":{"title":"Group","hashes":{"group":{"count":1,"title":"","type":"page"}}}}},{"search":"Icon","files":{"core/components/ui/icon/icon.md":{"title":"Icon","hashes":{"icon":{"count":1,"title":"","type":"page"}}}}},{"search":"Image","files":{"core/components/ui/image/image.md":{"title":"Image","hashes":{"image":{"count":1,"title":"","type":"page"}}}}},{"search":"Link","files":{"core/components/ui/link/link.md":{"title":"Link","hashes":{"link":{"count":1,"title":"","type":"page"}}}}},{"search":"Loader","files":{"core/components/ui/loader/loader.md":{"title":"Loader","hashes":{"loader":{"count":1,"title":"","type":"page"}}}}},{"search":"Menu","files":{"core/components/ui/menu/menu.md":{"title":"Menu","hashes":{"menu":{"count":1,"title":"","type":"page"}}}}},{"search":"Modal","files":{"core/components/ui/modal/modal.md":{"title":"Modal","hashes":{"modal":{"count":1,"title":"","type":"page"}}}}},{"search":"Pop","files":{"core/components/ui/pop/pop.md":{"title":"Pop","hashes":{"pop":{"count":1,"title":"","type":"page"}}}}},{"search":"Progress bar","files":{"core/components/ui/progress/progress.md":{"title":"Progress bar","hashes":{"progress-bar":{"count":1,"title":"","type":"page"}}}}},{"search":"Displays an indicator showing the completion progress of a task.\\n","files":{"core/components/ui/progress/progress.md":{"title":"Progress bar","hashes":{"progress-bar":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Table","files":{"core/components/ui/table/table.md":{"title":"Table","hashes":{"table":{"count":1,"title":"","type":"page"}}}}},{"search":"Values available : primary, info, success, warning, danger\\n","files":{"core/components/ui/table/table.md":{"title":"Table","hashes":{"type":{"count":1,"title":"Type","type":"paragraph"}}}}},{"search":"The following attributes will be used to set the style of the component : \\n","files":{"core/components/ui/table/table.md":{"title":"Table","hashes":{"cell-style-attributes":{"count":1,"title":"Cell style attributes","type":"paragraph"}}}}},{"search":"Every table is responsive by default\\n","files":{"core/components/ui/table/table.md":{"title":"Table","hashes":{"responsive":{"count":1,"title":"Responsive","type":"paragraph"}}}}},{"search":"Toast","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"toast":{"count":1,"title":"","type":"page"}}}}},{"search":"Les statuts disponibles sont : success, error, warning, info ou vide (par défaut).\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"statut":{"count":1,"title":"Statut","type":"paragraph"}}}}},{"search":"Le contenu du toast peut contenir du HTML.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"avec-contenu-html":{"count":1,"title":"Avec contenu HTML","type":"paragraph"}}}}},{"search":"Par défaut, les toasts disparaissent automatiquement. Avec preserve: true, le toast reste affiché jusqu&#39;à ce qu&#39;il soit fermé manuellement.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"persistance":{"count":1,"title":"Persistance","type":"paragraph"}}}}},{"search":"Avec dismissForever: true et un id, le toast peut être masqué définitivement. Une fois fermé, il ne réapparaîtra plus même après rechargement de la page.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"masquer-définitivement":{"count":1,"title":"Masquer définitivement","type":"paragraph"}}}}},{"search":"Avec ghost: true, le toast devient semi-transparent et non-interactif.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"fantôme":{"count":1,"title":"Fantôme","type":"paragraph"}}}}},{"search":"Supprime tous les toasts sauf ceux marqués comme ghost.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"tout-supprimer":{"count":1,"title":"Tout supprimer","type":"paragraph"}}}}},{"search":"Supprime tous les toasts d&#39;un statut spécifique.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"supprimer-par-statut":{"count":1,"title":"Supprimer par statut","type":"paragraph"}}}}},{"search":"Supprime tous les toasts qui ne sont pas marqués comme preserve.\\n","files":{"core/components/ui/toast/toast.md":{"title":"Toast","hashes":{"supprimer-les-éléments-temporaires":{"count":1,"title":"Supprimer les éléments temporaires","type":"paragraph"}}}}},{"search":"Tooltip","files":{"core/components/ui/tooltip/tooltip.md":{"title":"Tooltip","hashes":{"tooltip":{"count":1,"title":"","type":"page"}}}}},{"search":"By default, tooltip is centered next to its content\\n","files":{"core/components/ui/tooltip/tooltip.md":{"title":"Tooltip","hashes":{"placement":{"count":1,"title":"Placement","type":"paragraph"}}}}},{"search":"Data flow","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"data-flow":{"count":1,"title":"","type":"page"}}}}},{"search":"Recommended patterns for new Concorde apps (Lit + TypeScript). Under the hood, data lives in a DataProvider store (legacy Publisher API: Legacy: Sharing data).\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"data-flow":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Skill: concorde-get-set-dp in the package ai/ folder.\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"quick-map":{"count":1,"title":"Quick map","type":"paragraph"}}}}},{"search":"const cartKey = new DataProviderKey&lt;{ items: string[] }&gt;(&quot;cart&quot;);\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"dataproviderkey":{"count":1,"title":"DataProviderKey","type":"paragraph"}}}}},{"search":"set(cartKey, { items: [] });\\ndp(cartKey.items).set([&quot;a&quot;, &quot;b&quot;]);\\nget(cartKey);\\n \\n\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"dataproviderkey":{"count":1,"title":"DataProviderKey","type":"paragraph"}}}}},{"search":"Dynamic paths (users.${userId}) → decorators or sub() — not get(&quot;users.${id}&quot;) in imperative code.\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"dataproviderkey":{"count":1,"title":"DataProviderKey","type":"paragraph"}}}}},{"search":"DataProviderKey\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"dataproviderkey":{"count":1,"title":"DataProviderKey","type":"paragraph"}}}}},{"search":"Walkthrough: My first component\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"decorators":{"count":1,"title":"Decorators","type":"paragraph"}}}}},{"search":"Interactive routes mirror these patterns (/concepts/*, /demo/*).\\n","files":{"docs/_core-concept/dataFlow.md":{"title":"Data flow","hashes":{"starter-kit":{"count":1,"title":"Starter kit","type":"paragraph"}}}}},{"search":"lit + tailwind + vite","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit--tailwind--vite":{"count":1,"title":"","type":"page"}}}}},{"search":"Some notes for an overview of Concorde&#39;s functioning\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit--tailwind--vite":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"A web component is simply a custom HTML element created using web standards:\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"standard-web-components":{"count":1,"title":"Standard Web components","type":"paragraph"}}}}},{"search":"web component = Custom Elements + shadowDom + HTML templates\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"standard-web-components":{"count":1,"title":"Standard Web components","type":"paragraph"}}}}},{"search":"Concorde components are written using the lightweight Lit library: https://lit.dev/.\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit-library":{"count":1,"title":"Lit Library","type":"paragraph"}}}}},{"search":"A good portion of the elements documented on the Lit website are standard JavaScript concepts (e.g., mixins, tagged template literals).\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit-library":{"count":1,"title":"Lit Library","type":"paragraph"}}}}},{"search":"The library simplifies the writing of web components by automating certain tasks:\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit-library":{"count":1,"title":"Lit Library","type":"paragraph"}}}}},{"search":"Our use of Lit rarely goes beyond this hello world\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"lit-library":{"count":1,"title":"Lit Library","type":"paragraph"}}}}},{"search":"We write the components in TypeScript, which is then compiled into JS.\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"typescript-language":{"count":1,"title":"Typescript Language","type":"paragraph"}}}}},{"search":"Static and inferred typing provides stronger validation of the program&#39;s functioning during compilation.\\nHowever, we often use the &quot;any&quot; type due to time constraints.\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"typescript-language":{"count":1,"title":"Typescript Language","type":"paragraph"}}}}},{"search":"Lit uses TypeScript to simplify development through metadata:\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"typescript-language":{"count":1,"title":"Typescript Language","type":"paragraph"}}}}},{"search":"☢️Warning:\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"typescript-language":{"count":1,"title":"Typescript Language","type":"paragraph"}}}}},{"search":"Compatibility issues may arise when using JS libraries, particularly regarding DOM traversal.\\nThis is because these libraries are blocked from traversing the DOM due to the presence of the shadow DOM.\\nHere are some examples of things that may cause problems:\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"compatibility-with-classic-js-libraries":{"count":1,"title":"Compatibility with Classic JS Libraries","type":"paragraph"}}}}},{"search":"🧱 Creating components\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"topics-to-explore-for-further-learning":{"count":1,"title":"Topics to Explore for Further Learning","type":"paragraph"}}}}},{"search":"🎨 Adding styles\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"topics-to-explore-for-further-learning":{"count":1,"title":"Topics to Explore for Further Learning","type":"paragraph"}}}}},{"search":"🥨 Sharing data\\n","files":{"docs/_core-concept/overview.md":{"title":"lit + tailwind + vite","hashes":{"topics-to-explore-for-further-learning":{"count":1,"title":"Topics to Explore for Further Learning","type":"paragraph"}}}}},{"search":"Legacy: Subscriber mixin","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"legacy-subscriber-mixin":{"count":1,"title":"","type":"page"}}}}},{"search":"New app components: My first component and Data flow — extend LitElement with decorators (@subscribe, @ancestorAttribute, …). This mixin remains in core components (sonic-list, sonic-fetch, …) and legacy tutorials.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"legacy-subscriber-mixin":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The Subscriber mixin was commonly extended by Concorde core components and older destination components. Pure UI components usually don&#39;t extend it, especially those outside of form components.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"legacy-subscriber-mixin":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Upon being added to the DOM (connectedCallback), subscribers search for the first occurrence of the dataProvider attribute in their parent&#39;s HTML structure.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"The value of this attribute is the DataProvider path (see Data flow and DataProviderKey; legacy API: Sharing Data).\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"The subscriber then subscribes to the publisher as a data template to be filled.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"The reactive properties of the component reflect in real-time the properties with the same name in the publisher.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"This functionality is commonly used in the generic components fetch, queue, and list.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"If the subscriber is inside another subscriber, it can subscribe to a data of its parent using the attribute subDataProvider = &#39;address.of.my.data&#39; instead of the parent&#39;s data. This allows for dynamic behavior.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"dataprovider-attribute-automatic-filling-of-subscriber-properties":{"count":1,"title":"DataProvider Attribute: Automatic Filling of Subscriber Properties","type":"paragraph"}}}}},{"search":"In a similar manner, searching for ancestor attributes can be used to configure automatic translation for any property starting with &quot;wording&quot; and ending with a label identifier recognized by the wordingProvider API.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"automated-translation":{"count":1,"title":"Automated Translation","type":"paragraph"}}}}},{"search":"Normally, this API is globally configured and not within the component. Therefore, remember to prefix translatable label identifiers present in the ticketing system, for example, with &quot;wording&quot;.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"automated-translation":{"count":1,"title":"Automated Translation","type":"paragraph"}}}}},{"search":"The value of this property can be provided as a JSON object or any other value. This value is then assigned to the associated publisher via the dataProvider attribute. As a result, the reactive properties of all subscribers associated with the same dataProvider are filled as mentioned above.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"reactive-property-props":{"count":1,"title":"Reactive Property `props`","type":"paragraph"}}}}},{"search":"It is possible to disable the automatic filling of reactive properties in a particular component. To do so, set the variable noAutoFill = true in the component&#39;s class. However, the reactive property props will still be updated.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"disabling-automatic-filling-of-reactive-properties":{"count":1,"title":"Disabling Automatic Filling of Reactive Properties","type":"paragraph"}}}}},{"search":"For example, sonic-subscriber and sonic-fetch have this attribute because they do not have reactive properties.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"disabling-automatic-filling-of-reactive-properties":{"count":1,"title":"Disabling Automatic Filling of Reactive Properties","type":"paragraph"}}}}},{"search":"☢ CAUTION: When creating an object of type Subscriber or Fetcher, make sure to use the mixins and not directly extend the concrete fetch component (sonic-fetch) and subscriber component (sonic-subscriber). This is because the noAutofill = true attribute is set in those components.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"disabling-automatic-filling-of-reactive-properties":{"count":1,"title":"Disabling Automatic Filling of Reactive Properties","type":"paragraph"}}}}},{"search":"TIPS: \\nIf you disable automatic filling, you will likely make the rendering dynamic by writing expressions like this.props.my.subproperty. If props is updated, the rendering will be triggered. However, if this.props.my.subproperty is directly modified, the rendering will not be triggered. To achieve more reactivity, you can enable rendering when any subproperty is modified. Simply set the variable renderOnPropsInternalChange = true in the class that implements the corresponding mixin.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"disabling-automatic-filling-of-reactive-properties":{"count":1,"title":"Disabling Automatic Filling of Reactive Properties","type":"paragraph"}}}}},{"search":"Suppose that:\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"In a Lit app, use the same data with data configuration (@subscribe + DataProviderKey) on a small row component — see docs-user in src/docs/example/users.ts.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"For HTML-only embedding (no Lit), attribute binding is described in HTML integration and in the Legacy Subscriber mixin pages.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"This pattern also illustrates:\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"Note: Data binding implies that updating the img.src data via the publisher will change the photo without any additional calls.\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"Special Variables:\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"Disabling this functionality:\\nYou can disable data binding if it is not needed by calling DataBinding.disable().\\n","files":{"docs/_core-concept/subscriber.md":{"title":"Legacy: Subscriber mixin","hashes":{"data-binding":{"count":1,"title":"Data Binding","type":"paragraph"}}}}},{"search":"@ancestorAttribute","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"ancestorattribute":{"count":1,"title":"","type":"page"}}}}},{"search":"The @ancestorAttribute decorator automatically injects the value of an ancestor&#39;s attribute into a class property at the time of connectedCallback.\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"ancestorattribute":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"This decorator uses HTML.getAncestorAttributeValue to traverse up the DOM tree from the current element and find the first ancestor that has the specified attribute. The value of this attribute is then assigned to the decorated property.\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"The component reads dataProvider and testAttribute from its ancestor wrapper.\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"@customElement(&quot;demo-ancestor-attribute&quot;)\\nexport class DemoAncestorAttribute extends LitElement {\\n @ancestorAttribute(&quot;dataProvider&quot;)\\n dataProvider: string | null = null;\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @ancestorAttribute(&quot;testAttribute&quot;)\\n testAttribute: string | null = null;\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" render() {\\n return html &lt;section&gt; &lt;p&gt;dataProvider: &lt;strong&gt;${this.dataProvider || &quot;null&quot;}&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;testAttribute: &lt;strong&gt;${this.testAttribute || &quot;null&quot;}&lt;/strong&gt;&lt;/p&gt; &lt;/section&gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"This decorator is particularly useful for:\\n","files":{"docs/_decorators/ancestor-attribute.md":{"title":"@ancestorAttribute","hashes":{"use-cases":{"count":1,"title":"Use cases","type":"paragraph"}}},"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"use-cases":{"count":1,"title":"Use cases","type":"paragraph"}}},"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"use-cases":{"count":1,"title":"Use cases","type":"paragraph"}}}}},{"search":"@autoSubscribe","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"autosubscribe":{"count":1,"title":"","type":"page"}}}}},{"search":"Legacy: prefer @subscribe + DataProviderKey. Examples below may still show PublisherManager for existing codebases.\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"autosubscribe":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The @autoSubscribe decorator automatically detects which publishers are accessed within a method and subscribes to them. When any of these publishers change, the method is automatically re-executed.\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"autosubscribe":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"This decorator wraps a method to track which publishers are accessed during its execution. It then subscribes to all accessed publishers, and when any of them change, the method is re-executed. This provides automatic reactivity without manually managing subscriptions.\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":" @state() displayText: string = &quot;&quot;;\\n @state() computedValue: number = 0;\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @autoSubscribe()\\n updateDisplay() {\\n const value1 = PublisherManager.get(&quot;autoValue1&quot;).get() || 0;\\n const value2 = PublisherManager.get(&quot;autoValue2&quot;).get() || 0;\\n this.computedValue = value1 + value2;\\n this.displayText = ${value1} + ${value2} = ${this.computedValue};\\n }\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" render() {\\n return html &lt;p&gt;&lt;strong&gt;${this.displayText}&lt;/strong&gt;&lt;/p&gt; &lt;div&gt; &lt;sonic-button @click=${() =&gt; this.randomizeValue(&quot;autoValue1&quot;)}&gt; Randomize Value 1 &lt;/sonic-button&gt; &lt;sonic-button @click=${() =&gt; this.randomizeValue(&quot;autoValue2&quot;)}&gt; Randomize Value 2 &lt;/sonic-button&gt; &lt;/div&gt; ;\\n }\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" randomizeValue(publisherId: string) {\\n const value = PublisherManager.get(publisherId);\\n value.set(Math.floor(Math.random() * 100));\\n }\\n}\\n\\n\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" }\\n}\\n \\n\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"example-with-render-method":{"count":1,"title":"Example with render method","type":"paragraph"}}},"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"},"example-with-nested-paths":{"count":1,"title":"Example with nested paths","type":"paragraph"}}}}},{"search":"@customElement(&quot;shopping-cart&quot;)\\nexport class ShoppingCart extends LitElement {\\n items: any[] = [];\\n total: number = 0;\\n discount: number = 0;\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" @autoSubscribe()\\n calculateTotal() {\\n const cart = PublisherManager.get(&quot;cart&quot;);\\n const promo = PublisherManager.get(&quot;promo&quot;);\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" }\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}},"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" connectedCallback() {\\n super.connectedCallback();\\n this.calculateTotal();\\n }\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" render() {\\n return html &lt;div class=&quot;cart&quot;&gt; &lt;h2&gt;Shopping Cart&lt;/h2&gt; ${this.items.map(item =&gt; html\\n ${item.name} x${item.quantity} - ${item.price}€\\n )} &lt;div class=&quot;total&quot;&gt; &lt;p&gt;Subtotal: ${this.total + this.discount}€&lt;/p&gt; &lt;p&gt;Discount: -${this.discount}€&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Total: ${this.total}€&lt;/strong&gt;&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; ;\\n }\\n}\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":"// When you update the publishers, calculateTotal is automatically called:\\nconst cart = PublisherManager.get(&quot;cart&quot;);\\ncart.items.set([\\n { name: &quot;Product 1&quot;, price: 10, quantity: 2 },\\n { name: &quot;Product 2&quot;, price: 15, quantity: 1 }\\n]);\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":"const promo = PublisherManager.get(&quot;promo&quot;);\\npromo.code.set(&quot;SAVE10&quot;);\\n// calculateTotal will be automatically called and the UI will update\\n \\n\\n","files":{"docs/_decorators/auto-subscribe.md":{"title":"@autoSubscribe","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":"@bind","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"bind":{"count":1,"title":"","type":"page"}}}}},{"search":"Binds a class property to a path in a publisher. The property updates when publisher data changes.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"bind":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"For Lit re-renders, also add @state() on the same property.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"bind":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"See also: @subscribe, @handle, @publish, @get.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"bind":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The decorator subscribes to the DataProvider store using dot notation or a DataProviderKey. Updates flow into the decorated property (Data flow).\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":" @bind(&quot;demoData.firstName&quot;)\\n @state()\\n firstName = &quot;&quot;;\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":" @bind(&quot;demoData.lastName&quot;)\\n @state()\\n lastName: string = &quot;&quot;;\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":" @bind(&quot;demoData.count&quot;)\\n @state()\\n count: number = 0;\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":" render() {\\n return //......\\n }\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":" updateData() {\\n set(demoDataKey, { ...get(demoDataKey), count: get(demoDataKey).count + 1 });\\n // see demo-bind in src/docs/example/decorators-demo-bind-demos.ts\\n const randomIndex = Math.floor(Math.random() * demoUsers.get().length);\\n const randomUser = demoUsers.get()[randomIndex];\\n demoData.set({\\n firstName: randomUser.firstName,\\n lastName: randomUser.lastName,\\n count: (demoData.count.get() || 0) + 1,\\n });\\n }\\n}\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":"@bind accepts either a string path (legacy) or a DataProviderKey&lt;T&gt;. The property type must match T. Use reflect: true to push local writes back to the publisher (see below). See DataProviderKey.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"dataproviderkey-strict-typing":{"count":1,"title":"`DataProviderKey` (strict typing)","type":"paragraph"}}}}},{"search":"type Data = { count: number };\\nconst dataKey = new DataProviderKey(&quot;data&quot;);\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"dataproviderkey-strict-typing":{"count":1,"title":"`DataProviderKey` (strict typing)","type":"paragraph"}}}}},{"search":"@bind(dataKey.count, { reflect: true })\\n@state()\\ncount: number = 0;\\n \\n\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"dataproviderkey-strict-typing":{"count":1,"title":"`DataProviderKey` (strict typing)","type":"paragraph"}}}}},{"search":"Two-way sync: reads from the publisher and local assignments call publisher.set(...). An internal guard avoids infinite loops.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"reflect-reflect-true":{"count":1,"title":"Reflect (`reflect: true`)","type":"paragraph"}}}}},{"search":" @bind(&quot;bindReflectDemo.count&quot;, { reflect: true })\\n @state()\\n withReflect: number = 0;\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"reflect-reflect-true":{"count":1,"title":"Reflect (`reflect: true`)","type":"paragraph"}}}}},{"search":" @bind(&quot;bindReflectDemo.count&quot;)\\n @state()\\n withoutReflect: number = 0;\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"reflect-reflect-true":{"count":1,"title":"Reflect (`reflect: true`)","type":"paragraph"}}}}},{"search":" render() {\\n return html &lt;div class=&quot;mb-3&quot;&gt; from publisher : ${sub(&quot;bindReflectDemo.count&quot;) || 0} &lt;br /&gt; from component with reflect : ${this.withReflect || 0} &lt;br /&gt; from component without reflect : ${this.withoutReflect || 0} &lt;/div&gt; &lt;sonic-button @click=${() =&gt; this.withReflect++} &gt;Increment with reflect&lt;/sonic-button &gt; &lt;sonic-button @click=${() =&gt; this.withoutReflect++} &gt;Increment without reflect&lt;/sonic-button &gt; ;\\n }\\n}\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"reflect-reflect-true":{"count":1,"title":"Reflect (`reflect: true`)","type":"paragraph"}}}}},{"search":"Use ${prop} or ${this.prop} inside a normal string literal (not a JS template literal with backticks). @bind re-subscribes when a reactive dependency changes.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"dynamic-paths":{"count":1,"title":"Dynamic paths","type":"paragraph"}}}}},{"search":"Properties referenced in the pattern must be reactive (@property, etc.) or you must call requestUpdate manually.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"dynamic-paths":{"count":1,"title":"Dynamic paths","type":"paragraph"}}}}},{"search":"Works with any component that has the usual DOM lifecycle (LitElement, Subscriber mixin, etc.).\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"notes":{"count":1,"title":"Notes","type":"paragraph"}}}}},{"search":"Shared data: Sharing data.\\n","files":{"docs/_decorators/bind.md":{"title":"@bind","hashes":{"notes":{"count":1,"title":"Notes","type":"paragraph"}}}}},{"search":"@get","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"get":{"count":1,"title":"","type":"page"}}}}},{"search":"Loads data through API.getDetailed. The decorated property is ApiGetResult&lt;T&gt; | null: request, response (or null for dataProvider(...) resolution without HTTP), and typed result.\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"get":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Pass an Endpoint&lt;T&gt; as the first argument. Import get and ApiGetResult from @supersoniks/concorde/decorators, and Endpoint from @supersoniks/concorde/utils/endpoint.\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"get":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Same demo service as sonic-queue (/docs-mock-api/geo/). Publisher setup lives in decorators-demo-geo.ts and decorators-demo-subscribe-publish-get-demos.ts.\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"minimal-example":{"count":1,"title":"Minimal example","type":"paragraph"}}}}},{"search":"Dynamic config and endpoint path (demo-api-get-configuration-key in doc sources):\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"live-demos":{"count":1,"title":"Live demos","type":"paragraph"}}}}},{"search":"Scoped @get with @publish / @subscribe on the payload (see @publish and @subscribe) — wrap under an ancestor with serviceURL=&quot;/docs-mock-api/geo/&quot;:\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"live-demos":{"count":1,"title":"Live demos","type":"paragraph"}}}}},{"search":"Stale responses are ignored if the path or generation changed before the request finished.\\n","files":{"docs/_decorators/get.md":{"title":"@get","hashes":{"live-demos":{"count":1,"title":"Live demos","type":"paragraph"}}}}},{"search":"@handle","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"handle":{"count":1,"title":"","type":"page"}}}}},{"search":"Typed callback on one or more DataProviderKey&lt;T&gt; paths: invokes the decorated method when a publisher assigns a value (calculations, side effects, updating other @state properties, etc.).\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"handle":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Unlike @subscribe, nothing is bound to the decorated member — only your method runs. @handle is typed and accepts up to 3 keys plus an optional trailing HandleOptions object. It supersedes the string-based @onAssign.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"handle":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"By default the method is called on every assignment, even when the value is null / undefined. Use the options below to restrict that.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"handle":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"@customElement(&quot;demo-handle&quot;)\\nexport class DemoHandle extends LitElement {\\n @state() doubled = 0;\\n @state() lastUpdate = &quot;&quot;;\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @handle(demoDataKey.count)\\n onCountChange(count: number) {\\n this.doubled = count * 2;\\n this.lastUpdate = new Date().toLocaleTimeString();\\n }\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" incrementCount() {\\n const data = get(demoDataKey);\\n set(demoDataKey, { ...data, count: data.count + 1 });\\n }\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" render() {\\n return html &amp;lt;p&amp;gt;Doubled count: ${this.doubled}&amp;lt;/p&amp;gt; &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Last update: ${this.lastUpdate}&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt; &amp;lt;sonic-button @click=${this.incrementCount}&amp;gt;Increment&amp;lt;/sonic-button&amp;gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"Placeholders in DataProviderKey resolve from the host component’s properties (same rules as @bind / @subscribe).\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"dynamic-path":{"count":1,"title":"Dynamic path","type":"paragraph"}}}}},{"search":"@customElement(&quot;demo-handle-dynamic&quot;)\\nexport class DemoHandleDynamic extends LitElement {\\n @property({ type: Number })\\n userIndex = 0;\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"dynamic-path":{"count":1,"title":"Dynamic path","type":"paragraph"}}}}},{"search":" @state() displayName = &quot;&quot;;\\n @state() lastUpdate = &quot;&quot;;\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"dynamic-path":{"count":1,"title":"Dynamic path","type":"paragraph"}}}}},{"search":" @handle(new DataProviderKey&lt;User, { userIndex: number }&gt;(&quot;demoUsers.${userIndex}&quot;))\\n onUserAssigned(user: User) {\\n this.displayName = ${user.firstName} ${user.lastName};\\n this.lastUpdate = new Date().toLocaleTimeString();\\n }\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"dynamic-path":{"count":1,"title":"Dynamic path","type":"paragraph"}}}}},{"search":" render() {\\n return html...;\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"dynamic-path":{"count":1,"title":"Dynamic path","type":"paragraph"}}}}},{"search":"@handle accepts up to 3 keys; the method receives one strongly-typed argument per key, in order. Each assignment triggers the method, so make your method safe against partial values (or use waitForAllDefined, see below).\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"multiple-paths":{"count":1,"title":"Multiple paths","type":"paragraph"}}}}},{"search":"@customElement(&quot;demo-handle-multi&quot;)\\nexport class DemoHandleMulti extends LitElement {\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"multiple-paths":{"count":1,"title":"Multiple paths","type":"paragraph"}}}}},{"search":" // show: boolean, isIdle: boolean — fully typed from the keys\\n @handle(config.onInactivity.stillHere.show, idle.isIdle)\\n onInactivity(show: boolean, isIdle: boolean) {\\n if (show === true &amp;&amp; isIdle === true) this.openModal();\\n else this.closeModal();\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"multiple-paths":{"count":1,"title":"Multiple paths","type":"paragraph"}}}}},{"search":"Pass an options object as the last argument. The names map to real situations seen in the apps.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"options-handleoptions":{"count":1,"title":"Options (`HandleOptions`)","type":"paragraph"}}}}},{"search":"Only call the method once all watched keys are defined (non null / undefined). This reproduces the historical @onAssign semantics — use it when the logic only makes sense with every source ready (e.g. building a date from date + timeZone + direction).\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"waitforalldefined":{"count":1,"title":"`waitForAllDefined`","type":"paragraph"}}}}},{"search":"Do not call the method when a received value belongs to one of the listed categories (the Skip enum). Each entry is a named category — not a value — so there is no value/pattern ambiguity (e.g. {} is Skip.EmptyObject, an explicit &quot;empty object&quot; category, never a value comparison).\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"skip":{"count":1,"title":"`skip`","type":"paragraph"}}}}},{"search":"Useful when a not-yet-initialized publisher emits {} as a &quot;loading&quot; state. For a specific value (e.g. a particular string), guard inside the method instead.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"skip":{"count":1,"title":"`skip`","type":"paragraph"}}}}},{"search":"Options can be combined, e.g. @handle(a, b, { waitForAllDefined: true, skip: [Skip.Nullish] }). For any arbitrary validation on a specific value, just guard inside the method (if (!isValid(v)) return;) — that is exactly what an accept-style predicate would do, since @handle only runs your method.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"skip":{"count":1,"title":"`skip`","type":"paragraph"}}}}},{"search":"See also DataProviderKey.\\n","files":{"docs/_decorators/handle.md":{"title":"@handle","hashes":{"highlights":{"count":1,"title":"Highlights","type":"paragraph"}}}}},{"search":"@onAssign","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"onassign":{"count":1,"title":"","type":"page"}}}}},{"search":"New apps: use @handle with DataProviderKey (Data flow). @onAssign uses untyped string paths; it remains documented for existing codebases — see Migrating to @handle below.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"onassign":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The @onAssign decorator allows you to execute a method when one or more publishers are updated. The method is called only when all specified publishers have been assigned values.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"onassign":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"For a typed equivalent (recommended), use @handle.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"onassign":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"This decorator subscribes to one or more publishers by string path (legacy). When all specified publishers have been assigned values (via set), the decorated method is called with all the values as arguments. Prefer @handle + DataProviderKey and get / set from Data flow.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"This is particularly useful when you need to wait for multiple data sources to be ready before executing logic.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":" @state() userWithSettings: any = null;\\n @state() isReady: boolean = false;\\n @state() lastUpdate: string = &quot;&quot;;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @onAssign(&quot;demoUser&quot;, &quot;demoUserSettings&quot;)\\n handleDataReady(user: any, settings: any) {\\n this.isReady = Object.keys(user).length &gt; 0 &amp;&amp; Object.keys(settings).length &gt; 0;\\n this.userWithSettings = { ...user, ...settings };\\n this.lastUpdate = new Date().toLocaleTimeString();\\n this.requestUpdate();\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" render() {\\n const { name, email, theme, language } = this.userWithSettings;\\n return //...\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" updateData() {\\n const user = PublisherManager.get(&quot;demoUser&quot;);\\n const userSettings = PublisherManager.get(&quot;demoUserSettings&quot;);\\n const userNumber = Math.floor(Math.random() * 100);\\n user.set({\\n name: User n°${userNumber},\\n email: user-${userNumber}@example.com,\\n });\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @onAssign(&quot;store.product&quot;, &quot;store.inventory&quot;)\\n handleProductData(product: any, inventory: any) {\\n this.product = product;\\n this.inventory = inventory;\\n this.requestUpdate();\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"example-with-nested-paths":{"count":1,"title":"Example with nested paths","type":"paragraph"}}}}},{"search":" render() {\\n if (!this.product) return html&lt;div&gt;Loading...&lt;/div&gt;;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"example-with-nested-paths":{"count":1,"title":"Example with nested paths","type":"paragraph"}}}}},{"search":"The path uses dot notation to navigate through the publisher structure:\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"path-syntax":{"count":1,"title":"Path syntax","type":"paragraph"}}}}},{"search":"You can now build the paths dynamically by referencing the host class properties inside the strings passed to @onAssign. Two placeholder syntaxes are supported:\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":"Each placeholder is replaced at runtime with the current value of the corresponding property. @onAssign automatically watches those properties and:\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" @property({ type: String })\\n dataProvider: &quot;demoUsers&quot; | &quot;demoUsersAlt&quot; = &quot;demoUsers&quot;;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" @property({ type: Number })\\n userIndex: number = 0;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" @state() user: any = null;\\n @state() userSettings: any = null;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" @onAssign(&quot;${dataProvider}.${userIndex}&quot;, &quot;${dataProvider}Settings.${userIndex}&quot;)\\n handleUserDataReady(user: any, settings: any) {\\n this.user = user;\\n this.userSettings = settings;\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" updateUserIndex(e: Event) {\\n this.userIndex = parseInt((e.target as HTMLInputElement).value);\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" updateDataProvider(e: Event) {\\n this.dataProvider = (e.target as HTMLSelectElement).value as\\n | &quot;demoUsers&quot;\\n | &quot;demoUsersAlt&quot;;\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" updateCurrentUserData() {\\n const usersPublisher = PublisherManager.get(this.dataProvider);\\n const settingsPublisher = PublisherManager.get(\\n ${this.dataProvider}Settings\\n );\\n const userPublisher = Objects.traverse(\\n usersPublisher,\\n [String(this.userIndex)]\\n ) as PublisherProxy;\\n const settingPublisher = Objects.traverse(\\n settingsPublisher,\\n [String(this.userIndex)]\\n ) as PublisherProxy;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":" render() {\\n return html &amp;lt;div class=&quot;flex flex-col gap-2&quot;&amp;gt; &amp;lt;sonic-select label=&quot;Users set&quot; @change=${this.updateDataProvider}&amp;gt; &amp;lt;option value=&quot;demoUsers&quot;&amp;gt;First set of users&amp;lt;/option&amp;gt; &amp;lt;option value=&quot;demoUsersAlt&quot;&amp;gt;Second set of users&amp;lt;/option&amp;gt; &amp;lt;/sonic-select&amp;gt; &amp;lt;sonic-input type=&quot;number&quot; .value=${this.userIndex} @input=${this.updateUserIndex} min=&quot;0&quot; max=&quot;9&quot; label=&quot;Index&quot; class=&quot;block&quot; &amp;gt;&amp;lt;/sonic-input&amp;gt; &amp;lt;sonic-button @click=${this.updateCurrentUserData}&amp;gt; Update current user data &amp;lt;/sonic-button&amp;gt; &amp;lt;div class=&quot;flex flex-col gap-2 border p-2&quot;&amp;gt; &amp;lt;div&amp;gt; &amp;lt;sonic-icon name=&quot;user&quot; library=&quot;heroicons&quot;&amp;gt;&amp;lt;/sonic-icon&amp;gt; ${this.user?.firstName} ${this.user?.lastName} &amp;lt;/div&amp;gt; &amp;lt;div&amp;gt; &amp;lt;sonic-icon name=&quot;envelope&quot; library=&quot;heroicons&quot;&amp;gt;&amp;lt;/sonic-icon&amp;gt; ${this.user?.email} &amp;lt;/div&amp;gt; &amp;lt;div&amp;gt; Theme: ${this.userSettings?.theme} | Language: ${this.userSettings?.language} &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":"⚠️ Use classic string literals: @onAssign(&quot;${dataProvider}.${profileId}&quot;, &quot;settings.${profileId}&quot;). Do not use template literals (backticks), otherwise JavaScript would try to interpolate the value immediately.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":"Additional constraints:\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"dynamic-path-driven-by-class-properties":{"count":1,"title":"Dynamic path driven by class properties","type":"paragraph"}}}}},{"search":"@customElement(&quot;order-summary&quot;)\\nexport class OrderSummary extends LitElement {\\n order: any = null;\\n customer: any = null;\\n shipping: any = null;\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" @onAssign(&quot;orderData&quot;, &quot;customerData&quot;, &quot;shippingData&quot;)\\n handleOrderReady(order: any, customer: any, shipping: any) {\\n this.order = order;\\n this.customer = customer;\\n this.shipping = shipping;\\n this.requestUpdate();\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" render() {\\n if (!this.order || !this.customer || !this.shipping) {\\n return html&lt;div&gt;Loading order details...&lt;/div&gt;;\\n }\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":" }\\n}\\n// Somewhere in your code, update the publishers:\\nconst orderPub = PublisherManager.get(&quot;orderData&quot;);\\nconst customerPub = PublisherManager.get(&quot;customerData&quot;);\\nconst shippingPub = PublisherManager.get(&quot;shippingData&quot;);\\n// The method will be called only when all three are set:\\norderPub.set({ id: &quot;123&quot;, total: 99.99 });\\ncustomerPub.set({ name: &quot;John Doe&quot;, email: &quot;john@example.com&quot; });\\nshippingPub.set({ address: &quot;123 Main St&quot; });\\n// handleOrderReady will be called with all three values\\n \\n\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"complete-example":{"count":1,"title":"Complete example","type":"paragraph"}}}}},{"search":"@handle is the typed successor of @onAssign. The key behavioral difference: @onAssign waits for all values to be defined before calling the method, whereas @handle calls it on every assignment by default. Use the waitForAllDefined option to keep the old semantics.\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"migrating-to-handle":{"count":1,"title":"Migrating to @handle","type":"paragraph"}}}}},{"search":"// After — same &quot;wait for everything&quot; behavior, but typed\\nconst user = new DataProviderKey&lt;User&gt;(&quot;demoUser&quot;);\\nconst settings = new DataProviderKey&lt;Settings&gt;(&quot;demoUserSettings&quot;);\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"equivalent-semantics-waitforalldefined":{"count":1,"title":"Equivalent semantics (`waitForAllDefined`)","type":"paragraph"}}}}},{"search":"@handle(user, settings, { waitForAllDefined: true })\\nhandleDataReady(user: User, settings: Settings) { /* ... */ }\\n \\n\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"equivalent-semantics-waitforalldefined":{"count":1,"title":"Equivalent semantics (`waitForAllDefined`)","type":"paragraph"}}}}},{"search":"// After\\nconst settings = new DataProviderKey&lt;AppSettings&gt;(&quot;settings&quot;);\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"single-path":{"count":1,"title":"Single path","type":"paragraph"}}}}},{"search":"@handle(settings.modules.logs_route.enabled)\\nonLogRoute(value: boolean) { /* ... */ }\\n \\n\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"single-path":{"count":1,"title":"Single path","type":"paragraph"}}}}},{"search":"@handle is capped at 3 keys. For the rare case of 4 or more publishers, keep @onAssign for now, or split the logic into several @handle methods that each store their value and call a shared method (guarding against partial values).\\n","files":{"docs/_decorators/on-assign.md":{"title":"@onAssign","hashes":{"4-paths":{"count":1,"title":"4+ paths","type":"paragraph"}}}}},{"search":"@publish","files":{"docs/_decorators/publish.md":{"title":"@publish","hashes":{"publish":{"count":1,"title":"","type":"page"}}}}},{"search":"Write-only binding: assigning to the property publishes to the DataProviderKey path. No read subscription (inverse of @subscribe).\\n","files":{"docs/_decorators/publish.md":{"title":"@publish","hashes":{"publish":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Similar to the “reflect” half of @bind without listening to the publisher.\\n","files":{"docs/_decorators/publish.md":{"title":"@publish","hashes":{"publish":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Dynamic paths use the same placeholder rules as @bind / @subscribe.\\n","files":{"docs/_decorators/publish.md":{"title":"@publish","hashes":{"example":{"count":1,"title":"Example","type":"paragraph"}}}}},{"search":"@subscribe","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"subscribe":{"count":1,"title":"","type":"page"}}}}},{"search":"Keeps a Lit property in sync with a read-only slice of the DataProvider store. You pass a DataProviderKey; when that path changes, the property updates and the component re-renders.\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"subscribe":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Typical setup (same idea as My first component):\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"subscribe":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"For writing back to the store from component state, use @publish. In templates, the same paths work with sub().\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"subscribe":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"type Data = { count: number };\\nconst dataKey = new DataProviderKey&lt;Data&gt;(&quot;data&quot;);\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"import":{"count":1,"title":"Import","type":"paragraph"}}}}},{"search":"@subscribe(dataKey.count)\\n@state()\\ncount = 0;\\n \\n\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"import":{"count":1,"title":"Import","type":"paragraph"}}}}},{"search":"The key path is fixed. The property type must match T at that segment.\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"static-path":{"count":1,"title":"Static path","type":"paragraph"}}}}},{"search":"@subscribe(cartKey)\\n@state()\\ncart: { items: string[] } | null = null;\\n \\n\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"static-path":{"count":1,"title":"Static path","type":"paragraph"}}}}},{"search":"Placeholders ${prop} in the key string are resolved from properties on the same component. Declare them in the key’s second generic so TypeScript expects them on the host:\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"dynamic-path-and-scope":{"count":1,"title":"Dynamic path and scope","type":"paragraph"}}}}},{"search":"@subscribe(new DataProviderKey&lt;User, { userIndex: number }&gt;(&quot;demoUsers.${userIndex}&quot;))\\n@state()\\nuser: User | null = null;\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"dynamic-path-and-scope":{"count":1,"title":"Dynamic path and scope","type":"paragraph"}}}}},{"search":"@property({ type: Number }) userIndex = 0;\\n \\n\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"dynamic-path-and-scope":{"count":1,"title":"Dynamic path and scope","type":"paragraph"}}}}},{"search":"When userIndex changes, @subscribe re-resolves the path and refreshes user.\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"dynamic-path-and-scope":{"count":1,"title":"Dynamic path and scope","type":"paragraph"}}}}},{"search":"List items (and wrappers like &lt;div dataProvider=&quot;…&quot;&gt;) set which branch the child reads. Pattern from the tutorial:\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"row--ancestor-scope":{"count":1,"title":"Row / ancestor scope","type":"paragraph"}}}}},{"search":"@ancestorAttribute(&quot;dataProvider&quot;)\\ndataProvider: string | null = null;\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"row--ancestor-scope":{"count":1,"title":"Row / ancestor scope","type":"paragraph"}}}}},{"search":"@subscribe(rowKey)\\n@state()\\nuser: User | null = null;\\n \\n\\n","files":{"docs/_decorators/subscribe.md":{"title":"@subscribe","hashes":{"row--ancestor-scope":{"count":1,"title":"Row / ancestor scope","type":"paragraph"}}}}},{"search":"@awaitConnectedAncestors and @dispatchConnectedEvent","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"awaitconnectedancestors-and-dispatchconnectedevent":{"count":1,"title":"","type":"page"}}}}},{"search":"The @awaitConnectedAncestors and @dispatchConnectedEvent decorators delay a web component&#39;s initialization until its matching ancestors have executed their connectedCallback. This is when contextual elements (publisher, dataProvider, etc.) are configured.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"awaitconnectedancestors-and-dispatchconnectedevent":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"When a child component attaches to the DOM, its ancestors may not yet be initialized (especially if custom element definitions are loaded asynchronously). The @awaitConnectedAncestors decorator delays the component&#39;s connectedCallback until all ancestors matching the provided CSS selectors have executed their connectedCallback.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"The @dispatchConnectedEvent decorator allows ancestors to signal they are ready by dispatching the sonic-connected event at the end of their connectedCallback. The event bubbles, so it can be listened to from anywhere (e.g. document.addEventListener(CONNECTED, handler)).\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"Ancestors that are not web components (no hyphen in tag name) are considered connected by default and do not need to emit the event.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"An ancestor container decorated with @dispatchConnectedEvent() signals when it is ready. A child component decorated with @awaitConnectedAncestors(&quot;demo-wait-ancestor-container[dataProvider]&quot;) waits for this container to be initialized before initializing itself. Parameters are CSS selectors (element.matches()).\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"The parent is registered via customElements.define() (vanilla JS) rather than @customElement, so it can be defined later—e.g. when the user clicks a button. This demonstrates the child waiting until the parent exists.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"// Parent: registered later via customElements.define(), not @customElement\\n@dispatchConnectedEvent()\\nexport class DemoWaitAncestorContainer extends LitElement {\\n render() {\\n return html&lt;slot&gt;&lt;/slot&gt;;\\n }\\n}\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"// Child: waits for parent before initializing\\n@customElement(&quot;demo-wait-ancestor-value&quot;)\\n@awaitConnectedAncestors(&quot;demo-wait-ancestor-container[dataProvider]&quot;)\\nexport class DemoWaitAncestorValue extends LitElement {\\n @ancestorAttribute(&quot;dataProvider&quot;)\\n dataProvider: string | null = null;\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" @state() initializedAt: string = &quot;&quot;;\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" connectedCallback() {\\n super.connectedCallback();\\n this.initializedAt = new Date().toISOString();\\n }\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":" render() {\\n return html &lt;p&gt;DataProvider from ancestor: &lt;strong&gt;${this.dataProvider || &quot;—&quot;}&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Initialized at: ${this.initializedAt || &quot;(waiting for parent…)&quot;}&lt;/p&gt; ;\\n }\\n}\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"// Demo section: register parent via customElements.define() when user clicks\\n@customElement(&quot;demo-wait-ancestors-section&quot;)\\nexport class DemoWaitAncestorsSection extends LitElement {\\n registerParent() {\\n if (!customElements.get(&quot;demo-wait-ancestor-container&quot;)) {\\n customElements.define(&quot;demo-wait-ancestor-container&quot;, DemoWaitAncestorContainer);\\n }\\n }\\n render() {\\n return html &lt;sonic-button @click=${this.registerParent}&gt;Register parent component&lt;/sonic-button&gt; &lt;demo-wait-ancestor-container dataProvider=&quot;waitAncestorDemo&quot;&gt; &lt;demo-wait-ancestor-value&gt;&lt;/demo-wait-ancestor-value&gt; &lt;/demo-wait-ancestor-container&gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"basic-example":{"count":1,"title":"Basic example","type":"paragraph"}}}}},{"search":"The child waits for all specified ancestors. Register outer first, then inner — the child initializes only when both are ready.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"multiple-ancestors":{"count":1,"title":"Multiple ancestors","type":"paragraph"}}}}},{"search":"When the parent is defined at load and already in the DOM, the child initializes immediately (no delay).\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"ancestors-already-connected":{"count":1,"title":"Ancestors already connected","type":"paragraph"}}}}},{"search":"Static (both in DOM from start):\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"ancestors-already-connected":{"count":1,"title":"Ancestors already connected","type":"paragraph"}}}}},{"search":"Dynamic (child added on button click):\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"ancestors-already-connected":{"count":1,"title":"Ancestors already connected","type":"paragraph"}}}}},{"search":"Parameters are CSS selectors matched via element.matches() — e.g. &quot;sonic-subscriber&quot;, &quot;sonic-subscriber[dataProvider]&quot;, &quot;.my-container&quot;, or multiple: &quot;sonic-subscriber&quot;, &quot;sonic-sdui&quot;.\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"css-selector-support":{"count":1,"title":"CSS selector support","type":"paragraph"}}}}},{"search":"These decorators are particularly useful for:\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"use-cases":{"count":1,"title":"Use cases","type":"paragraph"}}}}},{"search":"The sonic-connected event bubbles, so you can listen to it from anywhere:\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"listening-to-the-connected-event":{"count":1,"title":"Listening to the connected event","type":"paragraph"}}}}},{"search":"someConnectable.addEventListener(CONNECTED, (e) =&gt; {\\n console.log(&quot;Component connected:&quot;, e.target);\\n});\\n \\n\\n","files":{"docs/_decorators/wait-for-ancestors.md":{"title":"@awaitConnectedAncestors and @dispatchConnectedEvent","hashes":{"listening-to-the-connected-event":{"count":1,"title":"Listening to the connected event","type":"paragraph"}}}}},{"search":"sub()","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"sub":{"count":1,"title":"","type":"page"}}}}},{"search":"Read-only Lit directive: displays the current DataProvider value and updates whenever it is assigned.\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"sub":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"const counterKey = new DataProviderKey&lt;{ count: number }&gt;(&quot;myCounter&quot;);\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dataproviderkey-static":{"count":1,"title":"DataProviderKey (static)","type":"paragraph"}}}}},{"search":"render() {\\n return html&amp;lt;p&amp;gt;${sub(counterKey.count)}&amp;lt;/p&amp;gt;;\\n}\\n \\n\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dataproviderkey-static":{"count":1,"title":"DataProviderKey (static)","type":"paragraph"}}}}},{"search":"Like @subscribe: the path is resolved on the template host component; the directive re-subscribes when observed props change.\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dynamic-dataproviderkey-prop":{"count":1,"title":"Dynamic DataProviderKey (`${prop}`)","type":"paragraph"}}}}},{"search":"type User = { firstName: string; lastName: string; email: string };\\nconst userKey = new DataProviderKey&lt;User, { userIndex: number }&gt;(\\n &quot;demoUsers.${userIndex}&quot;,\\n);\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dynamic-dataproviderkey-prop":{"count":1,"title":"Dynamic DataProviderKey (`${prop}`)","type":"paragraph"}}}}},{"search":"@customElement(&quot;demo-sub-dynamic&quot;)\\nexport class DemoSubDynamic extends LitElement {\\n @property({ type: Number }) userIndex = 0;\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dynamic-dataproviderkey-prop":{"count":1,"title":"Dynamic DataProviderKey (`${prop}`)","type":"paragraph"}}}}},{"search":" render() {\\n return html &amp;lt;p&amp;gt;${sub(userKey.email)}&amp;lt;/p&amp;gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"dynamic-dataproviderkey-prop":{"count":1,"title":"Dynamic DataProviderKey (`${prop}`)","type":"paragraph"}}}}},{"search":"Do not replace sub(path) with get(path) in a template: get returns a one-time snapshot.\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"sub-vs-get--set--dp":{"count":1,"title":"sub() vs get() / set() / dp()","type":"paragraph"}}}}},{"search":"See DataProviderKey, @subscribe, and the concorde-get-set-dp migration skill.\\n","files":{"docs/_directives/sub.md":{"title":"sub()","hashes":{"sub-vs-get--set--dp":{"count":1,"title":"sub() vs get() / set() / dp()","type":"paragraph"}}}}},{"search":"AI agents (skills & AGENTS.md)","files":{"docs/_getting-started/ai-agents.md":{"title":"AI agents (skills & AGENTS.md)","hashes":{"ai-agents-skills--agentsmd":{"count":1,"title":"","type":"page"}}}}},{"search":"Concorde ships skills, rules, and a root AGENTS.md so Cursor, JetBrains AI Assistant, and other coding agents follow framework patterns (DataProvider, decorators, short imports, scope, theme, migrations).\\n","files":{"docs/_getting-started/ai-agents.md":{"title":"AI agents (skills & AGENTS.md)","hashes":{"ai-agents-skills--agentsmd":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"On a starter project, run yarn ai:sync after install. On a manual / brownfield project, install Concorde first, then use ai-init below.\\n","files":{"docs/_getting-started/ai-agents.md":{"title":"AI agents (skills & AGENTS.md)","hashes":{"ai-agents-skills--agentsmd":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"node node_modules/@supersoniks/concorde/scripts/ai-init.mjs\\n \\n\\n","files":{"docs/_getting-started/ai-agents.md":{"title":"AI agents (skills & AGENTS.md)","hashes":{"manual--existing-project":{"count":1,"title":"Manual / existing project","type":"paragraph"}}}}},{"search":"Source files in the npm package: node_modules/@supersoniks/concorde/ai/ (see also ai/README.md in the Concorde repository).\\n","files":{"docs/_getting-started/ai-agents.md":{"title":"AI agents (skills & AGENTS.md)","hashes":{"workflow":{"count":1,"title":"Workflow","type":"paragraph"}}}}},{"search":"Manual installation (Vite)","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"manual-installation-vite":{"count":1,"title":"","type":"page"}}}}},{"search":"Legacy — for brownfield apps or custom stacks. New projects should use the starter.\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"manual-installation-vite":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Tailwind configuration is not covered here yet.\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"brand-new-vite-project":{"count":1,"title":"Brand New Vite Project","type":"paragraph"}}}}},{"search":"Using Lit with TypeScript requires the following configuration in the &quot;compilerOptions&quot; section of the tsconfig.json file:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"creating-the-project":{"count":1,"title":"Creating the Project","type":"paragraph"}}}}},{"search":"Navigate to the project folder created and perform the installation:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"installing-concorde":{"count":1,"title":"Installing Concorde","type":"paragraph"}}}}},{"search":"Agent skills (AGENTS.md, Cursor / JetBrains): see AI agents — run node node_modules/@supersoniks/concorde/scripts/ai-init.mjs after install.\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"installing-concorde":{"count":1,"title":"Installing Concorde","type":"paragraph"}}}}},{"search":"Shortcut imports work by default in JavaScript, but in TypeScript, they are activated by choice as they inject data into tsconfig.json. Here is the command:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"shortcut-imports":{"count":1,"title":"Shortcut Imports","type":"paragraph"}}}}},{"search":"Shortcut imports replace the actual paths with aliases as follows:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"shortcut-imports":{"count":1,"title":"Shortcut Imports","type":"paragraph"}}}}},{"search":"The original paths remain accessible. Shortcut imports are used for the examples later in this documentation.\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"shortcut-imports":{"count":1,"title":"Shortcut Imports","type":"paragraph"}}}}},{"search":"Import needed component in main.ts or wherever you want to use it:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"simple-integration-in-html":{"count":1,"title":"Simple Integration in HTML","type":"paragraph"}}}}},{"search":"Then in the render function ofyour component or in the HTML of the web page that includes the compiled JS, use the component as follows:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"simple-integration-in-html":{"count":1,"title":"Simple Integration in HTML","type":"paragraph"}}}}},{"search":"For example, create a file my-element.ts at the root:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"using-a-mixin-to-create-a-new-lit-component":{"count":1,"title":"Using a Mixin to Create a New Lit Component","type":"paragraph"}}}}},{"search":"@customElement(&quot;my-element&quot;)\\nexport class SonicComponent extends Fetcher(Subscriber(LitElement)) {\\n @property() email = &quot;&quot;;\\n @property() first_name = &quot;&quot;;\\n @property() last_name = &quot;&quot;;\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"using-a-mixin-to-create-a-new-lit-component":{"count":1,"title":"Using a Mixin to Create a New Lit Component","type":"paragraph"}}}}},{"search":" render() {\\n return html&lt;div&gt; ${this.first_name} ${this.last_name} : ${this.email} &lt;/div&gt;;\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"using-a-mixin-to-create-a-new-lit-component":{"count":1,"title":"Using a Mixin to Create a New Lit Component","type":"paragraph"}}}}},{"search":"Import component main.ts or main.js or any other component that uses it to be compiled\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"using-a-mixin-to-create-a-new-lit-component":{"count":1,"title":"Using a Mixin to Create a New Lit Component","type":"paragraph"}}}}},{"search":"In the HTML of a JS or TS component or in the HTML of the web page containing the compiled JS:\\n","files":{"docs/_getting-started/concorde-manual-install.md":{"title":"Manual installation (Vite)","hashes":{"using-a-mixin-to-create-a-new-lit-component":{"count":1,"title":"Using a Mixin to Create a New Lit Component","type":"paragraph"}}}}},{"search":"Installation","files":{"docs/_getting-started/concorde-outside.md":{"title":"Installation","hashes":{"installation":{"count":1,"title":"","type":"page"}}}}},{"search":"The following command creates a new Vite project in TypeScript mode with Tailwind and an example component to get started.\\n","files":{"docs/_getting-started/concorde-outside.md":{"title":"Installation","hashes":{"starter":{"count":1,"title":"Starter","type":"paragraph"}}}}},{"search":"Then, from the project folder:\\n","files":{"docs/_getting-started/concorde-outside.md":{"title":"Installation","hashes":{"starter":{"count":1,"title":"Starter","type":"paragraph"}}}}},{"search":"Creating components","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"creating-components":{"count":1,"title":"","type":"page"}}}}},{"search":"New app components: start with My first component and Data flow. The Subscriber mixin below is legacy.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"creating-components":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"In this document, we consider the src directory of the project as the root.\\nWe describe how we organize our components as an example, however it depends on your project.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"where-to-put-it":{"count":1,"title":"Where to put it?","type":"paragraph"}}}}},{"search":"In concorde each component is currently organized in the following directory structure (at least we try):\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"where-to-put-it":{"count":1,"title":"Where to put it?","type":"paragraph"}}}}},{"search":"You can copy example.ts from the source to the desired destination to start with.\\nThis file contains a web component in the form of a class that extends the Subscriber mixin, with a reactive property and a render function.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"starting-from-a-simple-model":{"count":1,"title":"Starting from a Simple Model","type":"paragraph"}}}}},{"search":"@customElement(&quot;sonic-example&quot;)\\nexport class SonicComponent extends Subscriber(LitElement) {\\n @property() text = &quot;Example&quot;;\\n render() {\\n return html${this.text};\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"starting-from-a-simple-model":{"count":1,"title":"Starting from a Simple Model","type":"paragraph"}}}}},{"search":"You can remove the dependency on Subscriber if automatic population of the component with external data is not required.\\nFor example, for a UI component:\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"starting-from-a-simple-model":{"count":1,"title":"Starting from a Simple Model","type":"paragraph"}}}}},{"search":"@customElement(&quot;sonic-example&quot;)\\nexport class SonicComponent extends LitElement {\\n @property() text = &quot;Example&quot;;\\n render() {\\n return html${this.text};\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"starting-from-a-simple-model":{"count":1,"title":"Starting from a Simple Model","type":"paragraph"}}}}},{"search":"Regarding Subscriber, see:\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"starting-from-a-simple-model":{"count":1,"title":"Starting from a Simple Model","type":"paragraph"}}}}},{"search":"The class name is not necessarily important. However, it is important to give it a component name prefixed with &quot;sonic&quot; (or a prefix of your own) using the dedicated metadata already present in the copied document. For example, a button component would be named as follows:\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"naming-the-component":{"count":1,"title":"Naming the Component","type":"paragraph"}}}}},{"search":"For less generic components with a specific destination, we advise to include the destination in the name.\\nFor example, for a &quot;title&quot; component in the &quot;event&quot; destination, the name would be simply:\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"naming-the-component":{"count":1,"title":"Naming the Component","type":"paragraph"}}}}},{"search":"To do this, study the functioning of https://lit.dev and also refer to Subscriber.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"creating-reactive-properties-and-modifying-the-render-function":{"count":1,"title":"Creating Reactive Properties and Modifying the Render Function","type":"paragraph"}}}}},{"search":"The HTML structure of a component should remain as simple as possible.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"html-structure-of-a-component":{"count":1,"title":"HTML Structure of a Component","type":"paragraph"}}}}},{"search":"Ideally, there should be only one additional level of elements in addition to slots.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"html-structure-of-a-component":{"count":1,"title":"HTML Structure of a Component","type":"paragraph"}}}}},{"search":"This leads to the creation of more components and thus raises questions about the hierarchical organization of files. However, this tends to atomize their roles.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"html-structure-of-a-component":{"count":1,"title":"HTML Structure of a Component","type":"paragraph"}}}}},{"search":"To compile the component, it needs to be referenced somewhere through an import statement. In particular, it is important to reference it in any component that uses it.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"referencing-it":{"count":1,"title":"Referencing It","type":"paragraph"}}}}},{"search":"In the case where it can be directly used in a page, it should also be globally referenced, especially considering the creation of specific bundles in the future.\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"referencing-it":{"count":1,"title":"Referencing It","type":"paragraph"}}}}},{"search":"Here&#39;s where we add imports based on the component&#39;s location inside concorde as an example\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"referencing-it":{"count":1,"title":"Referencing It","type":"paragraph"}}}}},{"search":"As a reminder, the component is simply integrated into the context by adding a tag with the component&#39;s name, for example:\\n","files":{"docs/_getting-started/create-a-component.md":{"title":"Creating components","hashes":{"using-it":{"count":1,"title":"Using It","type":"paragraph"}}}}},{"search":"My first component","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"my-first-component":{"count":1,"title":"","type":"page"}}}}},{"search":"Build a Lit user card with Tailwind and Concorde UI, then connect it to the DataProvider store: declare the data configuration (type, key, scope), and let @subscribe keep the card in sync.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"my-first-component":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Legacy approach with the Subscriber mixin: Legacy: My first subscriber.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"my-first-component":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Export Tailwind once (e.g. src/docs/tailwind.ts in this repo):\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"}}}}},{"search":"export const tailwind = css${unsafeCSS(tailwindImport)};\\n \\n\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"}}}}},{"search":"User card — plain Lit properties and UI components (no store yet):\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"}}}}},{"search":"@customElement(&quot;docs-user&quot;)\\nexport class DocsUser extends LitElement {\\n static styles = [tailwind];\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"},"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":" @property({ type: String }) first_name = &quot;&quot;;\\n @property({ type: String }) last_name = &quot;&quot;;\\n @property({ type: String }) email = &quot;&quot;;\\n @property({ type: String }) avatar = &quot;&quot;;\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"}}}}},{"search":" render() {\\n return html&amp;lt;div class=&quot;flex items-center gap-3 rounded-md p-2&quot;&amp;gt; &amp;lt;sonic-image src=${this.avatar} rounded=&quot;md&quot; ratio=&quot;1/1&quot; class=&quot;w-16&quot;&amp;gt;&amp;lt;/sonic-image&amp;gt; &amp;lt;div&amp;gt; &amp;lt;div&amp;gt;${this.first_name} &amp;lt;span class=&quot;font-bold&quot;&amp;gt;${this.last_name}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div class=&quot;text-sm text-neutral-400&quot;&amp;gt;${this.email}&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;;\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"1-lit-component--tailwind":{"count":1,"title":"1. Lit component + Tailwind","type":"paragraph"}}}}},{"search":"The card does not hard-code user fields anymore. You declare what is stored, where it lives, and which ancestor scope applies — then @subscribe mirrors that object on the component.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"2-data-configuration":{"count":1,"title":"2. Data configuration","type":"paragraph"}}}}},{"search":"DocsUserData documents the fields you expect at this scope (first name, email, avatar, …). TypeScript checks that user matches that shape.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"type--shape-of-the-data":{"count":1,"title":"Type — shape of the data","type":"paragraph"}}}}},{"search":"docsUserRowKey points at the store segment to read. The path &quot;${dataProvider}&quot; is resolved at runtime from a property on the component (see scope below).\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"key--path-in-the-dataprovider":{"count":1,"title":"Key — path in the DataProvider","type":"paragraph"}}}}},{"search":"export const docsUserRowKey = new DataProviderKey&lt;\\n DocsUserData,\\n { dataProvider: string | null }\\n&gt;(&quot;${dataProvider}&quot;);\\n \\n\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"key--path-in-the-dataprovider":{"count":1,"title":"Key — path in the DataProvider","type":"paragraph"}}}}},{"search":"The second generic ({ dataProvider: string | null }) lists what the host must expose so &quot;${dataProvider}&quot; can be resolved. See DataProviderKey.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"key--path-in-the-dataprovider":{"count":1,"title":"Key — path in the DataProvider","type":"paragraph"}}}}},{"search":"A parent sets dataProvider=${docsUserScopeAKey.path} (or a list row sets …/list-item/0). @ancestorAttribute copies that attribute onto this.dataProvider, so the key resolves to the correct branch.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"scope--which-store-segment-applies":{"count":1,"title":"Scope — which store segment applies","type":"paragraph"}}}}},{"search":"@subscribe watches docsUserRowKey and updates user when the store changes. Use @state() so Lit re-renders. The template reads this.user like any other property.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":" @ancestorAttribute(&quot;dataProvider&quot;)\\n dataProvider: string | null = null;\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":" @subscribe(docsUserRowKey)\\n @state()\\n user: DocsUserData | null = null;\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":" render() {\\n const u = this.user;\\n if (!u) return nothing;\\n return html&amp;lt;div class=&quot;flex items-center gap-3 rounded-md p-2&quot;&amp;gt; &amp;lt;sonic-image src=${u.avatar} rounded=&quot;md&quot; ratio=&quot;1/1&quot; class=&quot;w-16&quot;&amp;gt;&amp;lt;/sonic-image&amp;gt; &amp;lt;div&amp;gt; &amp;lt;div&amp;gt;${u.first_name} &amp;lt;span class=&quot;font-bold&quot;&amp;gt;${u.last_name}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div class=&quot;text-sm text-neutral-400&quot;&amp;gt;${u.email}&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;;\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":"Live code: src/docs/example/users.ts. In this repo, imports use core/… paths (short @supersoniks/concorde/… exports apply in consumer apps only).\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"subscribe--keep-the-card-in-sync":{"count":1,"title":"Subscribe — keep the card in sync","type":"paragraph"}}}}},{"search":"The same docs-user is mounted twice. Each copy inherits a different nearest dataProvider — that is the row/list scope:\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"two-scopes-one-component":{"count":1,"title":"Two scopes, one component","type":"paragraph"}}}}},{"search":"Markup (two isolated stores; keys from docs-provider-keys.ts):\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"two-scopes-one-component":{"count":1,"title":"Two scopes, one component","type":"paragraph"}}}}},{"search":"Seeded in docs-provider-keys.ts (set(docsUserScopeAKey, …)): Paul / Marie. Without @ancestorAttribute, both cards would not know which store to read.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"two-scopes-one-component":{"count":1,"title":"Two scopes, one component","type":"paragraph"}}}}},{"search":"Use a Lit parent and the items renderer (not HTML &lt;template&gt; children). The callback receives each row object from fetch — render fields directly (${item.first_name}, …), like porting a template that used data-bind / &lt;sonic-value&gt;.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"3-fetch-users--sonic-list-with-items":{"count":1,"title":"3. Fetch users — `sonic-list` with `.items`","type":"paragraph"}}}}},{"search":"Wrapper (docs-users-list.ts):\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"3-fetch-users--sonic-list-with-items":{"count":1,"title":"3. Fetch users — `sonic-list` with `.items`","type":"paragraph"}}}}},{"search":"@customElement(&quot;docs-users-list&quot;)\\nexport class DocsUsersList extends LitElement {\\n private items = ({ first_name, last_name, email, avatar }) =&gt; html &amp;lt;div class=&quot;flex gap-3&quot;&amp;gt; &amp;lt;sonic-image src=${avatar} ...&amp;gt;&amp;lt;/sonic-image&amp;gt; &amp;lt;div&amp;gt;${first_name} &amp;lt;b&amp;gt;${last_name}&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div class=&quot;text-sm text-neutral-400&quot;&amp;gt;${email}&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; ;\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"3-fetch-users--sonic-list-with-items":{"count":1,"title":"3. Fetch users — `sonic-list` with `.items`","type":"paragraph"}}}}},{"search":" render() {\\n return html &amp;lt;sonic-list fetch dataProvider=${usersListEndpoint.path} key=&quot;data&quot; .items=${this.items}&amp;gt;&amp;lt;/sonic-list&amp;gt; ;\\n }\\n}\\n \\n\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"3-fetch-users--sonic-list-with-items":{"count":1,"title":"3. Fetch users — `sonic-list` with `.items`","type":"paragraph"}}}}},{"search":"See Local API demos for serviceURL=&quot;/docs-mock-api&quot;.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"3-fetch-users--sonic-list-with-items":{"count":1,"title":"3. Fetch users — `sonic-list` with `.items`","type":"paragraph"}}}}},{"search":"Edit fields in a form; the card follows the same docsUserRowKey when the preview host sets dataProvider=&quot;userPreview&quot;.\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"4-form-preview-with-formdataprovider":{"count":1,"title":"4. Form preview with `formDataProvider`","type":"paragraph"}}}}},{"search":"Use formDataProvider + name on inputs — no manual @input handlers (Data flow).\\n","files":{"docs/_getting-started/my-first-component.md":{"title":"My first component","hashes":{"4-form-preview-with-formdataprovider":{"count":1,"title":"4. Form preview with `formDataProvider`","type":"paragraph"}}}}},{"search":"Legacy: My first subscriber component","files":{"docs/_getting-started/my-first-subscriber.md":{"title":"Legacy: My first subscriber component","hashes":{"legacy-my-first-subscriber-component":{"count":1,"title":"","type":"page"}}}}},{"search":"New projects: use My first component (@ancestorAttribute, @subscribe + DataProviderKey, .items on lists) and Data flow. This page documents the Subscriber mixin used by older apps and core components.\\n","files":{"docs/_getting-started/my-first-subscriber.md":{"title":"Legacy: My first subscriber component","hashes":{"legacy-my-first-subscriber-component":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Learn how to build a component with the Subscriber mixin, styled with Tailwind, filled from a DataProvider via automatic property mapping.\\n","files":{"docs/_getting-started/my-first-subscriber.md":{"title":"Legacy: My first subscriber component","hashes":{"legacy-my-first-subscriber-component":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"See Legacy: Subscriber mixin.\\n","files":{"docs/_getting-started/my-first-subscriber.md":{"title":"Legacy: My first subscriber component","hashes":{"add-subscriber-mixin":{"count":1,"title":"Add Subscriber mixin","type":"paragraph"}}}}},{"search":"Legacy: Sharing data","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"legacy-sharing-data":{"count":1,"title":"","type":"page"}}}}},{"search":"New apps: Data flow (get / set / DataProviderKey, decorators). This page documents the historical Publisher proxy API (PublisherManager, publisher.set, onAssign, …).\\n","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"legacy-sharing-data":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"This section describes how data is shared between graphical and non-graphical components.\\n","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"legacy-sharing-data":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Graphical components should not reference each other directly — they stay decoupled via a publish/subscribe store.\\n","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"legacy-sharing-data":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"❇️ Order of creation vs subscription theoretically does not matter.\\n","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"Modern equivalent: get / set / @handle — see Data flow.\\n","files":{"docs/_getting-started/pubsub.md":{"title":"Legacy: Sharing data","hashes":{"methods":{"count":1,"title":"Methods","type":"paragraph"}}}}},{"search":"Introduction","files":{"docs/_getting-started/start.md":{"title":"Introduction","hashes":{"introduction":{"count":1,"title":"","type":"page"}}}}},{"search":"Based on lit.dev, Concorde is a collection of web components for shared apps and websites.Build UIs without tying components to a specific host stack, while keeping visual consistency through a small set of CSS variables.\\n","files":{"docs/_getting-started/start.md":{"title":"Introduction","hashes":{"what-is-concorde":{"count":1,"title":"What is Concorde?","type":"paragraph"}}}}},{"search":"In 2022, Supersoniks needed a new ticketing stack for nearly 100 sites — mobile apps, modern sites, and legacy PHP without bundlers.One composable web-component library replaced many one-off apps. Lit was chosen for broad runtime compatibility.\\n","files":{"docs/_getting-started/start.md":{"title":"Introduction","hashes":{"why-and-use-case":{"count":1,"title":"Why and use case","type":"paragraph"}}}}},{"search":"Legacy (Subscriber mixin, Publisher API): Legacy section at the bottom of the sidebar.\\n","files":{"docs/_getting-started/start.md":{"title":"Introduction","hashes":{"learn-concorde":{"count":1,"title":"Learn Concorde","type":"paragraph"}}}}},{"search":"The starter runs yarn ai:sync for you. Details: AI agents (skills). Manual Vite setup: Legacy: Manual installation.\\n","files":{"docs/_getting-started/start.md":{"title":"Introduction","hashes":{"start-a-new-project":{"count":1,"title":"Start a new project","type":"paragraph"}}}}},{"search":"Adding styles","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"adding-styles":{"count":1,"title":"","type":"page"}}}}},{"search":"No style crosses the shadow root of a component, except for inheritable properties (which have the &quot;inherit&quot; property possible) and CSS variables.\\nProperties integrated via a &quot;slot&quot; remain stylizable in a conventional way.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"normal-behavior":{"count":1,"title":"Normal Behavior","type":"paragraph"}}}}},{"search":"The declaration of reactive properties is useful for selecting a particular configuration that mostly affects a set of properties.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"choosing-style-presets-via-reactive-properties":{"count":1,"title":"Choosing Style Presets via Reactive Properties:","type":"paragraph"}}}}},{"search":"For example, a size property (xs, sm, md, xl) will affect margins, font, line heights to align them with the corresponding CSS vars, which can be customized using the methods mentioned earlier if necessary.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"choosing-style-presets-via-reactive-properties":{"count":1,"title":"Choosing Style Presets via Reactive Properties:","type":"paragraph"}}}}},{"search":"It is recommended to use the {reflect: true} property for reactive properties that have an associated style on the :host(). For example: :host([type=&#39;primary&#39;]){...}\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"choosing-style-presets-via-reactive-properties":{"count":1,"title":"Choosing Style Presets via Reactive Properties:","type":"paragraph"}}}}},{"search":"☢️ Caution: Passing class names via reactive properties / HTML attributes of the component should be avoided as it can quickly lead to difficult-to-manage situations.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"choosing-style-presets-via-reactive-properties":{"count":1,"title":"Choosing Style Presets via Reactive Properties:","type":"paragraph"}}}}},{"search":"By default, the display property is inline.\\nTherefore, be careful to define it according to the needs, as one might mistakenly expect it to be block as with a regular &lt;div&gt;.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"css-display-property":{"count":1,"title":"CSS \\"display\\" Property","type":"paragraph"}}}}},{"search":"☢️ Caution: Defining the display property as contents may seem attractive at first, but:\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"css-display-property":{"count":1,"title":"CSS \\"display\\" Property","type":"paragraph"}}}}},{"search":"tailwind has been integrated into Concorde and is available in scoped components (with Shadow DOM).\\nTo use it, you need to import the following:\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"tailwind-functional-classes":{"count":1,"title":"TAILWIND Functional Classes","type":"paragraph"}}}}},{"search":"Then include the tailwind style in the static styles property of the component:\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"tailwind-functional-classes":{"count":1,"title":"TAILWIND Functional Classes","type":"paragraph"}}}}},{"search":"Finally, use it in the HTML within the render function:\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"tailwind-functional-classes":{"count":1,"title":"TAILWIND Functional Classes","type":"paragraph"}}}}},{"search":"The colors from Concorde&#39;s theme are referenced in Tailwind&#39;s theme.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"tailwind-functional-classes":{"count":1,"title":"TAILWIND Functional Classes","type":"paragraph"}}}}},{"search":"This operation is particularly useful when it comes to adding behavior to a simple existing element.\\nIt may also become necessary to establish compatibility with a traditional JS library.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"usefulness":{"count":1,"title":"Usefulness","type":"paragraph"}}}}},{"search":"For example, with a text input:\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"usefulness":{"count":1,"title":"Usefulness","type":"paragraph"}}}}},{"search":"If there is no shadow DOM (see the noShadowDom property of Subscriber):\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"consequences":{"count":1,"title":"Consequences","type":"paragraph"}}}}},{"search":"For example, the components queue, list, and fetch do not have a shadow DOM.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"consequences":{"count":1,"title":"Consequences","type":"paragraph"}}}}},{"search":"ℹ️ Note: Specifically in this case, it may be useful to set the display property to contents.\\n","files":{"docs/_getting-started/theming.md":{"title":"Adding styles","hashes":{"consequences":{"count":1,"title":"Consequences","type":"paragraph"}}}}},{"search":"API configuration","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"api-configuration":{"count":1,"title":"","type":"page"}}}}},{"search":"APIConfiguration is the object built by HTML.getApiConfiguration from ancestor attributes on the DOM (or from a typed publisher — see @get configuration key). It is passed to API by fetchers, sonic-submit, the wording() directive, and @get.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"api-configuration":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Mock service: same Local API demos Service Worker / Vite middleware. Routes used on this page are listed in the API config routes section below.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"api-configuration":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"Lit / TypeScript: store the same shape in a publisher and pass DataProviderKey&lt;APIConfiguration&gt; as the second argument of @get (see DataProviderKey).\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"attribute-map":{"count":1,"title":"Attribute map","type":"paragraph"}}}}},{"search":"Publisher docsApiConfBearerKey (set(docsApiConfBearerKey, { token: &quot;docs-mock-valid-token&quot;, … })) — mock returns the protected payload.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"bearer-token-static":{"count":1,"title":"Bearer token (static)","type":"paragraph"}}}}},{"search":"No static token: API.auth() calls GET /docs-mock-api/auth/token with Basic demo / secret, stores token, then calls the protected route.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"tokenprovider--basic-auth":{"count":1,"title":"tokenProvider + Basic auth","type":"paragraph"}}}}},{"search":"Initial token=&quot;docs-mock-stale-token&quot; → mock responds 498 → Concorde invalidates the token, runs auth() again (same tokenProvider + Basic), retries with docs-mock-fresh-token.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"http-498--stale-token-refresh":{"count":1,"title":"HTTP 498 — stale token refresh","type":"paragraph"}}}}},{"search":"Attribute eventsApiToken on an ancestor maps to authToken in config (used as Bearer when calling tokenProvider, instead of Basic).\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"eventsapitoken":{"count":1,"title":"eventsApiToken","type":"paragraph"}}}}},{"search":"wordingProvider=&quot;wording/labels?lang=fr&quot; + wording(&#39;api-config.greeting&#39;) in Lit. Mock returns label map from labels[] query params.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"wording-api":{"count":1,"title":"Wording API","type":"paragraph"}}}}},{"search":"Attributes on sonic-scope (or any ancestor) are visible to descendants via getAncestorAttributeValue.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"scoped-attributes-html--sonic-scope":{"count":1,"title":"Scoped attributes (HTML / sonic-scope)","type":"paragraph"}}}}},{"search":"Mock tokens (doc only): docs-mock-valid-token, docs-mock-stale-token (498), docs-mock-fresh-token (after refresh). Basic: demo / secret. Events token: docs-mock-events-token.\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"api-config-routes":{"count":1,"title":"API config routes","type":"paragraph"}}}}},{"search":"Implementation: src/docs/mock-api/api-config-mock.ts (bundled in the Service Worker with router.ts).\\n","files":{"docs/_misc/api-configuration.md":{"title":"API configuration","hashes":{"api-config-routes":{"count":1,"title":"API config routes","type":"paragraph"}}}}},{"search":"DataProviderKey","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"dataproviderkey":{"count":1,"title":"","type":"page"}}}}},{"search":"The DataProviderKey&lt;T&gt; utility provides type-safe navigation through composite data structures. Each property or index access extends the path, and the final key can be retrieved via toString() or the path property.\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"dataproviderkey":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"For a single HTTP path string (no dot-syntax), see Endpoint. For DataProviderKey&lt;APIConfiguration&gt;, see API configuration.\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"dataproviderkey":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"DataProviderKey uses a Proxy to intercept property access and build a cumulative path string. TypeScript infers the nested type at each level, so myKey.items[0] is correctly typed as DataProviderKey&lt;Item&gt; when items is Item[].\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"In Lit demos, bind HTML attributes from a key’s .path (single source of truth), and use get / set / dp instead of PublisherManager.get(&quot;…&quot;):\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"export const myFormKey = new DataProviderKey&lt;{ email: string }&gt;(&quot;myForm&quot;);\\nset(myFormKey, { email: &quot;a@b.c&quot; });\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"// template: formDataProvider=${myFormKey.path}\\n \\n\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"principle":{"count":1,"title":"Principle","type":"paragraph"}}}}},{"search":"Use placeholders ${prop} or {$prop} in the path string. The path is resolved at runtime from the component&#39;s properties. The type remains declarative:\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"dynamic-paths":{"count":1,"title":"Dynamic paths","type":"paragraph"}}}}},{"search":"Dynamic keys are not supported by get, set, or dp — those APIs take a snapshot at call time with no component context. For dynamic paths use decorators (@subscribe, @publish, @handle) or sub(key) in Lit templates (resolves ${…} from the host component). See sub().\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"dynamic-paths":{"count":1,"title":"Dynamic paths","type":"paragraph"}}}}},{"search":"For programmatic access, pass a DataProviderKey or a static path string. Dynamic placeholders are rejected:\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"get--set--dp-with-static-keys":{"count":1,"title":"get / set / dp with static keys","type":"paragraph"}}}}},{"search":"The final path is built by concatenating each accessed property with a dot:\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"path-retrieval":{"count":1,"title":"Path retrieval","type":"paragraph"}}}}},{"search":"Use toString() or path to get the full path string:\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"path-retrieval":{"count":1,"title":"Path retrieval","type":"paragraph"}}}}},{"search":"Use DataProviderKey with @subscribe (read-only), @publish (write-only), or @handle (method callback on assign). With @subscribe / @publish, the decorated property must match the key’s value type. With @handle, the method receives (value: T).\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"integration-with-subscribe-publish-and-handle":{"count":1,"title":"Integration with @subscribe, @publish and @handle","type":"paragraph"}}}}},{"search":"These decorators support dynamic paths: &quot;base.${prop}&quot; in the constructor. A wrong property type (e.g. number for DataProviderKey&lt;string&gt;) is a TypeScript error. See @handle for method callbacks.\\n","files":{"docs/_misc/dataProviderKey.md":{"title":"DataProviderKey","hashes":{"integration-with-subscribe-publish-and-handle":{"count":1,"title":"Integration with @subscribe, @publish and @handle","type":"paragraph"}}}}},{"search":"Local API demos (offline)","files":{"docs/_misc/docs-mock-api.md":{"title":"Local API demos (offline)","hashes":{"local-api-demos-offline":{"count":1,"title":"","type":"page"}}}}},{"search":"The Concorde doc site does not call fragile third-party APIs during yarn dev. A Service Worker and the Vite dev middleware serve /docs-mock-api/* on the same origin.\\n","files":{"docs/_misc/docs-mock-api.md":{"title":"Local API demos (offline)","hashes":{"local-api-demos-offline":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"TypeScript constants: src/docs/mock-api/urls.ts (DOCS_MOCK_REQRES_SERVICE, DOCS_MOCK_GEO_SERVICE, …).\\n","files":{"docs/_misc/docs-mock-api.md":{"title":"Local API demos (offline)","hashes":{"how-it-works":{"count":1,"title":"How it works","type":"paragraph"}}}}},{"search":"ALTCHA (sonic-captcha) is not mocked — it still uses the Supersoniks service.\\n","files":{"docs/_misc/docs-mock-api.md":{"title":"Local API demos (offline)","hashes":{"pagination-get-apiusers":{"count":1,"title":"Pagination `GET /api/users`","type":"paragraph"}}}}},{"search":"In TypeScript demos, import from src/docs/mock-api/urls.ts (e.g. DOCS_MOCK_REQRES_SERVICE on serviceURL).\\n","files":{"docs/_misc/docs-mock-api.md":{"title":"Local API demos (offline)","hashes":{"pagination-get-apiusers":{"count":1,"title":"Pagination `GET /api/users`","type":"paragraph"}}}}},{"search":"Endpoint","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"endpoint":{"count":1,"title":"","type":"page"}}}}},{"search":"Endpoint&lt;T, U&gt; describes a single HTTP path (or a path accepted by API.get) and carries the expected response type T. Unlike DataProviderKey, there is no dot-navigation: the path is one string.\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"endpoint":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"The optional second generic U (default any) describes host properties used to resolve dynamic segments in the path (${…} / {$…}), for example with the @get decorator.\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"endpoint":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"const one = new Endpoint&lt;User, { userId: string }&gt;(&quot;users/${userId}&quot;);\\n// userId on the host class is observed when used with @get\\n \\n\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"construction":{"count":1,"title":"Construction","type":"paragraph"}}}}},{"search":"Endpoint.normalizePath trims the string, rejects an empty path, strips leading slashes for paths relative to serviceURL, collapses duplicate slashes, and validates absolute http(s):// URLs.\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"normalization":{"count":1,"title":"Normalization","type":"paragraph"}}}}},{"search":"getDataProviderKey() returns a typed publisher key whose path matches the endpoint path (payload typing follows ApiGetResult for this endpoint). Useful when pairing @get with @publish / @subscribe (see @get).\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"publisher-key-for-payloads":{"count":1,"title":"Publisher key for payloads","type":"paragraph"}}}}},{"search":"Endpoint.looksLikeDataProviderPath(path) returns true for strings shaped like dataProvider(id)…, which API.get can resolve without HTTP.\\n","files":{"docs/_misc/endpoint.md":{"title":"Endpoint","hashes":{"data-provider-paths":{"count":1,"title":"Data-provider paths","type":"paragraph"}}}}},{"search":"HTML integration (no Lit)","files":{"docs/_misc/html-integration.md":{"title":"HTML integration (no Lit)","hashes":{"html-integration-no-lit":{"count":1,"title":"","type":"page"}}}}},{"search":"Some hosts (legacy PHP pages, static HTML) embed Concorde components without a Lit build step. They can use HTML attributes such as data-bind, dataProvider, and formDataProvider on tags directly in the page.\\n","files":{"docs/_misc/html-integration.md":{"title":"HTML integration (no Lit)","hashes":{"html-integration-no-lit":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"That style is not what we demonstrate in this doc site: live examples are Lit components under src/docs/example/, registered once and reused from Markdown via tags like &lt;docs-joke-search-demo&gt;.\\n","files":{"docs/_misc/html-integration.md":{"title":"HTML integration (no Lit)","hashes":{"html-integration-no-lit":{"count":1,"title":"","type":"paragraph"}}}}},{"search":"New application code in TypeScript should use @subscribe, formDataProvider + name, and Lit templates — not HTML data-bind.\\n","files":{"docs/_misc/html-integration.md":{"title":"HTML integration (no Lit)","hashes":{"html-integration-no-lit":{"count":1,"title":"","type":"paragraph"}}}}}]');var vf=Object.defineProperty,wf=Object.getOwnPropertyDescriptor,Yn=(s,e,o,r)=>{for(var t=r>1?void 0:r?wf(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&vf(e,o,t),t};const xf="docs-search",_f=window,Df=_f.fuzzysort;let po=class extends D{constructor(){super(...arguments),this.hidePopMenu=!1,this.setFocus=!1}search(s){R.get("searchSelection").selection=null;const e=Df.go(s,Ka,{key:"search"}),o=[],r=new Map,t=[];for(const i of e){if(i.score<-1e5)continue;const n=i.obj;for(const a in n.files)for(const c in n.files[a].hashes){const g=n.files[a].hashes[c];if(t.includes(a+":"+c))continue;t.push(a+":"+c);const b=n.files[a].title,h={href:"#"+a+"/"+c,part:g.title||"...",search:g.type=="page"?"Page":this.getResultSearchString(i),index:Ka.indexOf(n),template:g.type=="page"?"page":null};if(r.has(b))r.get(b).items.push(h);else{const x={title:b,items:[h]};r.set(b,x),o.push(x)}}}this.shadowRoot?.querySelector("sonic-pop")?.show();for(const i of o)i.items.sort((n,a)=>n.index-a.index);R.get("searchResult").set(o)}getResultSearchString(s){const e=s.p;return s.target.split("").map((r,t)=>e.includes(t)?"<span class='font-bold' style='color:var(--sc-info)'>"+r+"</span>":r).join("")}connectedCallback(){R.get("docsSearch").search.onAssign(s=>this.search(s)),super.connectedCallback()}firstUpdated(){this.setFocus&&setTimeout(()=>{this.shadowRoot?.querySelector("sonic-input")?.focus(),this.shadowRoot?.querySelector("sonic-pop")?.show()},100)}render(){return p`
4223
4223
  <sonic-pop noToggle class="inline-block w-full" key="data">
4224
4224
  <sonic-input
4225
4225
  data-keyboard-nav="doc-search"
@@ -4313,7 +4313,7 @@ ${this.value}</textarea
4313
4313
  </sonic-menu>
4314
4314
  `}
4315
4315
  </sonic-pop>
4316
- `}};po.styles=[q,Ms];Yn([$({type:Boolean})],po.prototype,"hidePopMenu",2);Yn([l({type:Boolean})],po.prototype,"setFocus",2);po=Yn([k(ff)],po);const Ha="#core/components/functional/router/router.md/router";function vf(s){const e=s.indexOf("#");if(e<0)return{url:"",anchor:"",demoSubHash:"",pageHash:""};let o=s.substring(e+1),r="";const t=o.lastIndexOf("#");t>0&&(r=o.substring(t+1),o=o.substring(0,t));const i=o.split("/").filter(Boolean),n=decodeURIComponent(i.pop()||"");return{url:i.join("/"),anchor:n,demoSubHash:r,pageHash:o?`#${o}`:""}}function wf(s,e){const o=document.location,r=e,t=s.replace(/^#/,""),i=t?`${r}#${t}`:r;history.replaceState(history.state,"",`${o.pathname}${o.search}${i}`)}var xf=Object.defineProperty,_f=Object.getOwnPropertyDescriptor,lc=(s,e,o,r)=>{for(var t=r>1?void 0:r?_f(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&xf(e,o,t),t};const Df="docs-page";let zi=class extends dt(D){constructor(){super(...arguments),this.location="",this.markDownsURL="",this.noShadowDom="",this.url="",this.anchor=""}connectedCallback(){this.setAttribute("serviceURL",document.location.pathname.replace(/\/index.html$/,"")),this.markDownsURL=this.getAncestorAttributeValue("markDownsURL"),this.markDownsURL.lastIndexOf("/")!=this.markDownsURL.length-1&&(this.markDownsURL+="/"),super.connectedCallback(),pl.onChange(this)}willUpdate(s){const{url:e,anchor:o}=vf(this.location);this.anchor=o,this.url=e,super.willUpdate(s)}render(){return this.url?p`
4316
+ `}};po.styles=[q,Ms];Yn([$({type:Boolean})],po.prototype,"hidePopMenu",2);Yn([l({type:Boolean})],po.prototype,"setFocus",2);po=Yn([k(xf)],po);const Ha="#core/components/functional/router/router.md/router";function kf(s){const e=s.indexOf("#");if(e<0)return{url:"",anchor:"",demoSubHash:"",pageHash:""};let o=s.substring(e+1),r="";const t=o.lastIndexOf("#");t>0&&(r=o.substring(t+1),o=o.substring(0,t));const i=o.split("/").filter(Boolean),n=decodeURIComponent(i.pop()||"");return{url:i.join("/"),anchor:n,demoSubHash:r,pageHash:o?`#${o}`:""}}function Cf(s,e){const o=document.location,r=e,t=s.replace(/^#/,""),i=t?`${r}#${t}`:r;history.replaceState(history.state,"",`${o.pathname}${o.search}${i}`)}var Af=Object.defineProperty,Pf=Object.getOwnPropertyDescriptor,uc=(s,e,o,r)=>{for(var t=r>1?void 0:r?Pf(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Af(e,o,t),t};const Sf="docs-page";let zi=class extends dt(D){constructor(){super(...arguments),this.location="",this.markDownsURL="",this.noShadowDom="",this.url="",this.anchor=""}connectedCallback(){this.setAttribute("serviceURL",document.location.pathname.replace(/\/index.html$/,"")),this.markDownsURL=this.getAncestorAttributeValue("markDownsURL"),this.markDownsURL.lastIndexOf("/")!=this.markDownsURL.length-1&&(this.markDownsURL+="/"),super.connectedCallback(),pl.onChange(this)}willUpdate(s){const{url:e,anchor:o}=kf(this.location);this.anchor=o,this.url=e,super.willUpdate(s)}render(){return this.url?p`
4317
4317
  <sonic-fetch
4318
4318
  noShadowDom
4319
4319
  dataProvider="pageHTML"
@@ -4321,16 +4321,16 @@ ${this.value}</textarea
4321
4321
  >
4322
4322
  <docs-markdown-renderer anchor="${this.anchor}"></docs-markdown-renderer>
4323
4323
  </sonic-fetch>
4324
- `:S}};lc([l()],zi.prototype,"location",2);zi=lc([k(Df)],zi);const kf=/[\0-\x1F!-,\.\/:-@\[-\^`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482\u0530\u0557\u0558\u055A-\u055F\u0589-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u060F\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u06DE\u06E9\u06FD\u06FE\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F6-\u07F9\u07FB\u07FC\u07FE\u07FF\u082E-\u083F\u085C-\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09F2-\u09FB\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B70\u0B72-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BF0-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C7F\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D4F-\u0D53\u0D58-\u0D5E\u0D64\u0D65\u0D70-\u0D79\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3F\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F17\u0F1A-\u0F1F\u0F2A-\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD-\u0FC5\u0FC7-\u0FFF\u104A-\u104F\u109E\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u170D\u1715-\u171F\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DB\u17DE\u17DF\u17EA-\u180A\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DA-\u19FF\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u203E\u2041-\u2053\u2055-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u20CF\u20F1-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u215F\u2189-\u24B5\u24EA-\u2BFF\u2C2F\u2C5F\u2CE5-\u2CEA\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u3040\u3097\u3098\u309B\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\u9FFD-\u9FFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA673\uA67E\uA6F2-\uA716\uA720\uA721\uA789\uA78A\uA7C0\uA7C1\uA7CB-\uA7F4\uA828-\uA82B\uA82D-\uA83F\uA874-\uA87F\uA8C6-\uA8CF\uA8DA-\uA8DF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA954-\uA95F\uA97D-\uA97F\uA9C1-\uA9CE\uA9DA-\uA9DF\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAAC3-\uAADA\uAADE\uAADF\uAAF0\uAAF1\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABEB\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFDFF\uFE10-\uFE1F\uFE30-\uFE32\uFE35-\uFE4C\uFE50-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF3E\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD3F\uDD75-\uDDFC\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEE1-\uDEFF\uDF20-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE40-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE7-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD28-\uDD2F\uDD3A-\uDE7F\uDEAA\uDEAD-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF51-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC47-\uDC65\uDC70-\uDC7E\uDCBB-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD40-\uDD43\uDD48-\uDD4F\uDD74\uDD75\uDD77-\uDD7F\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDFF\uDE12\uDE38-\uDE3D\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC4B-\uDC4F\uDC5A-\uDC5D\uDC62-\uDC7F\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDC1-\uDDD7\uDDDE-\uDDFF\uDE41-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF3A-\uDFFF]|\uD806[\uDC3B-\uDC9F\uDCEA-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD44-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE2\uDDE5-\uDDFF\uDE3F-\uDE46\uDE48-\uDE4F\uDE9A-\uDE9C\uDE9E-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC41-\uDC4F\uDC5A-\uDC71\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF7-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83D\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDECF\uDEEE\uDEEF\uDEF5-\uDEFF\uDF37-\uDF3F\uDF44-\uDF4F\uDF5A-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE2\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDC9C\uDC9F-\uDFFF]|\uD834[\uDC00-\uDD64\uDD6A-\uDD6C\uDD73-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDE41\uDE45-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDEBF\uDEFA-\uDFFF]|\uD83A[\uDCC5-\uDCCF\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDD2F\uDD4A-\uDD4F\uDD6A-\uDD6F\uDD8A-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]/g,Cf=Object.hasOwnProperty;class cc{constructor(){this.occurrences,this.reset()}slug(e,o){const r=this;let t=Af(e,o===!0);const i=t;for(;Cf.call(r.occurrences,t);)r.occurrences[i]++,t=i+"-"+r.occurrences[i];return r.occurrences[t]=0,t}reset(){this.occurrences=Object.create(null)}}function Af(s,e){return typeof s!="string"?"":(e||(s=s.toLowerCase()),s.replace(kf,"").replace(/ /g,"-"))}let dc=new cc,uc=[];function Pf({prefix:s="",globalSlugs:e=!1}={}){return{headerIds:!1,hooks:{preprocess(o){return e||Sf(),o}},renderer:{heading(o,r,t){t=t.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"");const i=`${s}${dc.slug(t)}`,n={level:r,text:o,id:i};return uc.push(n),`<h${r} id="${i}">${o}</h${r}>
4325
- `}}}}function Sf(){uc=[],dc=new cc}const $f=/<sonic-code\b[\s\S]*?<\/sonic-code>/gi,Ff=/<!--SONIC_CODE_(\d+)-->/g;function Ef(s){const e=[];return{markdown:s.replace($f,r=>{const t=e.length;return e.push(r),`
4324
+ `:S}};uc([l()],zi.prototype,"location",2);zi=uc([k(Sf)],zi);const $f=/[\0-\x1F!-,\.\/:-@\[-\^`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482\u0530\u0557\u0558\u055A-\u055F\u0589-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u060F\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u06DE\u06E9\u06FD\u06FE\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F6-\u07F9\u07FB\u07FC\u07FE\u07FF\u082E-\u083F\u085C-\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09F2-\u09FB\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B70\u0B72-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BF0-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C7F\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D4F-\u0D53\u0D58-\u0D5E\u0D64\u0D65\u0D70-\u0D79\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3F\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F17\u0F1A-\u0F1F\u0F2A-\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD-\u0FC5\u0FC7-\u0FFF\u104A-\u104F\u109E\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u170D\u1715-\u171F\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DB\u17DE\u17DF\u17EA-\u180A\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DA-\u19FF\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u203E\u2041-\u2053\u2055-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u20CF\u20F1-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u215F\u2189-\u24B5\u24EA-\u2BFF\u2C2F\u2C5F\u2CE5-\u2CEA\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u3040\u3097\u3098\u309B\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\u9FFD-\u9FFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA673\uA67E\uA6F2-\uA716\uA720\uA721\uA789\uA78A\uA7C0\uA7C1\uA7CB-\uA7F4\uA828-\uA82B\uA82D-\uA83F\uA874-\uA87F\uA8C6-\uA8CF\uA8DA-\uA8DF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA954-\uA95F\uA97D-\uA97F\uA9C1-\uA9CE\uA9DA-\uA9DF\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAAC3-\uAADA\uAADE\uAADF\uAAF0\uAAF1\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABEB\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFDFF\uFE10-\uFE1F\uFE30-\uFE32\uFE35-\uFE4C\uFE50-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF3E\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD3F\uDD75-\uDDFC\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEE1-\uDEFF\uDF20-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE40-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE7-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD28-\uDD2F\uDD3A-\uDE7F\uDEAA\uDEAD-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF51-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC47-\uDC65\uDC70-\uDC7E\uDCBB-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD40-\uDD43\uDD48-\uDD4F\uDD74\uDD75\uDD77-\uDD7F\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDFF\uDE12\uDE38-\uDE3D\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC4B-\uDC4F\uDC5A-\uDC5D\uDC62-\uDC7F\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDC1-\uDDD7\uDDDE-\uDDFF\uDE41-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF3A-\uDFFF]|\uD806[\uDC3B-\uDC9F\uDCEA-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD44-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE2\uDDE5-\uDDFF\uDE3F-\uDE46\uDE48-\uDE4F\uDE9A-\uDE9C\uDE9E-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC41-\uDC4F\uDC5A-\uDC71\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF7-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83D\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDECF\uDEEE\uDEEF\uDEF5-\uDEFF\uDF37-\uDF3F\uDF44-\uDF4F\uDF5A-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE2\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDC9C\uDC9F-\uDFFF]|\uD834[\uDC00-\uDD64\uDD6A-\uDD6C\uDD73-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDE41\uDE45-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDEBF\uDEFA-\uDFFF]|\uD83A[\uDCC5-\uDCCF\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDD2F\uDD4A-\uDD4F\uDD6A-\uDD6F\uDD8A-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]/g,Ff=Object.hasOwnProperty;class pc{constructor(){this.occurrences,this.reset()}slug(e,o){const r=this;let t=Ef(e,o===!0);const i=t;for(;Ff.call(r.occurrences,t);)r.occurrences[i]++,t=i+"-"+r.occurrences[i];return r.occurrences[t]=0,t}reset(){this.occurrences=Object.create(null)}}function Ef(s,e){return typeof s!="string"?"":(e||(s=s.toLowerCase()),s.replace($f,"").replace(/ /g,"-"))}let hc=new pc,mc=[];function Lf({prefix:s="",globalSlugs:e=!1}={}){return{headerIds:!1,hooks:{preprocess(o){return e||Tf(),o}},renderer:{heading(o,r,t){t=t.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"");const i=`${s}${hc.slug(t)}`,n={level:r,text:o,id:i};return mc.push(n),`<h${r} id="${i}">${o}</h${r}>
4325
+ `}}}}function Tf(){mc=[],hc=new pc}const Of=/<sonic-code\b[\s\S]*?<\/sonic-code>/gi,If=/<!--SONIC_CODE_(\d+)-->/g;function qf(s){const e=[];return{markdown:s.replace(Of,r=>{const t=e.length;return e.push(r),`
4326
4326
 
4327
4327
  <!--SONIC_CODE_${t}-->
4328
4328
 
4329
- `}),blocks:e}}function Lf(s,e){return s.replace(Ff,(o,r)=>e[Number(r)]??"")}function Tf(s,e){const{markdown:o,blocks:r}=Ef(e);return Lf(s(o),r)}var Of=Object.defineProperty,If=Object.getOwnPropertyDescriptor,pc=(s,e,o,r)=>{for(var t=r>1?void 0:r?If(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Of(e,o,t),t};const qf="docs-markdown-renderer",Va=window.marked;let Ki=class extends dt(D){constructor(){super(...arguments),this.anchor="",this._text=""}connectedCallback(){Va.use(Pf()),this.noShadowDom="",super.connectedCallback()}set text(s){this._text=Tf(e=>Va.parse(e),s),this.requestUpdate(),setTimeout(()=>{const e=this.querySelector("#"+this.anchor);this.appendImport(),e?document.documentElement.scrollTop=e.offsetTop-95:this.anchor&&this.anchor.indexOf("#")!=-1||(document.documentElement.scrollTop=0)},100)}get text(){return this._text}appendImport(){if(this.querySelector("h1 + sonic-code"))return;const s=document.location.hash;if(s.includes("components")){const i=`<sonic-code language="javascript" class="mb-8"
4329
+ `}),blocks:e}}function Rf(s,e){return s.replace(If,(o,r)=>e[Number(r)]??"")}function Nf(s,e){const{markdown:o,blocks:r}=qf(e);return Rf(s(o),r)}var Mf=Object.defineProperty,jf=Object.getOwnPropertyDescriptor,gc=(s,e,o,r)=>{for(var t=r>1?void 0:r?jf(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Mf(e,o,t),t};const Uf="docs-markdown-renderer",Va=window.marked;let Ki=class extends dt(D){constructor(){super(...arguments),this.anchor="",this._text=""}connectedCallback(){Va.use(Lf()),this.noShadowDom="",super.connectedCallback()}set text(s){this._text=Nf(e=>Va.parse(e),s),this.requestUpdate(),setTimeout(()=>{const e=this.querySelector("#"+this.anchor);this.appendImport(),e?document.documentElement.scrollTop=e.offsetTop-95:this.anchor&&this.anchor.indexOf("#")!=-1||(document.documentElement.scrollTop=0)},100)}get text(){return this._text}appendImport(){if(this.querySelector("h1 + sonic-code"))return;const s=document.location.hash;if(s.includes("components")){const i=`<sonic-code language="javascript" class="mb-8"
4330
4330
  ><sonic-code language="javascript">
4331
4331
  <template> import '@supersoniks/concorde/${s.split("/").filter(n=>n.endsWith(".md")).pop()?.replace(".md","")}'; </template>
4332
4332
  </sonic-code>
4333
- </sonic-code>`;this.querySelector("h1")?.insertAdjacentHTML("afterend",i)}}render(){return p`${V(this.text)}`}};pc([l()],Ki.prototype,"anchor",2);Ki=pc([k(qf)],Ki);class lr{static toJson(e){const o={};o.nodes=[];for(const i of e){const n=lr.parseNode(i);n&&o.nodes.push(n)}const r="data:text/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(o,null,2)),t=document.createElement("a");return t.setAttribute("href",r),t.setAttribute("download","sdui.json"),document.body.appendChild(t),t.click(),t.remove(),JSON.stringify(o,null,4)}static parseNode(e){const o={},r=e.nodeType;if(r==Node.ELEMENT_NODE){const t=e.nodeName.toLowerCase();o.tagName=t;const i=e;o.attributes={};const n=i.attributes,a=n.length;for(let f=0;f<a;f++){const h=n.item(f);h&&(o.attributes[h.name]=h.value)}let c=i.childNodes,g=i.children;if(t=="template"){const f=e;c=f.content.childNodes,g=f.content.children}if(g.length>0){o.nodes=[];for(const f of c){const h=lr.parseNode(f);h&&o.nodes.push(h)}}else i.innerHTML&&(o.innerHTML=i.innerHTML)}if(r==Node.TEXT_NODE){const t=(e.textContent||"").trim();if(!t)return null;o.markup=t}return o}}var Rf=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{},F=(function(s){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,o=0,r={},t={manual:s.Prism&&s.Prism.manual,disableWorkerMessageHandler:s.Prism&&s.Prism.disableWorkerMessageHandler,util:{encode:function m(b){return b instanceof i?new i(b.type,m(b.content),b.alias):Array.isArray(b)?b.map(m):b.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(m){return Object.prototype.toString.call(m).slice(8,-1)},objId:function(m){return m.__id||Object.defineProperty(m,"__id",{value:++o}),m.__id},clone:function m(b,v){var _,d;switch(v=v||{},t.util.type(b)){case"Object":if(d=t.util.objId(b),v[d])return v[d];for(var u in _={},v[d]=_,b)b.hasOwnProperty(u)&&(_[u]=m(b[u],v));return _;case"Array":return d=t.util.objId(b),v[d]?v[d]:(_=[],v[d]=_,b.forEach(function(y,x){_[x]=m(y,v)}),_);default:return b}},getLanguage:function(m){for(;m;){var b=e.exec(m.className);if(b)return b[1].toLowerCase();m=m.parentElement}return"none"},setLanguage:function(m,b){m.className=m.className.replace(RegExp(e,"gi"),""),m.classList.add("language-"+b)},currentScript:function(){if(typeof document>"u")return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(_){var m=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(_.stack)||[])[1];if(m){var b=document.getElementsByTagName("script");for(var v in b)if(b[v].src==m)return b[v]}return null}},isActive:function(m,b,v){for(var _="no-"+b;m;){var d=m.classList;if(d.contains(b))return!0;if(d.contains(_))return!1;m=m.parentElement}return!!v}},languages:{plain:r,plaintext:r,text:r,txt:r,extend:function(m,b){var v=t.util.clone(t.languages[m]);for(var _ in b)v[_]=b[_];return v},insertBefore:function(m,b,v,_){var d=(_=_||t.languages)[m],u={};for(var y in d)if(d.hasOwnProperty(y)){if(y==b)for(var x in v)v.hasOwnProperty(x)&&(u[x]=v[x]);v.hasOwnProperty(y)||(u[y]=d[y])}var C=_[m];return _[m]=u,t.languages.DFS(t.languages,function(P,O){O===C&&P!=m&&(this[P]=u)}),u},DFS:function m(b,v,_,d){d=d||{};var u=t.util.objId;for(var y in b)if(b.hasOwnProperty(y)){v.call(b,y,b[y],_||y);var x=b[y],C=t.util.type(x);C!=="Object"||d[u(x)]?C!=="Array"||d[u(x)]||(d[u(x)]=!0,m(x,v,y,d)):(d[u(x)]=!0,m(x,v,null,d))}}},plugins:{},highlightAll:function(m,b){t.highlightAllUnder(document,m,b)},highlightAllUnder:function(m,b,v){var _={callback:v,container:m,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};t.hooks.run("before-highlightall",_),_.elements=Array.prototype.slice.apply(_.container.querySelectorAll(_.selector)),t.hooks.run("before-all-elements-highlight",_);for(var d,u=0;d=_.elements[u++];)t.highlightElement(d,b===!0,_.callback)},highlightElement:function(m,b,v){var _=t.util.getLanguage(m),d=t.languages[_];t.util.setLanguage(m,_);var u=m.parentElement;u&&u.nodeName.toLowerCase()==="pre"&&t.util.setLanguage(u,_);var y={element:m,language:_,grammar:d,code:m.textContent};function x(P){y.highlightedCode=P,t.hooks.run("before-insert",y),y.element.innerHTML=y.highlightedCode,t.hooks.run("after-highlight",y),t.hooks.run("complete",y),v&&v.call(y.element)}if(t.hooks.run("before-sanity-check",y),(u=y.element.parentElement)&&u.nodeName.toLowerCase()==="pre"&&!u.hasAttribute("tabindex")&&u.setAttribute("tabindex","0"),!y.code)return t.hooks.run("complete",y),void(v&&v.call(y.element));if(t.hooks.run("before-highlight",y),y.grammar)if(b&&s.Worker){var C=new Worker(t.filename);C.onmessage=function(P){x(P.data)},C.postMessage(JSON.stringify({language:y.language,code:y.code,immediateClose:!0}))}else x(t.highlight(y.code,y.grammar,y.language));else x(t.util.encode(y.code))},highlight:function(m,b,v){var _={code:m,grammar:b,language:v};if(t.hooks.run("before-tokenize",_),!_.grammar)throw new Error('The language "'+_.language+'" has no grammar.');return _.tokens=t.tokenize(_.code,_.grammar),t.hooks.run("after-tokenize",_),i.stringify(t.util.encode(_.tokens),_.language)},tokenize:function(m,b){var v=b.rest;if(v){for(var _ in v)b[_]=v[_];delete b.rest}var d=new c;return g(d,d.head,m),a(m,d,b,d.head,0),(function(u){for(var y=[],x=u.head.next;x!==u.tail;)y.push(x.value),x=x.next;return y})(d)},hooks:{all:{},add:function(m,b){var v=t.hooks.all;v[m]=v[m]||[],v[m].push(b)},run:function(m,b){var v=t.hooks.all[m];if(v&&v.length)for(var _,d=0;_=v[d++];)_(b)}},Token:i};function i(m,b,v,_){this.type=m,this.content=b,this.alias=v,this.length=0|(_||"").length}function n(m,b,v,_){m.lastIndex=b;var d=m.exec(v);if(d&&_&&d[1]){var u=d[1].length;d.index+=u,d[0]=d[0].slice(u)}return d}function a(m,b,v,_,d,u){for(var y in v)if(v.hasOwnProperty(y)&&v[y]){var x=v[y];x=Array.isArray(x)?x:[x];for(var C=0;C<x.length;++C){if(u&&u.cause==y+","+C)return;var P=x[C],O=P.inside,E=!!P.lookbehind,M=!!P.greedy,ee=P.alias;if(M&&!P.pattern.global){var re=P.pattern.toString().match(/[imsuy]*$/)[0];P.pattern=RegExp(P.pattern.source,re+"g")}for(var ve=P.pattern||P,B=_.next,pe=d;B!==b.tail&&!(u&&pe>=u.reach);pe+=B.value.length,B=B.next){var Be=B.value;if(b.length>m.length)return;if(!(Be instanceof i)){var Te,se=1;if(M){if(!(Te=n(ve,pe,m,E))||Te.index>=m.length)break;var Se=Te.index,kt=Te.index+Te[0].length,ze=pe;for(ze+=B.value.length;Se>=ze;)ze+=(B=B.next).value.length;if(pe=ze-=B.value.length,B.value instanceof i)continue;for(var we=B;we!==b.tail&&(ze<kt||typeof we.value=="string");we=we.next)se++,ze+=we.value.length;se--,Be=m.slice(pe,ze),Te.index-=pe}else if(!(Te=n(ve,0,Be,E)))continue;Se=Te.index;var fs=Te[0],Ke=Be.slice(0,Se),Ct=Be.slice(Se+fs.length),At=pe+Be.length;u&&At>u.reach&&(u.reach=At);var ft=B.prev;if(Ke&&(ft=g(b,ft,Ke),pe+=Ke.length),f(b,ft,se),B=g(b,ft,new i(y,O?t.tokenize(fs,O):fs,ee,fs)),Ct&&g(b,B,Ct),se>1){var Ht={cause:y+","+C,reach:At};a(m,b,v,B.prev,pe,Ht),u&&Ht.reach>u.reach&&(u.reach=Ht.reach)}}}}}}function c(){var m={value:null,prev:null,next:null},b={value:null,prev:m,next:null};m.next=b,this.head=m,this.tail=b,this.length=0}function g(m,b,v){var _=b.next,d={value:v,prev:b,next:_};return b.next=d,_.prev=d,m.length++,d}function f(m,b,v){for(var _=b.next,d=0;d<v&&_!==m.tail;d++)_=_.next;b.next=_,_.prev=b,m.length-=d}if(s.Prism=t,i.stringify=function m(b,v){if(typeof b=="string")return b;if(Array.isArray(b)){var _="";return b.forEach(function(C){_+=m(C,v)}),_}var d={type:b.type,content:m(b.content,v),tag:"span",classes:["token",b.type],attributes:{},language:v},u=b.alias;u&&(Array.isArray(u)?Array.prototype.push.apply(d.classes,u):d.classes.push(u)),t.hooks.run("wrap",d);var y="";for(var x in d.attributes)y+=" "+x+'="'+(d.attributes[x]||"").replace(/"/g,"&quot;")+'"';return"<"+d.tag+' class="'+d.classes.join(" ")+'"'+y+">"+d.content+"</"+d.tag+">"},!s.document)return s.addEventListener&&(t.disableWorkerMessageHandler||s.addEventListener("message",function(m){var b=JSON.parse(m.data),v=b.language,_=b.code,d=b.immediateClose;s.postMessage(t.highlight(_,t.languages[v],v)),d&&s.close()},!1)),t;var h=t.util.currentScript();function w(){t.manual||t.highlightAll()}if(h&&(t.filename=h.src,h.hasAttribute("data-manual")&&(t.manual=!0)),!t.manual){var A=document.readyState;A==="loading"||A==="interactive"&&h&&h.defer?document.addEventListener("DOMContentLoaded",w):window.requestAnimationFrame?window.requestAnimationFrame(w):window.setTimeout(w,16)}return t})(Rf);typeof es<"u"&&es.exports&&(es.exports=F),typeof global<"u"&&(global.Prism=F);F.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},F.languages.markup.tag.inside["attr-value"].inside.entity=F.languages.markup.entity,F.languages.markup.doctype.inside["internal-subset"].inside=F.languages.markup,F.hooks.add("wrap",function(s){s.type==="entity"&&(s.attributes.title=s.content.replace(/&amp;/,"&"))}),Object.defineProperty(F.languages.markup.tag,"addInlined",{value:function(s,e){var o={};o["language-"+e]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:F.languages[e]},o.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:o}};r["language-"+e]={pattern:/[\s\S]+/,inside:F.languages[e]};var t={};t[s]={pattern:RegExp("(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[^])*?(?=</__>)".replace(/__/g,function(){return s}),"i"),lookbehind:!0,greedy:!0,inside:r},F.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(F.languages.markup.tag,"addAttribute",{value:function(s,e){F.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(`(^|["'\\s])(?:`+s+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:F.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),F.languages.html=F.languages.markup,F.languages.mathml=F.languages.markup,F.languages.svg=F.languages.markup,F.languages.xml=F.languages.extend("markup",{}),F.languages.ssml=F.languages.xml,F.languages.atom=F.languages.xml,F.languages.rss=F.languages.xml;(function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp(`@[\\w-](?:[^;{\\s"']|\\s+(?!\\s)|`+e.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+`|(?:[^\\\\\r
4333
+ </sonic-code>`;this.querySelector("h1")?.insertAdjacentHTML("afterend",i)}}render(){return p`${V(this.text)}`}};gc([l()],Ki.prototype,"anchor",2);Ki=gc([k(Uf)],Ki);class lr{static toJson(e){const o={};o.nodes=[];for(const i of e){const n=lr.parseNode(i);n&&o.nodes.push(n)}const r="data:text/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(o,null,2)),t=document.createElement("a");return t.setAttribute("href",r),t.setAttribute("download","sdui.json"),document.body.appendChild(t),t.click(),t.remove(),JSON.stringify(o,null,4)}static parseNode(e){const o={},r=e.nodeType;if(r==Node.ELEMENT_NODE){const t=e.nodeName.toLowerCase();o.tagName=t;const i=e;o.attributes={};const n=i.attributes,a=n.length;for(let b=0;b<a;b++){const h=n.item(b);h&&(o.attributes[h.name]=h.value)}let c=i.childNodes,g=i.children;if(t=="template"){const b=e;c=b.content.childNodes,g=b.content.children}if(g.length>0){o.nodes=[];for(const b of c){const h=lr.parseNode(b);h&&o.nodes.push(h)}}else i.innerHTML&&(o.innerHTML=i.innerHTML)}if(r==Node.TEXT_NODE){const t=(e.textContent||"").trim();if(!t)return null;o.markup=t}return o}}var Bf=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{},F=(function(s){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,o=0,r={},t={manual:s.Prism&&s.Prism.manual,disableWorkerMessageHandler:s.Prism&&s.Prism.disableWorkerMessageHandler,util:{encode:function m(f){return f instanceof i?new i(f.type,m(f.content),f.alias):Array.isArray(f)?f.map(m):f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(m){return Object.prototype.toString.call(m).slice(8,-1)},objId:function(m){return m.__id||Object.defineProperty(m,"__id",{value:++o}),m.__id},clone:function m(f,v){var _,d;switch(v=v||{},t.util.type(f)){case"Object":if(d=t.util.objId(f),v[d])return v[d];for(var u in _={},v[d]=_,f)f.hasOwnProperty(u)&&(_[u]=m(f[u],v));return _;case"Array":return d=t.util.objId(f),v[d]?v[d]:(_=[],v[d]=_,f.forEach(function(y,w){_[w]=m(y,v)}),_);default:return f}},getLanguage:function(m){for(;m;){var f=e.exec(m.className);if(f)return f[1].toLowerCase();m=m.parentElement}return"none"},setLanguage:function(m,f){m.className=m.className.replace(RegExp(e,"gi"),""),m.classList.add("language-"+f)},currentScript:function(){if(typeof document>"u")return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(_){var m=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(_.stack)||[])[1];if(m){var f=document.getElementsByTagName("script");for(var v in f)if(f[v].src==m)return f[v]}return null}},isActive:function(m,f,v){for(var _="no-"+f;m;){var d=m.classList;if(d.contains(f))return!0;if(d.contains(_))return!1;m=m.parentElement}return!!v}},languages:{plain:r,plaintext:r,text:r,txt:r,extend:function(m,f){var v=t.util.clone(t.languages[m]);for(var _ in f)v[_]=f[_];return v},insertBefore:function(m,f,v,_){var d=(_=_||t.languages)[m],u={};for(var y in d)if(d.hasOwnProperty(y)){if(y==f)for(var w in v)v.hasOwnProperty(w)&&(u[w]=v[w]);v.hasOwnProperty(y)||(u[y]=d[y])}var C=_[m];return _[m]=u,t.languages.DFS(t.languages,function(P,O){O===C&&P!=m&&(this[P]=u)}),u},DFS:function m(f,v,_,d){d=d||{};var u=t.util.objId;for(var y in f)if(f.hasOwnProperty(y)){v.call(f,y,f[y],_||y);var w=f[y],C=t.util.type(w);C!=="Object"||d[u(w)]?C!=="Array"||d[u(w)]||(d[u(w)]=!0,m(w,v,y,d)):(d[u(w)]=!0,m(w,v,null,d))}}},plugins:{},highlightAll:function(m,f){t.highlightAllUnder(document,m,f)},highlightAllUnder:function(m,f,v){var _={callback:v,container:m,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};t.hooks.run("before-highlightall",_),_.elements=Array.prototype.slice.apply(_.container.querySelectorAll(_.selector)),t.hooks.run("before-all-elements-highlight",_);for(var d,u=0;d=_.elements[u++];)t.highlightElement(d,f===!0,_.callback)},highlightElement:function(m,f,v){var _=t.util.getLanguage(m),d=t.languages[_];t.util.setLanguage(m,_);var u=m.parentElement;u&&u.nodeName.toLowerCase()==="pre"&&t.util.setLanguage(u,_);var y={element:m,language:_,grammar:d,code:m.textContent};function w(P){y.highlightedCode=P,t.hooks.run("before-insert",y),y.element.innerHTML=y.highlightedCode,t.hooks.run("after-highlight",y),t.hooks.run("complete",y),v&&v.call(y.element)}if(t.hooks.run("before-sanity-check",y),(u=y.element.parentElement)&&u.nodeName.toLowerCase()==="pre"&&!u.hasAttribute("tabindex")&&u.setAttribute("tabindex","0"),!y.code)return t.hooks.run("complete",y),void(v&&v.call(y.element));if(t.hooks.run("before-highlight",y),y.grammar)if(f&&s.Worker){var C=new Worker(t.filename);C.onmessage=function(P){w(P.data)},C.postMessage(JSON.stringify({language:y.language,code:y.code,immediateClose:!0}))}else w(t.highlight(y.code,y.grammar,y.language));else w(t.util.encode(y.code))},highlight:function(m,f,v){var _={code:m,grammar:f,language:v};if(t.hooks.run("before-tokenize",_),!_.grammar)throw new Error('The language "'+_.language+'" has no grammar.');return _.tokens=t.tokenize(_.code,_.grammar),t.hooks.run("after-tokenize",_),i.stringify(t.util.encode(_.tokens),_.language)},tokenize:function(m,f){var v=f.rest;if(v){for(var _ in v)f[_]=v[_];delete f.rest}var d=new c;return g(d,d.head,m),a(m,d,f,d.head,0),(function(u){for(var y=[],w=u.head.next;w!==u.tail;)y.push(w.value),w=w.next;return y})(d)},hooks:{all:{},add:function(m,f){var v=t.hooks.all;v[m]=v[m]||[],v[m].push(f)},run:function(m,f){var v=t.hooks.all[m];if(v&&v.length)for(var _,d=0;_=v[d++];)_(f)}},Token:i};function i(m,f,v,_){this.type=m,this.content=f,this.alias=v,this.length=0|(_||"").length}function n(m,f,v,_){m.lastIndex=f;var d=m.exec(v);if(d&&_&&d[1]){var u=d[1].length;d.index+=u,d[0]=d[0].slice(u)}return d}function a(m,f,v,_,d,u){for(var y in v)if(v.hasOwnProperty(y)&&v[y]){var w=v[y];w=Array.isArray(w)?w:[w];for(var C=0;C<w.length;++C){if(u&&u.cause==y+","+C)return;var P=w[C],O=P.inside,E=!!P.lookbehind,M=!!P.greedy,ee=P.alias;if(M&&!P.pattern.global){var re=P.pattern.toString().match(/[imsuy]*$/)[0];P.pattern=RegExp(P.pattern.source,re+"g")}for(var ve=P.pattern||P,B=_.next,pe=d;B!==f.tail&&!(u&&pe>=u.reach);pe+=B.value.length,B=B.next){var Be=B.value;if(f.length>m.length)return;if(!(Be instanceof i)){var Te,se=1;if(M){if(!(Te=n(ve,pe,m,E))||Te.index>=m.length)break;var Se=Te.index,kt=Te.index+Te[0].length,ze=pe;for(ze+=B.value.length;Se>=ze;)ze+=(B=B.next).value.length;if(pe=ze-=B.value.length,B.value instanceof i)continue;for(var we=B;we!==f.tail&&(ze<kt||typeof we.value=="string");we=we.next)se++,ze+=we.value.length;se--,Be=m.slice(pe,ze),Te.index-=pe}else if(!(Te=n(ve,0,Be,E)))continue;Se=Te.index;var fs=Te[0],Ke=Be.slice(0,Se),Ct=Be.slice(Se+fs.length),At=pe+Be.length;u&&At>u.reach&&(u.reach=At);var ft=B.prev;if(Ke&&(ft=g(f,ft,Ke),pe+=Ke.length),b(f,ft,se),B=g(f,ft,new i(y,O?t.tokenize(fs,O):fs,ee,fs)),Ct&&g(f,B,Ct),se>1){var Ht={cause:y+","+C,reach:At};a(m,f,v,B.prev,pe,Ht),u&&Ht.reach>u.reach&&(u.reach=Ht.reach)}}}}}}function c(){var m={value:null,prev:null,next:null},f={value:null,prev:m,next:null};m.next=f,this.head=m,this.tail=f,this.length=0}function g(m,f,v){var _=f.next,d={value:v,prev:f,next:_};return f.next=d,_.prev=d,m.length++,d}function b(m,f,v){for(var _=f.next,d=0;d<v&&_!==m.tail;d++)_=_.next;f.next=_,_.prev=f,m.length-=d}if(s.Prism=t,i.stringify=function m(f,v){if(typeof f=="string")return f;if(Array.isArray(f)){var _="";return f.forEach(function(C){_+=m(C,v)}),_}var d={type:f.type,content:m(f.content,v),tag:"span",classes:["token",f.type],attributes:{},language:v},u=f.alias;u&&(Array.isArray(u)?Array.prototype.push.apply(d.classes,u):d.classes.push(u)),t.hooks.run("wrap",d);var y="";for(var w in d.attributes)y+=" "+w+'="'+(d.attributes[w]||"").replace(/"/g,"&quot;")+'"';return"<"+d.tag+' class="'+d.classes.join(" ")+'"'+y+">"+d.content+"</"+d.tag+">"},!s.document)return s.addEventListener&&(t.disableWorkerMessageHandler||s.addEventListener("message",function(m){var f=JSON.parse(m.data),v=f.language,_=f.code,d=f.immediateClose;s.postMessage(t.highlight(_,t.languages[v],v)),d&&s.close()},!1)),t;var h=t.util.currentScript();function x(){t.manual||t.highlightAll()}if(h&&(t.filename=h.src,h.hasAttribute("data-manual")&&(t.manual=!0)),!t.manual){var A=document.readyState;A==="loading"||A==="interactive"&&h&&h.defer?document.addEventListener("DOMContentLoaded",x):window.requestAnimationFrame?window.requestAnimationFrame(x):window.setTimeout(x,16)}return t})(Bf);typeof es<"u"&&es.exports&&(es.exports=F),typeof global<"u"&&(global.Prism=F);F.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},F.languages.markup.tag.inside["attr-value"].inside.entity=F.languages.markup.entity,F.languages.markup.doctype.inside["internal-subset"].inside=F.languages.markup,F.hooks.add("wrap",function(s){s.type==="entity"&&(s.attributes.title=s.content.replace(/&amp;/,"&"))}),Object.defineProperty(F.languages.markup.tag,"addInlined",{value:function(s,e){var o={};o["language-"+e]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:F.languages[e]},o.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:o}};r["language-"+e]={pattern:/[\s\S]+/,inside:F.languages[e]};var t={};t[s]={pattern:RegExp("(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[^])*?(?=</__>)".replace(/__/g,function(){return s}),"i"),lookbehind:!0,greedy:!0,inside:r},F.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(F.languages.markup.tag,"addAttribute",{value:function(s,e){F.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(`(^|["'\\s])(?:`+s+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:F.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),F.languages.html=F.languages.markup,F.languages.mathml=F.languages.markup,F.languages.svg=F.languages.markup,F.languages.xml=F.languages.extend("markup",{}),F.languages.ssml=F.languages.xml,F.languages.atom=F.languages.xml,F.languages.rss=F.languages.xml;(function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp(`@[\\w-](?:[^;{\\s"']|\\s+(?!\\s)|`+e.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+`|(?:[^\\\\\r
4334
4334
  ()"']|\\\\[^])*)\\)`,"i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var o=s.languages.markup;o&&(o.tag.addInlined("style","css"),o.tag.addAttribute("style","css"))})(F);F.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};F.languages.javascript=F.languages.extend("clike",{"class-name":[F.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),F.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,F.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(`((?:^|[^$\\w\\xA0-\\uFFFF."'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r
4335
4335
  ]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r
4336
4336
  ])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r
@@ -4338,24 +4338,24 @@ ${this.value}</textarea
4338
4338
  ]|\\\\.|\\[(?:[^[\\]\\\\\r
4339
4339
  ]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r
4340
4340
  ])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r
4341
- ,.;:})\\]]|//))`),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:F.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:F.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:F.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:F.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:F.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),F.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:F.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),F.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),F.languages.markup&&(F.languages.markup.tag.addInlined("script","javascript"),F.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),F.languages.js=F.languages.javascript;(function(){if(typeof F<"u"&&typeof document<"u"&&document.querySelector){var s,e="line-numbers",o="linkable-line-numbers",r=/\n(?!$)/g,t=!0;F.plugins.lineHighlight={highlightLines:function(h,w,A){var m=(w=typeof w=="string"?w:h.getAttribute("data-line")||"").replace(/\s+/g,"").split(",").filter(Boolean),b=+h.getAttribute("data-line-offset")||0,v=((function(){if(s===void 0){var M=document.createElement("div");M.style.fontSize="13px",M.style.lineHeight="1.5",M.style.padding="0",M.style.border="0",M.innerHTML="&nbsp;<br />&nbsp;",document.body.appendChild(M),s=M.offsetHeight===38,document.body.removeChild(M)}return s})()?parseInt:parseFloat)(getComputedStyle(h).lineHeight),_=F.util.isActive(h,e),d=h.querySelector("code"),u=_?h:d||h,y=[],x=d.textContent.match(r),C=x?x.length+1:1,P=d&&u!=d?(function(M,ee){var re=getComputedStyle(M),ve=getComputedStyle(ee);function B(pe){return+pe.substr(0,pe.length-2)}return ee.offsetTop+B(ve.borderTopWidth)+B(ve.paddingTop)-B(re.paddingTop)})(h,d):0;m.forEach(function(M){var ee=M.split("-"),re=+ee[0],ve=+ee[1]||re;if(!((ve=Math.min(C+b,ve))<re)){var B=h.querySelector('.line-highlight[data-range="'+M+'"]')||document.createElement("div");if(y.push(function(){B.setAttribute("aria-hidden","true"),B.setAttribute("data-range",M),B.className=(A||"")+" line-highlight"}),_&&F.plugins.lineNumbers){var pe=F.plugins.lineNumbers.getLine(h,re),Be=F.plugins.lineNumbers.getLine(h,ve);if(pe){var Te=pe.offsetTop+P+"px";y.push(function(){B.style.top=Te})}if(Be){var se=Be.offsetTop-pe.offsetTop+Be.offsetHeight+"px";y.push(function(){B.style.height=se})}}else y.push(function(){B.setAttribute("data-start",String(re)),ve>re&&B.setAttribute("data-end",String(ve)),B.style.top=(re-b-1)*v+P+"px",B.textContent=new Array(ve-re+2).join(`
4342
- `)});y.push(function(){B.style.width=h.scrollWidth+"px"}),y.push(function(){u.appendChild(B)})}});var O=h.id;if(_&&F.util.isActive(h,o)&&O){a(h,o)||y.push(function(){h.classList.add(o)});var E=parseInt(h.getAttribute("data-start")||"1");n(".line-numbers-rows > span",h).forEach(function(M,ee){var re=ee+E;M.onclick=function(){var ve=O+"."+re;t=!1,location.hash=ve,setTimeout(function(){t=!0},1)}})}return function(){y.forEach(c)}}};var i=0;F.hooks.add("before-sanity-check",function(h){var w=h.element.parentElement;if(g(w)){var A=0;n(".line-highlight",w).forEach(function(m){A+=m.textContent.length,m.parentNode.removeChild(m)}),A&&/^(?: \n)+$/.test(h.code.slice(-A))&&(h.code=h.code.slice(0,-A))}}),F.hooks.add("complete",function h(w){var A=w.element.parentElement;if(g(A)){clearTimeout(i);var m=F.plugins.lineNumbers,b=w.plugins&&w.plugins.lineNumbers;a(A,e)&&m&&!b?F.hooks.add("line-numbers",h):(F.plugins.lineHighlight.highlightLines(A)(),i=setTimeout(f,1))}}),window.addEventListener("hashchange",f),window.addEventListener("resize",function(){n("pre").filter(g).map(function(h){return F.plugins.lineHighlight.highlightLines(h)}).forEach(c)})}function n(h,w){return Array.prototype.slice.call((w||document).querySelectorAll(h))}function a(h,w){return h.classList.contains(w)}function c(h){h()}function g(h){return!!(h&&/pre/i.test(h.nodeName)&&(h.hasAttribute("data-line")||h.id&&F.util.isActive(h,o)))}function f(){var h=location.hash.slice(1);n(".temporary.line-highlight").forEach(function(b){b.parentNode.removeChild(b)});var w=(h.match(/\.([\d,-]+)$/)||[,""])[1];if(w&&!document.getElementById(h)){var A=h.slice(0,h.lastIndexOf(".")),m=document.getElementById(A);m&&(m.hasAttribute("data-line")||m.setAttribute("data-line",""),F.plugins.lineHighlight.highlightLines(m,w,"temporary ")(),t&&document.querySelector(".temporary.line-highlight").scrollIntoView())}}})();typeof F<"u"&&F.hooks.add("wrap",function(s){s.type==="keyword"&&s.classes.push("keyword-"+s.content)});(function(){if(typeof F<"u"){var s=Object.assign||function(t,i){for(var n in i)i.hasOwnProperty(n)&&(t[n]=i[n]);return t},e={"remove-trailing":"boolean","remove-indent":"boolean","left-trim":"boolean","right-trim":"boolean","break-lines":"number",indent:"number","remove-initial-line-feed":"boolean","tabs-to-spaces":"number","spaces-to-tabs":"number"};o.prototype={setDefaults:function(t){this.defaults=s(this.defaults,t)},normalize:function(t,i){for(var n in i=s(this.defaults,i)){var a=n.replace(/-(\w)/g,function(c,g){return g.toUpperCase()});n!=="normalize"&&a!=="setDefaults"&&i[n]&&this[a]&&(t=this[a].call(this,t,i[n]))}return t},leftTrim:function(t){return t.replace(/^\s+/,"")},rightTrim:function(t){return t.replace(/\s+$/,"")},tabsToSpaces:function(t,i){return i=0|i||4,t.replace(/\t/g,new Array(++i).join(" "))},spacesToTabs:function(t,i){return i=0|i||4,t.replace(RegExp(" {"+i+"}","g")," ")},removeTrailing:function(t){return t.replace(/\s*?$/gm,"")},removeInitialLineFeed:function(t){return t.replace(/^(?:\r?\n|\r)/,"")},removeIndent:function(t){var i=t.match(/^[^\S\n\r]*(?=\S)/gm);return i&&i[0].length?(i.sort(function(n,a){return n.length-a.length}),i[0].length?t.replace(RegExp("^"+i[0],"gm"),""):t):t},indent:function(t,i){return t.replace(/^[^\S\n\r]*(?=\S)/gm,new Array(++i).join(" ")+"$&")},breakLines:function(t,i){i=i===!0?80:0|i||80;for(var n=t.split(`
4343
- `),a=0;a<n.length;++a)if(!(r(n[a])<=i)){for(var c=n[a].split(/(\s+)/g),g=0,f=0;f<c.length;++f){var h=r(c[f]);(g+=h)>i&&(c[f]=`
4344
- `+c[f],g=h)}n[a]=c.join("")}return n.join(`
4345
- `)}},typeof es<"u"&&es.exports&&(es.exports=o),F.plugins.NormalizeWhitespace=new o({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),F.hooks.add("before-sanity-check",function(t){var i=F.plugins.NormalizeWhitespace;if((!t.settings||t.settings["whitespace-normalization"]!==!1)&&F.util.isActive(t.element,"whitespace-normalization",!0))if(t.element&&t.element.parentNode||!t.code){var n=t.element.parentNode;if(t.code&&n&&n.nodeName.toLowerCase()==="pre"){for(var a in t.settings==null&&(t.settings={}),e)if(Object.hasOwnProperty.call(e,a)){var c=e[a];if(n.hasAttribute("data-"+a))try{var g=JSON.parse(n.getAttribute("data-"+a)||"true");typeof g===c&&(t.settings[a]=g)}catch{}}for(var f=n.childNodes,h="",w="",A=!1,m=0;m<f.length;++m){var b=f[m];b==t.element?A=!0:b.nodeName==="#text"&&(A?w+=b.nodeValue:h+=b.nodeValue,n.removeChild(b),--m)}if(t.element.children.length&&F.plugins.KeepMarkup){var v=h+t.element.innerHTML+w;t.element.innerHTML=i.normalize(v,t.settings),t.code=t.element.textContent}else t.code=h+t.code+w,t.code=i.normalize(t.code,t.settings)}}else t.code=i.normalize(t.code,t.settings)})}function o(t){this.defaults=s({},t)}function r(t){for(var i=0,n=0;n<t.length;++n)t.charCodeAt(n)==9&&(i+=3);return t.length+i}})();(function(){if(typeof F<"u"&&typeof document<"u"){var s=[],e={},o=function(){};F.plugins.toolbar={};var r=F.plugins.toolbar.registerButton=function(i,n){var a;a=typeof n=="function"?n:function(c){var g;return typeof n.onClick=="function"?((g=document.createElement("button")).type="button",g.addEventListener("click",function(){n.onClick.call(this,c)})):typeof n.url=="string"?(g=document.createElement("a")).href=n.url:g=document.createElement("span"),n.className&&g.classList.add(n.className),g.textContent=n.text,g},i in e?console.warn('There is a button with the key "'+i+'" registered already.'):s.push(e[i]=a)},t=F.plugins.toolbar.hook=function(i){var n=i.element.parentNode;if(n&&/pre/i.test(n.nodeName)&&!n.parentNode.classList.contains("code-toolbar")){var a=document.createElement("div");a.classList.add("code-toolbar"),n.parentNode.insertBefore(a,n),a.appendChild(n);var c=document.createElement("div");c.classList.add("toolbar");var g=s,f=(function(h){for(;h;){var w=h.getAttribute("data-toolbar-order");if(w!=null)return(w=w.trim()).length?w.split(/\s*,\s*/g):[];h=h.parentElement}})(i.element);f&&(g=f.map(function(h){return e[h]||o})),g.forEach(function(h){var w=h(i);if(w){var A=document.createElement("div");A.classList.add("toolbar-item"),A.appendChild(w),c.appendChild(A)}}),a.appendChild(c)}};r("label",function(i){var n=i.element.parentNode;if(n&&/pre/i.test(n.nodeName)&&n.hasAttribute("data-label")){var a,c,g=n.getAttribute("data-label");try{c=document.querySelector("template#"+g)}catch{}return c?a=c.content:(n.hasAttribute("data-url")?(a=document.createElement("a")).href=n.getAttribute("data-url"):a=document.createElement("span"),a.textContent=g),a}}),F.hooks.add("complete",t)}})();const Nf=L`code[class*=language-],pre[class*=language-]{color:#d6deeb;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{text-shadow:none;background:#1d3b53fc}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{text-shadow:none;background:#1d3b53fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{color:#fff;background:#011627}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.cdata{color:#637777;font-style:italic}.token.punctuation{color:#c792ea}.namespace{color:#b2ccd6}.token.deleted{color:#ef53508f;font-style:italic}.token.symbol,.token.property{color:#80cbc4}.token.tag,.token.operator,.token.keyword{color:#7fdbca}.token.boolean{color:#ff5874}.token.number{color:#f78c6c}.token.constant,.token.function,.token.builtin,.token.char{color:#82aaff}.token.selector,.token.doctype{color:#c792ea;font-style:italic}.token.attr-name,.token.inserted{color:#addb67;font-style:italic}.token.string,.token.url,.token.entity,.language-css .token.string,.style .token.string{color:#addb67}.token.class-name,.token.atrule,.token.attr-value{color:#ffcb8b}.token.regex,.token.important,.token.variable{color:#d6deeb}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}`,hc=L`
4346
- ${wn(Nf)}
4347
- `;var pi={exports:{}},Wa;function Mf(){return Wa||(Wa=1,(function(s){var e=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/**
4341
+ ,.;:})\\]]|//))`),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:F.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:F.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:F.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:F.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:F.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),F.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:F.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),F.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),F.languages.markup&&(F.languages.markup.tag.addInlined("script","javascript"),F.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),F.languages.js=F.languages.javascript;(function(){if(typeof F<"u"&&typeof document<"u"&&document.querySelector){var s,e="line-numbers",o="linkable-line-numbers",r=/\n(?!$)/g,t=!0;F.plugins.lineHighlight={highlightLines:function(h,x,A){var m=(x=typeof x=="string"?x:h.getAttribute("data-line")||"").replace(/\s+/g,"").split(",").filter(Boolean),f=+h.getAttribute("data-line-offset")||0,v=((function(){if(s===void 0){var M=document.createElement("div");M.style.fontSize="13px",M.style.lineHeight="1.5",M.style.padding="0",M.style.border="0",M.innerHTML="&nbsp;<br />&nbsp;",document.body.appendChild(M),s=M.offsetHeight===38,document.body.removeChild(M)}return s})()?parseInt:parseFloat)(getComputedStyle(h).lineHeight),_=F.util.isActive(h,e),d=h.querySelector("code"),u=_?h:d||h,y=[],w=d.textContent.match(r),C=w?w.length+1:1,P=d&&u!=d?(function(M,ee){var re=getComputedStyle(M),ve=getComputedStyle(ee);function B(pe){return+pe.substr(0,pe.length-2)}return ee.offsetTop+B(ve.borderTopWidth)+B(ve.paddingTop)-B(re.paddingTop)})(h,d):0;m.forEach(function(M){var ee=M.split("-"),re=+ee[0],ve=+ee[1]||re;if(!((ve=Math.min(C+f,ve))<re)){var B=h.querySelector('.line-highlight[data-range="'+M+'"]')||document.createElement("div");if(y.push(function(){B.setAttribute("aria-hidden","true"),B.setAttribute("data-range",M),B.className=(A||"")+" line-highlight"}),_&&F.plugins.lineNumbers){var pe=F.plugins.lineNumbers.getLine(h,re),Be=F.plugins.lineNumbers.getLine(h,ve);if(pe){var Te=pe.offsetTop+P+"px";y.push(function(){B.style.top=Te})}if(Be){var se=Be.offsetTop-pe.offsetTop+Be.offsetHeight+"px";y.push(function(){B.style.height=se})}}else y.push(function(){B.setAttribute("data-start",String(re)),ve>re&&B.setAttribute("data-end",String(ve)),B.style.top=(re-f-1)*v+P+"px",B.textContent=new Array(ve-re+2).join(`
4342
+ `)});y.push(function(){B.style.width=h.scrollWidth+"px"}),y.push(function(){u.appendChild(B)})}});var O=h.id;if(_&&F.util.isActive(h,o)&&O){a(h,o)||y.push(function(){h.classList.add(o)});var E=parseInt(h.getAttribute("data-start")||"1");n(".line-numbers-rows > span",h).forEach(function(M,ee){var re=ee+E;M.onclick=function(){var ve=O+"."+re;t=!1,location.hash=ve,setTimeout(function(){t=!0},1)}})}return function(){y.forEach(c)}}};var i=0;F.hooks.add("before-sanity-check",function(h){var x=h.element.parentElement;if(g(x)){var A=0;n(".line-highlight",x).forEach(function(m){A+=m.textContent.length,m.parentNode.removeChild(m)}),A&&/^(?: \n)+$/.test(h.code.slice(-A))&&(h.code=h.code.slice(0,-A))}}),F.hooks.add("complete",function h(x){var A=x.element.parentElement;if(g(A)){clearTimeout(i);var m=F.plugins.lineNumbers,f=x.plugins&&x.plugins.lineNumbers;a(A,e)&&m&&!f?F.hooks.add("line-numbers",h):(F.plugins.lineHighlight.highlightLines(A)(),i=setTimeout(b,1))}}),window.addEventListener("hashchange",b),window.addEventListener("resize",function(){n("pre").filter(g).map(function(h){return F.plugins.lineHighlight.highlightLines(h)}).forEach(c)})}function n(h,x){return Array.prototype.slice.call((x||document).querySelectorAll(h))}function a(h,x){return h.classList.contains(x)}function c(h){h()}function g(h){return!!(h&&/pre/i.test(h.nodeName)&&(h.hasAttribute("data-line")||h.id&&F.util.isActive(h,o)))}function b(){var h=location.hash.slice(1);n(".temporary.line-highlight").forEach(function(f){f.parentNode.removeChild(f)});var x=(h.match(/\.([\d,-]+)$/)||[,""])[1];if(x&&!document.getElementById(h)){var A=h.slice(0,h.lastIndexOf(".")),m=document.getElementById(A);m&&(m.hasAttribute("data-line")||m.setAttribute("data-line",""),F.plugins.lineHighlight.highlightLines(m,x,"temporary ")(),t&&document.querySelector(".temporary.line-highlight").scrollIntoView())}}})();typeof F<"u"&&F.hooks.add("wrap",function(s){s.type==="keyword"&&s.classes.push("keyword-"+s.content)});(function(){if(typeof F<"u"){var s=Object.assign||function(t,i){for(var n in i)i.hasOwnProperty(n)&&(t[n]=i[n]);return t},e={"remove-trailing":"boolean","remove-indent":"boolean","left-trim":"boolean","right-trim":"boolean","break-lines":"number",indent:"number","remove-initial-line-feed":"boolean","tabs-to-spaces":"number","spaces-to-tabs":"number"};o.prototype={setDefaults:function(t){this.defaults=s(this.defaults,t)},normalize:function(t,i){for(var n in i=s(this.defaults,i)){var a=n.replace(/-(\w)/g,function(c,g){return g.toUpperCase()});n!=="normalize"&&a!=="setDefaults"&&i[n]&&this[a]&&(t=this[a].call(this,t,i[n]))}return t},leftTrim:function(t){return t.replace(/^\s+/,"")},rightTrim:function(t){return t.replace(/\s+$/,"")},tabsToSpaces:function(t,i){return i=0|i||4,t.replace(/\t/g,new Array(++i).join(" "))},spacesToTabs:function(t,i){return i=0|i||4,t.replace(RegExp(" {"+i+"}","g")," ")},removeTrailing:function(t){return t.replace(/\s*?$/gm,"")},removeInitialLineFeed:function(t){return t.replace(/^(?:\r?\n|\r)/,"")},removeIndent:function(t){var i=t.match(/^[^\S\n\r]*(?=\S)/gm);return i&&i[0].length?(i.sort(function(n,a){return n.length-a.length}),i[0].length?t.replace(RegExp("^"+i[0],"gm"),""):t):t},indent:function(t,i){return t.replace(/^[^\S\n\r]*(?=\S)/gm,new Array(++i).join(" ")+"$&")},breakLines:function(t,i){i=i===!0?80:0|i||80;for(var n=t.split(`
4343
+ `),a=0;a<n.length;++a)if(!(r(n[a])<=i)){for(var c=n[a].split(/(\s+)/g),g=0,b=0;b<c.length;++b){var h=r(c[b]);(g+=h)>i&&(c[b]=`
4344
+ `+c[b],g=h)}n[a]=c.join("")}return n.join(`
4345
+ `)}},typeof es<"u"&&es.exports&&(es.exports=o),F.plugins.NormalizeWhitespace=new o({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),F.hooks.add("before-sanity-check",function(t){var i=F.plugins.NormalizeWhitespace;if((!t.settings||t.settings["whitespace-normalization"]!==!1)&&F.util.isActive(t.element,"whitespace-normalization",!0))if(t.element&&t.element.parentNode||!t.code){var n=t.element.parentNode;if(t.code&&n&&n.nodeName.toLowerCase()==="pre"){for(var a in t.settings==null&&(t.settings={}),e)if(Object.hasOwnProperty.call(e,a)){var c=e[a];if(n.hasAttribute("data-"+a))try{var g=JSON.parse(n.getAttribute("data-"+a)||"true");typeof g===c&&(t.settings[a]=g)}catch{}}for(var b=n.childNodes,h="",x="",A=!1,m=0;m<b.length;++m){var f=b[m];f==t.element?A=!0:f.nodeName==="#text"&&(A?x+=f.nodeValue:h+=f.nodeValue,n.removeChild(f),--m)}if(t.element.children.length&&F.plugins.KeepMarkup){var v=h+t.element.innerHTML+x;t.element.innerHTML=i.normalize(v,t.settings),t.code=t.element.textContent}else t.code=h+t.code+x,t.code=i.normalize(t.code,t.settings)}}else t.code=i.normalize(t.code,t.settings)})}function o(t){this.defaults=s({},t)}function r(t){for(var i=0,n=0;n<t.length;++n)t.charCodeAt(n)==9&&(i+=3);return t.length+i}})();(function(){if(typeof F<"u"&&typeof document<"u"){var s=[],e={},o=function(){};F.plugins.toolbar={};var r=F.plugins.toolbar.registerButton=function(i,n){var a;a=typeof n=="function"?n:function(c){var g;return typeof n.onClick=="function"?((g=document.createElement("button")).type="button",g.addEventListener("click",function(){n.onClick.call(this,c)})):typeof n.url=="string"?(g=document.createElement("a")).href=n.url:g=document.createElement("span"),n.className&&g.classList.add(n.className),g.textContent=n.text,g},i in e?console.warn('There is a button with the key "'+i+'" registered already.'):s.push(e[i]=a)},t=F.plugins.toolbar.hook=function(i){var n=i.element.parentNode;if(n&&/pre/i.test(n.nodeName)&&!n.parentNode.classList.contains("code-toolbar")){var a=document.createElement("div");a.classList.add("code-toolbar"),n.parentNode.insertBefore(a,n),a.appendChild(n);var c=document.createElement("div");c.classList.add("toolbar");var g=s,b=(function(h){for(;h;){var x=h.getAttribute("data-toolbar-order");if(x!=null)return(x=x.trim()).length?x.split(/\s*,\s*/g):[];h=h.parentElement}})(i.element);b&&(g=b.map(function(h){return e[h]||o})),g.forEach(function(h){var x=h(i);if(x){var A=document.createElement("div");A.classList.add("toolbar-item"),A.appendChild(x),c.appendChild(A)}}),a.appendChild(c)}};r("label",function(i){var n=i.element.parentNode;if(n&&/pre/i.test(n.nodeName)&&n.hasAttribute("data-label")){var a,c,g=n.getAttribute("data-label");try{c=document.querySelector("template#"+g)}catch{}return c?a=c.content:(n.hasAttribute("data-url")?(a=document.createElement("a")).href=n.getAttribute("data-url"):a=document.createElement("span"),a.textContent=g),a}}),F.hooks.add("complete",t)}})();const zf=L`code[class*=language-],pre[class*=language-]{color:#d6deeb;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{text-shadow:none;background:#1d3b53fc}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{text-shadow:none;background:#1d3b53fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{color:#fff;background:#011627}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.cdata{color:#637777;font-style:italic}.token.punctuation{color:#c792ea}.namespace{color:#b2ccd6}.token.deleted{color:#ef53508f;font-style:italic}.token.symbol,.token.property{color:#80cbc4}.token.tag,.token.operator,.token.keyword{color:#7fdbca}.token.boolean{color:#ff5874}.token.number{color:#f78c6c}.token.constant,.token.function,.token.builtin,.token.char{color:#82aaff}.token.selector,.token.doctype{color:#c792ea;font-style:italic}.token.attr-name,.token.inserted{color:#addb67;font-style:italic}.token.string,.token.url,.token.entity,.language-css .token.string,.style .token.string{color:#addb67}.token.class-name,.token.atrule,.token.attr-value{color:#ffcb8b}.token.regex,.token.important,.token.variable{color:#d6deeb}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}`,fc=L`
4346
+ ${wn(zf)}
4347
+ `;var pi={exports:{}},Wa;function Kf(){return Wa||(Wa=1,(function(s){var e=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/**
4348
4348
  * Prism: Lightweight, robust, elegant syntax highlighting
4349
4349
  *
4350
4350
  * @license MIT <https://opensource.org/licenses/MIT>
4351
4351
  * @author Lea Verou <https://lea.verou.me>
4352
4352
  * @namespace
4353
4353
  * @public
4354
- */var o=(function(r){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,i=0,n={},a={manual:r.Prism&&r.Prism.manual,disableWorkerMessageHandler:r.Prism&&r.Prism.disableWorkerMessageHandler,util:{encode:function d(u){return u instanceof c?new c(u.type,d(u.content),u.alias):Array.isArray(u)?u.map(d):u.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(d){return Object.prototype.toString.call(d).slice(8,-1)},objId:function(d){return d.__id||Object.defineProperty(d,"__id",{value:++i}),d.__id},clone:function d(u,y){y=y||{};var x,C;switch(a.util.type(u)){case"Object":if(C=a.util.objId(u),y[C])return y[C];x={},y[C]=x;for(var P in u)u.hasOwnProperty(P)&&(x[P]=d(u[P],y));return x;case"Array":return C=a.util.objId(u),y[C]?y[C]:(x=[],y[C]=x,u.forEach(function(O,E){x[E]=d(O,y)}),x);default:return u}},getLanguage:function(d){for(;d;){var u=t.exec(d.className);if(u)return u[1].toLowerCase();d=d.parentElement}return"none"},setLanguage:function(d,u){d.className=d.className.replace(RegExp(t,"gi"),""),d.classList.add("language-"+u)},currentScript:function(){if(typeof document>"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(x){var d=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(x.stack)||[])[1];if(d){var u=document.getElementsByTagName("script");for(var y in u)if(u[y].src==d)return u[y]}return null}},isActive:function(d,u,y){for(var x="no-"+u;d;){var C=d.classList;if(C.contains(u))return!0;if(C.contains(x))return!1;d=d.parentElement}return!!y}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(d,u){var y=a.util.clone(a.languages[d]);for(var x in u)y[x]=u[x];return y},insertBefore:function(d,u,y,x){x=x||a.languages;var C=x[d],P={};for(var O in C)if(C.hasOwnProperty(O)){if(O==u)for(var E in y)y.hasOwnProperty(E)&&(P[E]=y[E]);y.hasOwnProperty(O)||(P[O]=C[O])}var M=x[d];return x[d]=P,a.languages.DFS(a.languages,function(ee,re){re===M&&ee!=d&&(this[ee]=P)}),P},DFS:function d(u,y,x,C){C=C||{};var P=a.util.objId;for(var O in u)if(u.hasOwnProperty(O)){y.call(u,O,u[O],x||O);var E=u[O],M=a.util.type(E);M==="Object"&&!C[P(E)]?(C[P(E)]=!0,d(E,y,null,C)):M==="Array"&&!C[P(E)]&&(C[P(E)]=!0,d(E,y,O,C))}}},plugins:{},highlightAll:function(d,u){a.highlightAllUnder(document,d,u)},highlightAllUnder:function(d,u,y){var x={callback:y,container:d,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};a.hooks.run("before-highlightall",x),x.elements=Array.prototype.slice.apply(x.container.querySelectorAll(x.selector)),a.hooks.run("before-all-elements-highlight",x);for(var C=0,P;P=x.elements[C++];)a.highlightElement(P,u===!0,x.callback)},highlightElement:function(d,u,y){var x=a.util.getLanguage(d),C=a.languages[x];a.util.setLanguage(d,x);var P=d.parentElement;P&&P.nodeName.toLowerCase()==="pre"&&a.util.setLanguage(P,x);var O=d.textContent,E={element:d,language:x,grammar:C,code:O};function M(re){E.highlightedCode=re,a.hooks.run("before-insert",E),E.element.innerHTML=E.highlightedCode,a.hooks.run("after-highlight",E),a.hooks.run("complete",E),y&&y.call(E.element)}if(a.hooks.run("before-sanity-check",E),P=E.element.parentElement,P&&P.nodeName.toLowerCase()==="pre"&&!P.hasAttribute("tabindex")&&P.setAttribute("tabindex","0"),!E.code){a.hooks.run("complete",E),y&&y.call(E.element);return}if(a.hooks.run("before-highlight",E),!E.grammar){M(a.util.encode(E.code));return}if(u&&r.Worker){var ee=new Worker(a.filename);ee.onmessage=function(re){M(re.data)},ee.postMessage(JSON.stringify({language:E.language,code:E.code,immediateClose:!0}))}else M(a.highlight(E.code,E.grammar,E.language))},highlight:function(d,u,y){var x={code:d,grammar:u,language:y};if(a.hooks.run("before-tokenize",x),!x.grammar)throw new Error('The language "'+x.language+'" has no grammar.');return x.tokens=a.tokenize(x.code,x.grammar),a.hooks.run("after-tokenize",x),c.stringify(a.util.encode(x.tokens),x.language)},tokenize:function(d,u){var y=u.rest;if(y){for(var x in y)u[x]=y[x];delete u.rest}var C=new h;return w(C,C.head,d),f(d,C,u,C.head,0),m(C)},hooks:{all:{},add:function(d,u){var y=a.hooks.all;y[d]=y[d]||[],y[d].push(u)},run:function(d,u){var y=a.hooks.all[d];if(!(!y||!y.length))for(var x=0,C;C=y[x++];)C(u)}},Token:c};r.Prism=a;function c(d,u,y,x){this.type=d,this.content=u,this.alias=y,this.length=(x||"").length|0}c.stringify=function d(u,y){if(typeof u=="string")return u;if(Array.isArray(u)){var x="";return u.forEach(function(M){x+=d(M,y)}),x}var C={type:u.type,content:d(u.content,y),tag:"span",classes:["token",u.type],attributes:{},language:y},P=u.alias;P&&(Array.isArray(P)?Array.prototype.push.apply(C.classes,P):C.classes.push(P)),a.hooks.run("wrap",C);var O="";for(var E in C.attributes)O+=" "+E+'="'+(C.attributes[E]||"").replace(/"/g,"&quot;")+'"';return"<"+C.tag+' class="'+C.classes.join(" ")+'"'+O+">"+C.content+"</"+C.tag+">"};function g(d,u,y,x){d.lastIndex=u;var C=d.exec(y);if(C&&x&&C[1]){var P=C[1].length;C.index+=P,C[0]=C[0].slice(P)}return C}function f(d,u,y,x,C,P){for(var O in y)if(!(!y.hasOwnProperty(O)||!y[O])){var E=y[O];E=Array.isArray(E)?E:[E];for(var M=0;M<E.length;++M){if(P&&P.cause==O+","+M)return;var ee=E[M],re=ee.inside,ve=!!ee.lookbehind,B=!!ee.greedy,pe=ee.alias;if(B&&!ee.pattern.global){var Be=ee.pattern.toString().match(/[imsuy]*$/)[0];ee.pattern=RegExp(ee.pattern.source,Be+"g")}for(var Te=ee.pattern||ee,se=x.next,Se=C;se!==u.tail&&!(P&&Se>=P.reach);Se+=se.value.length,se=se.next){var kt=se.value;if(u.length>d.length)return;if(!(kt instanceof c)){var ze=1,we;if(B){if(we=g(Te,Se,d,ve),!we||we.index>=d.length)break;var At=we.index,fs=we.index+we[0].length,Ke=Se;for(Ke+=se.value.length;At>=Ke;)se=se.next,Ke+=se.value.length;if(Ke-=se.value.length,Se=Ke,se.value instanceof c)continue;for(var Ct=se;Ct!==u.tail&&(Ke<fs||typeof Ct.value=="string");Ct=Ct.next)ze++,Ke+=Ct.value.length;ze--,kt=d.slice(Se,Ke),we.index-=Se}else if(we=g(Te,0,kt,ve),!we)continue;var At=we.index,ft=we[0],Ht=kt.slice(0,At),ra=kt.slice(At+ft.length),si=Se+kt.length;P&&si>P.reach&&(P.reach=si);var Ro=se.prev;Ht&&(Ro=w(u,Ro,Ht),Se+=Ht.length),A(u,Ro,ze);var Pc=new c(O,re?a.tokenize(ft,re):ft,pe,ft);if(se=w(u,Ro,Pc),ra&&w(u,se,ra),ze>1){var oi={cause:O+","+M,reach:si};f(d,u,y,se.prev,Se,oi),P&&oi.reach>P.reach&&(P.reach=oi.reach)}}}}}}function h(){var d={value:null,prev:null,next:null},u={value:null,prev:d,next:null};d.next=u,this.head=d,this.tail=u,this.length=0}function w(d,u,y){var x=u.next,C={value:y,prev:u,next:x};return u.next=C,x.prev=C,d.length++,C}function A(d,u,y){for(var x=u.next,C=0;C<y&&x!==d.tail;C++)x=x.next;u.next=x,x.prev=u,d.length-=C}function m(d){for(var u=[],y=d.head.next;y!==d.tail;)u.push(y.value),y=y.next;return u}if(!r.document)return r.addEventListener&&(a.disableWorkerMessageHandler||r.addEventListener("message",function(d){var u=JSON.parse(d.data),y=u.language,x=u.code,C=u.immediateClose;r.postMessage(a.highlight(x,a.languages[y],y)),C&&r.close()},!1)),a;var b=a.util.currentScript();b&&(a.filename=b.src,b.hasAttribute("data-manual")&&(a.manual=!0));function v(){a.manual||a.highlightAll()}if(!a.manual){var _=document.readyState;_==="loading"||_==="interactive"&&b&&b.defer?document.addEventListener("DOMContentLoaded",v):window.requestAnimationFrame?window.requestAnimationFrame(v):window.setTimeout(v,16)}return a})(e);s.exports&&(s.exports=o),typeof va<"u"&&(va.Prism=o),o.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},o.languages.markup.tag.inside["attr-value"].inside.entity=o.languages.markup.entity,o.languages.markup.doctype.inside["internal-subset"].inside=o.languages.markup,o.hooks.add("wrap",function(r){r.type==="entity"&&(r.attributes.title=r.content.replace(/&amp;/,"&"))}),Object.defineProperty(o.languages.markup.tag,"addInlined",{value:function(t,i){var n={};n["language-"+i]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:o.languages[i]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var a={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};a["language-"+i]={pattern:/[\s\S]+/,inside:o.languages[i]};var c={};c[t]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return t}),"i"),lookbehind:!0,greedy:!0,inside:a},o.languages.insertBefore("markup","cdata",c)}}),Object.defineProperty(o.languages.markup.tag,"addAttribute",{value:function(r,t){o.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+r+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:o.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),o.languages.html=o.languages.markup,o.languages.mathml=o.languages.markup,o.languages.svg=o.languages.markup,o.languages.xml=o.languages.extend("markup",{}),o.languages.ssml=o.languages.xml,o.languages.atom=o.languages.xml,o.languages.rss=o.languages.xml,(function(r){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},r.languages.css.atrule.inside.rest=r.languages.css;var i=r.languages.markup;i&&(i.tag.addInlined("style","css"),i.tag.addAttribute("style","css"))})(o),o.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},o.languages.javascript=o.languages.extend("clike",{"class-name":[o.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),o.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,o.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:o.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:o.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:o.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:o.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:o.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),o.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:o.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),o.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),o.languages.markup&&(o.languages.markup.tag.addInlined("script","javascript"),o.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),o.languages.js=o.languages.javascript,(function(){if(typeof o>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var r="Loading…",t=function(b,v){return"✖ Error "+b+" while fetching file: "+v},i="✖ Error: File does not exist or is empty",n={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},a="data-src-status",c="loading",g="loaded",f="failed",h="pre[data-src]:not(["+a+'="'+g+'"]):not(['+a+'="'+c+'"])';function w(b,v,_){var d=new XMLHttpRequest;d.open("GET",b,!0),d.onreadystatechange=function(){d.readyState==4&&(d.status<400&&d.responseText?v(d.responseText):d.status>=400?_(t(d.status,d.statusText)):_(i))},d.send(null)}function A(b){var v=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(b||"");if(v){var _=Number(v[1]),d=v[2],u=v[3];return d?u?[_,Number(u)]:[_,void 0]:[_,_]}}o.hooks.add("before-highlightall",function(b){b.selector+=", "+h}),o.hooks.add("before-sanity-check",function(b){var v=b.element;if(v.matches(h)){b.code="",v.setAttribute(a,c);var _=v.appendChild(document.createElement("CODE"));_.textContent=r;var d=v.getAttribute("data-src"),u=b.language;if(u==="none"){var y=(/\.(\w+)$/.exec(d)||[,"none"])[1];u=n[y]||y}o.util.setLanguage(_,u),o.util.setLanguage(v,u);var x=o.plugins.autoloader;x&&x.loadLanguages(u),w(d,function(C){v.setAttribute(a,g);var P=A(v.getAttribute("data-range"));if(P){var O=C.split(/\r\n?|\n/g),E=P[0],M=P[1]==null?O.length:P[1];E<0&&(E+=O.length),E=Math.max(0,Math.min(E-1,O.length)),M<0&&(M+=O.length),M=Math.max(0,Math.min(M,O.length)),C=O.slice(E,M).join(`
4355
- `),v.hasAttribute("data-start")||v.setAttribute("data-start",String(E+1))}_.textContent=C,o.highlightElement(_)},function(C){v.setAttribute(a,f),_.textContent=C})}}),o.plugins.fileHighlight={highlight:function(v){for(var _=(v||document).querySelectorAll(h),d=0,u;u=_[d++];)o.highlightElement(u)}};var m=!1;o.fileHighlight=function(){m||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),m=!0),o.plugins.fileHighlight.highlight.apply(this,arguments)}})()})(pi)),pi.exports}var St=Mf(),hi={exports:{}},Ga;function jf(){return Ga||(Ga=1,(function(s){(function(){if(typeof Prism>"u")return;var e=Object.assign||function(n,a){for(var c in a)a.hasOwnProperty(c)&&(n[c]=a[c]);return n};function o(n){this.defaults=e({},n)}function r(n){return n.replace(/-(\w)/g,function(a,c){return c.toUpperCase()})}function t(n){for(var a=0,c=0;c<n.length;++c)n.charCodeAt(c)==9&&(a+=3);return n.length+a}var i={"remove-trailing":"boolean","remove-indent":"boolean","left-trim":"boolean","right-trim":"boolean","break-lines":"number",indent:"number","remove-initial-line-feed":"boolean","tabs-to-spaces":"number","spaces-to-tabs":"number"};o.prototype={setDefaults:function(n){this.defaults=e(this.defaults,n)},normalize:function(n,a){a=e(this.defaults,a);for(var c in a){var g=r(c);c!=="normalize"&&g!=="setDefaults"&&a[c]&&this[g]&&(n=this[g].call(this,n,a[c]))}return n},leftTrim:function(n){return n.replace(/^\s+/,"")},rightTrim:function(n){return n.replace(/\s+$/,"")},tabsToSpaces:function(n,a){return a=a|0||4,n.replace(/\t/g,new Array(++a).join(" "))},spacesToTabs:function(n,a){return a=a|0||4,n.replace(RegExp(" {"+a+"}","g")," ")},removeTrailing:function(n){return n.replace(/\s*?$/gm,"")},removeInitialLineFeed:function(n){return n.replace(/^(?:\r?\n|\r)/,"")},removeIndent:function(n){var a=n.match(/^[^\S\n\r]*(?=\S)/gm);return!a||!a[0].length||(a.sort(function(c,g){return c.length-g.length}),!a[0].length)?n:n.replace(RegExp("^"+a[0],"gm"),"")},indent:function(n,a){return n.replace(/^[^\S\n\r]*(?=\S)/gm,new Array(++a).join(" ")+"$&")},breakLines:function(n,a){a=a===!0?80:a|0||80;for(var c=n.split(`
4356
- `),g=0;g<c.length;++g)if(!(t(c[g])<=a)){for(var f=c[g].split(/(\s+)/g),h=0,w=0;w<f.length;++w){var A=t(f[w]);h+=A,h>a&&(f[w]=`
4357
- `+f[w],h=A)}c[g]=f.join("")}return c.join(`
4358
- `)}},s.exports&&(s.exports=o),Prism.plugins.NormalizeWhitespace=new o({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",function(n){var a=Prism.plugins.NormalizeWhitespace;if(!(n.settings&&n.settings["whitespace-normalization"]===!1)&&Prism.util.isActive(n.element,"whitespace-normalization",!0)){if((!n.element||!n.element.parentNode)&&n.code){n.code=a.normalize(n.code,n.settings);return}var c=n.element.parentNode;if(!(!n.code||!c||c.nodeName.toLowerCase()!=="pre")){n.settings==null&&(n.settings={});for(var g in i)if(Object.hasOwnProperty.call(i,g)){var f=i[g];if(c.hasAttribute("data-"+g))try{var h=JSON.parse(c.getAttribute("data-"+g)||"true");typeof h===f&&(n.settings[g]=h)}catch{}}for(var w=c.childNodes,A="",m="",b=!1,v=0;v<w.length;++v){var _=w[v];_==n.element?b=!0:_.nodeName==="#text"&&(b?m+=_.nodeValue:A+=_.nodeValue,c.removeChild(_),--v)}if(!n.element.children.length||!Prism.plugins.KeepMarkup)n.code=A+n.code+m,n.code=a.normalize(n.code,n.settings);else{var d=A+n.element.innerHTML+m;n.element.innerHTML=a.normalize(d,n.settings),n.code=n.element.textContent}}}})})()})(hi)),hi.exports}jf();Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};Prism.languages.webmanifest=Prism.languages.json;var Ja={},Ya;function Uf(){return Ya||(Ya=1,(function(s){s.languages.typescript=s.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),s.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete s.languages.typescript.parameter,delete s.languages.typescript["literal-property"];var e=s.languages.extend("typescript",{});delete e["class-name"],s.languages.typescript["class-name"].inside=e,s.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e}}}}),s.languages.ts=s.languages.typescript})(Prism)),Ja}Uf();Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Prism.languages.js=Prism.languages.javascript;(function(s){var e="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",o={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:o,environment:{pattern:RegExp("\\$"+e),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+e),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};s.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+e),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:o}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+e),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},o.inside=s.languages.bash;for(var t=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],i=r.variable[1].inside,n=0;n<t.length;n++)i[t[n]]=s.languages.bash[t[n]];s.languages.sh=s.languages.bash,s.languages.shell=s.languages.bash})(Prism);Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity;Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup;Prism.hooks.add("wrap",function(s){s.type==="entity"&&(s.attributes.title=s.content.replace(/&amp;/,"&"))});Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,o){var r={};r["language-"+o]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[o]},r.cdata=/^<!\[CDATA\[|\]\]>$/i;var t={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:r}};t["language-"+o]={pattern:/[\s\S]+/,inside:Prism.languages[o]};var i={};i[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",i)}});Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(s,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+s+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});Prism.languages.html=Prism.languages.markup;Prism.languages.mathml=Prism.languages.markup;Prism.languages.svg=Prism.languages.markup;Prism.languages.xml=Prism.languages.extend("markup",{});Prism.languages.ssml=Prism.languages.xml;Prism.languages.atom=Prism.languages.xml;Prism.languages.rss=Prism.languages.xml;var Bf=Object.defineProperty,zf=Object.getOwnPropertyDescriptor,qe=(s,e,o,r)=>{for(var t=r>1?void 0:r?zf(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Bf(e,o,t),t};const Kf="sonic-code";let ke=class extends D{constructor(){super(...arguments),this.inline=!1,this.showCode=!1,this.toggleCode=!1,this.noEdit=!1,this.noOutput=!1,this.language="markup",this.codeEdited=!1}get rendersLiveOutput(){return this.language==="markup"&&!this.noOutput}connectedCallback(){if(super.connectedCallback(),this.toggleCode||(this.showCode=!0),this.templateEl=this.querySelector("template"),this.defaultCode=this.readTemplateSourceCode(),this.defaultCode){St.plugins.NormalizeWhitespace.setDefaults({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0,"remove-initial-line-feed":!0,"tabs-to-tabs":2});const e=St.plugins.NormalizeWhitespace.normalize(this.defaultCode).replaceAll('=""',"").replaceAll("&quot;",'"').replaceAll('"{',"'{").replaceAll('}"',"}'").replaceAll("&amp;","&");this.currentCode=St.highlight(e,St.languages[this.language],this.language)}this.rendersLiveOutput?this.codeOutput=this.defaultCode:this.removeOutputSlot()}decodeTemplateEntities(s){return s.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&")}readTemplateSourceCode(){const s=this.templateEl;return s?this.language==="markup"?this.decodeTemplateEntities(s.innerHTML):s.content.textContent??"":""}updateCodeRender(){this.defaultCode!==this.currentCode&&(this.codeEdited=!0),this.codeOutput=this.codePreview?.innerText}resetCode(){this.codeEdited=!1,this.defaultCode&&(this.currentCode="",window.requestAnimationFrame(()=>{this.currentCode=St.highlight(this.defaultCode||"",St.languages[this.language],this.language)})),this.rendersLiveOutput&&(this.codeOutput=this.defaultCode)}handleToggleCode(){this.showCode=!this.showCode}handleCopyCode(s){const e=this.codeOutput??this.defaultCode;if(e){navigator.clipboard.writeText(e);const o=s.currentTarget;o?.setAttribute("active",""),setTimeout(()=>{o?.removeAttribute("active")},500)}}updated(s){super.updated(s),(s.has("codeOutput")||s.has("language")||s.has("noOutput"))&&this.appendOutput()}removeOutputSlot(){this.querySelector("[slot=output]")?.remove()}appendOutput(){if(!this.rendersLiveOutput){this.removeOutputSlot();return}let s=this.querySelector("[slot=output]");s||(s=document.createElement("div"),s.setAttribute("slot","output"),this.appendChild(s)),s&&(s.innerHTML=this.codeOutput||"")}handleGetSDUI(){lr.toJson(this.templateEl?.content.children)}render(){return p`
4354
+ */var o=(function(r){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,i=0,n={},a={manual:r.Prism&&r.Prism.manual,disableWorkerMessageHandler:r.Prism&&r.Prism.disableWorkerMessageHandler,util:{encode:function d(u){return u instanceof c?new c(u.type,d(u.content),u.alias):Array.isArray(u)?u.map(d):u.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(d){return Object.prototype.toString.call(d).slice(8,-1)},objId:function(d){return d.__id||Object.defineProperty(d,"__id",{value:++i}),d.__id},clone:function d(u,y){y=y||{};var w,C;switch(a.util.type(u)){case"Object":if(C=a.util.objId(u),y[C])return y[C];w={},y[C]=w;for(var P in u)u.hasOwnProperty(P)&&(w[P]=d(u[P],y));return w;case"Array":return C=a.util.objId(u),y[C]?y[C]:(w=[],y[C]=w,u.forEach(function(O,E){w[E]=d(O,y)}),w);default:return u}},getLanguage:function(d){for(;d;){var u=t.exec(d.className);if(u)return u[1].toLowerCase();d=d.parentElement}return"none"},setLanguage:function(d,u){d.className=d.className.replace(RegExp(t,"gi"),""),d.classList.add("language-"+u)},currentScript:function(){if(typeof document>"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(w){var d=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(w.stack)||[])[1];if(d){var u=document.getElementsByTagName("script");for(var y in u)if(u[y].src==d)return u[y]}return null}},isActive:function(d,u,y){for(var w="no-"+u;d;){var C=d.classList;if(C.contains(u))return!0;if(C.contains(w))return!1;d=d.parentElement}return!!y}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(d,u){var y=a.util.clone(a.languages[d]);for(var w in u)y[w]=u[w];return y},insertBefore:function(d,u,y,w){w=w||a.languages;var C=w[d],P={};for(var O in C)if(C.hasOwnProperty(O)){if(O==u)for(var E in y)y.hasOwnProperty(E)&&(P[E]=y[E]);y.hasOwnProperty(O)||(P[O]=C[O])}var M=w[d];return w[d]=P,a.languages.DFS(a.languages,function(ee,re){re===M&&ee!=d&&(this[ee]=P)}),P},DFS:function d(u,y,w,C){C=C||{};var P=a.util.objId;for(var O in u)if(u.hasOwnProperty(O)){y.call(u,O,u[O],w||O);var E=u[O],M=a.util.type(E);M==="Object"&&!C[P(E)]?(C[P(E)]=!0,d(E,y,null,C)):M==="Array"&&!C[P(E)]&&(C[P(E)]=!0,d(E,y,O,C))}}},plugins:{},highlightAll:function(d,u){a.highlightAllUnder(document,d,u)},highlightAllUnder:function(d,u,y){var w={callback:y,container:d,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};a.hooks.run("before-highlightall",w),w.elements=Array.prototype.slice.apply(w.container.querySelectorAll(w.selector)),a.hooks.run("before-all-elements-highlight",w);for(var C=0,P;P=w.elements[C++];)a.highlightElement(P,u===!0,w.callback)},highlightElement:function(d,u,y){var w=a.util.getLanguage(d),C=a.languages[w];a.util.setLanguage(d,w);var P=d.parentElement;P&&P.nodeName.toLowerCase()==="pre"&&a.util.setLanguage(P,w);var O=d.textContent,E={element:d,language:w,grammar:C,code:O};function M(re){E.highlightedCode=re,a.hooks.run("before-insert",E),E.element.innerHTML=E.highlightedCode,a.hooks.run("after-highlight",E),a.hooks.run("complete",E),y&&y.call(E.element)}if(a.hooks.run("before-sanity-check",E),P=E.element.parentElement,P&&P.nodeName.toLowerCase()==="pre"&&!P.hasAttribute("tabindex")&&P.setAttribute("tabindex","0"),!E.code){a.hooks.run("complete",E),y&&y.call(E.element);return}if(a.hooks.run("before-highlight",E),!E.grammar){M(a.util.encode(E.code));return}if(u&&r.Worker){var ee=new Worker(a.filename);ee.onmessage=function(re){M(re.data)},ee.postMessage(JSON.stringify({language:E.language,code:E.code,immediateClose:!0}))}else M(a.highlight(E.code,E.grammar,E.language))},highlight:function(d,u,y){var w={code:d,grammar:u,language:y};if(a.hooks.run("before-tokenize",w),!w.grammar)throw new Error('The language "'+w.language+'" has no grammar.');return w.tokens=a.tokenize(w.code,w.grammar),a.hooks.run("after-tokenize",w),c.stringify(a.util.encode(w.tokens),w.language)},tokenize:function(d,u){var y=u.rest;if(y){for(var w in y)u[w]=y[w];delete u.rest}var C=new h;return x(C,C.head,d),b(d,C,u,C.head,0),m(C)},hooks:{all:{},add:function(d,u){var y=a.hooks.all;y[d]=y[d]||[],y[d].push(u)},run:function(d,u){var y=a.hooks.all[d];if(!(!y||!y.length))for(var w=0,C;C=y[w++];)C(u)}},Token:c};r.Prism=a;function c(d,u,y,w){this.type=d,this.content=u,this.alias=y,this.length=(w||"").length|0}c.stringify=function d(u,y){if(typeof u=="string")return u;if(Array.isArray(u)){var w="";return u.forEach(function(M){w+=d(M,y)}),w}var C={type:u.type,content:d(u.content,y),tag:"span",classes:["token",u.type],attributes:{},language:y},P=u.alias;P&&(Array.isArray(P)?Array.prototype.push.apply(C.classes,P):C.classes.push(P)),a.hooks.run("wrap",C);var O="";for(var E in C.attributes)O+=" "+E+'="'+(C.attributes[E]||"").replace(/"/g,"&quot;")+'"';return"<"+C.tag+' class="'+C.classes.join(" ")+'"'+O+">"+C.content+"</"+C.tag+">"};function g(d,u,y,w){d.lastIndex=u;var C=d.exec(y);if(C&&w&&C[1]){var P=C[1].length;C.index+=P,C[0]=C[0].slice(P)}return C}function b(d,u,y,w,C,P){for(var O in y)if(!(!y.hasOwnProperty(O)||!y[O])){var E=y[O];E=Array.isArray(E)?E:[E];for(var M=0;M<E.length;++M){if(P&&P.cause==O+","+M)return;var ee=E[M],re=ee.inside,ve=!!ee.lookbehind,B=!!ee.greedy,pe=ee.alias;if(B&&!ee.pattern.global){var Be=ee.pattern.toString().match(/[imsuy]*$/)[0];ee.pattern=RegExp(ee.pattern.source,Be+"g")}for(var Te=ee.pattern||ee,se=w.next,Se=C;se!==u.tail&&!(P&&Se>=P.reach);Se+=se.value.length,se=se.next){var kt=se.value;if(u.length>d.length)return;if(!(kt instanceof c)){var ze=1,we;if(B){if(we=g(Te,Se,d,ve),!we||we.index>=d.length)break;var At=we.index,fs=we.index+we[0].length,Ke=Se;for(Ke+=se.value.length;At>=Ke;)se=se.next,Ke+=se.value.length;if(Ke-=se.value.length,Se=Ke,se.value instanceof c)continue;for(var Ct=se;Ct!==u.tail&&(Ke<fs||typeof Ct.value=="string");Ct=Ct.next)ze++,Ke+=Ct.value.length;ze--,kt=d.slice(Se,Ke),we.index-=Se}else if(we=g(Te,0,kt,ve),!we)continue;var At=we.index,ft=we[0],Ht=kt.slice(0,At),ra=kt.slice(At+ft.length),si=Se+kt.length;P&&si>P.reach&&(P.reach=si);var Ro=se.prev;Ht&&(Ro=x(u,Ro,Ht),Se+=Ht.length),A(u,Ro,ze);var Fc=new c(O,re?a.tokenize(ft,re):ft,pe,ft);if(se=x(u,Ro,Fc),ra&&x(u,se,ra),ze>1){var oi={cause:O+","+M,reach:si};b(d,u,y,se.prev,Se,oi),P&&oi.reach>P.reach&&(P.reach=oi.reach)}}}}}}function h(){var d={value:null,prev:null,next:null},u={value:null,prev:d,next:null};d.next=u,this.head=d,this.tail=u,this.length=0}function x(d,u,y){var w=u.next,C={value:y,prev:u,next:w};return u.next=C,w.prev=C,d.length++,C}function A(d,u,y){for(var w=u.next,C=0;C<y&&w!==d.tail;C++)w=w.next;u.next=w,w.prev=u,d.length-=C}function m(d){for(var u=[],y=d.head.next;y!==d.tail;)u.push(y.value),y=y.next;return u}if(!r.document)return r.addEventListener&&(a.disableWorkerMessageHandler||r.addEventListener("message",function(d){var u=JSON.parse(d.data),y=u.language,w=u.code,C=u.immediateClose;r.postMessage(a.highlight(w,a.languages[y],y)),C&&r.close()},!1)),a;var f=a.util.currentScript();f&&(a.filename=f.src,f.hasAttribute("data-manual")&&(a.manual=!0));function v(){a.manual||a.highlightAll()}if(!a.manual){var _=document.readyState;_==="loading"||_==="interactive"&&f&&f.defer?document.addEventListener("DOMContentLoaded",v):window.requestAnimationFrame?window.requestAnimationFrame(v):window.setTimeout(v,16)}return a})(e);s.exports&&(s.exports=o),typeof va<"u"&&(va.Prism=o),o.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},o.languages.markup.tag.inside["attr-value"].inside.entity=o.languages.markup.entity,o.languages.markup.doctype.inside["internal-subset"].inside=o.languages.markup,o.hooks.add("wrap",function(r){r.type==="entity"&&(r.attributes.title=r.content.replace(/&amp;/,"&"))}),Object.defineProperty(o.languages.markup.tag,"addInlined",{value:function(t,i){var n={};n["language-"+i]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:o.languages[i]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var a={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};a["language-"+i]={pattern:/[\s\S]+/,inside:o.languages[i]};var c={};c[t]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return t}),"i"),lookbehind:!0,greedy:!0,inside:a},o.languages.insertBefore("markup","cdata",c)}}),Object.defineProperty(o.languages.markup.tag,"addAttribute",{value:function(r,t){o.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+r+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:o.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),o.languages.html=o.languages.markup,o.languages.mathml=o.languages.markup,o.languages.svg=o.languages.markup,o.languages.xml=o.languages.extend("markup",{}),o.languages.ssml=o.languages.xml,o.languages.atom=o.languages.xml,o.languages.rss=o.languages.xml,(function(r){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},r.languages.css.atrule.inside.rest=r.languages.css;var i=r.languages.markup;i&&(i.tag.addInlined("style","css"),i.tag.addAttribute("style","css"))})(o),o.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},o.languages.javascript=o.languages.extend("clike",{"class-name":[o.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),o.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,o.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:o.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:o.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:o.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:o.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:o.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),o.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:o.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),o.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),o.languages.markup&&(o.languages.markup.tag.addInlined("script","javascript"),o.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),o.languages.js=o.languages.javascript,(function(){if(typeof o>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var r="Loading…",t=function(f,v){return"✖ Error "+f+" while fetching file: "+v},i="✖ Error: File does not exist or is empty",n={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},a="data-src-status",c="loading",g="loaded",b="failed",h="pre[data-src]:not(["+a+'="'+g+'"]):not(['+a+'="'+c+'"])';function x(f,v,_){var d=new XMLHttpRequest;d.open("GET",f,!0),d.onreadystatechange=function(){d.readyState==4&&(d.status<400&&d.responseText?v(d.responseText):d.status>=400?_(t(d.status,d.statusText)):_(i))},d.send(null)}function A(f){var v=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(f||"");if(v){var _=Number(v[1]),d=v[2],u=v[3];return d?u?[_,Number(u)]:[_,void 0]:[_,_]}}o.hooks.add("before-highlightall",function(f){f.selector+=", "+h}),o.hooks.add("before-sanity-check",function(f){var v=f.element;if(v.matches(h)){f.code="",v.setAttribute(a,c);var _=v.appendChild(document.createElement("CODE"));_.textContent=r;var d=v.getAttribute("data-src"),u=f.language;if(u==="none"){var y=(/\.(\w+)$/.exec(d)||[,"none"])[1];u=n[y]||y}o.util.setLanguage(_,u),o.util.setLanguage(v,u);var w=o.plugins.autoloader;w&&w.loadLanguages(u),x(d,function(C){v.setAttribute(a,g);var P=A(v.getAttribute("data-range"));if(P){var O=C.split(/\r\n?|\n/g),E=P[0],M=P[1]==null?O.length:P[1];E<0&&(E+=O.length),E=Math.max(0,Math.min(E-1,O.length)),M<0&&(M+=O.length),M=Math.max(0,Math.min(M,O.length)),C=O.slice(E,M).join(`
4355
+ `),v.hasAttribute("data-start")||v.setAttribute("data-start",String(E+1))}_.textContent=C,o.highlightElement(_)},function(C){v.setAttribute(a,b),_.textContent=C})}}),o.plugins.fileHighlight={highlight:function(v){for(var _=(v||document).querySelectorAll(h),d=0,u;u=_[d++];)o.highlightElement(u)}};var m=!1;o.fileHighlight=function(){m||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),m=!0),o.plugins.fileHighlight.highlight.apply(this,arguments)}})()})(pi)),pi.exports}var St=Kf(),hi={exports:{}},Ga;function Hf(){return Ga||(Ga=1,(function(s){(function(){if(typeof Prism>"u")return;var e=Object.assign||function(n,a){for(var c in a)a.hasOwnProperty(c)&&(n[c]=a[c]);return n};function o(n){this.defaults=e({},n)}function r(n){return n.replace(/-(\w)/g,function(a,c){return c.toUpperCase()})}function t(n){for(var a=0,c=0;c<n.length;++c)n.charCodeAt(c)==9&&(a+=3);return n.length+a}var i={"remove-trailing":"boolean","remove-indent":"boolean","left-trim":"boolean","right-trim":"boolean","break-lines":"number",indent:"number","remove-initial-line-feed":"boolean","tabs-to-spaces":"number","spaces-to-tabs":"number"};o.prototype={setDefaults:function(n){this.defaults=e(this.defaults,n)},normalize:function(n,a){a=e(this.defaults,a);for(var c in a){var g=r(c);c!=="normalize"&&g!=="setDefaults"&&a[c]&&this[g]&&(n=this[g].call(this,n,a[c]))}return n},leftTrim:function(n){return n.replace(/^\s+/,"")},rightTrim:function(n){return n.replace(/\s+$/,"")},tabsToSpaces:function(n,a){return a=a|0||4,n.replace(/\t/g,new Array(++a).join(" "))},spacesToTabs:function(n,a){return a=a|0||4,n.replace(RegExp(" {"+a+"}","g")," ")},removeTrailing:function(n){return n.replace(/\s*?$/gm,"")},removeInitialLineFeed:function(n){return n.replace(/^(?:\r?\n|\r)/,"")},removeIndent:function(n){var a=n.match(/^[^\S\n\r]*(?=\S)/gm);return!a||!a[0].length||(a.sort(function(c,g){return c.length-g.length}),!a[0].length)?n:n.replace(RegExp("^"+a[0],"gm"),"")},indent:function(n,a){return n.replace(/^[^\S\n\r]*(?=\S)/gm,new Array(++a).join(" ")+"$&")},breakLines:function(n,a){a=a===!0?80:a|0||80;for(var c=n.split(`
4356
+ `),g=0;g<c.length;++g)if(!(t(c[g])<=a)){for(var b=c[g].split(/(\s+)/g),h=0,x=0;x<b.length;++x){var A=t(b[x]);h+=A,h>a&&(b[x]=`
4357
+ `+b[x],h=A)}c[g]=b.join("")}return c.join(`
4358
+ `)}},s.exports&&(s.exports=o),Prism.plugins.NormalizeWhitespace=new o({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",function(n){var a=Prism.plugins.NormalizeWhitespace;if(!(n.settings&&n.settings["whitespace-normalization"]===!1)&&Prism.util.isActive(n.element,"whitespace-normalization",!0)){if((!n.element||!n.element.parentNode)&&n.code){n.code=a.normalize(n.code,n.settings);return}var c=n.element.parentNode;if(!(!n.code||!c||c.nodeName.toLowerCase()!=="pre")){n.settings==null&&(n.settings={});for(var g in i)if(Object.hasOwnProperty.call(i,g)){var b=i[g];if(c.hasAttribute("data-"+g))try{var h=JSON.parse(c.getAttribute("data-"+g)||"true");typeof h===b&&(n.settings[g]=h)}catch{}}for(var x=c.childNodes,A="",m="",f=!1,v=0;v<x.length;++v){var _=x[v];_==n.element?f=!0:_.nodeName==="#text"&&(f?m+=_.nodeValue:A+=_.nodeValue,c.removeChild(_),--v)}if(!n.element.children.length||!Prism.plugins.KeepMarkup)n.code=A+n.code+m,n.code=a.normalize(n.code,n.settings);else{var d=A+n.element.innerHTML+m;n.element.innerHTML=a.normalize(d,n.settings),n.code=n.element.textContent}}}})})()})(hi)),hi.exports}Hf();Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};Prism.languages.webmanifest=Prism.languages.json;var Ja={},Ya;function Vf(){return Ya||(Ya=1,(function(s){s.languages.typescript=s.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),s.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete s.languages.typescript.parameter,delete s.languages.typescript["literal-property"];var e=s.languages.extend("typescript",{});delete e["class-name"],s.languages.typescript["class-name"].inside=e,s.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e}}}}),s.languages.ts=s.languages.typescript})(Prism)),Ja}Vf();Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Prism.languages.js=Prism.languages.javascript;(function(s){var e="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",o={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:o,environment:{pattern:RegExp("\\$"+e),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+e),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};s.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+e),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:o}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+e),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},o.inside=s.languages.bash;for(var t=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],i=r.variable[1].inside,n=0;n<t.length;n++)i[t[n]]=s.languages.bash[t[n]];s.languages.sh=s.languages.bash,s.languages.shell=s.languages.bash})(Prism);Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity;Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup;Prism.hooks.add("wrap",function(s){s.type==="entity"&&(s.attributes.title=s.content.replace(/&amp;/,"&"))});Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,o){var r={};r["language-"+o]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[o]},r.cdata=/^<!\[CDATA\[|\]\]>$/i;var t={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:r}};t["language-"+o]={pattern:/[\s\S]+/,inside:Prism.languages[o]};var i={};i[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",i)}});Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(s,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+s+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});Prism.languages.html=Prism.languages.markup;Prism.languages.mathml=Prism.languages.markup;Prism.languages.svg=Prism.languages.markup;Prism.languages.xml=Prism.languages.extend("markup",{});Prism.languages.ssml=Prism.languages.xml;Prism.languages.atom=Prism.languages.xml;Prism.languages.rss=Prism.languages.xml;var Wf=Object.defineProperty,Gf=Object.getOwnPropertyDescriptor,qe=(s,e,o,r)=>{for(var t=r>1?void 0:r?Gf(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Wf(e,o,t),t};const Jf="sonic-code";let ke=class extends D{constructor(){super(...arguments),this.inline=!1,this.showCode=!1,this.toggleCode=!1,this.noEdit=!1,this.noOutput=!1,this.language="markup",this.codeEdited=!1}get rendersLiveOutput(){return this.language==="markup"&&!this.noOutput}connectedCallback(){if(super.connectedCallback(),this.toggleCode||(this.showCode=!0),this.templateEl=this.querySelector("template"),this.defaultCode=this.readTemplateSourceCode(),this.defaultCode){St.plugins.NormalizeWhitespace.setDefaults({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0,"remove-initial-line-feed":!0,"tabs-to-tabs":2});const e=St.plugins.NormalizeWhitespace.normalize(this.defaultCode).replaceAll('=""',"").replaceAll("&quot;",'"').replaceAll('"{',"'{").replaceAll('}"',"}'").replaceAll("&amp;","&");this.currentCode=St.highlight(e,St.languages[this.language],this.language)}this.rendersLiveOutput?this.codeOutput=this.defaultCode:this.removeOutputSlot()}decodeTemplateEntities(s){return s.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&")}readTemplateSourceCode(){const s=this.templateEl;return s?this.language==="markup"?this.decodeTemplateEntities(s.innerHTML):s.content.textContent??"":""}updateCodeRender(){this.defaultCode!==this.currentCode&&(this.codeEdited=!0),this.codeOutput=this.codePreview?.innerText}resetCode(){this.codeEdited=!1,this.defaultCode&&(this.currentCode="",window.requestAnimationFrame(()=>{this.currentCode=St.highlight(this.defaultCode||"",St.languages[this.language],this.language)})),this.rendersLiveOutput&&(this.codeOutput=this.defaultCode)}handleToggleCode(){this.showCode=!this.showCode}handleCopyCode(s){const e=this.codeOutput??this.defaultCode;if(e){navigator.clipboard.writeText(e);const o=s.currentTarget;o?.setAttribute("active",""),setTimeout(()=>{o?.removeAttribute("active")},500)}}updated(s){super.updated(s),(s.has("codeOutput")||s.has("language")||s.has("noOutput"))&&this.appendOutput()}removeOutputSlot(){this.querySelector("[slot=output]")?.remove()}appendOutput(){if(!this.rendersLiveOutput){this.removeOutputSlot();return}let s=this.querySelector("[slot=output]");s||(s=document.createElement("div"),s.setAttribute("slot","output"),this.appendChild(s)),s&&(s.innerHTML=this.codeOutput||"")}handleGetSDUI(){lr.toJson(this.templateEl?.content.children)}render(){return p`
4359
4359
  <div
4360
4360
  class="relative ${this.language==="markup"?"border border-neutral-100 p-4 rounded-md":""}"
4361
4361
  >
@@ -4431,7 +4431,7 @@ ${this.value}</textarea
4431
4431
  </div>
4432
4432
  </div>
4433
4433
  </div>
4434
- `}};ke.styles=[q,hc,L`
4434
+ `}};ke.styles=[q,fc,L`
4435
4435
  :host(:not([inline])) {
4436
4436
  display: block;
4437
4437
  margin: 1.1rem 0;
@@ -4467,7 +4467,7 @@ ${this.value}</textarea
4467
4467
  border-radius: var(--sc-rounded);
4468
4468
  border: solid 0.15rem transparent;
4469
4469
  }
4470
- `];qe([l({type:Boolean,reflect:!0})],ke.prototype,"inline",2);qe([l({type:Boolean,reflect:!0})],ke.prototype,"showCode",2);qe([l({type:Boolean,reflect:!0})],ke.prototype,"toggleCode",2);qe([l({type:Boolean,reflect:!0})],ke.prototype,"noEdit",2);qe([l({type:Boolean,reflect:!0})],ke.prototype,"noOutput",2);qe([l()],ke.prototype,"language",2);qe([l()],ke.prototype,"defaultCode",2);qe([l()],ke.prototype,"currentCode",2);qe([l()],ke.prototype,"codeOutput",2);qe([l()],ke.prototype,"templateEl",2);qe([lt("#codePreview")],ke.prototype,"codePreview",2);qe([lt("#codeRender")],ke.prototype,"codeRender",2);qe([$()],ke.prototype,"codeEdited",2);ke=qe([k(Kf)],ke);function mc(s){return S}var Hf=Object.defineProperty,Vf=Object.getOwnPropertyDescriptor,gc=(s,e,o,r)=>{for(var t=r>1?void 0:r?Vf(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Hf(e,o,t),t};const Wf={"docs-toggle-if-demo":{sources:[{path:"src/docs/example/docs-toggle-demos.ts",line:18,label:"docs-toggle-if-demo"}]},"docs-toggle-loader-demo":{sources:[{path:"src/docs/example/docs-toggle-demos.ts",line:49,label:"docs-toggle-loader-demo"}]},"docs-joke-search-demo":{sources:[{path:"src/docs/example/docs-joke-demos.ts",line:111,label:"search"}]},"docs-joke-lang-demo":{sources:[{path:"src/docs/example/docs-joke-demos.ts",line:136,label:"lang"}]},"docs-joke-blacklist-demo":{sources:[{path:"src/docs/example/docs-joke-demos.ts",line:181,label:"blacklist"}]},"docs-joke-blacklist-radio-demo":{sources:[{path:"src/docs/example/docs-joke-demos.ts",line:212,label:"radio"}]},"docs-joke-blacklist-switch-demo":{sources:[{path:"src/docs/example/docs-joke-demos.ts",line:256,label:"switch"}]},"docs-queue-users-demo":{sources:[{path:"src/docs/example/docs-queue-demos.ts",line:66,label:"users"}]},"docs-queue-geo-demo":{sources:[{path:"src/docs/example/docs-queue-demos.ts",line:38,label:"geo"}]},"docs-users-list":{sources:[{path:"src/docs/example/docs-users-list.ts",line:15,label:"docs-users-list"}]},"docs-list-alternate-demo":{sources:[{path:"src/docs/example/docs-list-demos.ts",line:51,label:"alternate"}]},"docs-list-template-key-demo":{sources:[{path:"src/docs/example/docs-list-demos.ts",line:79,label:"templateKey"}]},"docs-list-separator-demo":{sources:[{path:"src/docs/example/docs-list-demos.ts",line:118,label:"separator"}]},"docs-list-extract-values-demo":{sources:[{path:"src/docs/example/docs-list-demos.ts",line:146,label:"extractValues"}]},"docs-router-basic-demo":{sources:[{path:"src/docs/example/docs-router-demos.ts",line:33,label:"basic"}]},"docs-router-params-demo":{sources:[{path:"src/docs/example/docs-router-demos.ts",line:61,label:"params"}]},"docs-submit-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:86,label:"submit"}]},"docs-submit-native-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:307,label:"native"}]},"docs-submit-formdata-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:231,label:"formdata"}]},"docs-submit-result-key-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:184,label:"result-key"}]},"docs-submit-clear-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:144,label:"clear"}]},"docs-submit-event-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:357,label:"event"}]},"docs-submit-endpoint-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:407,label:"endpoint"}]},"docs-submit-get-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:276,label:"get"}]},"docs-api-config-bearer-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:63,label:"bearer"}]},"docs-api-config-token-provider-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:83,label:"tokenProvider"}]},"docs-api-config-stale-token-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:104,label:"498"}]},"docs-api-config-wording-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:132,label:"wording"}]},"docs-api-config-scoped-attrs-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:162,label:"scope"}]},"docs-api-config-events-token-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:191,label:"eventsApiToken"}]}},Gf={"docs-user":[{path:"src/docs/example/users.ts",label:"docs-user"}],"docs-user-two-scopes":[{path:"src/docs/example/docs-user-two-scopes.ts",label:"two scopes"},{path:"src/docs/example/users.ts",label:"docs-user"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"docs-joke-search-demo":[{path:"src/docs/example/docs-joke-demos.ts",label:"joke demos"}],"docs-joke-lang-demo":[{path:"src/docs/example/docs-joke-demos.ts",label:"joke demos"}],"docs-queue-geo-demo":[{path:"src/docs/example/docs-queue-demos.ts",label:"queue demos"}],"docs-queue-users-demo":[{path:"src/docs/example/docs-queue-demos.ts",label:"queue demos"}],"docs-toggle-if-demo":[{path:"src/docs/example/docs-toggle-demos.ts",label:"toggle demos"}],"docs-toggle-loader-demo":[{path:"src/docs/example/docs-toggle-demos.ts",label:"toggle demos"}],"demo-publish":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:29,label:"demo-publish"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-subscribe-dynamic":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:313,label:"demo-subscribe-dynamic"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-sub-template":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:282,label:"demo-sub-template"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-api-get":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:83,label:"demo-api-get"},{path:"src/docs/example/decorators-demo-geo.ts",label:"geo API"},{path:"src/docs/mock-api/router.ts",label:"mock router"}],"demo-api-get-configuration-key":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:126,label:"demo-api-get-configuration-key"},{path:"src/docs/example/decorators-demo-geo.ts",label:"geo API"}],"demo-api-get-publish-subscribe":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:227,label:"demo-api-get-publish-subscribe"},{path:"src/docs/example/decorators-demo-geo.ts",label:"geo API"}],"demo-handle":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:360,label:"demo-handle"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-handle-dynamic":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:396,label:"demo-handle-dynamic"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-bind":[{path:"src/docs/example/decorators-demo-bind-demos.ts",line:14,label:"demo-bind"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-bind-reflect":[{path:"src/docs/example/decorators-demo-bind-demos.ts",line:56,label:"demo-bind-reflect"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-bind-dynamic":[{path:"src/docs/example/decorators-demo-bind-demos.ts",line:124,label:"demo-bind-dynamic"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-ancestor-attribute":[{path:"src/docs/example/decorators-demo.ts",line:19,label:"demo-ancestor-attribute"}],"demo-on-assign":[{path:"src/docs/example/decorators-demo.ts",line:43,label:"demo-on-assign"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-on-assign-dynamic":[{path:"src/docs/example/decorators-demo.ts",line:94,label:"demo-on-assign-dynamic"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-auto-subscribe":[{path:"src/docs/example/decorators-demo.ts",line:211,label:"demo-auto-subscribe"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-wait-ancestors-section":[{path:"src/docs/example/decorators-demo.ts",line:278,label:"demo-wait-ancestors-section"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-wait-ancestors-multi-section":[{path:"src/docs/example/decorators-demo.ts",line:355,label:"demo-wait-ancestors-multi-section"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-wait-ancestors-static-section":[{path:"src/docs/example/decorators-demo.ts",line:462,label:"demo-wait-ancestors-static-section"}],"demo-wait-ancestors-ready-section":[{path:"src/docs/example/decorators-demo.ts",line:432,label:"demo-wait-ancestors-ready-section"}],"sonic-queue-demo":[{path:"src/core/components/functional/queue/queue.demo.ts",label:"sonic-queue-demo"},{path:"src/docs/mock-api/router.ts",label:"mock router"}],"sonic-list-demo":[{path:"src/core/components/functional/list/list.demo.ts",label:"sonic-list-demo"},{path:"src/docs/mock-api/router.ts",label:"mock router"}],"queue-users-scroll":[{path:"src/docs/example/docs-queue-demos.ts",label:"docs-queue-users-demo"},{path:"src/docs/example/users.ts",label:"docs-user"}],"list-users-fetch":[{path:"src/docs/example/docs-users-list.ts",label:"docs-users-list"},{path:"src/docs/mock-api/router.ts",label:"mock API"}],"docs-submit-demo":[{path:"src/docs/example/docs-submit-demos.ts",label:"submit demo"},{path:"src/docs/mock-api/router.ts",label:"mock API (POST register)"}],"docs-api-config-bearer-demo":[{path:"src/docs/example/docs-api-config-demos.ts",label:"API config demos"},{path:"src/docs/mock-api/api-config-mock.ts",label:"mock routes"}],"docs-api-config-token-provider-demo":[{path:"src/docs/example/docs-api-config-demos.ts",label:"API config demos"},{path:"src/docs/mock-api/api-config-mock.ts",label:"mock routes"}],"docs-api-config-stale-token-demo":[{path:"src/docs/example/docs-api-config-demos.ts",label:"API config demos"},{path:"src/docs/mock-api/api-config-mock.ts",label:"mock routes"}],"docs-api-config-wording-demo":[{path:"src/docs/example/docs-api-config-demos.ts",label:"API config demos"},{path:"src/docs/mock-api/api-config-mock.ts",label:"mock routes"}]};let Hi=class extends D{constructor(){super(...arguments),this.forTag=""}render(){return Gf[this.forTag]?.length?mc():S}};gc([l({attribute:"for"})],Hi.prototype,"forTag",2);Hi=gc([k("docs-demo-sources")],Hi);const Jf=`import { html, LitElement, nothing } from "lit";
4470
+ `];qe([l({type:Boolean,reflect:!0})],ke.prototype,"inline",2);qe([l({type:Boolean,reflect:!0})],ke.prototype,"showCode",2);qe([l({type:Boolean,reflect:!0})],ke.prototype,"toggleCode",2);qe([l({type:Boolean,reflect:!0})],ke.prototype,"noEdit",2);qe([l({type:Boolean,reflect:!0})],ke.prototype,"noOutput",2);qe([l()],ke.prototype,"language",2);qe([l()],ke.prototype,"defaultCode",2);qe([l()],ke.prototype,"currentCode",2);qe([l()],ke.prototype,"codeOutput",2);qe([l()],ke.prototype,"templateEl",2);qe([lt("#codePreview")],ke.prototype,"codePreview",2);qe([lt("#codeRender")],ke.prototype,"codeRender",2);qe([$()],ke.prototype,"codeEdited",2);ke=qe([k(Jf)],ke);function bc(s){return S}var Yf=Object.defineProperty,Qf=Object.getOwnPropertyDescriptor,yc=(s,e,o,r)=>{for(var t=r>1?void 0:r?Qf(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Yf(e,o,t),t};const Zf={"docs-toggle-if-demo":{sources:[{path:"src/docs/example/docs-toggle-demos.ts",line:18,label:"docs-toggle-if-demo"}]},"docs-toggle-loader-demo":{sources:[{path:"src/docs/example/docs-toggle-demos.ts",line:49,label:"docs-toggle-loader-demo"}]},"docs-joke-search-demo":{sources:[{path:"src/docs/example/docs-joke-demos.ts",line:111,label:"search"}]},"docs-joke-lang-demo":{sources:[{path:"src/docs/example/docs-joke-demos.ts",line:136,label:"lang"}]},"docs-joke-blacklist-demo":{sources:[{path:"src/docs/example/docs-joke-demos.ts",line:181,label:"blacklist"}]},"docs-joke-blacklist-radio-demo":{sources:[{path:"src/docs/example/docs-joke-demos.ts",line:212,label:"radio"}]},"docs-joke-blacklist-switch-demo":{sources:[{path:"src/docs/example/docs-joke-demos.ts",line:256,label:"switch"}]},"docs-queue-users-demo":{sources:[{path:"src/docs/example/docs-queue-demos.ts",line:66,label:"users"}]},"docs-queue-geo-demo":{sources:[{path:"src/docs/example/docs-queue-demos.ts",line:38,label:"geo"}]},"docs-users-list":{sources:[{path:"src/docs/example/docs-users-list.ts",line:15,label:"docs-users-list"}]},"docs-list-alternate-demo":{sources:[{path:"src/docs/example/docs-list-demos.ts",line:51,label:"alternate"}]},"docs-list-template-key-demo":{sources:[{path:"src/docs/example/docs-list-demos.ts",line:79,label:"templateKey"}]},"docs-list-separator-demo":{sources:[{path:"src/docs/example/docs-list-demos.ts",line:118,label:"separator"}]},"docs-list-extract-values-demo":{sources:[{path:"src/docs/example/docs-list-demos.ts",line:146,label:"extractValues"}]},"docs-router-basic-demo":{sources:[{path:"src/docs/example/docs-router-demos.ts",line:33,label:"basic"}]},"docs-router-params-demo":{sources:[{path:"src/docs/example/docs-router-demos.ts",line:61,label:"params"}]},"docs-submit-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:86,label:"submit"}]},"docs-submit-native-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:307,label:"native"}]},"docs-submit-formdata-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:231,label:"formdata"}]},"docs-submit-result-key-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:184,label:"result-key"}]},"docs-submit-clear-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:144,label:"clear"}]},"docs-submit-event-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:357,label:"event"}]},"docs-submit-endpoint-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:407,label:"endpoint"}]},"docs-submit-get-demo":{sources:[{path:"src/docs/example/docs-submit-demos.ts",line:276,label:"get"}]},"docs-api-config-bearer-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:63,label:"bearer"}]},"docs-api-config-token-provider-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:83,label:"tokenProvider"}]},"docs-api-config-stale-token-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:104,label:"498"}]},"docs-api-config-wording-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:132,label:"wording"}]},"docs-api-config-scoped-attrs-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:162,label:"scope"}]},"docs-api-config-events-token-demo":{sources:[{path:"src/docs/example/docs-api-config-demos.ts",line:191,label:"eventsApiToken"}]}},Xf={"docs-user":[{path:"src/docs/example/users.ts",label:"docs-user"}],"docs-user-two-scopes":[{path:"src/docs/example/docs-user-two-scopes.ts",label:"two scopes"},{path:"src/docs/example/users.ts",label:"docs-user"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"docs-joke-search-demo":[{path:"src/docs/example/docs-joke-demos.ts",label:"joke demos"}],"docs-joke-lang-demo":[{path:"src/docs/example/docs-joke-demos.ts",label:"joke demos"}],"docs-queue-geo-demo":[{path:"src/docs/example/docs-queue-demos.ts",label:"queue demos"}],"docs-queue-users-demo":[{path:"src/docs/example/docs-queue-demos.ts",label:"queue demos"}],"docs-toggle-if-demo":[{path:"src/docs/example/docs-toggle-demos.ts",label:"toggle demos"}],"docs-toggle-loader-demo":[{path:"src/docs/example/docs-toggle-demos.ts",label:"toggle demos"}],"demo-publish":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:29,label:"demo-publish"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-subscribe-dynamic":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:313,label:"demo-subscribe-dynamic"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-sub-template":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:282,label:"demo-sub-template"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-api-get":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:83,label:"demo-api-get"},{path:"src/docs/example/decorators-demo-geo.ts",label:"geo API"},{path:"src/docs/mock-api/router.ts",label:"mock router"}],"demo-api-get-configuration-key":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:126,label:"demo-api-get-configuration-key"},{path:"src/docs/example/decorators-demo-geo.ts",label:"geo API"}],"demo-api-get-publish-subscribe":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:227,label:"demo-api-get-publish-subscribe"},{path:"src/docs/example/decorators-demo-geo.ts",label:"geo API"}],"demo-handle":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:360,label:"demo-handle"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-handle-dynamic":[{path:"src/docs/example/decorators-demo-subscribe-publish-get-demos.ts",line:396,label:"demo-handle-dynamic"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-bind":[{path:"src/docs/example/decorators-demo-bind-demos.ts",line:14,label:"demo-bind"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-bind-reflect":[{path:"src/docs/example/decorators-demo-bind-demos.ts",line:56,label:"demo-bind-reflect"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-bind-dynamic":[{path:"src/docs/example/decorators-demo-bind-demos.ts",line:124,label:"demo-bind-dynamic"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-ancestor-attribute":[{path:"src/docs/example/decorators-demo.ts",line:19,label:"demo-ancestor-attribute"}],"demo-on-assign":[{path:"src/docs/example/decorators-demo.ts",line:43,label:"demo-on-assign"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-on-assign-dynamic":[{path:"src/docs/example/decorators-demo.ts",line:94,label:"demo-on-assign-dynamic"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-auto-subscribe":[{path:"src/docs/example/decorators-demo.ts",line:211,label:"demo-auto-subscribe"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-wait-ancestors-section":[{path:"src/docs/example/decorators-demo.ts",line:278,label:"demo-wait-ancestors-section"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-wait-ancestors-multi-section":[{path:"src/docs/example/decorators-demo.ts",line:355,label:"demo-wait-ancestors-multi-section"},{path:"src/docs/example/decorators-demo-init.ts",label:"demo data"}],"demo-wait-ancestors-static-section":[{path:"src/docs/example/decorators-demo.ts",line:462,label:"demo-wait-ancestors-static-section"}],"demo-wait-ancestors-ready-section":[{path:"src/docs/example/decorators-demo.ts",line:432,label:"demo-wait-ancestors-ready-section"}],"sonic-queue-demo":[{path:"src/core/components/functional/queue/queue.demo.ts",label:"sonic-queue-demo"},{path:"src/docs/mock-api/router.ts",label:"mock router"}],"sonic-list-demo":[{path:"src/core/components/functional/list/list.demo.ts",label:"sonic-list-demo"},{path:"src/docs/mock-api/router.ts",label:"mock router"}],"queue-users-scroll":[{path:"src/docs/example/docs-queue-demos.ts",label:"docs-queue-users-demo"},{path:"src/docs/example/users.ts",label:"docs-user"}],"list-users-fetch":[{path:"src/docs/example/docs-users-list.ts",label:"docs-users-list"},{path:"src/docs/mock-api/router.ts",label:"mock API"}],"docs-submit-demo":[{path:"src/docs/example/docs-submit-demos.ts",label:"submit demo"},{path:"src/docs/mock-api/router.ts",label:"mock API (POST register)"}],"docs-api-config-bearer-demo":[{path:"src/docs/example/docs-api-config-demos.ts",label:"API config demos"},{path:"src/docs/mock-api/api-config-mock.ts",label:"mock routes"}],"docs-api-config-token-provider-demo":[{path:"src/docs/example/docs-api-config-demos.ts",label:"API config demos"},{path:"src/docs/mock-api/api-config-mock.ts",label:"mock routes"}],"docs-api-config-stale-token-demo":[{path:"src/docs/example/docs-api-config-demos.ts",label:"API config demos"},{path:"src/docs/mock-api/api-config-mock.ts",label:"mock routes"}],"docs-api-config-wording-demo":[{path:"src/docs/example/docs-api-config-demos.ts",label:"API config demos"},{path:"src/docs/mock-api/api-config-mock.ts",label:"mock routes"}]};let Hi=class extends D{constructor(){super(...arguments),this.forTag=""}render(){return Xf[this.forTag]?.length?bc():S}};yc([l({attribute:"for"})],Hi.prototype,"forTag",2);Hi=yc([k("docs-demo-sources")],Hi);const eb=`import { html, LitElement, nothing } from "lit";
4471
4471
  import { customElement, property, state } from "lit/decorators.js";
4472
4472
  import {
4473
4473
  ancestorAttribute,
@@ -4764,7 +4764,7 @@ export class DocsJokeBlacklistSwitchDemo extends LitElement {
4764
4764
  \`;
4765
4765
  }
4766
4766
  }
4767
- `,Yf=`import { html, LitElement, nothing } from "lit";
4767
+ `,tb=`import { html, LitElement, nothing } from "lit";
4768
4768
  import { customElement } from "lit/decorators.js";
4769
4769
  import { tailwind } from "../tailwind";
4770
4770
 
@@ -4943,7 +4943,7 @@ export class DocsListExtractValuesDemo extends LitElement {
4943
4943
  \`;
4944
4944
  }
4945
4945
  }
4946
- `,Qf=`import { html, LitElement } from "lit";
4946
+ `,sb=`import { html, LitElement } from "lit";
4947
4947
  import { customElement } from "lit/decorators.js";
4948
4948
  import {
4949
4949
  DOCS_MOCK_GEO_SERVICE,
@@ -5057,7 +5057,7 @@ export class DocsQueueUsersDemo extends LitElement {
5057
5057
  \`;
5058
5058
  }
5059
5059
  }
5060
- `,Zf=`import { html, LitElement } from "lit";
5060
+ `,ob=`import { html, LitElement } from "lit";
5061
5061
  import { customElement, property, state } from "lit/decorators.js";
5062
5062
  import { subscribe } from "@supersoniks/concorde/core/decorators/Subscriber";
5063
5063
  import { tailwind } from "../tailwind";
@@ -5130,7 +5130,7 @@ export class DocsToggleLoaderDemo extends LitElement {
5130
5130
  \`;
5131
5131
  }
5132
5132
  }
5133
- `,Xf=`import { html, LitElement } from "lit";
5133
+ `,rb=`import { html, LitElement } from "lit";
5134
5134
  import { customElement } from "lit/decorators.js";
5135
5135
  import { docsUserScopeAKey, docsUserScopeBKey } from "./docs-provider-keys";
5136
5136
  import { tailwind } from "../tailwind";
@@ -5167,7 +5167,7 @@ export class DocsUserTwoScopes extends LitElement {
5167
5167
  \`;
5168
5168
  }
5169
5169
  }
5170
- `,eb=`import { html, LitElement } from "lit";
5170
+ `,ib=`import { html, LitElement } from "lit";
5171
5171
  import { customElement, state } from "lit/decorators.js";
5172
5172
  import { tailwind } from "../tailwind";
5173
5173
  import { DOC_ROUTER_PAGE_HASH, setDocsDemoSubHash } from "../docs-location";
@@ -5256,7 +5256,7 @@ export class DocsRouterParamsDemo extends LitElement {
5256
5256
  \`;
5257
5257
  }
5258
5258
  }
5259
- `,tb=`import { html, LitElement, nothing } from "lit";
5259
+ `,nb=`import { html, LitElement, nothing } from "lit";
5260
5260
  import { customElement, state } from "lit/decorators.js";
5261
5261
  import { subscribe } from "@supersoniks/concorde/core/decorators/Subscriber";
5262
5262
  import { Endpoint } from "@supersoniks/concorde/core/utils/endpoint";
@@ -5711,7 +5711,7 @@ export class DocsSubmitEndpointDemo extends LitElement {
5711
5711
  \`;
5712
5712
  }
5713
5713
  }
5714
- `,sb=`import { html, LitElement, nothing } from "lit";
5714
+ `,ab=`import { html, LitElement, nothing } from "lit";
5715
5715
  import { customElement, state } from "lit/decorators.js";
5716
5716
  import { get } from "@supersoniks/concorde/core/decorators/api";
5717
5717
  import type { ApiGetResult } from "@supersoniks/concorde/core/utils/api";
@@ -5945,7 +5945,7 @@ export class DocsApiConfigEventsTokenDemo extends LitElement {
5945
5945
  \`;
5946
5946
  }
5947
5947
  }
5948
- `,ob=`import { html, LitElement, nothing } from "lit";
5948
+ `,lb=`import { html, LitElement, nothing } from "lit";
5949
5949
  import { customElement } from "lit/decorators.js";
5950
5950
  import { tailwind } from "../tailwind";
5951
5951
  import { Endpoint } from "@supersoniks/concorde/core/utils/endpoint";
@@ -6016,7 +6016,7 @@ export class DocsUsersList extends LitElement {
6016
6016
  \`;
6017
6017
  }
6018
6018
  }
6019
- `,rb=`import { html, LitElement, nothing } from "lit";
6019
+ `,cb=`import { html, LitElement, nothing } from "lit";
6020
6020
  import { customElement, state } from "lit/decorators.js";
6021
6021
  import {
6022
6022
  ancestorAttribute,
@@ -6092,19 +6092,19 @@ export class DocsUser extends LitElement {
6092
6092
  </div>\`;
6093
6093
  }
6094
6094
  }
6095
- `,ib={"src/docs/example/docs-toggle-demos.ts":Zf,"src/docs/example/docs-joke-demos.ts":Jf,"src/docs/example/docs-queue-demos.ts":Qf,"src/docs/example/docs-list-demos.ts":Yf,"src/docs/example/docs-router-demos.ts":eb,"src/docs/example/docs-submit-demos.ts":tb,"src/docs/example/docs-api-config-demos.ts":sb,"src/docs/example/docs-users-list.ts":ob,"src/docs/example/docs-user-two-scopes.ts":Xf,"src/docs/example/users.ts":rb};var nb=Object.defineProperty,ab=Object.getOwnPropertyDescriptor,Zr=(s,e,o,r)=>{for(var t=r>1?void 0:r?ab(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&nb(e,o,t),t};function lb(s,e){const o=s.split(`
6095
+ `,db={"src/docs/example/docs-toggle-demos.ts":ob,"src/docs/example/docs-joke-demos.ts":eb,"src/docs/example/docs-queue-demos.ts":sb,"src/docs/example/docs-list-demos.ts":tb,"src/docs/example/docs-router-demos.ts":ib,"src/docs/example/docs-submit-demos.ts":nb,"src/docs/example/docs-api-config-demos.ts":ab,"src/docs/example/docs-users-list.ts":lb,"src/docs/example/docs-user-two-scopes.ts":rb,"src/docs/example/users.ts":cb};var ub=Object.defineProperty,pb=Object.getOwnPropertyDescriptor,Zr=(s,e,o,r)=>{for(var t=r>1?void 0:r?pb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&ub(e,o,t),t};function hb(s,e){const o=s.split(`
6096
6096
  `),r=`@customElement("${e}")`;let t=-1;for(let n=0;n<o.length;n++)if(o[n].includes(r)){t=n;break}if(t<0)return null;let i=o.length;for(let n=t+1;n<o.length;n++)if(o[n].includes("@customElement(")){i=n;break}return o.slice(t,i).join(`
6097
- `)}function cb(s,e,o){const r=s.split(`
6097
+ `)}function mb(s,e,o){const r=s.split(`
6098
6098
  `);if(!e&&!o)return s;const t=Math.max(1,e??1)-1,i=o??r.length;return r.slice(t,i).join(`
6099
- `)}function db(s,e,o){const r=lb(s,e);return r||(o.excerptStart!=null||o.excerptEnd!=null?cb(s,o.excerptStart,o.excerptEnd):s)}function ub(s){return St.highlight(s,St.languages.typescript,"typescript")}const pb="docs-lit-demo";let Ps=class extends D{constructor(){super(...arguments),this.forTag="",this.showCode=!0,this.highlighted=""}get config(){return Wf[this.forTag]}connectedCallback(){super.connectedCallback();const s=this.config;if(!s?.sources[0])return;const e=ib[s.sources[0].path];if(!e){console.warn(`[docs-lit-demo] No raw source for ${s.sources[0].path}`);return}const o=s.liveTag??this.forTag,r=db(e,o,s);this.highlighted=ub(r)}render(){const s=this.config;return s?(s.liveTag??this.forTag,p`
6100
- ${mc(s.sources)}
6099
+ `)}function gb(s,e,o){const r=hb(s,e);return r||(o.excerptStart!=null||o.excerptEnd!=null?mb(s,o.excerptStart,o.excerptEnd):s)}function fb(s){return St.highlight(s,St.languages.typescript,"typescript")}const bb="docs-lit-demo";let Ps=class extends D{constructor(){super(...arguments),this.forTag="",this.showCode=!0,this.highlighted=""}get config(){return Zf[this.forTag]}connectedCallback(){super.connectedCallback();const s=this.config;if(!s?.sources[0])return;const e=db[s.sources[0].path];if(!e){console.warn(`[docs-lit-demo] No raw source for ${s.sources[0].path}`);return}const o=s.liveTag??this.forTag,r=gb(e,o,s);this.highlighted=fb(r)}render(){const s=this.config;return s?(s.liveTag??this.forTag,p`
6100
+ ${bc(s.sources)}
6101
6101
  <div class="preview" data-live-host></div>
6102
6102
  ${this.showCode&&this.highlighted?p`
6103
6103
  <pre
6104
6104
  class="rounded-md custom-scroll language-typescript overflow-auto"
6105
6105
  ><code>${V(this.highlighted)}</code></pre>
6106
6106
  `:S}
6107
- `):S}firstUpdated(){super.firstUpdated(),this.mountLiveDemo()}updated(s){super.updated(s),s.has("forTag")&&this.mountLiveDemo()}mountLiveDemo(){const e=this.config?.liveTag??this.forTag,o=this.renderRoot.querySelector("[data-live-host]");if(!o||!e)return;const r=o.firstElementChild;r?.tagName.toLowerCase()===e&&r.isConnected||o.replaceChildren(document.createElement(e))}};Ps.styles=[q,hc,L`
6107
+ `):S}firstUpdated(){super.firstUpdated(),this.mountLiveDemo()}updated(s){super.updated(s),s.has("forTag")&&this.mountLiveDemo()}mountLiveDemo(){const e=this.config?.liveTag??this.forTag,o=this.renderRoot.querySelector("[data-live-host]");if(!o||!e)return;const r=o.firstElementChild;r?.tagName.toLowerCase()===e&&r.isConnected||o.replaceChildren(document.createElement(e))}};Ps.styles=[q,fc,L`
6108
6108
  :host {
6109
6109
  display: block;
6110
6110
  margin: 1.1rem 0;
@@ -6118,7 +6118,7 @@ export class DocsUser extends LitElement {
6118
6118
  padding: 1rem;
6119
6119
  margin-bottom: 0.75rem;
6120
6120
  }
6121
- `];Zr([l({attribute:"for"})],Ps.prototype,"forTag",2);Zr([l({type:Boolean})],Ps.prototype,"showCode",2);Zr([$()],Ps.prototype,"highlighted",2);Ps=Zr([k(pb)],Ps);var hb=Object.defineProperty,mb=Object.getOwnPropertyDescriptor,Qn=(s,e,o,r)=>{for(var t=r>1?void 0:r?mb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&hb(e,o,t),t};const gb="sonic-docs-header";let ho=class extends de(D){constructor(){super(...arguments),this.theme="light",this.searchVisible=!1}connectedCallback(){this.handleColorScheme(),super.connectedCallback(),document.addEventListener("keydown",s=>{s.key==="Escape"&&this.searchVisible&&this.hideSearch()}),document.addEventListener("keydown",s=>{s.ctrlKey&&s.key==="k"&&(this.toggleSearch(),s.preventDefault()),s.metaKey&&s.key==="k"&&(this.toggleSearch(),s.preventDefault())}),window.addEventListener("hashchange",()=>{this.hideSearch()})}handleColorScheme(){localStorage.sonicTheme==="dark"||!("sonicTheme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?(document.documentElement.setAttribute("data-concorde-theme","dark"),document.documentElement.classList.add("dark"),this.theme="dark"):(document.documentElement.classList.remove("dark"),document.documentElement.setAttribute("data-concorde-theme","light"),this.theme="light")}setMode(s){localStorage.sonicTheme=s,this.handleColorScheme()}hideSearch(){this.searchVisible=!1}toggleSearch(){this.searchVisible=!this.searchVisible}render(){return p`<div
6121
+ `];Zr([l({attribute:"for"})],Ps.prototype,"forTag",2);Zr([l({type:Boolean})],Ps.prototype,"showCode",2);Zr([$()],Ps.prototype,"highlighted",2);Ps=Zr([k(bb)],Ps);var yb=Object.defineProperty,vb=Object.getOwnPropertyDescriptor,Qn=(s,e,o,r)=>{for(var t=r>1?void 0:r?vb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&yb(e,o,t),t};const wb="sonic-docs-header";let ho=class extends de(D){constructor(){super(...arguments),this.theme="light",this.searchVisible=!1}connectedCallback(){this.handleColorScheme(),super.connectedCallback(),document.addEventListener("keydown",s=>{s.key==="Escape"&&this.searchVisible&&this.hideSearch()}),document.addEventListener("keydown",s=>{s.ctrlKey&&s.key==="k"&&(this.toggleSearch(),s.preventDefault()),s.metaKey&&s.key==="k"&&(this.toggleSearch(),s.preventDefault())}),window.addEventListener("hashchange",()=>{this.hideSearch()})}handleColorScheme(){localStorage.sonicTheme==="dark"||!("sonicTheme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?(document.documentElement.setAttribute("data-concorde-theme","dark"),document.documentElement.classList.add("dark"),this.theme="dark"):(document.documentElement.classList.remove("dark"),document.documentElement.setAttribute("data-concorde-theme","light"),this.theme="light")}setMode(s){localStorage.sonicTheme=s,this.handleColorScheme()}hideSearch(){this.searchVisible=!1}toggleSearch(){this.searchVisible=!this.searchVisible}render(){return p`<div
6122
6122
  class="flex items-center gap-4 border-b-[.18rem] text-content border-current py-3 sticky top-0 z-40 bg-neutral-0"
6123
6123
  >
6124
6124
  <div class="">
@@ -6213,7 +6213,7 @@ export class DocsUser extends LitElement {
6213
6213
  `:S}
6214
6214
  </div>
6215
6215
 
6216
- </div> `}};ho.styles=[q];Qn([$()],ho.prototype,"theme",2);Qn([$()],ho.prototype,"searchVisible",2);ho=Qn([k(gb)],ho);var fb=Object.defineProperty,bb=Object.getOwnPropertyDescriptor,fc=(s,e,o,r)=>{for(var t=r>1?void 0:r?bb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&fb(e,o,t),t};const yb="docs-navigation";let Ss=class extends D{constructor(){super(...arguments),this.navigation=[{label:"Introduction",href:"#docs/_getting-started/start.md/start"},"Getting Started",{label:"Installation",href:"#docs/_getting-started/concorde-outside.md/concorde-outside"},{label:"AI agents (skills)",href:"#docs/_getting-started/ai-agents.md/ai-agents"},{label:"My first component",href:"#docs/_getting-started/my-first-component.md/my-first-component"},{label:"Adding styles",href:"#docs/_getting-started/theming.md/theming"},"Core concept",{label:"Lit + Tailwind + Vite",href:"#docs/_core-concept/overview.md/overview"},{label:"Data flow",href:"#docs/_core-concept/dataFlow.md/dataFlow"},"Functionnal components",{label:"Date",href:"#core/components/functional/date/date.md/date"},{label:"Fetch",href:"#core/components/functional/fetch/fetch.md/fetch"},{label:"If",href:"#core/components/functional/if/if.md/if"},{label:"List",href:"#core/components/functional/list/list.md/list"},{label:"Mix",href:"#core/components/functional/mix/mix.md/mix"},{label:"Queue",href:"#core/components/functional/queue/queue.md/queue"},{label:"Router",href:"#core/components/functional/router/router.md/router"},{label:"SDUI",href:"#core/components/functional/sdui/sdui.md/sdui"},{label:"States",href:"#core/components/functional/states/states.md/states"},{label:"Submit",href:"#core/components/functional/submit/submit.md/submit"},{label:"Value",href:"#core/components/functional/value/value.md/value"},"UI components",{label:"Alert",href:"#core/components/ui/alert/alert.md/alert"},{label:"Badge",href:"#core/components/ui/badge/badge.md/badge"},{label:"Button",href:"#core/components/ui/button/button.md/button"},{label:"Captcha",href:"#core/components/ui/captcha/captcha.md/captcha"},{label:"Card",href:"#core/components/ui/card/card.md/card"},{label:"Checkbox",href:"#core/components/ui/form/checkbox/checkbox.md/checkbox"},{label:"Divider",href:"#core/components/ui/divider/divider.md/divider"},{label:"Fieldset",href:"#core/components/ui/form/fieldset/fieldset.md/fieldset"},{label:"Form actions",href:"#core/components/ui/form/form-actions/form-actions.md/form-actions"},{label:"Form layout",href:"#core/components/ui/form/form-layout/form-layout.md/form-layout"},{label:"Group",href:"#core/components/ui/group/group.md/group"},{label:"Icon",href:"#core/components/ui/icon/icon.md/icon"},{label:"Image",href:"#core/components/ui/image/image.md/image"},{label:"Input",href:"#core/components/ui/form/input/input.md/input"},{label:"Input autocomplete",href:"#core/components/ui/form/input-autocomplete/input-autocomplete.md/input-autocomplete"},{label:"Link",href:"#core/components/ui/link/link.md/link"},{label:"Loader",href:"#core/components/ui/loader/loader.md/loader"},{label:"Menu",href:"#core/components/ui/menu/menu.md/menu"},{label:"Modal",href:"#core/components/ui/modal/modal.md/modal"},{label:"Pop",href:"#core/components/ui/pop/pop.md/pop"},{label:"Progress",href:"#core/components/ui/progress/progress.md/progress"},{label:"Radio",href:"#core/components/ui/form/radio/radio.md/radio"},{label:"Select",href:"#core/components/ui/form/select/select.md/select"},{label:"Switch",href:"#core/components/ui/form/switch/switch.md/switch"},{label:"Table",href:"#core/components/ui/table/table.md/table"},{label:"Textarea",href:"#core/components/ui/form/textarea/textarea.md/textarea"},{label:"Theme",href:"#"},{label:"Toast",href:"#core/components/ui/toast/toast.md/toast"},{label:"Tooltip",href:"#core/components/ui/tooltip/tooltip.md/tooltip"},"Decorators",{label:"@ancestorAttribute",href:"#docs/_decorators/ancestor-attribute.md/ancestor-attribute"},{label:"@bind",href:"#docs/_decorators/bind.md/bind"},{label:"@subscribe",href:"#docs/_decorators/subscribe.md/subscribe"},{label:"@handle",href:"#docs/_decorators/handle.md/handle"},{label:"@publish",href:"#docs/_decorators/publish.md/publish"},{label:"@get",href:"#docs/_decorators/get.md/get"},{label:"@onAssign",href:"#docs/_decorators/on-assign.md/on-assign"},{label:"@autoSubscribe",href:"#docs/_decorators/auto-subscribe.md/auto-subscribe"},{label:"@awaitConnectedAncestors",href:"#docs/_decorators/wait-for-ancestors.md/wait-for-ancestors"},"Misc",{label:"DataProviderKey",href:"#docs/_misc/dataProviderKey.md/dataProviderKey"},{label:"Endpoint",href:"#docs/_misc/endpoint.md/endpoint"},{label:"API configuration",href:"#docs/_misc/api-configuration.md/api-configuration"},{label:"sub()",href:"#docs/_directives/sub.md/sub"},{label:"HTML integration",href:"#docs/_misc/html-integration.md/html-integration"},{label:"Local API demos",href:"#docs/_misc/docs-mock-api.md/docs-mock-api"},"Legacy",{label:"Manual installation (Vite)",href:"#docs/_getting-started/concorde-manual-install.md/concorde-manual-install"},{label:"Subscriber mixin",href:"#docs/_core-concept/subscriber.md/subscriber"},{label:"Sharing data (Publisher)",href:"#docs/_getting-started/pubsub.md/pubsub"},{label:"My first subscriber",href:"#docs/_getting-started/my-first-subscriber.md/my-first-subscriber"}]}disconnectedCallback(){Ss.lastScroll=this.scrollTop,super.disconnectedCallback()}firstUpdated(s){super.firstUpdated(s);const e=this.shadowRoot?.querySelector('sonic-menu-item[active]:not([href="#"])');e&&window.queueMicrotask(()=>{this.scrollTop=Ss.lastScroll,e.scrollIntoViewIfNeeded()})}render(){return p`
6216
+ </div> `}};ho.styles=[q];Qn([$()],ho.prototype,"theme",2);Qn([$()],ho.prototype,"searchVisible",2);ho=Qn([k(wb)],ho);var xb=Object.defineProperty,_b=Object.getOwnPropertyDescriptor,vc=(s,e,o,r)=>{for(var t=r>1?void 0:r?_b(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&xb(e,o,t),t};const Db="docs-navigation";let Ss=class extends D{constructor(){super(...arguments),this.navigation=[{label:"Introduction",href:"#docs/_getting-started/start.md/start"},"Getting Started",{label:"Installation",href:"#docs/_getting-started/concorde-outside.md/concorde-outside"},{label:"AI agents (skills)",href:"#docs/_getting-started/ai-agents.md/ai-agents"},{label:"My first component",href:"#docs/_getting-started/my-first-component.md/my-first-component"},{label:"Adding styles",href:"#docs/_getting-started/theming.md/theming"},"Core concept",{label:"Lit + Tailwind + Vite",href:"#docs/_core-concept/overview.md/overview"},{label:"Data flow",href:"#docs/_core-concept/dataFlow.md/dataFlow"},"Functionnal components",{label:"Date",href:"#core/components/functional/date/date.md/date"},{label:"Fetch",href:"#core/components/functional/fetch/fetch.md/fetch"},{label:"If",href:"#core/components/functional/if/if.md/if"},{label:"List",href:"#core/components/functional/list/list.md/list"},{label:"Mix",href:"#core/components/functional/mix/mix.md/mix"},{label:"Queue",href:"#core/components/functional/queue/queue.md/queue"},{label:"Router",href:"#core/components/functional/router/router.md/router"},{label:"SDUI",href:"#core/components/functional/sdui/sdui.md/sdui"},{label:"States",href:"#core/components/functional/states/states.md/states"},{label:"Submit",href:"#core/components/functional/submit/submit.md/submit"},{label:"Value",href:"#core/components/functional/value/value.md/value"},"UI components",{label:"Alert",href:"#core/components/ui/alert/alert.md/alert"},{label:"Badge",href:"#core/components/ui/badge/badge.md/badge"},{label:"Button",href:"#core/components/ui/button/button.md/button"},{label:"Captcha",href:"#core/components/ui/captcha/captcha.md/captcha"},{label:"Card",href:"#core/components/ui/card/card.md/card"},{label:"Checkbox",href:"#core/components/ui/form/checkbox/checkbox.md/checkbox"},{label:"Divider",href:"#core/components/ui/divider/divider.md/divider"},{label:"Fieldset",href:"#core/components/ui/form/fieldset/fieldset.md/fieldset"},{label:"Form actions",href:"#core/components/ui/form/form-actions/form-actions.md/form-actions"},{label:"Form layout",href:"#core/components/ui/form/form-layout/form-layout.md/form-layout"},{label:"Group",href:"#core/components/ui/group/group.md/group"},{label:"Icon",href:"#core/components/ui/icon/icon.md/icon"},{label:"Image",href:"#core/components/ui/image/image.md/image"},{label:"Input",href:"#core/components/ui/form/input/input.md/input"},{label:"Input autocomplete",href:"#core/components/ui/form/input-autocomplete/input-autocomplete.md/input-autocomplete"},{label:"Link",href:"#core/components/ui/link/link.md/link"},{label:"Loader",href:"#core/components/ui/loader/loader.md/loader"},{label:"Menu",href:"#core/components/ui/menu/menu.md/menu"},{label:"Modal",href:"#core/components/ui/modal/modal.md/modal"},{label:"Pop",href:"#core/components/ui/pop/pop.md/pop"},{label:"Progress",href:"#core/components/ui/progress/progress.md/progress"},{label:"Radio",href:"#core/components/ui/form/radio/radio.md/radio"},{label:"Select",href:"#core/components/ui/form/select/select.md/select"},{label:"Switch",href:"#core/components/ui/form/switch/switch.md/switch"},{label:"Table",href:"#core/components/ui/table/table.md/table"},{label:"Textarea",href:"#core/components/ui/form/textarea/textarea.md/textarea"},{label:"Theme",href:"#"},{label:"Toast",href:"#core/components/ui/toast/toast.md/toast"},{label:"Tooltip",href:"#core/components/ui/tooltip/tooltip.md/tooltip"},"Decorators",{label:"@ancestorAttribute",href:"#docs/_decorators/ancestor-attribute.md/ancestor-attribute"},{label:"@bind",href:"#docs/_decorators/bind.md/bind"},{label:"@subscribe",href:"#docs/_decorators/subscribe.md/subscribe"},{label:"@handle",href:"#docs/_decorators/handle.md/handle"},{label:"@publish",href:"#docs/_decorators/publish.md/publish"},{label:"@get",href:"#docs/_decorators/get.md/get"},{label:"@onAssign",href:"#docs/_decorators/on-assign.md/on-assign"},{label:"@autoSubscribe",href:"#docs/_decorators/auto-subscribe.md/auto-subscribe"},{label:"@awaitConnectedAncestors",href:"#docs/_decorators/wait-for-ancestors.md/wait-for-ancestors"},"Misc",{label:"DataProviderKey",href:"#docs/_misc/dataProviderKey.md/dataProviderKey"},{label:"Endpoint",href:"#docs/_misc/endpoint.md/endpoint"},{label:"API configuration",href:"#docs/_misc/api-configuration.md/api-configuration"},{label:"sub()",href:"#docs/_directives/sub.md/sub"},{label:"HTML integration",href:"#docs/_misc/html-integration.md/html-integration"},{label:"Local API demos",href:"#docs/_misc/docs-mock-api.md/docs-mock-api"},"Legacy",{label:"Manual installation (Vite)",href:"#docs/_getting-started/concorde-manual-install.md/concorde-manual-install"},{label:"Subscriber mixin",href:"#docs/_core-concept/subscriber.md/subscriber"},{label:"Sharing data (Publisher)",href:"#docs/_getting-started/pubsub.md/pubsub"},{label:"My first subscriber",href:"#docs/_getting-started/my-first-subscriber.md/my-first-subscriber"}]}disconnectedCallback(){Ss.lastScroll=this.scrollTop,super.disconnectedCallback()}firstUpdated(s){super.firstUpdated(s);const e=this.shadowRoot?.querySelector('sonic-menu-item[active]:not([href="#"])');e&&window.queueMicrotask(()=>{this.scrollTop=Ss.lastScroll,e.scrollIntoViewIfNeeded()})}render(){return p`
6217
6217
  <sonic-menu>
6218
6218
  ${this.navigation.map(s=>typeof s=="string"?p`<sonic-divider class="uppercase" align="left"
6219
6219
  >${s}</sonic-divider
@@ -6225,7 +6225,7 @@ export class DocsUser extends LitElement {
6225
6225
  >${s.label}</sonic-menu-item
6226
6226
  >`)}
6227
6227
  </sonic-menu>
6228
- `}};Ss.lastScroll=0;fc([l()],Ss.prototype,"navigation",2);Ss=fc([k(yb)],Ss);var vb=Object.defineProperty,wb=Object.getOwnPropertyDescriptor,Zn=(s,e,o,r)=>{for(var t=r>1?void 0:r?wb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&vb(e,o,t),t};const xb=new I("${dataProvider}");let mo=class extends D{constructor(){super(...arguments),this.dataProvider=null,this.user=null}render(){const s=this.user;return s?p`<div
6228
+ `}};Ss.lastScroll=0;vc([l()],Ss.prototype,"navigation",2);Ss=vc([k(Db)],Ss);var kb=Object.defineProperty,Cb=Object.getOwnPropertyDescriptor,Zn=(s,e,o,r)=>{for(var t=r>1?void 0:r?Cb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&kb(e,o,t),t};const Ab=new I("${dataProvider}");let mo=class extends D{constructor(){super(...arguments),this.dataProvider=null,this.user=null}render(){const s=this.user;return s?p`<div
6229
6229
  class="flex items-center gap-3 rounded-md hover:bg-neutral-50 -mx-2 p-2"
6230
6230
  >
6231
6231
  <sonic-image
@@ -6252,7 +6252,7 @@ export class DocsUser extends LitElement {
6252
6252
  <sonic-icon library="iconoir" name="chat-bubble"></sonic-icon>
6253
6253
  </sonic-button>
6254
6254
  </div>
6255
- </div>`:S}};mo.styles=[q];Zn([Ur("dataProvider")],mo.prototype,"dataProvider",2);Zn([Qe(xb),$()],mo.prototype,"user",2);mo=Zn([k("docs-user")],mo);var _b=Object.getOwnPropertyDescriptor,Db=(s,e,o,r)=>{for(var t=r>1?void 0:r?_b(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const kb=new Ye("api/users");let Vi=class extends D{constructor(){super(...arguments),this.items=({id:s,avatar:e,first_name:o,last_name:r,email:t})=>p`<div
6255
+ </div>`:S}};mo.styles=[q];Zn([Ur("dataProvider")],mo.prototype,"dataProvider",2);Zn([Ze(Ab),$()],mo.prototype,"user",2);mo=Zn([k("docs-user")],mo);var Pb=Object.getOwnPropertyDescriptor,Sb=(s,e,o,r)=>{for(var t=r>1?void 0:r?Pb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const $b=new Qe("api/users");let Vi=class extends D{constructor(){super(...arguments),this.items=({id:s,avatar:e,first_name:o,last_name:r,email:t})=>p`<div
6256
6256
  class="flex items-center gap-3 rounded-md hover:bg-neutral-50 -mx-2 p-2"
6257
6257
  >
6258
6258
  <sonic-image
@@ -6289,14 +6289,14 @@ export class DocsUser extends LitElement {
6289
6289
  <div serviceURL=${Dt}>
6290
6290
  <sonic-list
6291
6291
  fetch
6292
- dataProvider=${kb.path}
6292
+ dataProvider=${$b.path}
6293
6293
  key="data"
6294
6294
  class="grid grid-cols-1 gap-2"
6295
6295
  .items=${this.items}
6296
6296
  debug
6297
6297
  ></sonic-list>
6298
6298
  </div>
6299
- `}};Vi.styles=[q];Vi=Db([k("docs-users-list")],Vi);var Cb=Object.getOwnPropertyDescriptor,Ab=(s,e,o,r)=>{for(var t=r>1?void 0:r?Cb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};let Wi=class extends D{render(){return p`
6299
+ `}};Vi.styles=[q];Vi=Sb([k("docs-users-list")],Vi);var Fb=Object.getOwnPropertyDescriptor,Eb=(s,e,o,r)=>{for(var t=r>1?void 0:r?Fb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};let Wi=class extends D{render(){return p`
6300
6300
  <div class="grid md:grid-cols-2 gap-6">
6301
6301
  <section>
6302
6302
  <sonic-divider align="left">Scope A — docsUserScopeA</sonic-divider>
@@ -6316,7 +6316,7 @@ export class DocsUser extends LitElement {
6316
6316
  ancestor <code>dataProvider</code> via <code>@ancestorAttribute</code>
6317
6317
  and <code>docsUserRowKey</code>.
6318
6318
  </p>
6319
- `}};Wi.styles=[q];Wi=Ab([k("docs-user-two-scopes")],Wi);var Pb=Object.defineProperty,Sb=Object.getOwnPropertyDescriptor,Pe=(s,e,o,r)=>{for(var t=r>1?void 0:r?Sb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Pb(e,o,t),t};const $b=new I("${dataProvider}"),Fb=new I("${filterProvider}.${field}");let go=class extends D{constructor(){super(...arguments),this.dataProvider=null,this.row=null}render(){const s=this.row;return s?p`
6319
+ `}};Wi.styles=[q];Wi=Eb([k("docs-user-two-scopes")],Wi);var Lb=Object.defineProperty,Tb=Object.getOwnPropertyDescriptor,Pe=(s,e,o,r)=>{for(var t=r>1?void 0:r?Tb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Lb(e,o,t),t};const Ob=new I("${dataProvider}"),Ib=new I("${filterProvider}.${field}");let go=class extends D{constructor(){super(...arguments),this.dataProvider=null,this.row=null}render(){const s=this.row;return s?p`
6320
6320
  <div
6321
6321
  class="space-y-1 border-0 border-b border-dotted border-neutral-300 py-3"
6322
6322
  >
@@ -6324,11 +6324,11 @@ export class DocsUser extends LitElement {
6324
6324
  ${s.setup?p`<div class="text-sm text-neutral-500">${s.setup}</div>`:S}
6325
6325
  ${s.delivery?p`<div class="text-sm text-neutral-500">${s.delivery}</div>`:S}
6326
6326
  </div>
6327
- `:S}};go.styles=[q];Pe([Ur("dataProvider")],go.prototype,"dataProvider",2);Pe([Qe($b),$()],go.prototype,"row",2);go=Pe([k("docs-joke-item")],go);let $s=class extends D{constructor(){super(...arguments),this.filterProvider="",this.field="",this.label="",this.value=""}render(){return p`
6327
+ `:S}};go.styles=[q];Pe([Ur("dataProvider")],go.prototype,"dataProvider",2);Pe([Ze(Ob),$()],go.prototype,"row",2);go=Pe([k("docs-joke-item")],go);let $s=class extends D{constructor(){super(...arguments),this.filterProvider="",this.field="",this.label="",this.value=""}render(){return p`
6328
6328
  <p class="my-4 block text-xl font-bold">
6329
6329
  ${this.label} « <span class="text-info">${this.value||"…"}</span> » :
6330
6330
  </p>
6331
- `}};Pe([l()],$s.prototype,"filterProvider",2);Pe([l()],$s.prototype,"field",2);Pe([l()],$s.prototype,"label",2);Pe([Qe(Fb),$()],$s.prototype,"value",2);$s=Pe([k("docs-joke-filter-caption")],$s);let cr=class extends D{constructor(){super(...arguments),this.filterProvider="",this.expression="joke/Any?amount=10&lang=fr",this.jokeItem=()=>p`<docs-joke-item></docs-joke-item>`}render(){return p`
6331
+ `}};Pe([l()],$s.prototype,"filterProvider",2);Pe([l()],$s.prototype,"field",2);Pe([l()],$s.prototype,"label",2);Pe([Ze(Ib),$()],$s.prototype,"value",2);$s=Pe([k("docs-joke-filter-caption")],$s);let cr=class extends D{constructor(){super(...arguments),this.filterProvider="",this.expression="joke/Any?amount=10&lang=fr",this.jokeItem=()=>p`<docs-joke-item></docs-joke-item>`}render(){return p`
6332
6332
  <sonic-queue
6333
6333
  lazyload
6334
6334
  dataProviderExpression=${this.expression}
@@ -6377,7 +6377,7 @@ export class DocsUser extends LitElement {
6377
6377
  ${s.setup?p`<div class="font-bold">${s.setup}</div>`:S}
6378
6378
  ${s.delivery?p`<div>${s.delivery}</div>`:S}
6379
6379
  </div>
6380
- `,Eb=p`
6380
+ `,qb=p`
6381
6381
  <sonic-checkbox name="blacklistFlags" value="nsfw">nsfw</sonic-checkbox>
6382
6382
  <sonic-checkbox name="blacklistFlags" value="religious">religious</sonic-checkbox>
6383
6383
  <sonic-checkbox name="blacklistFlags" value="political">political</sonic-checkbox>
@@ -6390,7 +6390,7 @@ export class DocsUser extends LitElement {
6390
6390
  formDataProvider=${Ba.path}
6391
6391
  class="mb-3 grid grid-cols-2 gap-x-6 gap-y-2 lg:grid-cols-3"
6392
6392
  >
6393
- ${Eb}
6393
+ ${qb}
6394
6394
  </div>
6395
6395
  <sonic-queue
6396
6396
  lazyload
@@ -6406,7 +6406,7 @@ export class DocsUser extends LitElement {
6406
6406
  `}};Yi.styles=[q];Yi=Pe([k("docs-joke-blacklist-demo")],Yi);let Qi=class extends D{constructor(){super(...arguments),this.items=Xn}render(){return p`
6407
6407
  <p class="my-4 block text-xl font-bold">Remove following jokes :</p>
6408
6408
  <div
6409
- formDataProvider=${nf.path}
6409
+ formDataProvider=${uf.path}
6410
6410
  class="mb-3 grid grid-cols-2 gap-x-6 gap-y-2 lg:grid-cols-3"
6411
6411
  >
6412
6412
  <sonic-radio name="blacklistFlags" value="nsfw">nsfw</sonic-radio>
@@ -6467,7 +6467,7 @@ export class DocsUser extends LitElement {
6467
6467
  .items=${this.items}
6468
6468
  debug
6469
6469
  ></sonic-queue>
6470
- `}};Zi.styles=[q];Zi=Pe([k("docs-joke-blacklist-switch-demo")],Zi);var Lb=Object.getOwnPropertyDescriptor,bc=(s,e,o,r)=>{for(var t=r>1?void 0:r?Lb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Tb=({first_name:s,last_name:e,email:o,avatar:r})=>p`<div class="flex items-center gap-3 rounded-md p-2 hover:bg-neutral-50">
6470
+ `}};Zi.styles=[q];Zi=Pe([k("docs-joke-blacklist-switch-demo")],Zi);var Rb=Object.getOwnPropertyDescriptor,wc=(s,e,o,r)=>{for(var t=r>1?void 0:r?Rb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Nb=({first_name:s,last_name:e,email:o,avatar:r})=>p`<div class="flex items-center gap-3 rounded-md p-2 hover:bg-neutral-50">
6471
6471
  <sonic-image
6472
6472
  src=${r}
6473
6473
  rounded="md"
@@ -6490,14 +6490,14 @@ export class DocsUser extends LitElement {
6490
6490
  .items=${this.items}
6491
6491
  debug
6492
6492
  ></sonic-queue>
6493
- `}};Qa=bc([k("docs-queue-geo-demo")],Qa);let Xi=class extends D{constructor(){super(...arguments),this.items=Tb,this.separator=()=>p`
6493
+ `}};Qa=wc([k("docs-queue-geo-demo")],Qa);let Xi=class extends D{constructor(){super(...arguments),this.items=Nb,this.separator=()=>p`
6494
6494
  <div class="my-1 border-t border-dashed border-neutral-200"></div>
6495
6495
  `,this.noItems=()=>p`
6496
6496
  <p class="p-4 text-center text-sm italic text-neutral-500">
6497
6497
  No users — try another search (e.g. <code>zzz</code>)
6498
6498
  </p>
6499
6499
  `}render(){return p`
6500
- <div formDataProvider=${oc.path} class="mb-3 max-w-md">
6500
+ <div formDataProvider=${nc.path} class="mb-3 max-w-md">
6501
6501
  <sonic-input
6502
6502
  name="q"
6503
6503
  type="search"
@@ -6525,7 +6525,7 @@ export class DocsUser extends LitElement {
6525
6525
  .noItems=${this.noItems}
6526
6526
  debug
6527
6527
  ></sonic-queue>
6528
- `}};Xi.styles=[q];Xi=bc([k("docs-queue-users-demo")],Xi);var Ob=Object.defineProperty,Ib=Object.getOwnPropertyDescriptor,Xr=(s,e,o,r)=>{for(var t=r>1?void 0:r?Ib(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Ob(e,o,t),t};const yc=s=>s===!0||s==="true"||s===1||s==="1";let dr=class extends D{constructor(){super(...arguments),this.togglePlan=""}render(){const s=yc(this.togglePlan);return p`
6528
+ `}};Xi.styles=[q];Xi=wc([k("docs-queue-users-demo")],Xi);var Mb=Object.defineProperty,jb=Object.getOwnPropertyDescriptor,Xr=(s,e,o,r)=>{for(var t=r>1?void 0:r?jb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Mb(e,o,t),t};const xc=s=>s===!0||s==="true"||s===1||s==="1";let dr=class extends D{constructor(){super(...arguments),this.togglePlan=""}render(){const s=xc(this.togglePlan);return p`
6529
6529
  <div formDataProvider=${Vn.path}>
6530
6530
  <sonic-checkbox
6531
6531
  label="Show evacuation plan"
@@ -6542,7 +6542,7 @@ export class DocsUser extends LitElement {
6542
6542
  ></sonic-image>
6543
6543
  </sonic-if>
6544
6544
  </div>
6545
- `}};dr.styles=[q];Xr([Qe(Vn.togglePlan),$()],dr.prototype,"togglePlan",2);dr=Xr([k("docs-toggle-if-demo")],dr);let ur=class extends D{constructor(){super(...arguments),this.toggleLoader=""}render(){const s=yc(this.toggleLoader);return p`
6545
+ `}};dr.styles=[q];Xr([Ze(Vn.togglePlan),$()],dr.prototype,"togglePlan",2);dr=Xr([k("docs-toggle-if-demo")],dr);let ur=class extends D{constructor(){super(...arguments),this.toggleLoader=""}render(){const s=xc(this.toggleLoader);return p`
6546
6546
  <div formDataProvider=${Wn.path}>
6547
6547
  <sonic-checkbox
6548
6548
  label="Show fixed loader"
@@ -6554,7 +6554,7 @@ export class DocsUser extends LitElement {
6554
6554
  <sonic-loader></sonic-loader>
6555
6555
  </sonic-if>
6556
6556
  </div>
6557
- `}};ur.styles=[q];Xr([Qe(Wn.toggleLoader),$()],ur.prototype,"toggleLoader",2);ur=Xr([k("docs-toggle-loader-demo")],ur);var qb=Object.getOwnPropertyDescriptor,ei=(s,e,o,r)=>{for(var t=r>1?void 0:r?qb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Rb=[{id:"1"},{id:"2"},{id:"3"},{id:"4"},{id:"5"},{id:"6"},{id:"7"},{id:"8"},{id:"9"}],Nb=[{id:"1",default:"The first template with no data-value is used"},{id:"2",default:"The second template with no data-value is used"},{id:"3",default:"Back to the first template with no data-value"},{id:"4",tpl:"custom-tpl-danger"},{id:"5",tpl:"custom-tpl-info"},{id:"6",tpl:"custom-tpl-success"},{id:"7",tpl:"Non-valid tpl name, Back to the first template with no data-value"}],Mb={"custom-tpl-danger":s=>p`
6557
+ `}};ur.styles=[q];Xr([Ze(Wn.toggleLoader),$()],ur.prototype,"toggleLoader",2);ur=Xr([k("docs-toggle-loader-demo")],ur);var Ub=Object.getOwnPropertyDescriptor,ei=(s,e,o,r)=>{for(var t=r>1?void 0:r?Ub(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};const Bb=[{id:"1"},{id:"2"},{id:"3"},{id:"4"},{id:"5"},{id:"6"},{id:"7"},{id:"8"},{id:"9"}],zb=[{id:"1",default:"The first template with no data-value is used"},{id:"2",default:"The second template with no data-value is used"},{id:"3",default:"Back to the first template with no data-value"},{id:"4",tpl:"custom-tpl-danger"},{id:"5",tpl:"custom-tpl-info"},{id:"6",tpl:"custom-tpl-success"},{id:"7",tpl:"Non-valid tpl name, Back to the first template with no data-value"}],Kb={"custom-tpl-danger":s=>p`
6558
6558
  <div class="rounded border border-danger p-2 text-danger">
6559
6559
  ${s.id} :
6560
6560
  data-value : <b>custom-tpl-danger</b>
@@ -6579,7 +6579,7 @@ export class DocsUser extends LitElement {
6579
6579
  <sonic-list
6580
6580
  dataProvider="listTemplateExample"
6581
6581
  class="grid grid-cols-3 gap-4"
6582
- .props=${Rb}
6582
+ .props=${Bb}
6583
6583
  .items=${this.items}
6584
6584
  debug
6585
6585
  ></sonic-list>
@@ -6588,8 +6588,8 @@ export class DocsUser extends LitElement {
6588
6588
  templateKey="tpl"
6589
6589
  class="grid gap-3"
6590
6590
  dataProvider="TemplateKeyExample"
6591
- .props=${Nb}
6592
- .items=${o=>{const r=o.tpl,t=r?Mb[r]:void 0;return t?(s=-1,t(o)):(s++,s%2===0?p`<div class="rounded border p-2 text-neutral-900">
6591
+ .props=${zb}
6592
+ .items=${o=>{const r=o.tpl,t=r?Kb[r]:void 0;return t?(s=-1,t(o)):(s++,s%2===0?p`<div class="rounded border p-2 text-neutral-900">
6593
6593
  ${o.id} :
6594
6594
  <b>First</b> template with no <b>data-value</b> attribute
6595
6595
  </div>`:p`<div class="rounded border p-2 text-neutral-400">
@@ -6637,7 +6637,7 @@ export class DocsUser extends LitElement {
6637
6637
  extractValues
6638
6638
  .items=${this.items}
6639
6639
  ></sonic-list>
6640
- `}};sn.styles=[q];sn=ei([k("docs-list-extract-values-demo")],sn);var jb=Object.defineProperty,Ub=Object.getOwnPropertyDescriptor,ti=(s,e,o,r)=>{for(var t=r>1?void 0:r?Ub(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&jb(e,o,t),t};const Et=(s,e)=>p`
6640
+ `}};sn.styles=[q];sn=ei([k("docs-list-extract-values-demo")],sn);var Hb=Object.defineProperty,Vb=Object.getOwnPropertyDescriptor,ti=(s,e,o,r)=>{for(var t=r>1?void 0:r?Vb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Hb(e,o,t),t};const Et=(s,e)=>p`
6641
6641
  <div
6642
6642
  class="my-4 rounded border border-neutral-200 p-6 text-center text-2xl text-neutral-700"
6643
6643
  >
@@ -6649,7 +6649,7 @@ export class DocsUser extends LitElement {
6649
6649
  variant=${o??"default"}
6650
6650
  autoActive="strict"
6651
6651
  href=${r}
6652
- @click=${t=>{t.preventDefault(),wf(e,Ha)}}
6652
+ @click=${t=>{t.preventDefault(),Cf(e,Ha)}}
6653
6653
  >${s}</sonic-button
6654
6654
  >`}let pr=class extends D{constructor(){super(...arguments),this.routes={"#home":()=>Et("Home"),"#about":()=>Et("About"),"#work":()=>Et("Work"),"#contact":()=>Et("Contact"),fallback:()=>Et("404","No route matched — `routes.fallback` is rendered.")}}render(){return p`
6655
6655
  <div class="mb-4 flex flex-wrap gap-2">
@@ -6672,7 +6672,7 @@ export class DocsUser extends LitElement {
6672
6672
  ${Qt("#products/42/widget","products/42/widget")}
6673
6673
  </div>
6674
6674
  <sonic-router .routes=${this.routes}></sonic-router>
6675
- `}};hr.styles=[q];ti([$()],hr.prototype,"routes",2);hr=ti([k("docs-router-params-demo")],hr);var Bb=Object.defineProperty,zb=Object.getOwnPropertyDescriptor,Re=(s,e,o,r)=>{for(var t=r>1?void 0:r?zb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Bb(e,o,t),t};const fo=new Ye("api/register"),Kb=new Ye("api/register/nested"),Hb=new Ye("api/register/echo"),Xa=new Ye("api/users");function vc(s){if(!s)return S;const e=s.messages?.map(o=>o.content).filter(Boolean).join(" — ");return p`
6675
+ `}};hr.styles=[q];ti([$()],hr.prototype,"routes",2);hr=ti([k("docs-router-params-demo")],hr);var Wb=Object.defineProperty,Gb=Object.getOwnPropertyDescriptor,Re=(s,e,o,r)=>{for(var t=r>1?void 0:r?Gb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Wb(e,o,t),t};const fo=new Qe("api/register"),Jb=new Qe("api/register/nested"),Yb=new Qe("api/register/echo"),Xa=new Qe("api/users");function _c(s){if(!s)return S;const e=s.messages?.map(o=>o.content).filter(Boolean).join(" — ");return p`
6676
6676
  ${s.id!=null?p`<div>Id : <span class="font-mono">${s.id}</span></div>`:S}
6677
6677
  ${s.email?p`<div>Email : <span class="font-mono">${s.email}</span></div>`:S}
6678
6678
  ${s.token?p`<div>Token : <span class="font-mono break-all">${s.token}</span></div>`:S}
@@ -6692,13 +6692,13 @@ export class DocsUser extends LitElement {
6692
6692
  </p>
6693
6693
  `:p`
6694
6694
  <sonic-divider align="left" class="mt-6">Result</sonic-divider>
6695
- <div class="mt-2 space-y-1 text-sm">${vc(s)}</div>
6695
+ <div class="mt-2 space-y-1 text-sm">${_c(s)}</div>
6696
6696
  `}render(){return p`
6697
6697
  <sonic-scope
6698
6698
  serviceURL=${Dt}
6699
6699
  dataProvider=${fo.path}
6700
- formDataProvider=${Kl.path}
6701
- submitResultDataProvider=${Hl.path}
6700
+ formDataProvider=${Wl.path}
6701
+ submitResultDataProvider=${Gl.path}
6702
6702
  class="max-w-lg block"
6703
6703
  >
6704
6704
  <sonic-submit onEnterKey>
@@ -6722,7 +6722,7 @@ export class DocsUser extends LitElement {
6722
6722
  </sonic-submit>
6723
6723
  </sonic-scope>
6724
6724
  ${this.resultBlock()}
6725
- `}};mr.styles=[q];Re([Qe(Hl),$()],mr.prototype,"result",2);mr=Re([k("docs-submit-demo")],mr);let on=class extends D{render(){return p`
6725
+ `}};mr.styles=[q];Re([Ze(Gl),$()],mr.prototype,"result",2);mr=Re([k("docs-submit-demo")],mr);let on=class extends D{render(){return p`
6726
6726
  <sonic-scope
6727
6727
  serviceURL=${Dt}
6728
6728
  dataProvider=${fo.path}
@@ -6755,9 +6755,9 @@ export class DocsUser extends LitElement {
6755
6755
  `}};on.styles=[q];on=Re([k("docs-submit-clear-demo")],on);let gr=class extends D{constructor(){super(...arguments),this.result=null}render(){const s=this.result;return p`
6756
6756
  <sonic-scope
6757
6757
  serviceURL=${Dt}
6758
- dataProvider=${Kb.path}
6759
- formDataProvider=${Vl.path}
6760
- submitResultDataProvider=${Wl.path}
6758
+ dataProvider=${Jb.path}
6759
+ formDataProvider=${Jl.path}
6760
+ submitResultDataProvider=${Yl.path}
6761
6761
  class="max-w-lg block"
6762
6762
  >
6763
6763
  <sonic-submit onClick submit-result-key="data">
@@ -6782,12 +6782,12 @@ export class DocsUser extends LitElement {
6782
6782
  <div class="mt-2 text-sm">
6783
6783
  ${s?.id!=null?p`<div>id from <code>data</code> : ${s.id}</div>`:p`<p class="text-neutral-500">Submit to extract <code>data.id</code> / <code>data.token</code>.</p>`}
6784
6784
  </div>
6785
- `}};gr.styles=[q];Re([Qe(Wl),$()],gr.prototype,"result",2);gr=Re([k("docs-submit-result-key-demo")],gr);let fr=class extends D{constructor(){super(...arguments),this.result=null}render(){return p`
6785
+ `}};gr.styles=[q];Re([Ze(Yl),$()],gr.prototype,"result",2);gr=Re([k("docs-submit-result-key-demo")],gr);let fr=class extends D{constructor(){super(...arguments),this.result=null}render(){return p`
6786
6786
  <sonic-scope
6787
6787
  serviceURL=${Dt}
6788
6788
  dataProvider=${fo.path}
6789
- formDataProvider=${Gl.path}
6790
- submitResultDataProvider=${Jl.path}
6789
+ formDataProvider=${Ql.path}
6790
+ submitResultDataProvider=${Zl.path}
6791
6791
  class="max-w-lg block"
6792
6792
  >
6793
6793
  <sonic-submit onClick sendAsFormData>
@@ -6811,12 +6811,12 @@ export class DocsUser extends LitElement {
6811
6811
  <div class="mt-3 text-sm">
6812
6812
  ${this.result?.token?p`Token received: <span class="font-mono">${this.result.token}</span>`:p`<p class="text-neutral-500">Mock accepts JSON and multipart for <code>/api/register</code>.</p>`}
6813
6813
  </div>
6814
- `}};fr.styles=[q];Re([Qe(Jl),$()],fr.prototype,"result",2);fr=Re([k("docs-submit-formdata-demo")],fr);let br=class extends D{constructor(){super(...arguments),this.result=null}render(){return p`
6814
+ `}};fr.styles=[q];Re([Ze(Zl),$()],fr.prototype,"result",2);fr=Re([k("docs-submit-formdata-demo")],fr);let br=class extends D{constructor(){super(...arguments),this.result=null}render(){return p`
6815
6815
  <sonic-scope
6816
6816
  serviceURL=${Dt}
6817
- dataProvider=${Hb.path}
6818
- formDataProvider=${Yl.path}
6819
- submitResultDataProvider=${Ql.path}
6817
+ dataProvider=${Yb.path}
6818
+ formDataProvider=${Xl.path}
6819
+ submitResultDataProvider=${ec.path}
6820
6820
  class="max-w-lg block"
6821
6821
  >
6822
6822
  <sonic-submit onClick method="get">
@@ -6827,15 +6827,15 @@ export class DocsUser extends LitElement {
6827
6827
  <sonic-button type="neutral" class="w-full">GET with query string</sonic-button>
6828
6828
  </sonic-submit>
6829
6829
  </sonic-scope>
6830
- <div class="mt-3 space-y-1 text-sm">${vc(this.result)}</div>
6831
- `}};br.styles=[q];Re([Qe(Ql),$()],br.prototype,"result",2);br=Re([k("docs-submit-get-demo")],br);let rn=class extends D{constructor(){super(...arguments),this.formAction=`${Kt}/api/register`}render(){return p`
6830
+ <div class="mt-3 space-y-1 text-sm">${_c(this.result)}</div>
6831
+ `}};br.styles=[q];Re([Ze(ec),$()],br.prototype,"result",2);br=Re([k("docs-submit-get-demo")],br);let rn=class extends D{constructor(){super(...arguments),this.formAction=`${Kt}/api/register`}render(){return p`
6832
6832
  <form
6833
6833
  action=${this.formAction}
6834
6834
  method="post"
6835
6835
  target="docs-submit-native-frame"
6836
6836
  class="max-w-lg"
6837
6837
  >
6838
- <sonic-scope formDataProvider=${Zl.path}>
6838
+ <sonic-scope formDataProvider=${tc.path}>
6839
6839
  <sonic-submit native onClick>
6840
6840
  <div class="mb-4 grid grid-cols-2 gap-4">
6841
6841
  <sonic-input
@@ -6898,8 +6898,8 @@ export class DocsUser extends LitElement {
6898
6898
  <sonic-scope
6899
6899
  serviceURL=${Dt}
6900
6900
  dataProvider=${Xa.path}
6901
- formDataProvider=${Xl.path}
6902
- submitResultDataProvider=${ec.path}
6901
+ formDataProvider=${sc.path}
6902
+ submitResultDataProvider=${oc.path}
6903
6903
  class="max-w-lg block"
6904
6904
  >
6905
6905
  <sonic-submit onClick endPoint=${fo.path}>
@@ -6929,7 +6929,7 @@ export class DocsUser extends LitElement {
6929
6929
  <code>sonic-submit</code>.
6930
6930
  </p>`}
6931
6931
  </div>
6932
- `}};vr.styles=[q];Re([Qe(ec),$()],vr.prototype,"result",2);vr=Re([k("docs-submit-endpoint-demo")],vr);var Vb=Object.defineProperty,Wb=Object.getOwnPropertyDescriptor,et=(s,e,o,r)=>{for(var t=r>1?void 0:r?Wb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Vb(e,o,t),t};const bo=new Ye("api/config/protected");function ea(s){const e=s?.response?.status,o=s?.result;return s===null?p`<p class="text-sm text-neutral-500">Loading…</p>`:s?.response?p`
6932
+ `}};vr.styles=[q];Re([Ze(oc),$()],vr.prototype,"result",2);vr=Re([k("docs-submit-endpoint-demo")],vr);var Qb=Object.defineProperty,Zb=Object.getOwnPropertyDescriptor,tt=(s,e,o,r)=>{for(var t=r>1?void 0:r?Zb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Qb(e,o,t),t};const bo=new Qe("api/config/protected");function ea(s){const e=s?.response?.status,o=s?.result;return s===null?p`<p class="text-sm text-neutral-500">Loading…</p>`:s?.response?p`
6933
6933
  <p class="text-sm">
6934
6934
  HTTP <span class="font-mono">${e}</span>
6935
6935
  ${o?.message?p` — <span class="font-medium">${o.message}</span>`:o?.error?p` — <span class="text-red-600">${o.error}</span>`:S}
@@ -6943,16 +6943,16 @@ export class DocsUser extends LitElement {
6943
6943
  <code>token="${Kn}"</code>
6944
6944
  </p>
6945
6945
  ${ea(this.payload)}
6946
- `}};wr.styles=[q];et([Fo(bo,Hn),$()],wr.prototype,"payload",2);wr=et([k("docs-api-config-bearer-demo")],wr);let xr=class extends D{constructor(){super(...arguments),this.payload=null}render(){return p`
6946
+ `}};wr.styles=[q];tt([Fo(bo,Hn),$()],wr.prototype,"payload",2);wr=tt([k("docs-api-config-bearer-demo")],wr);let xr=class extends D{constructor(){super(...arguments),this.payload=null}render(){return p`
6947
6947
  <p class="mb-2 text-sm text-neutral-600">
6948
6948
  <code>userName</code> / <code>password</code> +
6949
6949
  <code>tokenProvider="auth/token"</code> (no static
6950
6950
  <code>token</code>)
6951
6951
  </p>
6952
6952
  ${ea(this.payload)}
6953
- `}};xr.styles=[q];et([Fo(bo,tc),$()],xr.prototype,"payload",2);xr=et([k("docs-api-config-token-provider-demo")],xr);let _r=class extends D{constructor(){super(...arguments),this.payload=null}render(){const s=this.payload?.result?.tokenUsed===Ua;return p`
6953
+ `}};xr.styles=[q];tt([Fo(bo,rc),$()],xr.prototype,"payload",2);xr=tt([k("docs-api-config-token-provider-demo")],xr);let _r=class extends D{constructor(){super(...arguments),this.payload=null}render(){const s=this.payload?.result?.tokenUsed===Ua;return p`
6954
6954
  <p class="mb-2 text-sm text-neutral-600">
6955
- Starts with <code>token="${zl}"</code> (mock returns
6955
+ Starts with <code>token="${Vl}"</code> (mock returns
6956
6956
  498), then <code>auth()</code> fetches
6957
6957
  <code>${Ua}</code>.
6958
6958
  </p>
@@ -6960,7 +6960,7 @@ export class DocsUser extends LitElement {
6960
6960
  ${s?p`<p class="mt-1 text-xs text-green-700">
6961
6961
  Retry succeeded with refreshed token.
6962
6962
  </p>`:S}
6963
- `}};_r.styles=[q];et([Fo(bo,sc),$()],_r.prototype,"payload",2);_r=et([k("docs-api-config-stale-token-demo")],_r);let nn=class extends D{render(){return p`
6963
+ `}};_r.styles=[q];tt([Fo(bo,ic),$()],_r.prototype,"payload",2);_r=tt([k("docs-api-config-stale-token-demo")],_r);let nn=class extends D{render(){return p`
6964
6964
  <div
6965
6965
  serviceURL=${Kt}
6966
6966
  wordingProvider="wording/labels?lang=fr"
@@ -6980,7 +6980,7 @@ export class DocsUser extends LitElement {
6980
6980
  >Bump wording version (reload)</sonic-button
6981
6981
  >
6982
6982
  </div>
6983
- `}};nn.styles=[q];nn=et([k("docs-api-config-wording-demo")],nn);let an=class extends D{render(){return p`
6983
+ `}};nn.styles=[q];nn=tt([k("docs-api-config-wording-demo")],nn);let an=class extends D{render(){return p`
6984
6984
  <sonic-scope
6985
6985
  serviceURL=${Kt}
6986
6986
  token=${Kn}
@@ -6999,14 +6999,14 @@ export class DocsUser extends LitElement {
6999
6999
  >Hover — protected fetch payload</sonic-button
7000
7000
  >
7001
7001
  </sonic-scope>
7002
- `}};an.styles=[q];an=et([k("docs-api-config-scoped-attrs-demo")],an);let yo=class extends D{constructor(){super(...arguments),this.token=null,this.error=null}async connectedCallback(){super.connectedCallback();try{const s=await fetch(`${Kt}/auth/token?serviceHost=${encodeURIComponent(window.location.origin)}`,{headers:{Authorization:`Bearer ${of}`}}),e=await s.json();s.ok&&e.token?this.token=e.token:this.error=e.error??`HTTP ${s.status}`}catch(s){this.error=String(s)}}render(){return p`
7002
+ `}};an.styles=[q];an=tt([k("docs-api-config-scoped-attrs-demo")],an);let yo=class extends D{constructor(){super(...arguments),this.token=null,this.error=null}async connectedCallback(){super.connectedCallback();try{const s=await fetch(`${Kt}/auth/token?serviceHost=${encodeURIComponent(window.location.origin)}`,{headers:{Authorization:`Bearer ${cf}`}}),e=await s.json();s.ok&&e.token?this.token=e.token:this.error=e.error??`HTTP ${s.status}`}catch(s){this.error=String(s)}}render(){return p`
7003
7003
  <p class="text-sm text-neutral-600 mb-2">
7004
7004
  Ancêtre <code>eventsApiToken</code> (mapped to
7005
7005
  <code>authToken</code> in config) — utilisé par
7006
7006
  <code>API.auth()</code> pour appeler <code>tokenProvider</code>.
7007
7007
  </p>
7008
7008
  ${this.token?p`<p class="font-mono text-sm">token: ${this.token}</p>`:this.error?p`<p class="text-red-600 text-sm">${this.error}</p>`:p`<p class="text-sm text-neutral-500">Loading…</p>`}
7009
- `}};yo.styles=[q];et([$()],yo.prototype,"token",2);et([$()],yo.prototype,"error",2);yo=et([k("docs-api-config-events-token-demo")],yo);var Gb=Object.defineProperty,Jb=Object.getOwnPropertyDescriptor,Ue=(s,e,o,r)=>{for(var t=r>1?void 0:r?Jb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Gb(e,o,t),t};let Fs=class extends D{constructor(){super(...arguments),this.firstName="",this.lastName="",this.count=0}render(){return p`
7009
+ `}};yo.styles=[q];tt([$()],yo.prototype,"token",2);tt([$()],yo.prototype,"error",2);yo=tt([k("docs-api-config-events-token-demo")],yo);var Xb=Object.defineProperty,ey=Object.getOwnPropertyDescriptor,Ue=(s,e,o,r)=>{for(var t=r>1?void 0:r?ey(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Xb(e,o,t),t};let Fs=class extends D{constructor(){super(...arguments),this.firstName="",this.lastName="",this.count=0}render(){return p`
7010
7010
  <div>
7011
7011
  <sonic-button @click=${this.updateData}>Update Data</sonic-button>
7012
7012
  </div>
@@ -7069,7 +7069,7 @@ export class DocsUser extends LitElement {
7069
7069
  </div>
7070
7070
  </div>
7071
7071
  </div>
7072
- `}};Es.styles=[q];Ue([l({type:String})],Es.prototype,"dataProvider",2);Ue([l({type:Number})],Es.prototype,"userIndex",2);Ue([ps("${dataProvider}.${userIndex}"),$()],Es.prototype,"user",2);Es=Ue([k("demo-bind-dynamic")],Es);const ta={serviceURL:zn,token:null,userName:null,password:null,authToken:null,tokenProvider:null},wc=new I("docsDemoGeoApiConfiguration");N(wc,ta);const sa=new Ye("communes?limit=5&fields=nom,code"),Yb=new I("docsDemoDynApiConf${configSlot}"),xc=new I("docsDemoDynApiConfA"),_c=new I("docsDemoDynApiConfB");N(xc,ta);N(_c,{...ta,serviceURL:zn});const Qb=new Ye("communes?limit=${communeLimit}&fields=nom,code"),Dc=new I(sa.path);var Zb=Object.defineProperty,Xb=Object.getOwnPropertyDescriptor,te=(s,e,o,r)=>{for(var t=r>1?void 0:r?Xb(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&Zb(e,o,t),t};let wo=class extends D{constructor(){super(...arguments),this.email="",this.message=""}connectedCallback(){super.connectedCallback(),N(xs,{email:"",message:""})}render(){return p`
7072
+ `}};Es.styles=[q];Ue([l({type:String})],Es.prototype,"dataProvider",2);Ue([l({type:Number})],Es.prototype,"userIndex",2);Ue([ps("${dataProvider}.${userIndex}"),$()],Es.prototype,"user",2);Es=Ue([k("demo-bind-dynamic")],Es);const ta={serviceURL:zn,token:null,userName:null,password:null,authToken:null,tokenProvider:null},Dc=new I("docsDemoGeoApiConfiguration");N(Dc,ta);const sa=new Qe("communes?limit=5&fields=nom,code"),ty=new I("docsDemoDynApiConf${configSlot}"),kc=new I("docsDemoDynApiConfA"),Cc=new I("docsDemoDynApiConfB");N(kc,ta);N(Cc,{...ta,serviceURL:zn});const sy=new Qe("communes?limit=${communeLimit}&fields=nom,code"),Ac=new I(sa.path);var oy=Object.defineProperty,ry=Object.getOwnPropertyDescriptor,te=(s,e,o,r)=>{for(var t=r>1?void 0:r?ry(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&oy(e,o,t),t};let wo=class extends D{constructor(){super(...arguments),this.email="",this.message=""}connectedCallback(){super.connectedCallback(),N(xs,{email:"",message:""})}render(){return p`
7073
7073
  <div class="space-y-4">
7074
7074
  <p class="text-sm text-neutral-600 dark:text-neutral-400">
7075
7075
  Les champs publient vers le publisher ; les valeurs ci-dessous passent
@@ -7118,7 +7118,7 @@ export class DocsUser extends LitElement {
7118
7118
  </ul>
7119
7119
  `}
7120
7120
  </div>
7121
- `}};kr.styles=[q];te([zr(sa,wc),$()],kr.prototype,"geoApiPayload",2);kr=te([k("demo-api-get")],kr);let Ls=class extends D{constructor(){super(...arguments),this.configSlot="A",this.communeLimit=5}touchCurrentConfigPublisher(){const s=this.configSlot==="A"?xc:_c,e=it(s);N(s,{...e,blockUntilDone:!e.blockUntilDone})}render(){const s=this.geoApiPayloadDyn?.result,e=this.geoApiPayloadDyn?.response?.status;return p`
7121
+ `}};kr.styles=[q];te([zr(sa,Dc),$()],kr.prototype,"geoApiPayload",2);kr=te([k("demo-api-get")],kr);let Ls=class extends D{constructor(){super(...arguments),this.configSlot="A",this.communeLimit=5}touchCurrentConfigPublisher(){const s=this.configSlot==="A"?kc:Cc,e=it(s);N(s,{...e,blockUntilDone:!e.blockUntilDone})}render(){const s=this.geoApiPayloadDyn?.result,e=this.geoApiPayloadDyn?.response?.status;return p`
7122
7122
  <div class="space-y-3">
7123
7123
  <p class="text-sm text-neutral-600 dark:text-neutral-400">
7124
7124
  Config dynamique (<code>docsDemoDynApiConf\${configSlot}</code>) +
@@ -7171,7 +7171,7 @@ export class DocsUser extends LitElement {
7171
7171
  </ul>
7172
7172
  `}
7173
7173
  </div>
7174
- `}};Ls.styles=[q];te([l({type:String})],Ls.prototype,"configSlot",2);te([l({type:Number})],Ls.prototype,"communeLimit",2);te([zr(Qb,Yb),$()],Ls.prototype,"geoApiPayloadDyn",2);Ls=te([k("demo-api-get-configuration-key")],Ls);let xo=class extends D{constructor(){super(...arguments),this.geoApiPayloadPublished=null,this.geoCommunesFromSubscribe=null}render(){const s=this.geoCommunesFromSubscribe??this.geoApiPayloadPublished?.result,e=this.geoApiPayloadPublished?.response?.status;return p`
7174
+ `}};Ls.styles=[q];te([l({type:String})],Ls.prototype,"configSlot",2);te([l({type:Number})],Ls.prototype,"communeLimit",2);te([zr(sy,ty),$()],Ls.prototype,"geoApiPayloadDyn",2);Ls=te([k("demo-api-get-configuration-key")],Ls);let xo=class extends D{constructor(){super(...arguments),this.geoApiPayloadPublished=null,this.geoCommunesFromSubscribe=null}render(){const s=this.geoCommunesFromSubscribe??this.geoApiPayloadPublished?.result,e=this.geoApiPayloadPublished?.response?.status;return p`
7175
7175
  <div class="space-y-2">
7176
7176
  <p class="text-sm text-neutral-600 dark:text-neutral-400">
7177
7177
  <code>@get</code> (scoped) + <code>@publish</code> sur la clé du
@@ -7190,7 +7190,7 @@ export class DocsUser extends LitElement {
7190
7190
  </ul>
7191
7191
  `}
7192
7192
  </div>
7193
- `}};xo.styles=[q];te([zr(sa),Br(Dc),$()],xo.prototype,"geoApiPayloadPublished",2);te([$(),Tn(Dc.result)],xo.prototype,"geoCommunesFromSubscribe",2);xo=te([k("demo-api-get-publish-subscribe")],xo);const ey=new I("demoUsers.${userIndex}");let Cr=class extends D{constructor(){super(...arguments),this.userIndex=0}render(){return p`
7193
+ `}};xo.styles=[q];te([zr(sa),Br(Ac),$()],xo.prototype,"geoApiPayloadPublished",2);te([$(),Tn(Ac.result)],xo.prototype,"geoCommunesFromSubscribe",2);xo=te([k("demo-api-get-publish-subscribe")],xo);const iy=new I("demoUsers.${userIndex}");let Cr=class extends D{constructor(){super(...arguments),this.userIndex=0}render(){return p`
7194
7194
  <div class="space-y-4">
7195
7195
  <p class="text-sm text-neutral-600 dark:text-neutral-400">
7196
7196
  <code>sub(demoUsersSubKey.email)</code> — same dynamic path as
@@ -7205,7 +7205,7 @@ export class DocsUser extends LitElement {
7205
7205
  label="User index"
7206
7206
  ></sonic-input>
7207
7207
  <p class="rounded border border-neutral-200 dark:border-neutral-700 p-3">
7208
- Email: <strong>${ar(ey.email)||"—"}</strong>
7208
+ Email: <strong>${ar(iy.email)||"—"}</strong>
7209
7209
  </p>
7210
7210
  </div>
7211
7211
  `}};Cr.styles=[q];te([l({type:Number})],Cr.prototype,"userIndex",2);Cr=te([k("demo-sub-template")],Cr);let _o=class extends D{constructor(){super(...arguments),this.userIndex=0,this.user=null}render(){return p`
@@ -7245,7 +7245,7 @@ export class DocsUser extends LitElement {
7245
7245
  </p>
7246
7246
  <sonic-button @click=${this.incrementCount}>Increment count</sonic-button>
7247
7247
  </div>
7248
- `}};Ts.styles=[q];te([$()],Ts.prototype,"doubled",2);te([$()],Ts.prototype,"lastUpdate",2);te([$l(ln.count)],Ts.prototype,"onCountChange",1);Ts=te([k("demo-handle")],Ts);let cs=class extends D{constructor(){super(...arguments),this.userIndex=0,this.displayName="",this.lastUpdate=""}onUserAssigned(s){this.displayName=`${s.firstName} ${s.lastName}`,this.lastUpdate=new Date().toLocaleTimeString()}render(){return p`
7248
+ `}};Ts.styles=[q];te([$()],Ts.prototype,"doubled",2);te([$()],Ts.prototype,"lastUpdate",2);te([Ll(ln.count)],Ts.prototype,"onCountChange",1);Ts=te([k("demo-handle")],Ts);let cs=class extends D{constructor(){super(...arguments),this.userIndex=0,this.displayName="",this.lastUpdate=""}onUserAssigned(s){this.displayName=`${s.firstName} ${s.lastName}`,this.lastUpdate=new Date().toLocaleTimeString()}render(){return p`
7249
7249
  <div class="space-y-4">
7250
7250
  <p class="text-sm text-neutral-600 dark:text-neutral-400">
7251
7251
  <code>@handle</code> avec chemin dynamique
@@ -7272,7 +7272,7 @@ export class DocsUser extends LitElement {
7272
7272
  No user at index ${this.userIndex}
7273
7273
  </p>`}
7274
7274
  </div>
7275
- `}};cs.styles=[q];te([l({type:Number})],cs.prototype,"userIndex",2);te([$()],cs.prototype,"displayName",2);te([$()],cs.prototype,"lastUpdate",2);te([$l(new I("demoUsers.${userIndex}"))],cs.prototype,"onUserAssigned",1);cs=te([k("demo-handle-dynamic")],cs);var ty=Object.defineProperty,sy=Object.getOwnPropertyDescriptor,U=(s,e,o,r)=>{for(var t=r>1?void 0:r?sy(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&ty(e,o,t),t};let Ar=class extends D{constructor(){super(...arguments),this.dataProvider=null,this.testAttribute=null}render(){return p`
7275
+ `}};cs.styles=[q];te([l({type:Number})],cs.prototype,"userIndex",2);te([$()],cs.prototype,"displayName",2);te([$()],cs.prototype,"lastUpdate",2);te([Ll(new I("demoUsers.${userIndex}"))],cs.prototype,"onUserAssigned",1);cs=te([k("demo-handle-dynamic")],cs);var ny=Object.defineProperty,ay=Object.getOwnPropertyDescriptor,U=(s,e,o,r)=>{for(var t=r>1?void 0:r?ay(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&ny(e,o,t),t};let Ar=class extends D{constructor(){super(...arguments),this.dataProvider=null,this.testAttribute=null}render(){return p`
7276
7276
  <section>
7277
7277
  <p>
7278
7278
  DataProvider property initialized from ancestor:
@@ -7294,7 +7294,7 @@ export class DocsUser extends LitElement {
7294
7294
  <p>${r||"N/A"}</p>
7295
7295
  <p><small>Last updated: ${this.lastUpdate}</small></p> `}
7296
7296
  </div>
7297
- `}updateData(){const s=Math.floor(Math.random()*100);N(rc,{name:`User n°${s}`,email:`user-${s}@example.com`}),N(ic,{theme:["light","dark","auto"][Math.floor(Math.random()*3)],language:["en","fr","es"][Math.floor(Math.random()*3)]})}};ds.styles=[q];U([$()],ds.prototype,"userWithSettings",2);U([$()],ds.prototype,"isReady",2);U([$()],ds.prototype,"lastUpdate",2);U([Sl("demoUser","demoUserSettings")],ds.prototype,"handleDataReady",1);ds=U([k("demo-on-assign")],ds);let jt=class extends D{constructor(){super(...arguments),this.dataProvider=Tt.path,this.userIndex=0,this.user=null,this.userSettings=null}handleUserDataReady(s,e){this.user=s,this.userSettings=e}updateUserIndex(s){this.userIndex=parseInt(s.target.value)}updateDataProvider(s){this.dataProvider=s.target.value}updateCurrentUserData(){const s=this.dataProvider===Lt.path?Lt:Tt,e=this.dataProvider===Lt.path?ac:nc,o=[...it(s)],r=[...it(e)],t=this.userIndex;if(!o[t]||!r[t])return;const i=[{firstName:"Alice",lastName:"Wonder"},{firstName:"Bob",lastName:"Builder"},{firstName:"Charlie",lastName:"Chaplin"},{firstName:"Diana",lastName:"Prince"},{firstName:"Eve",lastName:"Adams"}],n=["light","dark","auto"],a=["en","fr","es","de","it"],c=i[Math.floor(Math.random()*i.length)],g=`${c.firstName.toLowerCase()}.${c.lastName.toLowerCase()}@example.com`;o[t]={...o[t],firstName:c.firstName,lastName:c.lastName,email:g},r[t]={theme:n[Math.floor(Math.random()*n.length)],language:a[Math.floor(Math.random()*a.length)]},N(s,o),N(e,r)}render(){return p`
7297
+ `}updateData(){const s=Math.floor(Math.random()*100);N(ac,{name:`User n°${s}`,email:`user-${s}@example.com`}),N(lc,{theme:["light","dark","auto"][Math.floor(Math.random()*3)],language:["en","fr","es"][Math.floor(Math.random()*3)]})}};ds.styles=[q];U([$()],ds.prototype,"userWithSettings",2);U([$()],ds.prototype,"isReady",2);U([$()],ds.prototype,"lastUpdate",2);U([El("demoUser","demoUserSettings")],ds.prototype,"handleDataReady",1);ds=U([k("demo-on-assign")],ds);let jt=class extends D{constructor(){super(...arguments),this.dataProvider=Tt.path,this.userIndex=0,this.user=null,this.userSettings=null}handleUserDataReady(s,e){this.user=s,this.userSettings=e}updateUserIndex(s){this.userIndex=parseInt(s.target.value)}updateDataProvider(s){this.dataProvider=s.target.value}updateCurrentUserData(){const s=this.dataProvider===Lt.path?Lt:Tt,e=this.dataProvider===Lt.path?dc:cc,o=[...it(s)],r=[...it(e)],t=this.userIndex;if(!o[t]||!r[t])return;const i=[{firstName:"Alice",lastName:"Wonder"},{firstName:"Bob",lastName:"Builder"},{firstName:"Charlie",lastName:"Chaplin"},{firstName:"Diana",lastName:"Prince"},{firstName:"Eve",lastName:"Adams"}],n=["light","dark","auto"],a=["en","fr","es","de","it"],c=i[Math.floor(Math.random()*i.length)],g=`${c.firstName.toLowerCase()}.${c.lastName.toLowerCase()}@example.com`;o[t]={...o[t],firstName:c.firstName,lastName:c.lastName,email:g},r[t]={theme:n[Math.floor(Math.random()*n.length)],language:a[Math.floor(Math.random()*a.length)]},N(s,o),N(e,r)}render(){return p`
7298
7298
  <div class="flex flex-col gap-2">
7299
7299
  <sonic-select label="Users set" @change=${this.updateDataProvider}>
7300
7300
  <option value=${Tt.path}>First set of users</option>
@@ -7328,7 +7328,7 @@ export class DocsUser extends LitElement {
7328
7328
  </div>
7329
7329
  </div>
7330
7330
  </div>
7331
- `}};jt.styles=[q];U([l({type:String})],jt.prototype,"dataProvider",2);U([l({type:Number})],jt.prototype,"userIndex",2);U([$()],jt.prototype,"user",2);U([$()],jt.prototype,"userSettings",2);U([Sl("${dataProvider}.${userIndex}","${dataProvider}Settings.${userIndex}")],jt.prototype,"handleUserDataReady",1);jt=U([k("demo-on-assign-dynamic")],jt);let Os=class extends D{constructor(){super(...arguments),this.displayText="",this.computedValue=0}updateDisplay(){const s=it(Ui)||0,e=it(Bi)||0;this.computedValue=s+e,this.displayText=`${s} + ${e} = ${this.computedValue}`}render(){return p`
7331
+ `}};jt.styles=[q];U([l({type:String})],jt.prototype,"dataProvider",2);U([l({type:Number})],jt.prototype,"userIndex",2);U([$()],jt.prototype,"user",2);U([$()],jt.prototype,"userSettings",2);U([El("${dataProvider}.${userIndex}","${dataProvider}Settings.${userIndex}")],jt.prototype,"handleUserDataReady",1);jt=U([k("demo-on-assign-dynamic")],jt);let Os=class extends D{constructor(){super(...arguments),this.displayText="",this.computedValue=0}updateDisplay(){const s=it(Ui)||0,e=it(Bi)||0;this.computedValue=s+e,this.displayText=`${s} + ${e} = ${this.computedValue}`}render(){return p`
7332
7332
  <p><strong>${this.displayText}</strong></p>
7333
7333
  <div>
7334
7334
  <sonic-button @click=${()=>this.randomizeValue("autoValue1")}
@@ -7338,7 +7338,7 @@ export class DocsUser extends LitElement {
7338
7338
  Randomize Value 2
7339
7339
  </sonic-button>
7340
7340
  </div>
7341
- `}randomizeValue(s){N(s==="autoValue1"?Ui:Bi,Math.floor(Math.random()*100))}};Os.styles=[q];U([$()],Os.prototype,"displayText",2);U([$()],Os.prototype,"computedValue",2);U([kp()],Os.prototype,"updateDisplay",1);Os=U([k("demo-auto-subscribe")],Os);let cn=class extends D{render(){return p`<slot></slot>`}};cn=U([Kr()],cn);let Pr=class extends D{constructor(){super(...arguments),this.dataProvider=null,this.initializedAt=""}connectedCallback(){super.connectedCallback(),this.initializedAt=new Date().toISOString()}render(){return p`
7341
+ `}randomizeValue(s){N(s==="autoValue1"?Ui:Bi,Math.floor(Math.random()*100))}};Os.styles=[q];U([$()],Os.prototype,"displayText",2);U([$()],Os.prototype,"computedValue",2);U([$p()],Os.prototype,"updateDisplay",1);Os=U([k("demo-auto-subscribe")],Os);let cn=class extends D{render(){return p`<slot></slot>`}};cn=U([Kr()],cn);let Pr=class extends D{constructor(){super(...arguments),this.dataProvider=null,this.initializedAt=""}connectedCallback(){super.connectedCallback(),this.initializedAt=new Date().toISOString()}render(){return p`
7342
7342
  <p>
7343
7343
  DataProvider from ancestor:
7344
7344
  <strong>${this.dataProvider||"—"}</strong>
@@ -7409,12 +7409,12 @@ export class DocsUser extends LitElement {
7409
7409
  <demo-wait-ancestor-ready dataProvider=${qo.path}>
7410
7410
  <demo-wait-ancestor-value-ready></demo-wait-ancestor-value-ready>
7411
7411
  </demo-wait-ancestor-ready>
7412
- `}};pn.styles=[q];pn=U([k("demo-wait-ancestors-static-section")],pn);const ys=class ys{static register(e,o="",r=""){const t={};Object.keys(e).forEach(i=>{const n=i;let a=e[n],c="";o&&(typeof o=="string"?c=o:(c=o.baseUrl||"",r=r||o.prefix||"")),c&&!a.includes(c)&&(a=c+"/"+a,a=a?.replace(/\/+/g,"/"),a=a?.replace(/\/#/g,"#")),t[r+n]=a}),ys.routes={...ys.routes,...t}}static get(e,o){let t=ys.routes[e]||"";o?.propertyMap&&(t=new yi(t).stringify(o.propertyMap));const i=new URL(t,t.startsWith("#")?window.location.href:window.location.origin);return o?.query&&Object.entries(o.query).forEach(([n,a])=>{i.searchParams.set(n,a)}),o?.hash&&(i.hash=o.hash),i.href.replace(window.location.origin,"")}static fillURLPattern(e,o){return new yi(e).stringify(o)}};ys.routes={};let hn=ys;var oy=Object.defineProperty,ry=Object.getOwnPropertyDescriptor,kc=(s,e,o,r)=>{for(var t=r>1?void 0:r?ry(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&oy(e,o,t),t};const Cc={user:"#user/:id/:slug"};hn.register(Cc);let Lr=class extends D{constructor(){super(...arguments),this.routes={"#home":()=>p`
7412
+ `}};pn.styles=[q];pn=U([k("demo-wait-ancestors-static-section")],pn);const ys=class ys{static register(e,o="",r=""){const t={};Object.keys(e).forEach(i=>{const n=i;let a=e[n],c="";o&&(typeof o=="string"?c=o:(c=o.baseUrl||"",r=r||o.prefix||"")),c&&!a.includes(c)&&(a=c+"/"+a,a=a?.replace(/\/+/g,"/"),a=a?.replace(/\/#/g,"#")),t[r+n]=a}),ys.routes={...ys.routes,...t}}static get(e,o){let t=ys.routes[e]||"";o?.propertyMap&&(t=new yi(t).stringify(o.propertyMap));const i=new URL(t,t.startsWith("#")?window.location.href:window.location.origin);return o?.query&&Object.entries(o.query).forEach(([n,a])=>{i.searchParams.set(n,a)}),o?.hash&&(i.hash=o.hash),i.href.replace(window.location.origin,"")}static fillURLPattern(e,o){return new yi(e).stringify(o)}};ys.routes={};let hn=ys;var ly=Object.defineProperty,cy=Object.getOwnPropertyDescriptor,Pc=(s,e,o,r)=>{for(var t=r>1?void 0:r?cy(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&ly(e,o,t),t};const Sc={user:"#user/:id/:slug"};hn.register(Sc);let Lr=class extends D{constructor(){super(...arguments),this.routes={"#home":()=>p`
7413
7413
  <div class="p-4 border border-gray-200 rounded-md">
7414
7414
  <h1 class="text-xl font-medium mb-2">Accueil</h1>
7415
7415
  <p class="text-gray-600">Bienvenue sur la démo du router</p>
7416
7416
  </div>
7417
- `,[Cc.user]:({slug:s,id:e})=>p`
7417
+ `,[Sc.user]:({slug:s,id:e})=>p`
7418
7418
  <div class="p-4 border border-gray-200 rounded-md">
7419
7419
  <h1 class="text-xl font-medium mb-2">Profil Utilisateur ${e}</h1>
7420
7420
  <p class="text-gray-600">Slug: ${s}</p>
@@ -7442,7 +7442,7 @@ export class DocsUser extends LitElement {
7442
7442
 
7443
7443
  <sonic-router .routes=${this.routes}></sonic-router>
7444
7444
  </div>
7445
- `}};Lr.styles=[q];kc([$()],Lr.prototype,"routes",2);Lr=kc([k("sonic-router-demo")],Lr);var iy=Object.defineProperty,ny=Object.getOwnPropertyDescriptor,Ac=(s,e,o,r)=>{for(var t=r>1?void 0:r?ny(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&iy(e,o,t),t};let Tr=class extends D{constructor(){super(),this.states={pending:()=>p`
7445
+ `}};Lr.styles=[q];Pc([$()],Lr.prototype,"routes",2);Lr=Pc([k("sonic-router-demo")],Lr);var dy=Object.defineProperty,uy=Object.getOwnPropertyDescriptor,$c=(s,e,o,r)=>{for(var t=r>1?void 0:r?uy(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=(r?n(e,o,t):n(t))||t);return r&&t&&dy(e,o,t),t};let Tr=class extends D{constructor(){super(),this.states={pending:()=>p`
7446
7446
  <div class="p-4 border border-gray-200 rounded-md">
7447
7447
  <h1 class="text-xl font-medium mb-2">En attente</h1>
7448
7448
  <p class="text-gray-600">Veuillez patienter...</p>
@@ -7487,7 +7487,7 @@ export class DocsUser extends LitElement {
7487
7487
  .states=${this.states}
7488
7488
  ></sonic-states>
7489
7489
  </div>
7490
- `}};Tr.styles=[q];Ac([$()],Tr.prototype,"states",2);Tr=Ac([k("sonic-states-demo")],Tr);var ay=Object.getOwnPropertyDescriptor,ly=(s,e,o,r)=>{for(var t=r>1?void 0:r?ay(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};let mn=class extends D{constructor(){super(...arguments),this.items=s=>p`
7490
+ `}};Tr.styles=[q];$c([$()],Tr.prototype,"states",2);Tr=$c([k("sonic-states-demo")],Tr);var py=Object.getOwnPropertyDescriptor,hy=(s,e,o,r)=>{for(var t=r>1?void 0:r?py(e,o):e,i=s.length-1,n;i>=0;i--)(n=s[i])&&(t=n(t)||t);return t};let mn=class extends D{constructor(){super(...arguments),this.items=s=>p`
7491
7491
  <div class="bg-neutral-100 p-2 rounded-md">
7492
7492
  <div class="font-medium">${s.nom}</div>
7493
7493
  <div class="text-sm text-gray-600">Code: ${s.code}</div>
@@ -7505,4 +7505,4 @@ export class DocsUser extends LitElement {
7505
7505
  .items=${this.items}
7506
7506
  .noItems=${this.noItems}
7507
7507
  ></sonic-queue>
7508
- `}};mn.styles=[q];mn=ly([k("sonic-queue-demo")],mn);sf()});export default cy();
7508
+ `}};mn.styles=[q];mn=hy([k("sonic-queue-demo")],mn);lf()});export default my();