purity-world 1.0.0
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.
- package/LICENSE +21 -0
- package/README.md +89 -0
- package/cursors/alias.svg +17 -0
- package/cursors/all-scroll.svg +12 -0
- package/cursors/bottom_left_corner.svg +16 -0
- package/cursors/bottom_right_corner.svg +16 -0
- package/cursors/bottom_side.svg +18 -0
- package/cursors/cell.svg +9 -0
- package/cursors/center_ptr.svg +9 -0
- package/cursors/col-resize.svg +9 -0
- package/cursors/color-picker.svg +10 -0
- package/cursors/context-menu.svg +10 -0
- package/cursors/copy.svg +17 -0
- package/cursors/crosshair.svg +20 -0
- package/cursors/default.svg +9 -0
- package/cursors/dnd-move.svg +9 -0
- package/cursors/dnd-no-drop.svg +16 -0
- package/cursors/down-arrow.svg +9 -0
- package/cursors/draft.svg +9 -0
- package/cursors/fleur.svg +10 -0
- package/cursors/help.svg +20 -0
- package/cursors/left-arrow.svg +9 -0
- package/cursors/left_side.svg +18 -0
- package/cursors/no-drop.svg +16 -0
- package/cursors/not-allowed.svg +9 -0
- package/cursors/openhand.svg +9 -0
- package/cursors/pencil.svg +9 -0
- package/cursors/pirate.svg +9 -0
- package/cursors/pointer.svg +9 -0
- package/cursors/progress-01.svg +15 -0
- package/cursors/progress-02.svg +15 -0
- package/cursors/progress-03.svg +15 -0
- package/cursors/progress-04.svg +15 -0
- package/cursors/progress-05.svg +15 -0
- package/cursors/progress-06.svg +15 -0
- package/cursors/progress-07.svg +15 -0
- package/cursors/progress-08.svg +15 -0
- package/cursors/progress-09.svg +15 -0
- package/cursors/progress-10.svg +15 -0
- package/cursors/progress-11.svg +15 -0
- package/cursors/progress-12.svg +15 -0
- package/cursors/progress-13.svg +15 -0
- package/cursors/progress-14.svg +15 -0
- package/cursors/progress-15.svg +15 -0
- package/cursors/progress-16.svg +15 -0
- package/cursors/progress-17.svg +15 -0
- package/cursors/progress-18.svg +15 -0
- package/cursors/progress-19.svg +15 -0
- package/cursors/progress-20.svg +15 -0
- package/cursors/progress-21.svg +15 -0
- package/cursors/progress-22.svg +15 -0
- package/cursors/progress-23.svg +15 -0
- package/cursors/right-arrow.svg +9 -0
- package/cursors/right_ptr.svg +9 -0
- package/cursors/right_side.svg +18 -0
- package/cursors/row-resize.svg +9 -0
- package/cursors/size_bdiag.svg +10 -0
- package/cursors/size_fdiag.svg +10 -0
- package/cursors/size_hor.svg +10 -0
- package/cursors/size_ver.svg +12 -0
- package/cursors/text.svg +9 -0
- package/cursors/top_left_corner.svg +16 -0
- package/cursors/top_right_corner.svg +16 -0
- package/cursors/top_side.svg +18 -0
- package/cursors/up-arrow.svg +9 -0
- package/cursors/vertical-text.svg +9 -0
- package/cursors/wait-01.svg +14 -0
- package/cursors/wait-02.svg +14 -0
- package/cursors/wait-03.svg +14 -0
- package/cursors/wait-04.svg +14 -0
- package/cursors/wait-05.svg +14 -0
- package/cursors/wait-06.svg +14 -0
- package/cursors/wait-07.svg +14 -0
- package/cursors/wait-08.svg +14 -0
- package/cursors/wait-09.svg +14 -0
- package/cursors/wait-10.svg +14 -0
- package/cursors/wait-11.svg +14 -0
- package/cursors/wait-12.svg +14 -0
- package/cursors/wait-13.svg +14 -0
- package/cursors/wait-14.svg +14 -0
- package/cursors/wait-15.svg +14 -0
- package/cursors/wait-16.svg +14 -0
- package/cursors/wait-17.svg +14 -0
- package/cursors/wait-18.svg +14 -0
- package/cursors/wait-19.svg +14 -0
- package/cursors/wait-20.svg +14 -0
- package/cursors/wait-21.svg +14 -0
- package/cursors/wait-22.svg +14 -0
- package/cursors/wait-23.svg +14 -0
- package/cursors/wayland-cursor.svg +10 -0
- package/cursors/x-cursor.svg +11 -0
- package/cursors/zoom-in.svg +13 -0
- package/cursors/zoom-out.svg +13 -0
- package/index.cjs +1 -0
- package/index.d.ts +1 -0
- package/index.js +1972 -0
- package/package.json +60 -0
- package/style.css +1 -0
- package/styles/_base.scss +525 -0
- package/styles/_mixins.scss +57 -0
- package/styles/_theme-dark.scss +103 -0
- package/styles/_theme-light.scss +103 -0
- package/styles/_themes.scss +34 -0
- package/styles/_variables.scss +72 -0
- package/styles/index.scss +7 -0
- package/types/bootstrap.d.ts +42 -0
- package/types/bootstrap.d.ts.map +1 -0
- package/types/common.d.ts +9 -0
- package/types/common.d.ts.map +1 -0
- package/types/component.d.ts +57 -0
- package/types/component.d.ts.map +1 -0
- package/types/core.d.ts +46 -0
- package/types/core.d.ts.map +1 -0
- package/types/di.d.ts +53 -0
- package/types/di.d.ts.map +1 -0
- package/types/directive.d.ts +47 -0
- package/types/directive.d.ts.map +1 -0
- package/types/http.d.ts +211 -0
- package/types/http.d.ts.map +1 -0
- package/types/pipe.d.ts +34 -0
- package/types/pipe.d.ts.map +1 -0
- package/types/router.d.ts +145 -0
- package/types/router.d.ts.map +1 -0
- package/types/seo.d.ts +134 -0
- package/types/seo.d.ts.map +1 -0
- package/types/validator.d.ts +73 -0
- package/types/validator.d.ts.map +1 -0
- package/types/virtual-for.d.ts +36 -0
- package/types/virtual-for.d.ts.map +1 -0
- package/types/vite-plugin.d.ts +18 -0
- package/types/vite-plugin.d.ts.map +1 -0
- package/vite.cjs +4 -0
- package/vite.d.ts +1 -0
- package/vite.js +51 -0
package/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=new Map;function t(e){return e.replace(/^\[|\]$/g,``).trim().toLowerCase()}function n(n,r){if(typeof n==`function`){let i=n,a=t((r&&typeof r.name==`string`?r.name:i.name).replace(/directive$/i,``));return e.set(a,i),i}let i=t(typeof n==`string`?n:n.selector);return function(t,n){return e.set(i,t),t}}var r=class{element;value;context;constructor(e,t,n){e&&(this.element=e),t!==void 0&&(this.value=t),n!==void 0&&(this.context=n)}destroy(){this.onDestroy?.()}};function i(t,n=t){let r=[],i=[t,...Array.from(t.querySelectorAll(`*`))];for(let a of i)if(a instanceof HTMLElement&&!(a!==t&&D(a,t)))for(let[t,i]of e.entries()){let e=null;if(a.hasAttribute(t)?e=t:a.hasAttribute(`[${t}]`)?e=`[${t}]`:a.tagName.toLowerCase()===t.toLowerCase()&&(e=t),e!==null){let o=new i;o.element=a,o.context=n;let s=new MutationObserver(t=>{for(let n of t){if(n.type===`attributes`&&(n.attributeName===e||n.attributeName===`[${e}]`||n.attributeName===`label`||n.attributeName===`value`)){let e=a.getAttribute(n.attributeName);if(e!==null&&e!==o.value){let t=o.value;o.value=e,o.onChanges?.(e,t)}}o.onDOMChange?.(n)}});s.observe(a,{attributes:!0,childList:!0,characterData:!0,subtree:!1,attributeOldValue:!0});let c=e=>{o.onDOMChange?.(e)};a.addEventListener(`input`,c),a.addEventListener(`change`,c);let l=a.getAttribute(e)??a.getAttribute(`label`)??a.getAttribute(`value`)??``;if(l.includes(`{{`)){let e;Q(()=>{try{let t=l.replace(/\{\{\s*([\s\S]*?)\s*\}\}/g,(e,t)=>{let r=Function(`with (this) { return ${t.trim()}; }`).call(n);return r==null?``:String(r)});o.value=t,o.onChanges?.(t,e),e=t}catch(e){console.warn(`[Purity Directive] Error in directive ${t} reactive binding:`,e)}})}else o.value=l,o.onChanges?.(l,void 0);o.onInit?.(),r.push({destroy:()=>{s.disconnect(),a.removeEventListener(`input`,c),a.removeEventListener(`change`,c),o.onDestroy?.()}})}}return r}var a=class{form=null;fields=new Map;submitButtons=[];isValid=!1;validateAll(){return this.isValid}updateFormState(e){this.isValid=e}},o=new Map;function s(e){return function(t,n){return o.set(e.form,{constructor:t,options:e}),t}}function c(e,t){let n=[`validate${t.charAt(0).toUpperCase()+t.slice(1)}`,`validate_${t}`,`validate${t.toLowerCase()}`,`validateField`,t];for(let r of n)if(typeof e[r]==`function`)return r===`validateField`?(n,r)=>e.validateField(t,n,r):(t,n)=>e[r](t,n);return null}function l(e,t=e){let n=[];for(let[t,{constructor:r,options:i}]of o.entries()){let a=[];e.matches(t)&&a.push(e),a.push(...Array.from(e.querySelectorAll(t)).filter(t=>!D(t,e)));for(let e of a){let t=new r;t.form=e,t.fields=new Map;let a=Array.from(e.querySelectorAll(`button[type="submit"], input[type="submit"], button:not([type]), .form-submit-btn`)).filter(e=>e.tagName===`BUTTON`||e instanceof HTMLInputElement&&e.type===`submit`||e.type===`submit`);t.submitButtons=a;let o=i.validClass||`is-valid`,s=i.invalidClass||`is-invalid`,l=i.events||[`input`,`change`,`blur`],u=[],d=new Map,f=n=>{t.isValid=n;for(let e of a)`disabled`in e&&(e.disabled=!n),n?e.classList.remove(`disabled`):e.classList.add(`disabled`);n?(e.classList.remove(s),e.classList.add(o)):(e.classList.remove(o),e.classList.add(s)),t.onStateChange?.(n,t)};t.updateFormState=f;let p=(e,n,r)=>{let i=`value`in n?String(n.value??``):n.textContent||``,a=typeof r==`object`&&r.validate||c(t,e);return a?!!a.call(t,i,n):i.trim().length>0},m=(e,n,r)=>{let a=typeof r==`object`&&r.validClass||o,c=typeof r==`object`&&r.invalidClass||s,l=`value`in n?String(n.value??``):n.textContent||``,u=p(e,n,r);u?(n.classList.remove(c),n.classList.add(a)):(n.classList.remove(a),n.classList.add(c)),d.set(e,u),t.onFieldChange?.(e,l,u,n);let m=d.size===Object.keys(i.fields).length&&Array.from(d.values()).every(Boolean);return f(m),u};for(let[n,r]of Object.entries(i.fields)){let i=typeof r==`string`?r:r.selector,a=e.querySelector(i);if(a){t.fields.set(n,a);let e=p(n,a,r);d.set(n,e);let i=()=>{m(n,a,r)};for(let e of l)a.addEventListener(e,i),u.push(()=>a.removeEventListener(e,i))}else d.set(n,!1)}f(d.size===Object.keys(i.fields).length&&Array.from(d.values()).every(Boolean)),t.validateAll=()=>{let e=!0;for(let[n,r]of Object.entries(i.fields)){let i=t.fields.get(n);i&&m(n,i,r)||(e=!1)}return f(e),e};let h=e=>{(t.validateAll?.()??!1)||e.preventDefault()};e.addEventListener(`submit`,h),u.push(()=>e.removeEventListener(`submit`,h)),t.onInit?.(),n.push({destroy:()=>{u.forEach(e=>e()),t.onDestroy?.()}})}}return n}var u=class{},d=new Map,f=new Map;function p(e){let t=typeof e==`string`?e:e.name;return function(e,n){let r=t||(n?.name?String(n.name):e.name);return d.set(r,e),f.delete(r),e}}function m(e,t){d.set(e,t),f.delete(e)}function h(e){if(f.has(e))return f.get(e);let t=d.get(e);if(!t)return null;try{let n=new t;return f.set(e,n),n}catch(t){return console.error(`Failed to instantiate pipe "${e}":`,t),null}}function g(e,t,...n){let r=h(e);if(!r||typeof r.transform!=`function`)return console.warn(`Pipe "${e}" not found or does not implement transform(). Returning original value.`),t;try{return r.transform(t,...n)}catch(n){return console.error(`Error executing pipe "${e}":`,n),t}}var _=[`virtual-for`,`*virtual-for`,`p-virtual-for`,`pVirtualFor`,`p-virtualfor`,`virtualFor`,`virtualfor`];function v(e){for(let t of _){let n=e.getAttribute(t);if(n!==null)return n}return null}function y(e){return v(e)!==null}function ee(e){for(let t of _)e.hasAttribute(t)&&e.removeAttribute(t)}function te(e){let t=e.split(`;`).map(e=>e.trim()).filter(Boolean),n=t[0],r=n.match(/^(?:let\s+)?(?:\(?\s*([a-zA-Z0-9_$]+)(?:\s*,\s*([a-zA-Z0-9_$]+))?\s*\)?)\s+of\s+([\s\S]+)$/),i=r?r[1]:`item`,a=r&&r[2]?r[2]:`index`,o=r?r[3].trim():n.trim(),s={itemHeight:48,buffer:6,scrollAlign:`center`};for(let e=1;e<t.length;e++){let[n,r]=t[e].split(`:`).map(e=>e.trim());if(!(!n||!r)){if(n===`itemHeight`||n===`item-height`){let e=parseFloat(r);!isNaN(e)&&e>0&&(s.itemHeight=e)}else if(n===`buffer`||n===`overscan`){let e=parseInt(r,10);!isNaN(e)&&e>=0&&(s.buffer=e)}else if(n===`height`)s.height=r;else if(n===`scrollIndex`||n===`scroll-index`||n===`jumpIndex`||n===`jump-index`||n===`scrollTo`||n===`scroll-to`)s.scrollIndexExpr=r;else if(n===`scrollAlign`||n===`scroll-align`||n===`align`){let e=r.replace(/['"]/g,``).toLowerCase();(e===`start`||e===`center`||e===`end`)&&(s.scrollAlign=e)}}}return{itemVar:i,indexVar:a,arrayExpr:o,options:s}}function b(e,t,n,r,i,a){let o=(y(e)?[e,...Array.from(e.querySelectorAll(`*`))]:Array.from(e.querySelectorAll(`*`))).filter(e=>e instanceof HTMLElement&&y(e)).filter(t=>{if(a(t,e))return!1;let n=t.parentElement;for(;n&&n!==e;){if(y(n))return!1;n=n.parentElement}return!0});for(let e of o){if(e.closest(`[data-no-bind]`))continue;let a=v(e);if(!a)continue;let o=te(a),s=e.getAttribute(`item-height`)||e.getAttribute(`itemHeight`);if(s){let e=parseFloat(s);!isNaN(e)&&e>0&&(o.options.itemHeight=e)}let c=e.getAttribute(`buffer`)||e.getAttribute(`overscan`);if(c){let e=parseInt(c,10);!isNaN(e)&&e>=0&&(o.options.buffer=e)}let l=e.getAttribute(`height`)||e.getAttribute(`viewport-height`);l&&(o.options.height=l);let u=e.getAttribute(`scroll-index`)||e.getAttribute(`scrollIndex`)||e.getAttribute(`[scroll-index]`)||e.getAttribute(`[scrollIndex]`)||e.getAttribute(`jump-index`)||e.getAttribute(`jumpIndex`);u&&(o.options.scrollIndexExpr=u);let d=e.getAttribute(`scroll-align`)||e.getAttribute(`scrollAlign`)||e.getAttribute(`align`);if(d){let e=d.toLowerCase();(e===`start`||e===`center`||e===`end`)&&(o.options.scrollAlign=e)}let f=e.parentElement;if(!f)continue;let p=document.createElement(`div`);p.className=`p-virtual-scroll-container`,p.style.position=`relative`,p.style.overflowY=`auto`,p.style.overflowX=`hidden`,p.style.webkitOverflowScrolling=`touch`,p.style.contain=`strict`,p.style.boxSizing=`border-box`,p.style.minHeight=`120px`,o.options.height?p.style.height=o.options.height.endsWith(`px`)||o.options.height.endsWith(`%`)||o.options.height.endsWith(`vh`)||o.options.height.endsWith(`em`)||o.options.height.endsWith(`rem`)?o.options.height:`${o.options.height}px`:e.style.height?p.style.height=e.style.height:p.style.height=`420px`,(e.classList.contains(`virtual-viewport`)||e.classList.contains(`window`))&&(p.className+=` `+e.className.replace(/p-virtual-scroll-container/g,``));let m=document.createElement(`div`);m.className=`p-virtual-spacer`,m.style.position=`absolute`,m.style.top=`0`,m.style.left=`0`,m.style.width=`1px`,m.style.pointerEvents=`none`,m.style.opacity=`0`;let h=document.createElement(`div`);h.className=`p-virtual-content`,h.style.position=`absolute`,h.style.top=`0`,h.style.left=`0`,h.style.right=`0`,h.style.width=`100%`,h.style.boxSizing=`border-box`,p.appendChild(m),p.appendChild(h);let g=e.cloneNode(!0);ee(g),g.style.position=`absolute`,g.style.left=`0`,g.style.right=`0`,g.style.width=`100%`,g.style.boxSizing=`border-box`,f.insertBefore(p,e),f.removeChild(e);let _=new Map,y=[],b=o.options.itemHeight,x=o.options.buffer,S=!1,C=()=>{if(S=!1,!p.isConnected)return;let e=y.length,i=e*b;m.style.height=`${i}px`;let a=p.scrollTop,s=p.clientHeight||420,c=Math.max(0,Math.floor(a/b)-x),l=Math.min(e,Math.ceil((a+s)/b)+x);for(let[e,t]of _.entries())(e<c||e>=l)&&(t.parentNode&&t.parentNode.removeChild(t),_.delete(e));let u=document.createDocumentFragment(),d=!1;for(let i=c;i<l;i++){if(_.has(i)){let e=_.get(i);e.style.top=`${i*b}px`,e.style.height=`${b}px`;continue}let a=y[i],s=g.cloneNode(!0);s.removeAttribute(`data-purity-mounted`);for(let e of Array.from(s.querySelectorAll(`[data-purity-mounted]`)))e.removeAttribute(`data-purity-mounted`);s.style.position=`absolute`,s.style.top=`${i*b}px`,s.style.height=`${b}px`,s.style.left=`0`,s.style.right=`0`,s.style.boxSizing=`border-box`,s.setAttribute(`data-virtual-index`,String(i));let c=Object.assign(Object.create(t),{[o.itemVar]:a,[o.indexVar]:i,index:i,$index:i,$first:i===0,$last:i===e-1,$even:i%2==0,$odd:i%2!=0,__host:n||(t instanceof Element?t:t?.__host)});s.__parentContext=c,r(s,c,n),u.appendChild(s),_.set(i,s),d=!0}d&&h.appendChild(u)},w=()=>{S||(S=!0,requestAnimationFrame(C))};p.addEventListener(`scroll`,w,{passive:!0});let T=null;if(typeof ResizeObserver<`u`&&(T=new ResizeObserver(()=>w()),T.observe(p)),p.scrollToIndex=(e,t=`start`,n=`auto`)=>{let r=y.length,i=Math.max(0,Math.min(r-1,e)),a=p.clientHeight||380,o=i*b;t===`center`?o=Math.max(0,o-a/2+b/2):t===`end`&&(o=Math.max(0,o-a+b)),p.scrollTo({top:o,behavior:n}),C()},p.getVirtualMetrics=()=>{let e=p.scrollTop,t=p.clientHeight||420,n=y.length,r=Math.max(0,Math.floor(e/b)-x),i=Math.min(n,Math.ceil((e+t)/b)+x);return{totalItems:n,renderedCount:_.size,startIndex:r,endIndex:i,scrollTop:e,totalHeight:n*b,itemHeight:b}},Q(()=>{let e=i(o.arrayExpr,t);y=Array.isArray(e)?e:[];for(let e of _.values())e.parentNode&&e.parentNode.removeChild(e);_.clear(),C()}),o.options.scrollIndexExpr){let e=null;Q(()=>{let n=i(o.options.scrollIndexExpr,t),r=typeof n==`number`?n:parseInt(String(n),10);!isNaN(r)&&r>=0&&r!==e&&(e=r,p.scrollToIndex(r,o.options.scrollAlign||`center`))})}}}var x=new Map,S=new Map,C=new Map;function w(e){let t=e.trim();if(!t.includes(`|`))return t;let n=[],r=``,i=null,a=0;for(let e=0;e<t.length;e++){let o=t[e],s=e+1<t.length?t[e+1]:``;if(i){r+=o,o===i&&t[e-1]!==`\\`&&(i=null);continue}if(o===`'`||o===`"`||o==="`"){i=o,r+=o;continue}if(o===`(`||o===`[`||o===`{`){a++,r+=o;continue}if(o===`)`||o===`]`||o===`}`){a>0&&a--,r+=o;continue}if(o===`|`&&s===`|`){r+=`||`,e++;continue}if(o===`|`&&a===0){n.push(r.trim()),r=``;continue}r+=o}if(r.trim().length>0&&n.push(r.trim()),n.length<=1)return t;let o=`(${n[0]})`;for(let e=1;e<n.length;e++){let t=n[e],r=[],i=``,a=null,s=0;for(let e=0;e<t.length;e++){let n=t[e];if(a){i+=n,n===a&&t[e-1]!==`\\`&&(a=null);continue}if(n===`'`||n===`"`||n==="`"){a=n,i+=n;continue}if(n===`(`||n===`[`||n===`{`){s++,i+=n;continue}if(n===`)`||n===`]`||n===`}`){s>0&&s--,i+=n;continue}if(n===`:`&&s===0){r.push(i.trim()),i=``;continue}i+=n}i.trim().length>0&&r.push(i.trim());let c=r[0],l=r.slice(1),u=l.length>0?`, `+l.join(`, `):``;o=`__pipe('${c}', ${o}${u})`}return o}function T(e,t){let n=w(e),r=S.get(n);if(!r)try{r=Function(`__pipe`,`with (this) { return ${n}; }`),S.set(n,r)}catch{r=()=>null,S.set(n,r)}try{let e=r.call(t,g);if(typeof e==`function`&&!Array.isArray(e))try{e=e()}catch{}return e}catch{return null}}function ne(e,t){let n=T(e,t);return n==null?``:String(n)}function E(e){return e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/[\s_]+/g,`-`).toLowerCase()}function D(e,t){let n=(e.nodeType,Node.TEXT_NODE,e.parentElement);for(;n&&n!==t;){if(n.tagName&&(n.tagName.includes(`-`)||C.has(n.tagName.toLowerCase())))return!0;n=n.parentElement}return!1}var re=[`if`,`*if`,`p-if`,`pif`,`pIf`,`else-if`,`elseif`,`*else-if`,`*elseif`,`p-else-if`,`pElseIf`,`p-elseif`,`pElseif`,`else`,`*else`,`p-else`,`pElse`,`pelse`];function O(e){return e.getAttribute(`if`)??e.getAttribute(`*if`)??e.getAttribute(`p-if`)??e.getAttribute(`pif`)??e.getAttribute(`pIf`)}function k(e){return e.getAttribute(`else-if`)??e.getAttribute(`elseif`)??e.getAttribute(`*else-if`)??e.getAttribute(`*elseif`)??e.getAttribute(`p-else-if`)??e.getAttribute(`pElseIf`)??e.getAttribute(`p-elseif`)??e.getAttribute(`pElseif`)}function A(e){return e.hasAttribute(`else`)||e.hasAttribute(`*else`)||e.hasAttribute(`p-else`)||e.hasAttribute(`pElse`)||e.hasAttribute(`pelse`)}function j(e){return O(e)!==null||k(e)!==null||A(e)}var ie=[`for`,`*for`,`p-for`,`pfor`,`pFor`];function M(e){return e.getAttribute(`for`)??e.getAttribute(`*for`)??e.getAttribute(`p-for`)??e.getAttribute(`pfor`)??e.getAttribute(`pFor`)}function N(e){return M(e)!==null}function ae(e){for(let t of ie)e.hasAttribute(t)&&e.removeAttribute(t)}function oe(e){for(let t of re)e.hasAttribute(t)&&e.removeAttribute(t)}function se(e,t){if(e.initialized)return;let n=t.__target||t;if(typeof n==`function`){let t=new n,r=new Set([`render`,`connectedCallback`,`disconnectedCallback`,`loadTemplate`,`bindTemplate`]),i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(let n of i){let i=Object.getOwnPropertyDescriptor(t,n);if(i){if(typeof n==`string`&&r.has(n)&&i.value===void 0&&!i.get&&!i.set)continue;Object.defineProperty(e,n,i)}}}let r=Object.getOwnPropertyDescriptors(t.prototype);for(let[t,n]of Object.entries(r))t!==`constructor`&&!(t in e)&&Object.defineProperty(e,t,n);typeof e.connectedCallback==`function`&&e.connectedCallback()}function ce(e,t){return t?new Proxy(e,{get(e,n,r){if(n in e){let t=Reflect.get(e,n,r);return typeof t==`function`?t.bind(e):t}if(t&&n in t){let e=Reflect.get(t,n,t);return typeof e==`function`?e.bind(t):e}return Reflect.get(e,n,r)},has(e,n){return n in e||t&&n in t},set(e,n,r,i){return n in e?Reflect.set(e,n,r,i):t&&n in t?Reflect.set(t,n,r,t):Reflect.set(e,n,r,i)}}):e}function le(e){return e.replace(/-([a-z0-9])/g,(e,t)=>t.toUpperCase())}function ue(e,t,n,r){let i=le(t),a=new Set([t,i]);(t===`checked`||t===`is-on`||t===`ison`)&&(a.add(`isOn`),a.add(`checked`)),(t===`expanded`||t===`is-expanded`||t===`isexpanded`)&&(a.add(`isExpanded`),a.add(`expanded`)),(t===`value`||t===`selected-date`||t===`selecteddate`)&&(a.add(`selectedDate`),a.add(`value`)),(t===`loading`||t===`is-loading`||t===`isloading`)&&(a.add(`isLoading`),a.add(`loading`)),(t===`target`||t===`target-for`||t===`targetfor`)&&(a.add(`targetFor`),a.add(`target`)),(t===`open`||t===`is-open`||t===`isopen`)&&(a.add(`isOpen`),a.add(`open`));for(let t of a){if(!(t in e))continue;let i=e[t];if(typeof i==`function`&&typeof i.set==`function`){try{let e=$(()=>i());if(typeof e==`boolean`)i.set(r);else if(typeof e==`number`){let e=parseFloat(n);isNaN(e)||i.set(e)}else if(e instanceof Date||t.toLowerCase().includes(`date`)){let e=new Date(n);isNaN(e.getTime())||i.set(e)}else i.set(n)}catch{}continue}try{let a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),t),o=Object.getOwnPropertyDescriptor(e,t),s=a||o;s&&s.set?typeof e[t]==`boolean`?s.set.call(e,r):s.set.call(e,n):s&&s.writable&&(e[t]=typeof i==`boolean`?r:n)}catch{}}}function de(e,t,n){let r=n.trim(),i=r!==``&&r!==`false`&&r!==`null`&&r!==`undefined`&&r!==`0`;if(t===`class`){e.className=n.trim();return}[`disabled`,`checked`,`readonly`,`required`,`hidden`,`selected`,`open`].includes(t)?i?e.setAttribute(t,r||t):e.removeAttribute(t):((e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&t===`value`&&(e.value=n),e.setAttribute(t,n)),ue(e,t,n,i)}function fe(e,t){for(let[n,r]of C.entries()){let i=[];e.tagName&&e.tagName.toLowerCase()===n&&i.push(e),i.push(...Array.from(e.querySelectorAll(n)));for(let n of i){if(n.closest(`[data-no-bind]`)||n!==e&&D(n,e)||N(n)||y(n)||j(n))continue;let i=n.parentElement,a=!1;for(;i&&i!==e;){if(j(i)||N(i)||y(i)){a=!0;break}i=i.parentElement}a||n.hasAttribute(`data-purity-mounted`)||(n.setAttribute(`data-purity-mounted`,`true`),n.__parentContext=t,n.initialized||se(n,r))}}let n=Array.from(e.querySelectorAll(`*`)).filter(t=>{if(t===e||t.closest(`[data-no-bind]`))return!1;let n=t.tagName.toLowerCase();return n.includes(`-`)||C.has(n)});for(let r of n)r!==e&&D(r,e)||(r.__parentContext||=t)}function P(e,t,n){if(!e)return;let r=Array.from(e.querySelectorAll(`*`)).filter(t=>{if(!(t instanceof HTMLElement)||O(t)===null||t.closest(`[data-no-bind]`)||D(t,e))return!1;let n=t.parentElement;for(;n&&n!==e;){if(j(n)||N(n)||y(n))return!1;n=n.parentElement}return!0}),a=new Set;for(let i of r){if(a.has(i)||!i.parentNode)continue;let r=i.parentNode,o=O(i),s=[],c=i.cloneNode(!0);oe(c),s.push({type:`if`,expr:o,templateEl:c}),a.add(i);let l=[i],u=i.nextElementSibling;for(;u&&u instanceof HTMLElement&&!D(u,e);){let e=k(u);if(e!==null){let t=u.cloneNode(!0);oe(t),s.push({type:`else-if`,expr:e,templateEl:t}),a.add(u),l.push(u),u=u.nextElementSibling;continue}if(A(u)){let e=u.cloneNode(!0);oe(e),s.push({type:`else`,expr:`true`,templateEl:e}),a.add(u),l.push(u);break}break}let d=document.createComment(`conditional-block`);r.insertBefore(d,i);for(let e of l)e.parentNode&&e.parentNode.removeChild(e);let f=null,p=-1;Q(()=>{let e=-1;for(let n=0;n<s.length;n++){let r=s[n];if(r.type===`else`){e=n;break}let i=T(r.expr,t);if(i!==!1&&i!=null&&i!==``&&i!==0){e=n;break}}if(e===p&&f||(f&&f.parentNode&&(f.parentNode.removeChild(f),f=null),p=e,e===-1))return;let r=s[e].templateEl.cloneNode(!0);r.removeAttribute(`data-purity-mounted`);for(let e of Array.from(r.querySelectorAll(`[data-purity-mounted]`)))e.removeAttribute(`data-purity-mounted`);r.__parentContext=t,P(r,t,n),d.parentNode&&(d.parentNode.insertBefore(r,d),f=r)})}b(e,t,n,P,T,D);let o=Array.from(e.querySelectorAll(`*`)).filter(t=>{if(!(t instanceof HTMLElement)||M(t)===null||t.closest(`[data-no-bind]`)||D(t,e))return!1;let n=t.parentElement;for(;n&&n!==e;){if(j(n)||N(n)||y(n))return!1;n=n.parentElement}return!0});for(let e of o){let r=M(e),i=r.match(/^(?:let\s+)?(?:\(?\s*([a-zA-Z0-9_$]+)(?:\s*,\s*([a-zA-Z0-9_$]+))?\s*\)?)\s+of\s+([\s\S]+)$/);if(!i)continue;let a=i[1],o=i[2]||`index`,s=i[3].trim(),c=e.parentNode;if(!c)continue;let l=document.createComment(`for: ${r}`);c.insertBefore(l,e);let u=e.cloneNode(!0);ae(u),c.removeChild(e);let d=[];Q(()=>{for(let e of d)e.parentNode&&e.parentNode.removeChild(e);d=[];let e=T(s,t),r=Array.isArray(e)?e:[];if(!l.parentNode)return;let i=document.createDocumentFragment();r.forEach((e,s)=>{let c=u.cloneNode(!0);c.removeAttribute(`data-purity-mounted`);for(let e of Array.from(c.querySelectorAll(`[data-purity-mounted]`)))e.removeAttribute(`data-purity-mounted`);let l=Object.assign(Object.create(t),{[a]:e,[o]:s,index:s,$index:s,$first:s===0,$last:s===r.length-1,__host:n||(t instanceof Element?t:t?.__host)});c.__parentContext=l,P(c,l,n),i.appendChild(c),d.push(c)}),l.parentNode?.insertBefore(i,l)})}fe(e,t);let s=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),c=[],u;for(;u=s.nextNode();)if(u.nodeValue&&u.nodeValue.includes(`{{`)){if(u.parentElement?.closest(`[data-no-bind]`)||D(u,e))continue;c.push(u)}let d=/\{\{\s*([\s\S]*?)\s*\}\}/g;for(let e of c){let n=e.nodeValue;if(!n)continue;let r=e.parentNode;if(!r)continue;let i=0,a,o=[],s=!1;for(d.lastIndex=0;(a=d.exec(n))!==null;){s=!0;let e=n.slice(i,a.index);e&&o.push(document.createTextNode(e));let r=a[1].trim(),c=document.createTextNode(``);o.push(c),Q(()=>{c.nodeValue=ne(r,t)}),i=a.index+a[0].length}if(s){let t=n.slice(i);t&&o.push(document.createTextNode(t));for(let t of o)r.insertBefore(t,e);r.removeChild(e)}}let f=[e,...Array.from(e.querySelectorAll(`*`))];for(let n of f)if(n instanceof HTMLElement&&!n.closest(`[data-no-bind]`)&&!(n!==e&&D(n,e)))for(let e of Array.from(n.attributes)){let r=e.name,i=e.value;if(r===`data-purity-val`&&(r=`value`,n.removeAttribute(`data-purity-val`)),r.startsWith(`on`)){try{let e=r.slice(2).toLowerCase(),a=i.replace(/\{\{\s*([\s\S]*?)\s*\}\}/g,`$1`),o=Function(`$event`,`__context`,`__pipe`,`with (__context) { return (function(event) { ${a} }).call(this, $event); }`);n.addEventListener(e,function(e){return o.call(this,e,t,g)}),n.removeAttribute(r)}catch(e){console.error(`[Purity] Failed to compile event handler ${r}="${i}":`,e)}continue}i.includes(`{{`)&&Q(()=>{let e=i.replace(/\{\{\s*([\s\S]*?)\s*\}\}/g,(e,n)=>ne(n.trim(),t));$(()=>{de(n,r,e)})})}if(n){let t=i(e,n);n.activeDirectives&&n.activeDirectives.push(...t);let r=l(e,n);n.activeValidators&&n.activeValidators.push(...r)}}function F(e,t){if(t&&t.trim().length>0)return[t.trim()];let n=E(e),r=new Set;if(r.add(n),r.add(`#`+n),n.endsWith(`-component`)){let e=n.slice(0,-10);r.add(e),r.add(`#`+e)}else r.add(n+`-component`),r.add(`#`+n+`-component`);return r.add(`#`+e),Array.from(r)}function I(e,t){if(typeof document>`u`)return null;let n=Array.isArray(t)?t:[t];for(let t of n)if(t){if(e&&e.__host)try{let n=e.__host.querySelector?.(t);if(n)return n}catch{}if(e)try{let n=e.querySelector?.(t);if(n)return n}catch{}try{let e=document.querySelector?.(t);if(e)return e}catch{}}return null}function pe(e){return e.replace(/<input\b([^>]*?)>/gi,(e,t)=>/\btype=["'](?:number|range|date|time|month|week|datetime-local)["']/i.test(t)&&/\bvalue=["']\{\{[\s\S]*?\}\}["']/i.test(t)?`<input${t.replace(/\bvalue=(["']\{\{[\s\S]*?\}\}["'])/i,`data-purity-val=$1`)}>`:e)}function L(e,t){e.loadTemplate=async function(){let e=this.templateUrl||t.templateUrl;if(e){if(x.has(e))this.innerHTML=x.get(e);else try{let t=await(await fetch(e)).text();x.set(e,t),this.innerHTML=t}catch(t){console.error(`Failed to load template from ${e}`,t)}}},e.connectedCallback=async function(){if(N(this)||y(this)||j(this))return;let e=this.parentElement;for(;e;){if(N(e)||y(e)||j(e))return;e=e.parentElement}if(this.initialized)return;this.initialized=!0;let n=this.template||t.template,r=this.templateUrl||t.templateUrl,i=this.innerHTML,a=n;if(!a&&r){if(x.has(r))a=x.get(r);else try{a=await(await fetch(r)).text(),x.set(r,a)}catch(e){console.error(`Failed to load template from ${r}`,e)}}if(a&&(a.includes(`<slot`)&&(a=a.replace(/<slot\s*>\s*([\s\S]*?)\s*<\/slot>|<slot\s*\/>/gi,(e,t)=>i&&i.trim().length>0?i:t||``)),this.innerHTML=pe(a)),this.__childViews)for(let{propertyKey:e,selector:t,candidates:n}of this.__childViews){let r=n||(t?[t]:F(e));Object.defineProperty(this,e,{get(){return I(this,r)},enumerable:!0,configurable:!0})}this.bindTemplate?.(),this.onInit?.()},e.disconnectedCallback=function(){this.activeDirectives&&=(this.activeDirectives.forEach(e=>e.destroy()),[]),this.activeValidators&&=(this.activeValidators.forEach(e=>e.destroy()),[]),this.onDestroy?.()},e.render=function(e){e!=null&&(this.innerHTML=pe(e),this.bindTemplate?.())},e.bindTemplate=function(e){let t=e||this;this.activeDirectives||=[],this.activeValidators||=[],P(t,ce(this,this.__parentContext),this)}}function me(e){let t=typeof e==`string`?{selector:e}:e??{};return function(e,n){let r=t.selector??(n&&typeof n.name==`string`?E(n.name.replace(/Component$/,``)):E(e.name.replace(/Component$/,``)));if(typeof customElements<`u`&&r&&customElements.get(r)){let n=customElements.get(r);n.__target=e,n.__options=t,n.selector=r,e.selector=r,t.template&&(n.prototype.template=t.template),t.templateUrl&&(n.prototype.templateUrl=t.templateUrl);let i=Object.getOwnPropertyDescriptors(e.prototype);for(let[e,t]of Object.entries(i))e!==`constructor`&&Object.defineProperty(n.prototype,e,t);return L(n.prototype,t),n}let i,a=typeof HTMLElement<`u`;if(a&&e.prototype instanceof HTMLElement)i=e,t.templateUrl&&!i.prototype.templateUrl&&(i.prototype.templateUrl=t.templateUrl),t.template&&!i.prototype.template&&(i.prototype.template=t.template),L(i.prototype,t);else{let n=a?HTMLElement:class{};class o extends n{initialized=!1;activeDirectives=[];constructor(){super();let t=new(this.constructor.__target||e),n=new Set([`render`,`connectedCallback`,`disconnectedCallback`,`loadTemplate`,`bindTemplate`]),r=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(let i of r){let r=Object.getOwnPropertyDescriptor(t,i);if(r){if(typeof i==`string`&&n.has(i)&&r.value===void 0&&!r.get&&!r.set)continue;let t=Object.getOwnPropertyDescriptor(e.prototype,i);if(t&&t.get&&r.value===void 0&&!r.get&&!r.set)continue;Object.defineProperty(this,i,r)}}}}let s=Object.getOwnPropertyDescriptors(e.prototype);for(let[e,t]of Object.entries(s))e!==`constructor`&&Object.defineProperty(o.prototype,e,t);t.templateUrl&&!o.prototype.templateUrl&&(o.prototype.templateUrl=t.templateUrl),t.template&&!o.prototype.template&&(o.prototype.template=t.template),o.__target=e,o.__options=t,o.selector=r,e.selector=r,L(o.prototype,t),i=o}return i.selector=r,e.selector=r,r&&ve(r,i),i}}function he(e,t){if(typeof e==`object`&&e&&typeof t==`string`){ge(e,t,void 0);return}let n=typeof e==`string`?e:void 0;return function(e,t){if(typeof t==`object`&&t&&`name`in t){let e=t.name,r=F(e,n);return typeof t.addInitializer==`function`&&t.addInitializer(function(){Object.defineProperty(this,e,{get(){return I(this,r)},enumerable:!0,configurable:!0})}),function(t){return Object.defineProperty(this,e,{get(){return I(this,r)},enumerable:!0,configurable:!0}),t}}ge(e,t,n)}}function ge(e,t,n){e.__childViews||=[];let r=F(t,n);e.__childViews.push({propertyKey:t,selector:n,candidates:r}),Object.defineProperty(e,t,{get(){return I(this,r)},set(e){},enumerable:!0,configurable:!0})}var _e=he,ve=(e,t)=>{if(typeof customElements>`u`)return;let n=e.toLowerCase();C.set(n,t);let r=e.includes(`-`)?e:`${e}-component`;if(e.includes(`-`)||C.set(r.toLowerCase(),t),customElements.get(r))console.error(`Component ${r} is already defined`);else try{customElements.define(r,t)}catch(e){console.error(`Failed to define custom element ${r}:`,e)}},R=new class{registry=new Map;instances=new Map;register(e,t,n={singleton:!0}){this.registry.set(e,{target:t,options:{singleton:n.singleton??!0,...n}})}registerValue(e,t){this.instances.set(e,t)}resolve(e){if(this.instances.has(e))return this.instances.get(e);let t=this.registry.get(e);if(!t){if(typeof e==`function`){let t=new e;return this.instances.set(e,t),t}let t=typeof e==`symbol`?e.toString():String(e);throw Error(`[Purity DI] No service registered with token: "${t}".`)}let{target:n,options:r}=t,i=new n;return r.singleton!==!1&&(this.instances.set(e,i),this.instances.set(n,i),r.name&&this.instances.set(r.name,i)),i}clear(){this.registry.clear(),this.instances.clear()}};function z(e,t){if(typeof e==`function`){let n=e,r=t&&typeof t.name==`string`?t.name:n.name;return r&&R.register(r,n,{singleton:!0}),R.register(n,n,{singleton:!0}),n}let n=typeof e==`string`?{name:e}:e??{};return function(e,t){let r=n.name??(t&&typeof t.name==`string`?t.name:e.name);return r&&R.register(r,e,n),R.register(e,e,n),e}}var ye=z;function be(e){return R.resolve(e)}function xe(e,t){R.registerValue(e,t)}var B=class e{map=new Map;displayNames=new Map;constructor(t){t&&(t instanceof e?(t.map.forEach((e,t)=>{this.map.set(t,[...e])}),t.displayNames.forEach((e,t)=>{this.displayNames.set(t,e)})):typeof Headers<`u`&&t instanceof Headers?t.forEach((e,t)=>{this.append(t,e)}):Array.isArray(t)?t.forEach(([e,t])=>{this.append(e,t)}):typeof t==`object`&&Object.entries(t).forEach(([e,t])=>{this.set(e,t)}))}clone(){let t=new e;return this.map.forEach((e,n)=>{t.map.set(n,[...e])}),this.displayNames.forEach((e,n)=>{t.displayNames.set(n,e)}),t}has(e){return this.map.has(e.toLowerCase())}get(e){let t=this.map.get(e.toLowerCase());return t&&t.length>0?t.join(`, `):null}getAll(e){let t=this.map.get(e.toLowerCase());return t?[...t]:null}keys(){return Array.from(this.displayNames.values())}set(e,t){let n=this.clone(),r=e.toLowerCase(),i=Array.isArray(t)?t.map(String):[String(t)];return n.map.set(r,i),n.displayNames.set(r,e),n}append(e,t){let n=this.clone(),r=e.toLowerCase(),i=Array.isArray(t)?t.map(String):[String(t)],a=n.map.get(r)||[];return n.map.set(r,[...a,...i]),n.displayNames.has(r)||n.displayNames.set(r,e),n}delete(e){let t=this.clone(),n=e.toLowerCase();return t.map.delete(n),t.displayNames.delete(n),t}forEach(e){this.displayNames.forEach((t,n)=>{let r=this.get(n);r!==null&&e(r,t,this)})}toRecord(){let e={};return this.displayNames.forEach((t,n)=>{let r=this.get(n);r!==null&&(e[t]=r)}),e}toHeaders(){let e=new Headers;return this.displayNames.forEach((t,n)=>{let r=this.map.get(n);r&&r.forEach(n=>e.append(t,n))}),e}},V=class e{map=new Map;constructor(t){if(t){if(t instanceof e)t.map.forEach((e,t)=>{this.map.set(t,[...e])});else if(typeof URLSearchParams<`u`&&t instanceof URLSearchParams)t.forEach((e,t)=>{this.append(t,e)});else if(typeof t==`string`){let e=t.startsWith(`?`)?t.slice(1):t;new URLSearchParams(e).forEach((e,t)=>{this.append(t,e)})}else typeof t==`object`&&Object.entries(t).forEach(([e,t])=>{Array.isArray(t)?this.set(e,t):t!=null&&this.set(e,String(t))})}}clone(){let t=new e;return this.map.forEach((e,n)=>{t.map.set(n,[...e])}),t}has(e){return this.map.has(e)}get(e){let t=this.map.get(e);return t&&t.length>0?t[0]:null}getAll(e){let t=this.map.get(e);return t?[...t]:null}keys(){return Array.from(this.map.keys())}set(e,t){let n=this.clone(),r=Array.isArray(t)?t.map(String):[String(t)];return n.map.set(e,r),n}append(e,t){let n=this.clone(),r=Array.isArray(t)?t.map(String):[String(t)],i=n.map.get(e)||[];return n.map.set(e,[...i,...r]),n}delete(e){let t=this.clone();return t.map.delete(e),t}toString(){let e=new URLSearchParams;return this.map.forEach((t,n)=>{t.forEach(t=>e.append(n,t))}),e.toString()}},Se=class e{method;url;headers;params;body;responseType;timeout;signal;withCredentials;context;constructor(e,t,n={}){this.method=e.toUpperCase()||`GET`,this.url=t,this.headers=n.headers instanceof B?n.headers:new B(n.headers),this.params=n.params instanceof V?n.params:new V(n.params),this.body=n.body===void 0?null:n.body,this.responseType=n.responseType||`json`,this.timeout=n.timeout,this.signal=n.signal,this.withCredentials=n.withCredentials,this.context=new Map,n.context&&(n.context instanceof Map?n.context.forEach((e,t)=>this.context.set(t,e)):Object.entries(n.context).forEach(([e,t])=>this.context.set(e,t)))}clone(t={}){return new e(t.method||this.method,t.url||this.url,{headers:t.headers===void 0?this.headers:t.headers,params:t.params===void 0?this.params:t.params,body:t.body===void 0?this.body:t.body,responseType:t.responseType||this.responseType,timeout:t.timeout===void 0?this.timeout:t.timeout,signal:t.signal||this.signal,withCredentials:t.withCredentials===void 0?this.withCredentials:t.withCredentials,context:t.context||this.context})}getUrlWithParams(){let e=this.params.toString();if(!e)return this.url;let t=this.url.includes(`?`)?`&`:`?`;return`${this.url}${t}${e}`}},Ce=class{data;status;statusText;headers;url;ok;request;constructor(e){this.data=e.data,this.status=e.status,this.statusText=e.statusText,this.headers=e.headers,this.url=e.url,this.ok=e.status>=200&&e.status<300,this.request=e.request}},H=class e extends Error{error;status;statusText;url;headers;request;constructor(t){super(t.message||`Http failure response for ${t.url}: ${t.status} ${t.statusText}`),this.name=`HttpErrorResponse`,this.error=t.error,this.status=t.status,this.statusText=t.statusText,this.url=t.url,this.headers=t.headers,this.request=t.request,Object.setPrototypeOf(this,e.prototype)}},U=`HTTP_INTERCEPTORS`;function we(...e){return{provide:U,useValue:e.map(e=>typeof e==`function`&&e.prototype&&typeof e.prototype.intercept==`function`?new e:e)}}var Te=class{async handle(e){let t=e.getUrlWithParams(),n=e.headers,r=null;e.body!==null&&e.body!==void 0&&(typeof Blob<`u`&&e.body instanceof Blob||typeof ArrayBuffer<`u`&&e.body instanceof ArrayBuffer||typeof FormData<`u`&&e.body instanceof FormData||typeof URLSearchParams<`u`&&e.body instanceof URLSearchParams||typeof e.body==`string`?r=e.body:(r=JSON.stringify(e.body),n.has(`Content-Type`)||(n=n.set(`Content-Type`,`application/json`)))),n.has(`Accept`)||(e.responseType===`json`?n=n.set(`Accept`,`application/json, text/plain, */*`):e.responseType===`text`&&(n=n.set(`Accept`,`text/plain, */*`)));let i,a=new AbortController,o=a.signal;e.signal&&(e.signal.aborted?a.abort():e.signal.addEventListener(`abort`,()=>a.abort())),e.timeout&&e.timeout>0&&(i=setTimeout(()=>{a.abort()},e.timeout));let s={method:e.method,headers:n.toRecord(),body:[`GET`,`HEAD`].includes(e.method)?void 0:r,signal:o,credentials:e.withCredentials?`include`:`same-origin`};try{let n=await fetch(t,s);i&&clearTimeout(i);let r=new B(n.headers),a=null;if(n.status!==204&&e.method!==`HEAD`)switch(e.responseType){case`json`:try{let e=await n.text();a=e?JSON.parse(e):null}catch{a=null}break;case`text`:a=await n.text();break;case`blob`:a=await n.blob();break;case`arraybuffer`:a=await n.arrayBuffer();break;case`stream`:a=n.body;break;default:a=await n.text()}let o=new Ce({data:a,status:n.status,statusText:n.statusText,headers:r,url:n.url||t,request:e});if(!n.ok)throw new H({error:a,status:n.status,statusText:n.statusText,url:n.url||t,headers:r,request:e});return o}catch(n){throw i&&clearTimeout(i),n instanceof H?n:new H({error:n,status:0,statusText:n.name===`AbortError`||a.signal.aborted?`Request Timeout / Aborted`:`Network Failure`,url:t,headers:new B,request:e,message:n.message||`Network request failed`})}}},Ee=Array.from({length:23},(e,t)=>`url('/cursors/progress-${String(t+1).padStart(2,`0`)}.svg') 4 4, progress`),W=null,G=0,K=0;function De(){typeof document>`u`||(K++,document.documentElement.classList.add(`http-loading`),document.body?.classList.add(`http-loading`),W||=(G=0,setInterval(()=>{G=(G+1)%Ee.length,document.documentElement.style.setProperty(`--cursor-progress`,Ee[G])},45)))}function Oe(){typeof document>`u`||(K=Math.max(0,K-1),K===0&&(document.documentElement.classList.remove(`http-loading`),document.body?.classList.remove(`http-loading`),W&&=(clearInterval(W),null),document.documentElement.style.removeProperty(`--cursor-progress`)))}var q=class{backend=new Te;interceptors=[];activeRequests=Z(0);isLoading=Z(!1);constructor(){try{let e=R.resolve(U);Array.isArray(e)&&this.interceptors.push(...e)}catch{}}addInterceptor(e){return this.interceptors.push(e),()=>{let t=this.interceptors.indexOf(e);t>=0&&this.interceptors.splice(t,1)}}use(e){return this.addInterceptor(e),this}async request(e,t,n){let r=new Se(e,t,n);this.activeRequests.update(e=>e+1),this.isLoading.set(!0),De();let i=this.interceptors.map(e=>typeof e==`function`?e:(t,n)=>e.intercept(t,n)),a=e=>this.backend.handle(e),o=-1,s=(e,t)=>{if(e<=o)return Promise.reject(Error(`[HttpClient] next() called multiple times in interceptor`));o=e;let n=i[e];return n?n(t,t=>s(e+1,t)):a(t)};try{return await s(0,r)}finally{this.activeRequests.update(e=>Math.max(0,e-1));let e=this.activeRequests()>0;this.isLoading.set(e),Oe()}}get(e,t){return this.request(`GET`,e,t)}post(e,t,n){return this.request(`POST`,e,{...n,body:t})}put(e,t,n){return this.request(`PUT`,e,{...n,body:t})}patch(e,t,n){return this.request(`PATCH`,e,{...n,body:t})}delete(e,t){return this.request(`DELETE`,e,t)}head(e,t){return this.request(`HEAD`,e,t)}options(e,t){return this.request(`OPTIONS`,e,t)}createResource(e,t=!0){let n=Z(null),r=Z(!1),i=Z(null),a=Z(null),o=async()=>{r.set(!0),i.set(null);try{let t=await e();return n.set(t.data),a.set(t.status),t}catch(e){return i.set(e),e instanceof H?a.set(e.status):a.set(0),null}finally{r.set(!1)}};return t&&o(),{data:n,loading:r,error:i,status:a,refetch:o}}};z(`HttpClient`)(q);function J(e){if(!e||e===`/`)return`/`;let t=e.trim();return t.startsWith(`/`)||(t=`/`+t),t.length>1&&t.endsWith(`/`)&&(t=t.slice(0,-1)),t}function ke(e){let t={};if(!e)return t;let n=e.startsWith(`?`)?e.slice(1):e;if(!n)return t;let r=n.split(`&`);for(let e of r){if(!e)continue;let[n,r]=e.split(`=`);n&&(t[decodeURIComponent(n)]=r===void 0?``:decodeURIComponent(r))}return t}function Ae(e){let t=Object.keys(e);return t.length===0?``:`?${t.map(t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`).join(`&`)}`}function je(e,t){let n=J(e),r=J(t);if(n===`/**`||e===`**`)return{matched:!0,params:{wildcard:r}};if(n===`/`&&r===`/`)return{matched:!0,params:{}};let i=n.split(`/`).filter(Boolean),a=r.split(`/`).filter(Boolean);if(i.length!==a.length){if(i.length>0&&i[i.length-1]===`*`&&a.length>=i.length-1){let e={};for(let t=0;t<i.length-1;t++){let n=i[t],r=a[t];if(n.startsWith(`:`))e[n.slice(1)]=decodeURIComponent(r);else if(n!==r)return null}return{matched:!0,params:e}}return null}let o={};for(let e=0;e<i.length;e++){let t=i[e],n=a[e];if(t.startsWith(`:`))o[t.slice(1)]=decodeURIComponent(n);else if(t===`*`)continue;else if(t!==n)return null}return{matched:!0,params:o}}var Me=class{routes=[];options={mode:`history`,scrollRestoration:!1};isListening=!1;url=Z(`/`);path=Z(`/`);params=Z({});queryParams=Z({});data=Z({});activeRoute=Z(null);constructor(){typeof window<`u`&&this.startListening()}configureRoutes(e,t){this.routes=[...e],t&&(this.options={...this.options,...t});let n=this.options.initialUrl||this.getCurrentLocationUrl();this.navigateByUrl(n,{replaceUrl:!0}),this.startListening()}getRoutes(){return[...this.routes]}startListening(){if(this.isListening||typeof window>`u`)return;this.isListening=!0;let e=()=>{this.options.mode!==`memory`&&this.navigateByUrl(this.getCurrentLocationUrl(),{skipLocationChange:!0})};window.addEventListener(`popstate`,e),window.addEventListener(`hashchange`,e)}getCurrentLocationUrl(){if(typeof window>`u`)return`/`;if(this.options.mode===`hash`){let e=window.location.hash.slice(1);return e.startsWith(`/`)?e:`/`+e}let e=window.location.pathname;return e&&e!==`/`&&!e.endsWith(`index.html`)?e+window.location.search:window.location.hash&&window.location.hash.startsWith(`#/`)?window.location.hash.slice(1):e||`/`}async navigate(e,t){let n=e;if(t?.queryParams){let e=Ae(t.queryParams),r=n.includes(`?`)?`&`:``;n=n+r+(e.startsWith(`?`)?e.slice(1):e)}return this.navigateByUrl(n,t)}async navigateByUrl(e,t){let[n,r]=e.split(`?`),i=J(n||`/`),a=ke(r||``),o=this.findMatchingRoute(i);if(!o)return console.warn(`[Purity Router] No matching route found for path "${i}"`),!1;let{route:s,params:c}=o;if(s.redirectTo)return this.navigate(s.redirectTo,t);if(s.canActivate&&s.canActivate.length>0){let t={url:e,path:i,params:c,queryParams:a,data:s.data||{}};for(let e of s.canActivate){let n=!0;if(typeof e==`function`){if(e.prototype&&typeof e.prototype.canActivate==`function`){let r=e,i;try{i=R.resolve(r)}catch{i=new r}n=await i.canActivate(s,t)}else n=await e(s,t)}else if(typeof e==`string`)try{let r=R.resolve(e);r&&typeof r.canActivate==`function`&&(n=await r.canActivate(s,t))}catch(t){return console.error(`[Purity Router] Failed to resolve guard token "${e}"`,t),!1}if(!n)return!1}}if(this.path.set(i),this.params.set(c),this.queryParams.set(a),this.data.set(s.data||{}),this.activeRoute.set(s),this.url.set(e),typeof window<`u`&&!t?.skipLocationChange&&this.options.mode!==`memory`){let n=this.options.mode===`hash`?`#${e}`:e;t?.replaceUrl?window.history.replaceState(t?.state||{},``,n):window.history.pushState(t?.state||{},``,n)}if(typeof document<`u`){let e=null;try{e=R.resolve(`SeoService`)}catch{}let t=s.seo||s.data?.seo;if(t){let n=typeof t==`function`?t(c,s.data||{}):t;e?e.setSeo(n):n.title&&(document.title=n.title)}else if(s.title){let t=typeof s.title==`function`?s.title(c):s.title;e?e.setTitle(t):document.title=t}}return this.options.scrollRestoration&&typeof window<`u`&&!t?.skipLocationChange&&window.scrollTo({top:0,left:0,behavior:`instant`}),!0}findMatchingRoute(e){let t=null;for(let n of this.routes){if(n.path===`**`||n.path===`/**`){t=n;continue}let r=je(n.path,e);if(r)return{route:n,params:r.params}}return t?{route:t,params:{wildcard:e}}:null}back(){typeof window<`u`&&window.history.back()}forward(){typeof window<`u`&&window.history.forward()}getOptions(){return{...this.options}}isActive(e,t=!1){let n=this.path(),r=J(e);return t||r===`/`?n===r:n.startsWith(r)}},Ne=class{router=R.resolve(`Router`);currentRenderedComponent=null;currentMountedElement=null;onInit(){this.classList.add(`purity-router-layout`),Q(()=>{let e=this.router.activeRoute();this.renderRouteComponent(e)})}onDestroy(){this.teardownCurrentComponent()}teardownCurrentComponent(){if(this.currentRenderedComponent&&typeof this.currentRenderedComponent.onDestroy==`function`)try{this.currentRenderedComponent.onDestroy()}catch(e){console.error(`[Purity Router] Error in component onDestroy:`,e)}this.currentMountedElement&&this.currentMountedElement.parentNode&&this.currentMountedElement.parentNode.removeChild(this.currentMountedElement),this.currentRenderedComponent=null,this.currentMountedElement=null}renderRouteComponent(e){let t=this;if(this.teardownCurrentComponent(),t.innerHTML=``,!e||!e.component)return;let n=null;if(typeof e.component==`string`)n=document.createElement(e.component),this.currentMountedElement=n,this.currentRenderedComponent=n;else if(typeof e.component==`function`){let t=e.component,r=t.selector||t.__options?.selector;if(!r&&typeof t.name==`string`&&(r=t.name.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/[\s_]+/g,`-`).toLowerCase().replace(/-component$/,``)),r)n=document.createElement(r),this.currentMountedElement=n,this.currentRenderedComponent=n;else try{let e=new t;this.currentRenderedComponent=e,e instanceof HTMLElement&&(n=e,this.currentMountedElement=n)}catch(e){console.error(`[Purity Router] Failed to instantiate route component`,e)}}n&&(this.currentRenderedComponent&&(`routeParams`in this.currentRenderedComponent&&(this.currentRenderedComponent.routeParams=this.router.params),`queryParams`in this.currentRenderedComponent&&(this.currentRenderedComponent.queryParams=this.router.queryParams),`routeData`in this.currentRenderedComponent&&(this.currentRenderedComponent.routeData=this.router.data)),t.appendChild(n))}},Pe=class extends r{router=R.resolve(`Router`);clickHandler;onInit(){this.clickHandler=e=>{if(e.button!==0||e.ctrlKey||e.metaKey||e.shiftKey)return;e.preventDefault();let t=this.value||this.element.getAttribute(`routerLink`)||this.element.getAttribute(`href`)||`/`;this.router.navigate(t)},this.element.addEventListener(`click`,this.clickHandler),Q(()=>{let e=this.value||this.element.getAttribute(`routerLink`)||this.element.getAttribute(`href`)||`/`,t=this.router.isActive(e,e===`/`);if(this.element.tagName===`A`){let t=this.router.getOptions().mode===`hash`;this.element.setAttribute(`href`,t?`#${e}`:e)}this.element.classList.toggle(`active-link`,t),this.element.classList.toggle(`active-route`,t),this.element.setAttribute(`aria-current`,t?`page`:`false`)})}onChanges(e){this.value=e}onDestroy(){this.clickHandler&&this.element.removeEventListener(`click`,this.clickHandler)}};z(`Router`)(Me),me({selector:`router-layout`})(Ne),n(`routerLink`)(Pe);var Fe=`ENVIRONMENT`,Ie=null;function Le(){return Ie}async function Re(e,t={}){let n=t.environment||{production:!1};if(R.registerValue(Fe,n),R.registerValue(`ENVIRONMENT`,n),t.providers&&Array.isArray(t.providers))for(let e of t.providers)typeof e==`function`?R.register(e,e):e&&typeof e==`object`&&(`useValue`in e?R.registerValue(e.provide,e.useValue):`useClass`in e&&R.register(e.provide,e.useClass));if(t.interceptors&&Array.isArray(t.interceptors)){let e=R.resolve(q);for(let n of t.interceptors)typeof n==`function`?n.prototype&&typeof n.prototype.intercept==`function`?e.use(new n):e.use(n):n&&typeof n.intercept==`function`&&e.use(n)}try{R.resolve(`ThemeService`)}catch{if(typeof document<`u`){let e=(typeof localStorage<`u`?localStorage.getItem(`purity-theme`):null)===`light`?`light`:`dark`;document.documentElement.setAttribute(`data-theme`,e),document.body?.setAttribute(`data-theme`,e)}}t.routes&&Array.isArray(t.routes)&&R.resolve(Me).configureRoutes(t.routes,t.routerOptions);let r=t.rootSelector||(e.selector?e.selector:null),i=null;r&&typeof document<`u`&&(i=document.querySelector(r));let a={rootComponent:e,rootElement:i,environment:n,destroy:()=>{i&&typeof i.disconnectedCallback==`function`&&i.disconnectedCallback(),i&&i.parentNode&&i.parentNode.removeChild(i),Ie=null,typeof window<`u`&&delete window.__PURITY_APP__}};return Ie=a,typeof window<`u`&&(window.__PURITY_APP__=a,n.enableDebugTools!==!1&&!n.production&&console.log(`%c[Purity] 🚀 ${n.appName||`Application`} bootstrapped successfully (v${n.version||`1.0.0`}) [Dev Mode]`,`color: #3584e4; font-weight: bold; font-size: 11px;`)),a}var Y=class{defaultSiteName=`Purity`;currentConfig={};setTitle(e,t){if(typeof document>`u`)return;let n=t?.separator||` - `,r=e;t?.prefix&&(r=`${t.prefix}${n}${r}`),t?.suffix&&(r=`${r}${n}${t.suffix}`),document.title=r,this.updateTag({name:`title`,content:r}),this.updateTag({property:`og:title`,content:r}),this.updateTag({name:`twitter:title`,content:r}),this.currentConfig.title=r}getTitle(){return typeof document<`u`?document.title:``}setDescription(e){this.updateTag({name:`description`,content:e}),this.updateTag({property:`og:description`,content:e}),this.updateTag({name:`twitter:description`,content:e}),this.currentConfig.description=e}setKeywords(e){let t=Array.isArray(e)?e.join(`, `):e;this.updateTag({name:`keywords`,content:t}),this.currentConfig.keywords=t}setCanonicalUrl(e){if(typeof document>`u`)return;let t=document.querySelector(`link[rel="canonical"]`);t||(t=document.createElement(`link`),t.setAttribute(`rel`,`canonical`),document.head.appendChild(t)),t.setAttribute(`href`,e),this.updateTag({property:`og:url`,content:e}),this.updateTag({name:`twitter:url`,content:e}),this.currentConfig.canonical=e}setRobots(e){if(typeof e==`string`){this.updateTag({name:`robots`,content:e}),this.currentConfig.robots=e;return}let t=[];t.push(e.index===!1?`noindex`:`index`),t.push(e.follow===!1?`nofollow`:`follow`),e.noarchive&&t.push(`noarchive`),e.nosnippet&&t.push(`nosnippet`),e.maxSnippet!==void 0&&t.push(`max-snippet:${e.maxSnippet}`),e.maxImagePreview&&t.push(`max-image-preview:${e.maxImagePreview}`),e.maxVideoPreview!==void 0&&t.push(`max-video-preview:${e.maxVideoPreview}`);let n=t.join(`, `);this.updateTag({name:`robots`,content:n}),this.currentConfig.robots=e}setOpenGraph(e){e.title&&this.updateTag({property:`og:title`,content:e.title}),e.description&&this.updateTag({property:`og:description`,content:e.description}),e.url&&this.updateTag({property:`og:url`,content:e.url}),e.type&&this.updateTag({property:`og:type`,content:e.type||`website`}),e.siteName&&this.updateTag({property:`og:site_name`,content:e.siteName||this.defaultSiteName}),e.locale&&this.updateTag({property:`og:locale`,content:e.locale||`en_US`}),e.image&&(this.updateTag({property:`og:image`,content:e.image}),(e.imageSecureUrl||e.image.startsWith(`https://`))&&this.updateTag({property:`og:image:secure_url`,content:e.imageSecureUrl||e.image}),e.imageType&&this.updateTag({property:`og:image:type`,content:e.imageType}),e.imageWidth&&this.updateTag({property:`og:image:width`,content:String(e.imageWidth)}),e.imageHeight&&this.updateTag({property:`og:image:height`,content:String(e.imageHeight)}),e.imageAlt&&this.updateTag({property:`og:image:alt`,content:e.imageAlt}));for(let[t,n]of Object.entries(e))if(![`title`,`description`,`url`,`type`,`siteName`,`locale`,`image`,`imageSecureUrl`,`imageType`,`imageWidth`,`imageHeight`,`imageAlt`].includes(t)&&n!==void 0){let e=t.startsWith(`og:`)?t:`og:${t}`;this.updateTag({property:e,content:String(n)})}this.currentConfig.og={...this.currentConfig.og,...e}}setTwitterCard(e){this.updateTag({name:`twitter:card`,content:e.card||`summary`}),e.site&&this.updateTag({name:`twitter:site`,content:e.site}),e.creator&&this.updateTag({name:`twitter:creator`,content:e.creator}),e.title&&this.updateTag({name:`twitter:title`,content:e.title}),e.description&&this.updateTag({name:`twitter:description`,content:e.description}),e.image&&this.updateTag({name:`twitter:image`,content:e.image}),e.imageAlt&&this.updateTag({name:`twitter:image:alt`,content:e.imageAlt});for(let[t,n]of Object.entries(e))if(![`card`,`site`,`creator`,`title`,`description`,`image`,`imageAlt`].includes(t)&&n!==void 0){let e=t.startsWith(`twitter:`)?t:`twitter:${t}`;this.updateTag({name:e,content:String(n)})}this.currentConfig.twitter={...this.currentConfig.twitter,...e}}setJsonLd(e,t=`purity-jsonld-schema`){if(typeof document>`u`)return;let n=document.getElementById(t);n||(n=document.createElement(`script`),n.type=`application/ld+json`,n.id=t,document.head.appendChild(n)),n.textContent=JSON.stringify(e,null,2),this.currentConfig.jsonLd=e}updateTag(e){if(typeof document>`u`)return null;let t=this.buildTagSelector(e),n=t?document.querySelector(t):null;n||(n=document.createElement(`meta`),document.head.appendChild(n));for(let[t,r]of Object.entries(e))r!=null&&n.setAttribute(t,String(r));return n}getTag(e){if(typeof document>`u`)return null;let t=e.startsWith(`meta[`)?e:`meta[${e}]`;return document.querySelector(t)}removeTag(e){if(typeof document>`u`)return;let t=e.startsWith(`meta[`)?e:`meta[${e}]`,n=document.querySelector(t);n&&n.parentNode&&n.parentNode.removeChild(n)}setSeo(e){if(e.title&&this.setTitle(e.title,{prefix:e.titlePrefix,suffix:e.titleSuffix}),e.description&&this.setDescription(e.description),e.keywords&&this.setKeywords(e.keywords),e.author&&this.updateTag({name:`author`,content:e.author}),e.canonical&&this.setCanonicalUrl(e.canonical),e.robots&&this.setRobots(e.robots),e.og&&this.setOpenGraph(e.og),e.twitter&&this.setTwitterCard(e.twitter),e.jsonLd&&this.setJsonLd(e.jsonLd),e.metaTags&&Array.isArray(e.metaTags))for(let t of e.metaTags)this.updateTag(t)}getSeo(){return{...this.currentConfig}}buildTagSelector(e){return e.name?`meta[name="${e.name}"]`:e.property?`meta[property="${e.property}"]`:e.httpEquiv?`meta[http-equiv="${e.httpEquiv}"]`:null}},ze=class extends Y{};z(`SeoService`)(Y),z(`MetaService`)(ze);var X=[],Z=e=>{let t=e,n=new Set,r=(()=>{let e=X[X.length-1];return e&&n.add(e),t});return r.set=e=>{Object.is(t,e)||(t=e,n.forEach(e=>e()))},r.update=e=>{r.set(e(t))},r},Q=e=>{let t=!0,n=()=>{if(t){X.push(n);try{e()}finally{X.pop()}}};return n(),()=>{t=!1}},$=e=>{let t=[...X];X.length=0;try{return e()}finally{for(let e of t)X.push(e)}},Be=e=>{let t=Z(void 0);return Q(()=>{t.set(e())}),(()=>t())},Ve=(e,t,n=``)=>{e&&e.forEach(e=>{e.innerHTML=t??n})},He=(e,t)=>{e&&e.forEach(e=>{e.className=t})},Ue=(e,t,n=``)=>{e&&e.forEach(e=>{e.value=t??n})},We=(e,t,n)=>(e&&e.forEach(e=>{e.addEventListener(t,n)}),{dispose:()=>{e&&e.forEach(e=>{e.removeEventListener(t,n)})}}),Ge=(e,t)=>(t||document).querySelector(e),Ke=(e,t)=>{let n=new Map,r=t||document;return Object.entries(e).forEach(([e,t])=>{let i=r.querySelector(t);i&&n.set(e,i)}),n};exports.BaseDirective=r,exports.BasePipe=u,exports.BaseValidator=a,exports.ChildView=_e,exports.Component=me,exports.Directive=n,exports.ENVIRONMENT_TOKEN=Fe,exports.HTTP_INTERCEPTORS=U,exports.HttpClient=q,exports.HttpErrorResponse=H,exports.HttpFetchBackend=Te,exports.HttpHeaders=B,exports.HttpParams=V,exports.HttpRequest=Se,exports.HttpResponse=Ce,exports.Injectable=z,exports.MetaService=ze,exports.Pipe=p,exports.Router=Me,exports.RouterLayoutComponent=Ne,exports.RouterLinkDirective=Pe,exports.SeoService=Y,exports.Service=ye,exports.Validator=s,exports.ViewChild=he,exports.bindDirectives=i,exports.bindValidators=l,exports.bindVirtualFor=b,exports.bootstrapApplication=Re,exports.componentRegistry=C,exports.computed=Be,exports.container=R,exports.createComponentContext=ce,exports.defineComponent=ve,exports.directiveRegistry=e,exports.effect=Q,exports.eventListener=We,exports.executePipe=g,exports.getApplicationRef=Le,exports.getElement=Ge,exports.getElements=Ke,exports.getElseIfAttribute=k,exports.getForAttribute=M,exports.getIfAttribute=O,exports.getPipe=h,exports.getVirtualForAttribute=v,exports.hasElseAttribute=A,exports.hasForAttribute=N,exports.hasVirtualForAttribute=y,exports.inject=be,exports.isInsideNestedComponent=D,exports.isStructuralConditional=j,exports.matchRoutePattern=je,exports.mountComponentOnElement=se,exports.normalizeDirectiveSelector=t,exports.normalizePath=J,exports.parseQueryString=ke,exports.parseVirtualForExpression=te,exports.provideHttpInterceptors=we,exports.registerPipe=m,exports.registerValue=xe,exports.removeVirtualForAttributes=ee,exports.serializeQueryParams=Ae,exports.signal=Z,exports.startLoadingCursor=De,exports.stopLoadingCursor=Oe,exports.transformPipeExpression=w,exports.untrack=$,exports.updateStyles=He,exports.updateTargets=Ve,exports.updateValues=Ue,exports.validatorRegistry=o;
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types/core';
|