@blukavantui/community 1.1.0 → 1.2.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/dist/build-audit.json +127 -65
- package/dist/checkbox.js +1 -1
- package/dist/chunk-4LHIQROI.js +0 -0
- package/dist/chunk-6T677NSC.js +1 -0
- package/dist/chunk-7CEOCZ5L.js +0 -0
- package/dist/chunk-7DXFNK7C.js +1 -0
- package/dist/chunk-CNIIMGT3.js +0 -0
- package/dist/chunk-CSTCEBEK.js +1 -0
- package/dist/chunk-DRZM2AL3.js +0 -0
- package/dist/{chunk-JVE6CXCJ.js → chunk-EPPETNK6.js} +1 -1
- package/dist/chunk-EPPSBHZR.js +1 -0
- package/dist/{chunk-NTFHNL7T.js → chunk-G6OW4OZM.js} +1 -1
- package/dist/chunk-GS67ZBLI.js +1 -0
- package/dist/{chunk-6EHKOVZK.js → chunk-HVR2UDFX.js} +1 -1
- package/dist/chunk-IKYBFMHI.js +1 -0
- package/dist/chunk-KVOA55NE.js +0 -0
- package/dist/{chunk-MZBB5ROJ.js → chunk-LF2HELEZ.js} +1 -1
- package/dist/{chunk-UEOCR2C3.js → chunk-OLDA73XG.js} +2 -2
- package/dist/{chunk-IZJN3EF7.js → chunk-T45FJNEQ.js} +1 -1
- package/dist/chunk-TZSX4OTV.js +1 -0
- package/dist/{chunk-GK3INPAZ.js → chunk-V2YPIC6Z.js} +1 -1
- package/dist/chunk-V4ZQLQ7L.js +0 -0
- package/dist/chunk-VAM3FPCS.js +0 -0
- package/dist/chunk-VSTKXZYY.js +0 -0
- package/dist/chunk-WG4US4JH.js +1 -0
- package/dist/chunk-WGSTNXAQ.js +0 -0
- package/dist/chunk-WJHCVECU.js +1 -0
- package/dist/chunk-Y4AXWTAD.js +0 -0
- package/dist/chunk-YLFXSHKZ.js +0 -0
- package/dist/chunk-ZDGZGAYG.js +0 -0
- package/dist/command-palette.js +1 -1
- package/dist/component-motion.css +39 -0
- package/dist/component-motion.d.ts +45 -0
- package/dist/component-motion.js +1 -0
- package/dist/content.js +1 -1
- package/dist/core.css +8 -0
- package/dist/core.js +1 -1
- package/dist/data-motion.css +4 -0
- package/dist/data-motion.d.ts +23 -0
- package/dist/data-motion.js +1 -0
- package/dist/data.js +1 -1
- package/dist/date-picker.js +1 -1
- package/dist/date-range-picker.js +1 -1
- package/dist/date-time-picker.js +1 -1
- package/dist/drawer.js +1 -1
- package/dist/essentials.css +8 -0
- package/dist/feedback.js +1 -1
- package/dist/form-layout.js +1 -1
- package/dist/index.js +1 -1
- package/dist/inputs.js +1 -1
- package/dist/layout.js +1 -1
- package/dist/modal.js +1 -1
- package/dist/motion/action-feedback.d.ts +14 -0
- package/dist/motion/border-glow.d.ts +12 -0
- package/dist/motion/button.d.ts +11 -0
- package/dist/motion/component-settings.d.ts +51 -0
- package/dist/motion/controller.d.ts +33 -0
- package/dist/motion/effects.d.ts +30 -0
- package/dist/motion/feedback.d.ts +6 -0
- package/dist/motion/loading.d.ts +9 -0
- package/dist/motion/optional.d.ts +35 -0
- package/dist/motion/photo.d.ts +7 -0
- package/dist/motion/presence.d.ts +12 -0
- package/dist/motion/scene.d.ts +10 -0
- package/dist/motion/screen.d.ts +6 -0
- package/dist/motion/scroll-reveal.d.ts +13 -0
- package/dist/motion/settings-group.d.ts +14 -0
- package/dist/motion/stagger.d.ts +12 -0
- package/dist/motion/structure.d.ts +18 -0
- package/dist/motion/tabs.d.ts +19 -0
- package/dist/motion/tokens.d.ts +11 -0
- package/dist/motion/value.d.ts +21 -0
- package/dist/motion/view-transition.d.ts +14 -0
- package/dist/motion-enhancers.d.ts +12 -0
- package/dist/motion-enhancers.js +1 -0
- package/dist/motion-settings.d.ts +3 -0
- package/dist/motion-settings.js +1 -0
- package/dist/motion.css +1076 -0
- package/dist/motion.d.ts +20 -0
- package/dist/motion.js +1 -0
- package/dist/native/form-layout.js +1 -1
- package/dist/native-motion-components.d.ts +3 -0
- package/dist/native-motion-content.d.ts +1 -0
- package/dist/native-motion-foundations.d.ts +3 -0
- package/dist/native-motion-layout.d.ts +3 -0
- package/dist/native-motion-pilot.d.ts +34 -0
- package/dist/native-motion.d.ts +71 -0
- package/dist/notification.js +1 -1
- package/dist/pagination.js +1 -1
- package/dist/radio-button.js +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/sizes.json +273 -151
- package/dist/skeleton.css +8 -0
- package/dist/styles.css +1130 -0
- package/dist/switch.js +1 -1
- package/dist/table.js +1 -1
- package/dist/time-picker.js +1 -1
- package/dist/tree-view.js +1 -1
- package/dist/web-motion/chip-ripple.d.ts +6 -0
- package/dist/web-motion/choice-ripple.d.ts +6 -0
- package/dist/web-motion/content.d.ts +9 -0
- package/dist/web-motion/data-rows.d.ts +12 -0
- package/dist/web-motion/fields.d.ts +6 -0
- package/dist/web-motion/navigation.d.ts +6 -0
- package/dist/web-motion/notifications.d.ts +6 -0
- package/dist/web-motion/select-ripple.d.ts +6 -0
- package/dist/web-motion/statistic.d.ts +13 -0
- package/dist/web-motion/surfaces.d.ts +10 -0
- package/dist/web-motion/tree.d.ts +6 -0
- package/docs/FORM-LAYOUT-ESSENTIALS.md +4 -4
- package/edition.json +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +29 -3
- package/scripts/build-motion-css.mjs +36 -0
- package/scripts/build-motion-styles.mjs +29 -0
- package/scripts/build.mjs +5 -1
- package/scripts/motion-entries.mjs +2 -0
- package/src/component-motion.ts +101 -0
- package/src/data-motion.ts +60 -0
- package/src/form-layout/choice.ts +17 -1
- package/src/motion/action-feedback.ts +38 -0
- package/src/motion/border-glow.ts +41 -0
- package/src/motion/button.ts +56 -0
- package/src/motion/component-settings.ts +147 -0
- package/src/motion/controller.ts +191 -0
- package/src/motion/effects.ts +75 -0
- package/src/motion/feedback.ts +41 -0
- package/src/motion/loading.ts +40 -0
- package/src/motion/optional.ts +123 -0
- package/src/motion/photo.ts +19 -0
- package/src/motion/presence.ts +44 -0
- package/src/motion/scene.ts +103 -0
- package/src/motion/screen.ts +15 -0
- package/src/motion/scroll-reveal.ts +49 -0
- package/src/motion/settings-group.ts +28 -0
- package/src/motion/stagger.ts +26 -0
- package/src/motion/structure.ts +75 -0
- package/src/motion/tabs.ts +105 -0
- package/src/motion/tokens.ts +2 -0
- package/src/motion/value.ts +61 -0
- package/src/motion/view-transition.ts +57 -0
- package/src/motion-enhancers.ts +12 -0
- package/src/motion-settings.ts +3 -0
- package/src/motion.ts +20 -0
- package/src/native-motion-components.ts +76 -0
- package/src/native-motion-content.ts +10 -0
- package/src/native-motion-foundations.ts +56 -0
- package/src/native-motion-layout.ts +35 -0
- package/src/native-motion-pilot.ts +151 -0
- package/src/native-motion.ts +188 -0
- package/src/web-motion/chip-ripple.ts +31 -0
- package/src/web-motion/choice-ripple.ts +30 -0
- package/src/web-motion/content.ts +74 -0
- package/src/web-motion/data-rows.ts +106 -0
- package/src/web-motion/fields.ts +52 -0
- package/src/web-motion/navigation.ts +62 -0
- package/src/web-motion/notifications.ts +67 -0
- package/src/web-motion/select-ripple.ts +23 -0
- package/src/web-motion/statistic.ts +23 -0
- package/src/web-motion/surfaces.ts +137 -0
- package/src/web-motion/tree.ts +44 -0
- package/styles/component-motion.css +39 -0
- package/styles/data-motion.css +4 -0
- package/styles/motion-optional.css +15 -0
- package/styles/motion-presets.css +92 -0
- package/styles/motion-tokens.css +6 -0
- package/styles/motion.css +125 -0
- package/styles/skeleton.css +8 -0
- package/test/component-motion-settings.test.mjs +35 -0
- package/test/content-overlay-motion.test.mjs +36 -0
- package/test/isolation.test.mjs +1 -1
- package/test/motion.test.mjs +215 -0
- package/dist/chunk-GXHANADL.js +0 -1
- /package/dist/{chunk-3PNBQVYS.js → chunk-2BSBXDOT.js} +0 -0
- /package/dist/{chunk-H7ETPJVW.js → chunk-3PODK22R.js} +0 -0
- /package/dist/{chunk-SIU7DSOA.js → chunk-KBWB4OIF.js} +0 -0
- /package/dist/{chunk-OPMD7QNV.js → chunk-W3H7XTA7.js} +0 -0
- /package/dist/{chunk-XWXEH3SW.js → chunk-XVMJG26X.js} +0 -0
package/dist/motion.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Experimental web-only 1.2 entry. Not exported by the published 1.1.0 package. */
|
|
2
|
+
export * from './motion/controller.js';
|
|
3
|
+
export * from './motion/view-transition.js';
|
|
4
|
+
export * from './motion/button.js';
|
|
5
|
+
export * from './motion/loading.js';
|
|
6
|
+
export * from './motion/effects.js';
|
|
7
|
+
export * from './motion/presence.js';
|
|
8
|
+
export * from './motion/stagger.js';
|
|
9
|
+
export * from './motion/scroll-reveal.js';
|
|
10
|
+
export * from './motion/structure.js';
|
|
11
|
+
export * from './motion/feedback.js';
|
|
12
|
+
export * from './motion/value.js';
|
|
13
|
+
export * from './motion/scene.js';
|
|
14
|
+
export * from './motion/photo.js';
|
|
15
|
+
export * from './motion/border-glow.js';
|
|
16
|
+
export * from './motion/tabs.js';
|
|
17
|
+
export * from './motion/action-feedback.js';
|
|
18
|
+
export * from './motion/screen.js';
|
|
19
|
+
export * from './motion/tokens.js';
|
|
20
|
+
export * from './motion/optional.js';
|
package/dist/motion.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as ce}from"./chunk-7DXFNK7C.js";import{a as j,c as U}from"./chunk-SDMH2EVD.js";import{a as ae,b as W,c as _,d as Z,e as se,f as le}from"./chunk-CSTCEBEK.js";import{a as be,b as ge,c as ye,d as he,e as Me,f as we,g as ve,h as Ee}from"./chunk-IKYBFMHI.js";import{a as R,b as de,c as ue,d as fe,e as me,f as pe,g as J}from"./chunk-6T677NSC.js";var K=Object.freeze({fast:280,normal:450,slow:750,layout:650,highlight:1400,reduced:200,maxDuration:2e3,maxDelay:500});var $=new WeakSet;function te(e,t){return e==="off"?"off":e==="reduced"||t?"reduced":"full"}function B(e,t,n=2e3){return e!==void 0&&Number.isFinite(e)?Math.min(n,Math.max(0,e)):t}function re(e,t){let n=/^([\d.]+)(ms|s)$/.exec(e.trim());return n?B(Number(n[1])*(n[2]==="s"?1e3:1),t):t}function Le(e,t="system"){if(!["system","reduced","off"].includes(t))throw new Error("Unknown motion preference.");if($.has(e))throw new Error("This scope already has a motion controller.");let n=e.ownerDocument.defaultView;if(!n)throw new Error("A browser document is required.");let c=n.matchMedia("(prefers-reduced-motion: reduce)"),l=e.getAttribute("data-blu-motion"),a=new Map,i=t,o=!1,d=()=>te(i,c.matches);function u(){e.setAttribute("data-blu-motion",d());for(let r of Array.from(a.values()))r.cancel()}$.add(e),c.addEventListener("change",u),u();function b(r){if(!e.contains(r))throw new Error("Motion target must be inside its controller scope.");return d()==="full"&&!r.closest?.('[data-blu-motion="off"], [data-blu-motion="reduced"], .blu-motion-off')}let y={get mode(){return d()},get preference(){return i},setPreference(r){if(o)throw new Error("Motion controller is destroyed.");if(!["system","reduced","off"].includes(r))throw new Error("Unknown motion preference.");i=r,u()},cancel(r){a.get(r)?.cancel()},animate(r,h,p={},f="instant"){if(o)return Promise.resolve("cancelled");let w=b(r);if(a.get(r)?.cancel(),!w)return f==="fade"&&d()!=="off"&&!r.closest('.blu-motion-off, [data-blu-motion="off"]')?y.play(r,"fade",{...p,duration:Math.min(p.duration??200,200),delay:0}):Promise.resolve("finished");let v=B(p.duration,K.normal);return!v||!r.animate?Promise.resolve("finished"):new Promise(s=>{let m=r.animate(h,{duration:v,delay:B(p.delay,0,500),easing:_[p.easing||"standard"],fill:"both"}),M=!1,g={cancel:()=>E("cancelled")};function E(L){M||(M=!0,a.get(r)===g&&a.delete(r),m.cancel(),s(L))}a.set(r,g),m.finished.then(()=>E("finished"),()=>E("cancelled"))})},tween(r,h,p,f,w={}){if(!Number.isFinite(h)||!Number.isFinite(p))throw new Error("Numeric motion requires finite values.");if(o)return Promise.resolve("cancelled");let v=b(r);a.get(r)?.cancel();let s=B(w.duration,K.normal),m=B(w.delay,0,500);return!v||!s||!n.requestAnimationFrame?(f(p),Promise.resolve("finished")):new Promise((M,g)=>{let E=0,L,k=!1,C={cancel:()=>x("cancelled")};function x(V){k||(k=!0,n.cancelAnimationFrame(E),a.get(r)===C&&a.delete(r),M(V))}function S(V){if(k)return;L??(L=V);let T=Math.min(1,Math.max(0,(V-L-m)/s));try{f(T===1?p:h+(p-h)*ne(T,w.easing||"standard"))}catch(F){k=!0,a.delete(r),g(F);return}T===1?x("finished"):E=n.requestAnimationFrame(S)}a.set(r,C),E=n.requestAnimationFrame(S)})},play(r,h="fade",p={}){if(o)return Promise.resolve("cancelled");if(!e.contains(r))throw new Error("Motion target must be inside its controller scope.");if(a.get(r)?.cancel(),d()==="off"||r.closest?.('.blu-motion-off, [data-blu-motion="off"]')||!r.animate)return Promise.resolve("finished");let f=d()==="reduced"||!!r.closest?.('[data-blu-motion="reduced"]'),w=n.getComputedStyle(r),v=B(p.duration,re(w.getPropertyValue("--blu-motion-duration"),K.normal)),s=f?Math.min(v||(p.duration===0?0:200),200):v;if(!s)return Promise.resolve("finished");let m=w.getPropertyValue("--blu-motion-distance").trim()||"12px",M=Z(f?"fade":h,p.phase,m);if(!f&&p.origin){if(!(p.origin in W))throw new Error("Unknown motion origin.");for(let E of M)E.transformOrigin=W[p.origin]}let g=p.easing?_[p.easing]:w.getPropertyValue("--blu-motion-ease").trim()||_.standard;if(!g)throw new Error("Unknown motion easing.");return new Promise(E=>{let L=!1,k=r.animate(M,{duration:s,delay:f?0:B(p.delay,0,500),easing:f?_["ease-out"]:g,fill:"both"}),C={cancel:()=>x("cancelled")};function x(S){L||(L=!0,a.get(r)===C&&a.delete(r),k.cancel(),E(S))}a.set(r,C),k.finished.then(()=>x("finished"),()=>x("cancelled"))})},destroy(){if(!o){o=!0,c.removeEventListener("change",u);for(let r of Array.from(a.values()))r.cancel();l===null?e.removeAttribute("data-blu-motion"):e.setAttribute("data-blu-motion",l),$.delete(e)}}};return y}function ne(e,t){if(e<=0)return 0;if(e>=1)return 1;if(t==="linear")return e;let[n,c,l,a]=_[t].match(/[\d.]+/g).map(Number),i=(u,b,y)=>3*(1-u)**2*u*b+3*(1-u)*u*u*y+u**3,o=0,d=1;for(let u=0;u<20;u++){let b=(o+d)/2;i(b,n,l)<e?o=b:d=b}return i((o+d)/2,c,a)}function ke(e,t){let n=0,c=!1,l=e.getAttribute("aria-busy"),a=()=>l===null?e.removeAttribute("aria-busy"):e.setAttribute("aria-busy",l);return{async show(i,o={}){if(c)return"cancelled";if(i.contains(e)||i===e)throw new Error("A view cannot contain its outlet.");let d=++n,u=e.ownerDocument.defaultView.getComputedStyle(e).opacity;t.cancel(e),e.setAttribute("aria-busy","true");let b=()=>!c&&d===n;try{if(o.effect!=="instant"&&await t.animate(e,[{opacity:u},{opacity:0}],{phase:"exit",duration:280,easing:"ease-in-out"},"fade"),!b())return"cancelled";let y=e.ownerDocument.activeElement,r=!!y&&e.contains(y),h=y?.getAttribute("data-focus-key"),p=e.scrollTop,f=e.scrollLeft;if(e.replaceChildren(i),e.scrollTop=o.scroll==="top"?0:p,e.scrollLeft=o.scroll==="top"?0:f,r){let v=(h?Array.from(i.querySelectorAll("[data-focus-key]")).find(s=>s.getAttribute("data-focus-key")===h):void 0)||i.querySelector("[data-view-heading]")||i;!v.hasAttribute("tabindex")&&!v.matches("button,input,select,textarea,a[href]")&&(v.tabIndex=-1),v.focus({preventScroll:!0})}return o.effect!=="instant"&&await t.play(e,o.effect||"fade",{duration:o.duration??450,easing:"ease-in-out"}),b()?"finished":"cancelled"}finally{b()&&a()}},cancel(){++n,t.cancel(e),a()},destroy(){c||(c=!0,++n,t.cancel(e),a())}}}function oe(e){return e!==void 0&&Number.isFinite(e)?Math.min(100,Math.max(0,e)):void 0}function Re(e,t){let n=U(e),c=j("span"),l=j("span","blu-loading__visual"),a=j("progress"),i=j("span","blu-loading__bar"),o={...t},d=!1;n.className="blu-loading",c.id=n.id+"-label",l.setAttribute("aria-hidden","true");for(let b=0;b<3;b++)l.append(j("i"));a.max=100,a.setAttribute("aria-labelledby",c.id),i.setAttribute("role","progressbar"),i.setAttribute("aria-labelledby",c.id),n.append(l,a,i,c);function u(b){if(d)throw new Error("Loading indicator is destroyed.");o={...o,...b};let y=oe(o.Progress),r=y!==void 0||o.Variant==="Bar";n.dataset.variant=r?"Bar":o.Variant||"Spinner",c.textContent=o.Label,l.hidden=r,a.hidden=y===void 0,i.hidden=!r||y!==void 0,r?(n.removeAttribute("role"),n.removeAttribute("aria-labelledby")):(n.setAttribute("role","status"),n.setAttribute("aria-labelledby",c.id)),y===void 0?a.removeAttribute("value"):a.value=y}return u({}),{element:n,update:u,destroy(){d||(d=!0,n.remove())}}}function Oe(e,t){let n=e.hidden,c=e.inert,l=0,a=!1;return{async show(i={}){if(a)return"cancelled";let o=++l;return t.cancel(e),e.hidden=!1,e.inert=c,await t.play(e,i.effect||"fade",{...i,phase:"enter"}),!a&&l===o?"finished":"cancelled"},async hide(i={}){if(a)return"cancelled";if(e.contains(e.ownerDocument.activeElement)){let d=i.focusFallback;if(!d?.isConnected||e.contains(d))throw new Error("Provide a connected focusFallback outside the closing element.");if(d.focus({preventScroll:!0}),e.contains(e.ownerDocument.activeElement))throw new Error("focusFallback must be focusable.")}let o=++l;return t.cancel(e),e.inert=!0,e.hidden||await t.play(e,i.effect||"fade",{...i,phase:"exit"}),a||l!==o?"cancelled":(e.hidden=!0,"finished")},destroy(){a||(a=!0,++l,t.cancel(e),e.hidden=n,e.inert=c)}}}function ie(e,t="forward",n=1){if(!Number.isInteger(e)||e<0)throw Error("Stagger count must be a nonnegative integer.");if(!["forward","reverse","center","rows","columns"].includes(t))throw Error("Unknown stagger order.");if(!Number.isInteger(n)||n<1)throw Error("Stagger columns must be a positive integer.");return Array.from({length:e},(c,l)=>t==="reverse"?e-1-l:t==="center"?Math.floor(Math.abs(l-(e-1)/2)):t==="rows"?Math.floor(l/n):t==="columns"?l%n:l)}function Be(e,t,n="fade",c={}){let l=B(c.gap,45,150),a=B(c.delay,0,500),i=Array.from(t),o=ie(i.length,c.order,c.columns);return Promise.all(i.map((d,u)=>e.play(d,n,{...c,delay:Math.min(500,a+o[u]*l)})))}function Fe(e,t,n={}){let c=Array.from(new Set(e)),l=c[0]?.ownerDocument.defaultView,a=new Set,i=new Set,o=new Map,d=!1,u=Number.isFinite(n.threshold)?Math.min(1,Math.max(0,n.threshold)):.15,b=n.once!==!1,y=l?.IntersectionObserver,r=y?new y(h=>{if(!d)for(let p of h){let f=p.target;if(!(p.isIntersecting&&p.intersectionRatio>=u)){a.delete(f);continue}if(!f.isConnected||a.has(f)||b&&i.has(f))continue;a.add(f),i.add(f),b&&r.unobserve(f);let v={};o.set(f,v);let s=t.play(f,n.effect||"fade",{...n,phase:"enter"});n.onReveal?.(f),s.finally(()=>{o.get(f)===v&&o.delete(f)})}},{root:n.root||null,rootMargin:n.rootMargin||"0px",threshold:u}):null;for(let h of c)r?.observe(h);return{destroy(){if(!d){d=!0,r?.disconnect();for(let h of o.keys())t.cancel(h);o.clear(),a.clear(),i.clear()}}}}function Q(e){let t=new Map;for(let n of Array.from(e.querySelectorAll("[data-shared-key]"))){let c=n.dataset.sharedKey;if(!c||t.has(c))throw new Error("Shared elements need unique, nonempty data-shared-key values per view.");if(n.matches("button, input, select, textarea, a, [tabindex], [contenteditable], canvas, video, iframe")||n.querySelector("button, input, select, textarea, a, [tabindex], [contenteditable], canvas, video, iframe, [data-shared-key]"))throw new Error("Shared elements must be decorative text, image or SVG wrappers, without interactive or nested shared content.");t.set(c,n)}return t}function X(e,t,n){let c=0,l=!1,a=()=>{},i=new Map;return{async show(o,d={}){if(l)return"cancelled";if(o.parentNode||o===e||o.contains(e))throw new Error("Provide a detached next view.");let u=n?Q(o):new Map,b=++c,y=new Map(Array.from(i,([A,N])=>[A,N.getBoundingClientRect()]));a(),d={duration:280,...d};let r=e.firstElementChild,h=n&&r?Q(r):new Map,p=new Map(Array.from(h,([A,N])=>[A,y.get(A)||N.getBoundingClientRect()])),f=e.ownerDocument.activeElement,w=!!r?.contains(f),v=f?.dataset.focusKey,s=e.scrollTop,m=e.scrollLeft,M=R(e,["display","position","isolation","box-sizing","align-items"]),g=R(o,["grid-area","min-width"]),E=r?R(r,["grid-area","min-width"]):()=>{},L=r?.inert,k=r?.getAttribute("aria-hidden"),C=e.getBoundingClientRect().height,x=[e,o];r&&x.push(r);let S=[],V=[],T=!1,F=()=>{if(!T){T=!0;for(let A of x)t.cancel(A);for(let A of V)A.remove();i.clear();for(let A of S)A();r?.remove(),E(),g(),M(),r&&(r.inert=L,k===null?r.removeAttribute("aria-hidden"):r.setAttribute("aria-hidden",k))}};a=F;try{if(e.style.display="grid",e.style.alignItems="start",e.style.position="relative",e.style.isolation="isolate",e.style.boxSizing="border-box",o.style.gridArea="1 / 1",o.style.minWidth="0",r&&(r.style.gridArea="1 / 1",r.style.minWidth="0"),e.append(o),w){let P=v?Array.from(o.querySelectorAll("[data-focus-key]")).find(H=>H.dataset.focusKey===v):null,O=P||o.querySelector("[data-view-heading]")||o,D=O.getAttribute("tabindex");P||(O.tabIndex=-1),O.focus({preventScroll:!0}),P||(D===null?O.removeAttribute("tabindex"):O.setAttribute("tabindex",D))}r&&(r.inert=!0,r.setAttribute("aria-hidden","true")),e.scrollTop=s,e.scrollLeft=m;let A=[],N=e.getBoundingClientRect();for(let[P,O]of u){let D=h.get(P),H=p.get(P),z=O.getBoundingClientRect();if(!D||!H?.width||!H.height||!z.width||!z.height||t.mode!=="full")continue;let I=D.cloneNode(!0);for(let q of[I,...Array.from(I.querySelectorAll("*"))])q.removeAttribute("id"),q.removeAttribute("name"),q.removeAttribute("data-shared-key");I.inert=!0,I.setAttribute("aria-hidden","true"),I.setAttribute("data-motion-overlay",""),I.style.cssText+=`;position:absolute;pointer-events:none;margin:0;left:${H.left-N.left+e.scrollLeft-e.clientLeft}px;top:${H.top-N.top+e.scrollTop-e.clientTop}px;width:${H.width}px;height:${H.height}px;box-sizing:border-box;transform-origin:top left;z-index:10;`,e.append(I),V.push(I),x.push(I),i.set(P,I);for(let q of[D,O])S.push(R(q,["visibility"])),q.style.visibility="hidden";let ee=e.ownerDocument.defaultView.getComputedStyle(O);A.push(t.animate(I,[{transform:"none",width:H.width+"px",height:H.height+"px",borderRadius:e.ownerDocument.defaultView.getComputedStyle(D).borderRadius},{transform:`translate(${z.left-H.left}px, ${z.top-H.top}px)`,width:z.width+"px",height:z.height+"px",borderRadius:ee.borderRadius}],{easing:"ease-in-out",...d}))}if(r&&A.push(t.play(r,"fade",{...d,phase:"exit"})),A.push(t.play(o,"fade",{...d,phase:"enter"})),r){let P=e.ownerDocument.defaultView.getComputedStyle(e),O=parseFloat(P.paddingTop)+parseFloat(P.paddingBottom)+parseFloat(P.borderTopWidth)+parseFloat(P.borderBottomWidth);A.push(t.animate(e,[{height:C+"px"},{height:o.getBoundingClientRect().height+O+"px"}],d))}await Promise.all(A)}finally{c===b&&(F(),a=()=>{})}return!l&&c===b?"finished":"cancelled"},destroy(){l||(l=!0,++c,a(),a=()=>{})}}}function qe(e,t){return X(e,t,!1)}function je(e,t){return X(e,t,!0)}function We(e,t,n=1.2){if(!Number.isFinite(n)||n<1||n>2)throw new Error("Photo zoom must be between 1 and 2.");let c=R(e,["transform","transform-origin"]),l=0,a=!1;return e.style.transformOrigin="center",{async setZoomed(i,o={}){if(a)return"cancelled";let d=++l,u=e.ownerDocument.defaultView.getComputedStyle(e).transform;return t.cancel(e),e.style.transform=`scale(${i?n:1})`,await t.animate(e,[{transform:u},{transform:e.style.transform}],{duration:1e3,easing:"ease-in-out",...o}),!a&&d===l?"finished":"cancelled"},destroy(){a||(a=!0,++l,t.cancel(e),c())}}}var G=new WeakSet;function Y(e=12e3){if(!Number.isFinite(e)||e<4e3||e>6e4)throw Error("Border glow duration must be from 4000 to 60000 ms.");return e}function Ue(e,t={}){let n=Y(t.duration),c=t.paused??!1,l=!0,a=!1;if(G.has(e))throw Error("This element already has a border glow.");let i=e.ownerDocument,o=i.defaultView;if(!o||!e.isConnected)throw Error("Mount a border glow on a connected browser element.");let d=R(e,["position"]);o.getComputedStyle(e).position==="static"&&(e.style.position="relative");let u=i.createElement("span"),b=i.createElement("span"),y=i.createElement("span");u.className="blu-motion-border-glow",b.className="blu-motion-border-glow__rim",y.className="blu-motion-border-glow__beam",b.append(y),u.setAttribute("aria-hidden","true"),u.inert=!0,u.append(b),e.append(u),G.add(e);let r=()=>{u.style.setProperty("--blu-glow-duration",n+"ms"),u.dataset.paused=String(c||!l||i.hidden)},h=()=>u.style.setProperty("--blu-glow-size",Math.ceil(Math.hypot(e.offsetWidth+4,e.offsetHeight+4))+"px"),p=new ResizeObserver(h);p.observe(e),h();let f=typeof IntersectionObserver=="function"?new IntersectionObserver(w=>{l=w[0].isIntersecting,r()}):null;return f?.observe(e),i.addEventListener("visibilitychange",r),r(),{element:u,update(w){if(a)throw Error("Border glow is destroyed.");w.duration!==void 0&&(n=Y(w.duration)),w.paused!==void 0&&(c=w.paused),r()},destroy(){a||(a=!0,p.disconnect(),f?.disconnect(),i.removeEventListener("visibilitychange",r),u.remove(),d(),G.delete(e))}}}function Xe(e,t,n,c={}){let l=t[0]?.panel.parentElement;if(!t.length||!l||new Set(t.map(s=>s.key)).size!==t.length||t.some(s=>!s.key||!s.tab.id||!s.panel.id||!e.contains(s.tab)||s.panel.parentElement!==l))throw Error("Tabs need unique keys, tab/panel IDs and a shared panel container.");if(new Set(t.flatMap(s=>[s.tab.id,s.panel.id])).size!==t.length*2)throw Error("Tab and panel IDs must be unique.");let a=s=>!s.tab.disabled&&s.tab.getAttribute("aria-disabled")!=="true",i=t.find(s=>a(s)&&s.tab.getAttribute("aria-selected")==="true")||t.find(a);if(!i)throw Error("Tabs require an enabled tab.");let o=!1,d=0,u=()=>{},b=l.ownerDocument.defaultView,y=(s,m)=>{let M=m.map(g=>[g,s.getAttribute(g)]);return()=>{for(let[g,E]of M)E===null?s.removeAttribute(g):s.setAttribute(g,E)}},r=[y(e,["role","aria-orientation"])];e.setAttribute("role","tablist"),e.setAttribute("aria-orientation",c.orientation||"horizontal");for(let s of t)r.push(y(s.tab,["role","aria-controls","aria-selected","tabindex","type"]),y(s.panel,["role","aria-labelledby","aria-hidden","hidden","inert","tabindex"])),s.tab.type="button",s.tab.setAttribute("role","tab"),s.tab.setAttribute("aria-controls",s.panel.id),s.panel.setAttribute("role","tabpanel"),s.panel.setAttribute("aria-labelledby",s.tab.id),s.panel.tabIndex=0;function h(){for(let s of t){let m=s===i;s.tab.setAttribute("aria-selected",String(m)),s.tab.tabIndex=m?0:-1,s.panel.inert=!m,s.panel.setAttribute("aria-hidden",String(!m))}}h();for(let s of t)s.panel.hidden=s!==i;let p=J(e,n,"tabs");async function f(s){let m=t.find(T=>T.key===s);if(o||!m||!a(m))return"cancelled";if(m===i)return h(),"finished";let M=++d,g=i,E=l.getBoundingClientRect().height,L=b.getComputedStyle(g.panel).opacity,k=m.panel.hidden?"0":b.getComputedStyle(m.panel).opacity;u(),i=m,t.some(T=>T!==m&&T.panel.contains(l.ownerDocument.activeElement))&&m.tab.focus({preventScroll:!0}),h();for(let T of t)T.panel.hidden=T!==m&&T!==g;let C=R(l,["position","height","overflow","box-sizing"]),x=R(g.panel,["position","inset","width","box-sizing"]),S=!1,V=()=>{if(!S){S=!0,n.cancel(l),n.cancel(g.panel),n.cancel(m.panel),x(),C();for(let T of t)T.panel.hidden=T!==i}};u=V;try{l.style.position="relative",l.style.overflow="hidden",l.style.boxSizing="border-box",g.panel.style.position="absolute",g.panel.style.inset="0 auto auto 0",g.panel.style.width="100%",g.panel.style.boxSizing="border-box";let T=l.getBoundingClientRect().height;l.style.height=T+"px";let F=[n.animate(g.panel,[{opacity:L},{opacity:0}],{duration:450,phase:"exit",easing:"ease-in-out"},"fade"),n.animate(m.panel,[{opacity:k},{opacity:1}],{duration:450,easing:"ease-in-out"},"fade"),n.animate(l,[{height:E+"px"},{height:T+"px"}],{duration:450,easing:"ease-in-out"})];c.onChange?.(s),await Promise.all(F)}finally{d===M&&(V(),u=()=>{})}return!o&&d===M?"finished":"cancelled"}let w=s=>{let m=t.find(M=>M.tab.contains(s.target));m&&a(m)&&(m.tab.focus({preventScroll:!0}),f(m.key))},v=s=>{let m=t.find(S=>S.tab===s.target);if(!m)return;let M=t.filter(a),g=M.indexOf(m),E=c.orientation==="vertical",L=b.getComputedStyle(e).direction==="rtl",k=E?"ArrowUp":L?"ArrowRight":"ArrowLeft",C=E?"ArrowDown":L?"ArrowLeft":"ArrowRight",x;if(s.key===k&&(x=M[(g-1+M.length)%M.length]),s.key===C&&(x=M[(g+1)%M.length]),s.key==="Home"&&(x=M[0]),s.key==="End"&&(x=M.at(-1)),x){s.preventDefault();for(let S of t)S.tab.tabIndex=S===x?0:-1;x.tab.focus(),c.activation!=="manual"&&f(x.key)}};return e.addEventListener("click",w),e.addEventListener("keydown",v),{get activeKey(){return i.key},select:f,destroy(){if(!o){o=!0,++d,u(),p.destroy(),e.removeEventListener("click",w),e.removeEventListener("keydown",v);for(let s of r.reverse())s()}}}}function et(e,t){let n={role:e.getAttribute("role"),atomic:e.getAttribute("aria-atomic"),state:e.getAttribute("data-action-state")};e.setAttribute("role","status"),e.setAttribute("aria-atomic","true");let c=!1,l=!1,a=(i,o)=>{e.textContent=i,e.dataset.actionState=o,t.play(e,"fade",{duration:350,easing:"ease-out"})};return{get pending(){return l},async run(i,o){if(c)return"cancelled";if(l)return"busy";l=!0,a(o.pending,"pending");try{return await i(),c?"cancelled":(a(o.success,"success"),"success")}catch{return c?"cancelled":(a(o.error,"error"),"error")}finally{l=!1}},destroy(){if(!c){c=!0,t.cancel(e);for(let[i,o]of[["role",n.role],["aria-atomic",n.atomic],["data-action-state",n.state]])o===null?e.removeAttribute(i):e.setAttribute(i,o)}}}}function rt(e,t){let n=new WeakMap,c=new Map,l=!1,a=0;return{enter(i,o){if(l)return Promise.resolve("cancelled");if(!e.contains(i))throw Error("Screen content must be inside its scope.");if(n.get(i)===o)return Promise.resolve("finished");n.set(i,o);let d=++a;return c.set(i,d),t.animate(i,[{opacity:0,translate:"0px 12px"},{opacity:1,translate:"0px 0px"}],{duration:650,easing:"ease-out"},"fade").finally(()=>{c.get(i)===d&&c.delete(i)})},destroy(){if(!l){l=!0;for(let i of c.keys())t.cancel(i);c.clear()}}}}export{B as boundedTime,et as createActionFeedback,Ue as createBorderGlow,qe as createCrossfade,Ee as createEmphasis,ve as createIconTransition,fe as createLayoutTransition,Re as createLoadingIndicator,ce as createMotionButton,Le as createMotionController,Oe as createMotionPresence,Xe as createMotionTabs,he as createNumberTransition,We as createPhotoZoom,pe as createPressFeedback,ge as createProgressTransition,Me as createRipple,rt as createScreenMotion,Fe as createScrollReveal,je as createSharedElementTransition,we as createShimmer,ue as createSizeTransition,ye as createStrokeTransition,ke as createViewTransition,ne as easeProgress,be as finiteValue,se as motionClass,le as motionEasingClass,_ as motionEasings,ae as motionEffects,Z as motionFrames,W as motionOrigins,K as motionTiming,de as moveFocusOut,oe as normalizeProgress,me as playFeedback,Be as playStagger,R as preserveStyles,te as resolveMotionMode,ie as staggerRanks};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var ie=Object.defineProperty;var re=(u,l)=>{for(var t in l)ie(u,t,{get:l[t],enumerable:!0})};function f(u,l="",t){let e=document.createElement(u);return e.className=l,t!==void 0&&(e.textContent=t),e}var ae=0;function F(){return"blu-field-"+ ++ae+"-"+Math.random().toString(36).slice(2,8)}function R(u,l,t){t===void 0||t===!1||t===""?u.removeAttribute(l):u.setAttribute(l,String(t))}function v(u,l,t=!1){let e=f(t?"fieldset":"div","blu-field"),i=f(t?"legend":"label","blu-field__label"),a=f("div","blu-field__body"),y=f("div","blu-field__help"),p=f("div","blu-field__error"),o=l.Id||F();y.id=o+"-help",p.id=o+"-error",p.setAttribute("aria-live","polite"),e.append(i,a,y,p),u.append(e);function h(n,r){var c;e.className="blu-field blu-field--"+(n.Size||"Medium").toLowerCase()+(n.ExtendedClass?" "+n.ExtendedClass:""),e.dataset.invalid=String(!!n.Error),e.dataset.disabled=String(!!n.Disabled),i.textContent=(n.Label||"")+(n.Required?" *":""),i.hidden=!n.Label,!t&&r[0]&&((c=r[0]).id||(c.id=o),i.setAttribute("for",r[0].id)),y.textContent=n.Description||"",y.hidden=!n.Description,p.textContent=n.Error||"",p.hidden=!n.Error;let d=[n.Description?y.id:"",n.Error?p.id:""].filter(Boolean).join(" ");for(let b of r)R(b,"aria-describedby",d),R(b,"aria-invalid",n.Error?"true":void 0),R(b,"aria-required",n.Required?"true":void 0)}return{root:e,label:i,body:a,description:y,error:p,id:o,paint:h}}function V(u,l){let t=new AbortController,e=!1,i=u.closest("form");return i==null||i.addEventListener("reset",a=>queueMicrotask(()=>{!e&&!a.defaultPrevented&&l()}),{signal:t.signal}),{signal:t.signal,check(){if(e)throw Error("Component is destroyed.")},destroy(){e||(e=!0,t.abort(),u.remove())}}}function H(u,l){u.name=l.Name||"",u.disabled=!!l.Disabled,u.required=!!l.Required,"readOnly"in u&&(u.readOnly=!!l.ReadOnly),u.setCustomValidity(l.Error||"")}function I(u,l,t,e){return Number.isFinite(u)?Math.max(t,Math.min(e,u)):l}function te(u){let l=new URL(u,document.baseURI);if(!["http:","https:"].includes(l.protocol))throw Error("Adornment images must use an HTTP(S) or relative URL.");return l.href}function U(u,l,t,e){let i={...l},a=!1,y=v(u,i),p=f("label","blu-choice"),o=f("input","blu-choice__input"),h=f("span","blu-choice__mark"),n=f("span"),r=f("span","blu-choice__state");o.type=e==="radio"?"radio":"checkbox",e==="switch"&&o.setAttribute("role","switch"),p.classList.add("blu-choice--"+e),h.setAttribute("aria-hidden","true"),r.setAttribute("aria-hidden","true"),p.append(o,h,n,r),y.body.append(p);let d=V(y.root,b);function c(m){d.check(),a&&e==="radio"&&!("Checked"in m)&&(i.Checked=o.checked),i={...i,...m},y.paint(i,[o]),y.label.hidden=!0,y.label.removeAttribute("for"),H(o,i),o.checked=!!i.Checked,o.indeterminate=e==="checkbox"&&!!i.Indeterminate,o.value=i.Value||"on",R(o,"aria-readonly",i.ReadOnly?"true":void 0),n.textContent=(i.Label||"")+(i.Required?" *":""),r.textContent=o.checked?i.OnText||"":i.OffText||"",a=!0}function b(){c({Checked:!!l.Checked,Indeterminate:!!l.Indeterminate})}return o.addEventListener("click",m=>{i.ReadOnly&&m.preventDefault()},{signal:d.signal}),o.addEventListener("keydown",m=>{i.ReadOnly&&["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"," "].includes(m.key)&&m.preventDefault()},{signal:d.signal}),o.addEventListener("change",()=>{var m;i.Checked=o.checked,i.Indeterminate=!1,r.textContent=o.checked?i.OnText||"":i.OffText||"",(m=t.Change)==null||m.call(t,o.checked)},{signal:d.signal}),o.addEventListener("blur",()=>{var m;return(m=t.Blur)==null?void 0:m.call(t)},{signal:d.signal}),c({}),{element:y.root,control:o,update:c,reset:b,getValue:()=>o.checked,focus:()=>o.focus(),validate:()=>o.reportValidity(),destroy:d.destroy}}function J(u,l={},t={}){return U(u,l,t,"checkbox")}function z(u,l={},t={}){return U(u,l,t,"switch")}function G(u,l,t={}){return U(u,l,t,"radio")}function W(u,l,t={}){let e={...l},i=[],a=v(u,e,!0),y=e.Name||F(),p=V(a.root,h);function o(n){p.check();let r=!i.length||"Options"in n;if(e={...e,...n},new Set(e.Options.map(d=>d.Value)).size!==e.Options.length)throw Error("Radio option values must be unique.");a.body.className="blu-radio-group blu-radio-group--"+(e.Direction||"Vertical").toLowerCase(),r&&(a.body.replaceChildren(),i=e.Options.map((d,c)=>{let b=f("label","blu-choice blu-choice--radio"),m=f("input","blu-choice__input"),T=f("span","blu-choice__mark"),k=f("span");m.type="radio",m.id=a.id+"-"+c,m.value=d.Value,T.setAttribute("aria-hidden","true");let O=f("span","",d.Label);if(O.id=m.id+"-label",k.append(O),m.setAttribute("aria-labelledby",O.id),d.Description){let g=f("small","blu-choice__description",d.Description);g.id=m.id+"-description",k.append(g)}return b.append(m,T,k),a.body.append(b),m.onchange=()=>{var g;m.checked&&(e.Value=m.value,(g=t.Change)==null||g.call(t,m.value))},m.onclick=g=>{e.ReadOnly&&g.preventDefault()},m.onkeydown=g=>{e.ReadOnly&&["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"," "].includes(g.key)&&g.preventDefault()},m.onblur=()=>{var g;return(g=t.Blur)==null?void 0:g.call(t)},m})),a.paint(e,i),i.forEach((d,c)=>{H(d,e),d.name=e.Name||y,d.disabled=!!e.Disabled||!!e.Options[c].Disabled,d.checked=d.value===e.Value,R(d,"aria-readonly",e.ReadOnly?"true":void 0),e.Options[c].Description&&R(d,"aria-describedby",[d.getAttribute("aria-describedby"),d.id+"-description"].filter(Boolean).join(" "))})}function h(){o({Value:l.Value||""})}return o({}),{element:a.root,update:o,reset:h,getValue:()=>{var n;return((n=i.find(r=>r.checked))==null?void 0:n.value)||""},focus:()=>{var n;return(n=i.find(r=>r.checked&&!r.disabled)||i.find(r=>!r.disabled))==null?void 0:n.focus()},validate:()=>i.filter(n=>!n.disabled).every(n=>n.reportValidity()),destroy:p.destroy}}function $(u,l={},t={}){let e={...l},i=!1,a=v(u,e),y=f("div","blu-text"),p=f("input","blu-text__input"),o=f("span","blu-text__adornment"),h=f("span","blu-text__adornment"),n=f("button","blu-text__action","\xD7"),r=f("button","blu-text__action","Show");n.type=r.type="button",n.setAttribute("aria-label","Clear "+(e.Label||"text")),y.append(o,p,h,n,r),a.body.append(y);let d=V(a.root,O),c=new WeakMap;function b(g,L){if(c.get(g)!==(L==null?void 0:L.Kind)&&g.replaceChildren(),g.removeAttribute("role"),g.removeAttribute("aria-label"),g.removeAttribute("aria-hidden"),g.hidden=!L,!L){c.delete(g);return}if(c.set(g,L.Kind),L.Kind==="Image"){let S=g.querySelector("img")||f("img"),D=te(L.Src);S.src!==D&&(S.src=D),S.alt=L.Alt,S.parentNode||g.append(S)}else if(L.Kind==="Action"){let S=g.querySelector("button")||f("button","blu-text__action");S.type="button",S.textContent=L.Text,S.setAttribute("aria-label",L.Label),S.disabled=!!e.Disabled||!!e.ReadOnly,S.onclick=()=>{var D;return(D=t.Action)==null?void 0:D.call(t,L.Key,p.value)},S.parentNode||g.append(S)}else g.textContent=L.Text,L.Kind==="Icon"&&(R(g,"role",L.Label?"img":void 0),R(g,"aria-label",L.Label),R(g,"aria-hidden",L.Label?void 0:"true"))}function m(){n.hidden=!e.Clearable||!p.value||!!e.ReadOnly,r.hidden=!e.RevealPassword||e.Type!=="password"}function T(g){d.check(),e={...e,...g},a.paint(e,[p]),H(p,e),p.type=e.Type==="password"&&i?"text":e.Type||"text",p.value!==(e.Value||"")&&(p.value=e.Value||""),p.placeholder=e.Placeholder||"",R(p,"maxlength",e.MaxLength===void 0?void 0:Math.max(0,Math.floor(e.MaxLength))),R(p,"autocomplete",e.Autocomplete),b(o,e.Leading),b(h,e.Trailing),n.disabled=r.disabled=!!e.Disabled,n.setAttribute("aria-label","Clear "+(e.Label||"text")),r.textContent=i?"Hide":"Show",r.setAttribute("aria-label",i?"Hide password":"Show password"),r.setAttribute("aria-pressed",String(i)),m()}function k(){var g;e.Value=p.value,m(),(g=t.Change)==null||g.call(t,p.value)}function O(){i=!1,T({Value:l.Value||""})}return p.addEventListener("input",k,{signal:d.signal}),p.addEventListener("blur",()=>{var g;return(g=t.Blur)==null?void 0:g.call(t)},{signal:d.signal}),n.addEventListener("click",()=>{p.value="",k(),p.focus()},{signal:d.signal}),r.addEventListener("click",()=>{i=!i,T({}),p.focus()},{signal:d.signal}),T({}),{element:a.root,control:p,update:T,reset:O,getValue:()=>p.value,focus:()=>p.focus(),validate:()=>p.reportValidity(),destroy:d.destroy}}function Z(u,l={},t={}){let e={...l},i=v(u,e),a=f("textarea","blu-textarea"),y=f("div","blu-field__count");y.id=i.id+"-count",i.body.append(a,y);let p=V(i.root,n);function o(){y.hidden=!e.ShowCount,y.textContent=a.value.length+(e.MaxLength===void 0?" characters":" / "+e.MaxLength),a.style.maxHeight=e.AutoGrow?I(e.MaxHeight,320,80,2e3)+"px":"",a.style.resize=e.AutoGrow?"none":"vertical",a.style.height="",e.AutoGrow&&(a.style.height=Math.min(a.scrollHeight+2,I(e.MaxHeight,320,80,2e3))+"px")}function h(c){p.check(),e={...e,...c},i.paint(e,[a]),H(a,e),a.rows=Math.floor(I(e.Rows,4,1,30)),a.placeholder=e.Placeholder||"",R(a,"maxlength",e.MaxLength===void 0?void 0:Math.max(0,Math.floor(e.MaxLength))),a.value!==(e.Value||"")&&(a.value=e.Value||""),e.ShowCount&&R(a,"aria-describedby",[a.getAttribute("aria-describedby"),y.id].filter(Boolean).join(" ")),o()}function n(){h({Value:l.Value||""})}a.addEventListener("input",()=>{var c;e.Value=a.value,o(),(c=t.Change)==null||c.call(t,a.value)},{signal:p.signal}),a.addEventListener("blur",()=>{var c;return(c=t.Blur)==null?void 0:c.call(t)},{signal:p.signal});let r=0,d=typeof ResizeObserver!="undefined"?new ResizeObserver(c=>{let b=c[0].contentRect.width;b!==r&&(r=b,o())}):void 0;return d==null||d.observe(i.root),h({}),{element:i.root,control:a,update:h,reset:n,getValue:()=>a.value,focus:()=>a.focus(),validate:()=>a.reportValidity(),destroy(){d==null||d.disconnect(),p.destroy()}}}function Q(u,l,t={}){let e={...l},i=!1,a=-1,y="",p=0,o=v(u,e),h=f("div","blu-select"),n=f("select","blu-select__native"),r=f("button","blu-select__trigger"),d=f("button","blu-text__action","\xD7"),c=f("div","blu-select__popup"),b=f("input","blu-select__search"),m=f("div","blu-select__list"),T=f("p","blu-field__help","No matching options");n.tabIndex=-1,n.setAttribute("aria-hidden","true"),n.dataset.enhanced="true",r.type=d.type="button",r.id=o.id,r.setAttribute("role","combobox"),r.setAttribute("aria-haspopup","listbox"),m.id=o.id+"-list",m.setAttribute("role","listbox"),r.setAttribute("aria-controls",m.id),b.type="search",b.placeholder="Search options",b.setAttribute("role","combobox"),b.setAttribute("aria-autocomplete","list"),b.setAttribute("aria-controls",m.id),c.hidden=!0,c.append(b,m,T),h.append(n,r,d,c),o.body.append(h);let k=typeof c.showPopover=="function";k&&c.setAttribute("popover","manual");let O=V(o.root,A),g=[];function L(){if(!i||!k)return;let s=r.getBoundingClientRect(),x=window.innerHeight-s.bottom-12,w=s.top-12,E=x<220&&w>x,C=Math.min(320,Math.max(100,E?w:x));c.style.cssText=`position:fixed;inset:auto;margin:0;left:${Math.max(8,Math.min(s.left,window.innerWidth-s.width-8))}px;width:${Math.min(s.width,window.innerWidth-16)}px;max-height:${C}px;${E?"bottom:"+(window.innerHeight-s.top+6):"top:"+(s.bottom+6)}px;`}function S(s){a=s,m.querySelectorAll("[role=option]").forEach(w=>{let E=Number(w.dataset.index)===a;w.dataset.active=String(E),E&&w.scrollIntoView({block:"nearest"})});let x=a<0?void 0:o.id+"-option-"+a;R(r,"aria-activedescendant",i?x:void 0),R(b,"aria-activedescendant",i?x:void 0)}function D(){var x,w;g=e.Options.map((E,C)=>C).filter(E=>e.Options[E].Label.toLocaleLowerCase().includes(b.value.toLocaleLowerCase())),m.replaceChildren();for(let E of g){let C=e.Options[E],M=f("div","blu-select__option",C.Label);M.id=o.id+"-option-"+E,M.setAttribute("role","option"),M.dataset.index=String(E),M.setAttribute("aria-selected",String(C.Value===n.value)),M.setAttribute("aria-disabled",String(!!C.Disabled)),C.Description&&M.append(f("small","blu-choice__description",C.Description)),M.onpointerdown=q=>q.preventDefault(),M.onclick=()=>{C.Disabled||P(E)},m.append(M)}T.hidden=!!g.length;let s=g.filter(E=>!e.Options[E].Disabled);S(s.includes(a)?a:(w=(x=s.find(E=>e.Options[E].Value===n.value))!=null?x:s[0])!=null?w:-1)}function _(s,x=!0){s&&(e.Disabled||e.ReadOnly)||(i=s,r.setAttribute("aria-expanded",String(i)),b.setAttribute("aria-expanded",String(i)),i?(c.hidden=!1,k&&!c.matches(":popover-open")&&c.showPopover(),b.value="",a=-1,D(),L(),e.Searchable&&b.focus()):(k&&c.matches(":popover-open")&&c.hidePopover(),c.hidden=!0,S(-1),x&&r.focus()))}function P(s){var x;e.Value=s<0?"":e.Options[s].Value,n.value=e.Value,B(),_(!1),(x=t.Change)==null||x.call(t,e.Value)}function B(){var s;r.textContent=((s=e.Options.find(x=>x.Value===n.value))==null?void 0:s.Label)||e.Placeholder||"Choose an option",r.dataset.placeholder=String(!n.value),d.hidden=!e.Clearable||!n.value||!!e.ReadOnly,n.validity.valid&&!e.Error&&(o.error.hidden=!0,o.error.textContent="",o.paint(e,[r]))}function N(s){if(O.check(),e={...e,...s},e.Options.some(w=>!w.Value)||new Set(e.Options.map(w=>w.Value)).size!==e.Options.length)throw Error("Select option values must be non-empty and unique.");H(n,e),o.paint(e,[r]),n.id=o.id+"-native";let x=f("option","",e.Placeholder||"Choose an option");x.value="",n.replaceChildren(x,...e.Options.map(w=>{let E=f("option","",w.Label);return E.value=w.Value,E.disabled=!!w.Disabled,E})),n.value=e.Options.some(w=>w.Value===e.Value)?e.Value:"",e.Value=n.value,r.disabled=d.disabled=!!e.Disabled,R(r,"aria-readonly",e.ReadOnly?"true":void 0),d.setAttribute("aria-label","Clear "+(e.Label||"selection")),b.setAttribute("aria-label","Search "+(e.Label||"options")),m.setAttribute("aria-label",e.Label||"Options"),b.hidden=!e.Searchable,e.Disabled||e.ReadOnly?_(!1,!1):i&&(D(),L()),r.setAttribute("aria-expanded",String(i)),B()}function j(s){var E;if(e.Disabled||e.ReadOnly)return;let x=g.filter(C=>!e.Options[C].Disabled),w=x.indexOf(a);if(s.key==="Escape"&&i)s.preventDefault(),_(!1);else if(s.key==="Tab")_(!1,!1);else if(["ArrowDown","ArrowUp","Home","End"].includes(s.key)){if(!i){s.preventDefault(),_(!0);return}s.preventDefault();let C=s.key==="Home"?0:s.key==="End"?x.length-1:Math.max(0,Math.min(x.length-1,w+(s.key==="ArrowDown"?1:-1)));S((E=x[C])!=null?E:-1)}else if(s.key==="Enter"||s.key===" "&&s.target!==b)s.preventDefault(),i?a>=0&&P(a):_(!0);else if(s.key.length===1&&!s.ctrlKey&&!s.metaKey&&s.target!==b){s.preventDefault(),i||_(!0),y=Date.now()-p>650?s.key:y+s.key,p=Date.now();let C=g.find(M=>!e.Options[M].Disabled&&e.Options[M].Label.toLocaleLowerCase().startsWith(y.toLocaleLowerCase()));C!==void 0&&S(C)}}function A(){N({Value:l.Value||""}),_(!1,!1)}return r.addEventListener("click",()=>_(!i),{signal:O.signal}),d.addEventListener("click",()=>P(-1),{signal:O.signal}),h.addEventListener("keydown",j,{signal:O.signal}),b.addEventListener("input",D,{signal:O.signal}),document.addEventListener("pointerdown",s=>{i&&!o.root.contains(s.target)&&_(!1,!1)},{signal:O.signal}),h.addEventListener("focusout",s=>{var x;h.contains(s.relatedTarget)||(_(!1,!1),(x=t.Blur)==null||x.call(t))},{signal:O.signal}),window.addEventListener("resize",L,{signal:O.signal}),window.addEventListener("scroll",L,{signal:O.signal,capture:!0}),n.addEventListener("invalid",s=>{s.preventDefault(),R(r,"aria-invalid","true"),o.error.textContent=n.validationMessage,o.error.hidden=!1,R(r,"aria-describedby",o.error.id),r.focus()},{signal:O.signal}),n.addEventListener("change",()=>{var s;e.Value=n.value,B(),(s=t.Change)==null||s.call(t,n.value)},{signal:O.signal}),N({}),{element:o.root,control:n,update:N,reset:A,getValue:()=>n.value,focus:()=>r.focus(),validate:()=>n.reportValidity(),destroy(){_(!1,!1),O.destroy()}}}function le(u){let l=[...u.Rows],t=u.SortKey;t&&u.Columns.some(y=>y.Key===t&&y.Sortable)&&l.sort((y,p)=>{let o=y[t],h=p[t];if(o==null||h==null)return o==null?h==null?0:1:-1;let n=typeof o=="number"&&typeof h=="number"?o-h:String(o).localeCompare(String(h),void 0,{numeric:!0,sensitivity:"base"});return u.SortDirection==="Descending"?-n:n});let e=u.PageSize?Math.floor(I(u.PageSize,10,1,1e4)):Math.max(1,l.length),i=Math.max(1,Math.ceil(l.length/e)),a=Math.floor(I(u.Page,1,1,i));return{rows:l.slice((a-1)*e,a*e),page:a,pages:i,total:l.length,start:l.length?(a-1)*e+1:0,end:Math.min(a*e,l.length)}}function X(u,l,t={}){let e={...l},i=!1,a=f("div","blu-table"),y=f("div","blu-table__scroll"),p=f("table"),o=f("caption"),h=f("thead"),n=f("tbody"),r=f("div","blu-table__footer"),d=f("span"),c=f("button","blu-table-button","Previous"),b=f("button","blu-table-button","Next"),m="";o.id=F(),y.tabIndex=0,y.setAttribute("role","region"),y.setAttribute("aria-labelledby",o.id),c.type=b.type="button",d.setAttribute("role","status"),r.append(d,c,b),p.append(o,h,n),y.append(p),a.append(y,r),u.append(a);function T(k){var D,_,P,B,N,j;if(i)throw Error("Component is destroyed.");if(e={...e,...k},!e.Columns.length)throw Error("Table needs at least one column.");if(new Set(e.Columns.map(A=>A.Key)).size!==e.Columns.length)throw Error("Table column keys must be unique.");a.className="blu-table"+(e.ExtendedClass?" "+e.ExtendedClass:""),a.dataset.density=e.Density||"Comfortable",a.dataset.striped=String(!!e.Striped),p.setAttribute("aria-busy",String(!!e.Loading)),o.textContent=e.Caption;let O=document.activeElement instanceof HTMLElement&&a.contains(document.activeElement)?document.activeElement.dataset.focusKey:void 0,g=document.activeElement===b?b:document.activeElement===c?c:void 0,L=JSON.stringify([e.Columns.map(A=>[A.Key,A.Header,!!A.Sortable,A.Align||"Left"]),!!((D=e.Actions)!=null&&D.length)]);if(L!==m){m=L,h.replaceChildren();let A=f("tr");h.append(A);for(let s of e.Columns){let x=f("th");if(x.scope="col",x.style.textAlign=(s.Align||"Left").toLowerCase(),s.Sortable){let w=f("button","blu-table__sort",s.Header);w.type="button",w.dataset.focusKey="sort-"+s.Key;let E=f("span");E.setAttribute("aria-hidden","true"),w.append(E),w.onclick=()=>{var M;let C=e.SortKey===s.Key&&e.SortDirection!=="Descending"?"Descending":"Ascending";T({SortKey:s.Key,SortDirection:C,Page:1}),(M=t.SortChanged)==null||M.call(t,s.Key,C)},x.append(w)}else x.textContent=s.Header;A.append(x)}if((_=e.Actions)!=null&&_.length){let s=f("th","","Actions");s.scope="col",A.append(s)}}e.Columns.forEach((A,s)=>{if(!A.Sortable)return;let x=h.rows[0].cells[s];x.setAttribute("aria-sort",e.SortKey===A.Key?(e.SortDirection||"Ascending").toLowerCase():"none"),x.querySelector("span").textContent=e.SortKey===A.Key?e.SortDirection==="Descending"?"\u2193":"\u2191":"\u2195"});let S=le(e);if(e.Page=S.page,n.replaceChildren(),e.Loading||!S.rows.length){let A=f("tr"),s=f("td","blu-table__empty",e.Loading?"Loading records\u2026":e.EmptyMessage||"No records yet.");s.colSpan=e.Columns.length+((P=e.Actions)!=null&&P.length?1:0),A.append(s),n.append(A)}else for(let[A,s]of S.rows.entries()){let x=f("tr");for(let w of e.Columns){let E=f("td");E.style.textAlign=(w.Align||"Left").toLowerCase(),E.textContent=w.Format?w.Format(s[w.Key],s):String((B=s[w.Key])!=null?B:"\u2014"),x.append(E)}if((N=e.Actions)!=null&&N.length){let w=f("td"),E=f("div","blu-table__actions");for(let C of e.Actions){let M=f("button","blu-table-button",C.Label);M.type="button",M.disabled=typeof C.Disabled=="function"?C.Disabled(s):!!C.Disabled,M.dataset.focusKey="row-"+String(e.RowKey?s[e.RowKey]:A)+"-"+C.Key,e.RowKey&&M.setAttribute("aria-label",C.Label+" "+String(s[e.RowKey])),M.onclick=()=>{var q;return(q=t.RowAction)==null?void 0:q.call(t,C.Key,s)},E.append(M)}w.append(E),x.append(w)}n.append(x)}d.textContent=e.Loading?"Loading records\u2026":`${S.start}\u2013${S.end} of ${S.total} records`,c.hidden=b.hidden=!e.PageSize,c.disabled=!!e.Loading||S.page<=1,b.disabled=!!e.Loading||S.page>=S.pages,c.onclick=()=>{var A;T({Page:S.page-1}),(A=t.PageChanged)==null||A.call(t,e.Page)},b.onclick=()=>{var A;T({Page:S.page+1}),(A=t.PageChanged)==null||A.call(t,e.Page)},O&&((j=Array.from(a.querySelectorAll("[data-focus-key]")).find(A=>A.dataset.focusKey===O))==null||j.focus()),!e.Loading&&e.PageSize&&(g===b&&b.disabled?(c.disabled?y:c).focus():g===c&&c.disabled&&(b.disabled?y:b).focus())}try{T({})}catch(k){throw a.remove(),k}return{element:a,update:T,getState:()=>({Page:e.Page||1,SortKey:e.SortKey,SortDirection:e.SortDirection||"Ascending"}),destroy(){i||(i=!0,a.remove())}}}var ee={};re(ee,{getAppearance:()=>de,mountAppearanceSelector:()=>ce,setAppearance:()=>se});(function(u){"use strict";if(u.BluUITheme&&u.BluUITheme.version==="1.0.0")return;var l="bluui:appearance:v1",t=u.matchMedia("(prefers-color-scheme: dark)"),e="System";function i(n){var r=String(n||"System").toLowerCase();if(r!=="system"&&r!=="light"&&r!=="dark")throw new Error("Mode must be Light, Dark or System.");return r.charAt(0).toUpperCase()+r.slice(1)}function a(){try{return i(u.localStorage.getItem(l))}catch(n){return"System"}}function y(){return{Mode:e,EffectiveMode:e==="System"?t.matches?"Dark":"Light":e}}function p(){var n=y(),r=document.documentElement;return r.setAttribute("data-bluui-mode",n.Mode.toLowerCase()),r.setAttribute("data-bluui-theme",n.EffectiveMode.toLowerCase()),document.querySelectorAll("[data-bluui-theme-select]").forEach(function(d){d.value=e}),u.dispatchEvent(new CustomEvent("bluui:themechange",{detail:n})),n}function o(n,r){if(e=i(n),r!==!1)try{u.localStorage.setItem(l,e)}catch(d){}return p()}function h(n){if(!n)return null;var r=n.querySelector("[data-bluui-theme-select]");if(r)return r.value=e,r;var d=document.createElement("label");d.className="blu-theme-control";var c=document.createElementNS("http://www.w3.org/2000/svg","svg");c.setAttribute("viewBox","0 0 24 24"),c.setAttribute("width","17"),c.setAttribute("height","17"),c.setAttribute("aria-hidden","true"),c.setAttribute("focusable","false");var b=document.createElementNS("http://www.w3.org/2000/svg","path");b.setAttribute("d","M12 3a9 9 0 1 0 0 18V3Z M12 3a9 9 0 0 1 0 18"),b.setAttribute("fill","none"),b.setAttribute("stroke","currentColor"),b.setAttribute("stroke-width","1.7"),c.appendChild(b);var m=document.createElement("select");return m.setAttribute("data-bluui-theme-select",""),m.setAttribute("aria-label","Appearance"),["System","Light","Dark"].forEach(function(T){var k=document.createElement("option");k.value=T,k.textContent=T,m.appendChild(k)}),m.value=e,m.addEventListener("change",function(){o(m.value)}),d.appendChild(c),d.appendChild(m),n.appendChild(d),m}u.BluUITheme={version:"1.0.0",setMode:o,getMode:y,mountSelector:h},e=a(),t.addEventListener?t.addEventListener("change",function(){e==="System"&&p()}):t.addListener(function(){e==="System"&&p()}),u.addEventListener("storage",function(n){(n.key===l||n.key===null)&&(e=a(),p())}),p()})(window);function Y(){if(typeof window=="undefined")throw new Error("Set appearance in the browser.");return window.BluUITheme}function se(u,l=!0){return Y().setMode(u,l)}function de(){return Y().getMode()}function ce(u){return Y().mountSelector(u)}function ue(u){let l=new Map,t=new WeakMap;function e(p){let o=l.get(p);o&&(o.instance.destroy(),l.delete(p),t.get(o.host)===p&&(t.delete(o.host),delete o.host.dataset.bluCommunityReady))}function i(p,o,h,n,r){var d;try{if(!r)throw Error("Owner key is required.");let c=document.getElementById(o);if(!c)throw Error("Community component host was not found.");let b=t.get(c);b&&b!==r&&e(b);let m=l.get(r);m&&(m.host!==c||m.kind!==p)&&e(r),p==="BluGridBasic"&&(h={...h},"RowsJson"in h&&(h.Rows=JSON.parse(h.RowsJson),delete h.RowsJson),"ColumnsJson"in h&&(h.Columns=JSON.parse(h.ColumnsJson),delete h.ColumnsJson));let T=l.get(r);if(T)return T.instance.update(h),"";let k=u[p];if(typeof k!="function")throw Error("Unknown Community component.");let O=k(c,h,n);return l.set(r,{host:c,kind:p,instance:O}),t.set(c,r),c.dataset.bluCommunityReady="true",""}catch(c){let b=c instanceof Error?c.message:String(c);return(d=n==null?void 0:n.Error)==null||d.call(n,b),b}}function a(p,o){let h={...p},n=h.HostId,r=h.OwnerKey;delete h.HostId,delete h.OwnerKey;try{return h.Columns=JSON.parse(h.ColumnsJson).map(d=>(d.Width===0&&delete d.Width,d.Header||delete d.Header,d)),delete h.ColumnsJson,i("BluGridBasic",n,h,{Ready:()=>o.EmitReady(r),RowClicked:d=>o.EmitRowClicked(JSON.stringify(d)),SelectionChanged:d=>o.EmitSelectionChanged(JSON.stringify(d)),Error:d=>o.EmitError(d)},r)}catch(d){let c=d instanceof Error?d.message:String(d);return o.EmitError(c),c}}let y={syncGrid:a,version:"0.2.0",sync:i,destroy:e,clearSelection:p=>{let o=l.get(p);return o!=null&&o.instance.clearSelection?(o.instance.clearSelection(),""):"Grid instance was not found."},...ee};return Object.assign(y,{register:p=>Object.assign(u,p)})}function ne(u){let l=window;l.BluUICommunity?l.BluUICommunity.register(u):l.BluUICommunity=ue(u)}var K=u=>(l,t,e)=>{let i=u(l,oe(t),e);return{...i,update:a=>i.update(oe(a))}},oe=u=>{let l={...u};for(let t of["Options","Rows","Columns","Actions","Leading","Trailing"])t+"Json"in l&&(l[t]=JSON.parse(String(l[t+"Json"]||(["Leading","Trailing"].includes(t)?"null":"[]"))),delete l[t+"Json"]);return l};ne({Checkbox:K(J),TextInput:K($),TextArea:K(Z),RadioButton:K(G),RadioGroup:K(W),Switch:K(z),Select:K(Q),Table:K(X)});})();
|
|
1
|
+
"use strict";(()=>{var ie=Object.defineProperty;var re=(c,l)=>{for(var n in l)ie(c,n,{get:l[n],enumerable:!0})};function f(c,l="",n){let e=document.createElement(c);return e.className=l,n!==void 0&&(e.textContent=n),e}var ae=0;function F(){return"blu-field-"+ ++ae+"-"+Math.random().toString(36).slice(2,8)}function D(c,l,n){n===void 0||n===!1||n===""?c.removeAttribute(l):c.setAttribute(l,String(n))}function _(c,l,n=!1){let e=f(n?"fieldset":"div","blu-field"),o=f(n?"legend":"label","blu-field__label"),a=f("div","blu-field__body"),g=f("div","blu-field__help"),u=f("div","blu-field__error"),i=l.Id||F();g.id=i+"-help",u.id=i+"-error",u.setAttribute("aria-live","polite"),e.append(o,a,g,u),c.append(e);function h(t,r){var p;e.className="blu-field blu-field--"+(t.Size||"Medium").toLowerCase()+(t.ExtendedClass?" "+t.ExtendedClass:""),e.dataset.invalid=String(!!t.Error),e.dataset.disabled=String(!!t.Disabled),o.textContent=(t.Label||"")+(t.Required?" *":""),o.hidden=!t.Label,!n&&r[0]&&((p=r[0]).id||(p.id=i),o.setAttribute("for",r[0].id)),g.textContent=t.Description||"",g.hidden=!t.Description,u.textContent=t.Error||"",u.hidden=!t.Error;let m=[t.Description?g.id:"",t.Error?u.id:""].filter(Boolean).join(" ");for(let b of r)D(b,"aria-describedby",m),D(b,"aria-invalid",t.Error?"true":void 0),D(b,"aria-required",t.Required?"true":void 0)}return{root:e,label:o,body:a,description:g,error:u,id:i,paint:h}}function V(c,l){let n=new AbortController,e=!1,o=c.closest("form");return o==null||o.addEventListener("reset",a=>queueMicrotask(()=>{!e&&!a.defaultPrevented&&l()}),{signal:n.signal}),{signal:n.signal,check(){if(e)throw Error("Component is destroyed.")},destroy(){e||(e=!0,n.abort(),c.remove())}}}function H(c,l){c.name=l.Name||"",c.disabled=!!l.Disabled,c.required=!!l.Required,"readOnly"in c&&(c.readOnly=!!l.ReadOnly),c.setCustomValidity(l.Error||"")}function I(c,l,n,e){return Number.isFinite(c)?Math.max(n,Math.min(e,c)):l}function te(c){let l=new URL(c,document.baseURI);if(!["http:","https:"].includes(l.protocol))throw Error("Adornment images must use an HTTP(S) or relative URL.");return l.href}function U(c,l,n,e){let o={...l},a=!1,g=_(c,o),u=f("label","blu-choice"),i=f("input","blu-choice__input"),h=f("span","blu-choice__mark"),t=f("span"),r=f("span","blu-choice__state");i.type=e==="radio"?"radio":"checkbox",e==="switch"&&i.setAttribute("role","switch"),u.classList.add("blu-choice--"+e),h.setAttribute("aria-hidden","true"),r.setAttribute("aria-hidden","true"),u.append(i,h,t,r),g.body.append(u);let m=V(g.root,b);function p(d){m.check(),a&&e==="radio"&&!("Checked"in d)&&(o.Checked=i.checked),o={...o,...d},g.paint(o,[i]),g.label.hidden=!0,g.label.removeAttribute("for"),H(i,o),i.checked=!!o.Checked,i.indeterminate=e==="checkbox"&&!!o.Indeterminate,i.value=o.Value||"on",D(i,"aria-readonly",o.ReadOnly?"true":void 0),t.textContent=(o.Label||"")+(o.Required?" *":""),r.textContent=i.checked?o.OnText||"":o.OffText||"",a=!0}function b(){p({Checked:!!l.Checked,Indeterminate:!!l.Indeterminate})}return i.addEventListener("click",d=>{o.ReadOnly&&d.preventDefault()},{signal:m.signal}),i.addEventListener("keydown",d=>{o.ReadOnly&&["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"," "].includes(d.key)&&d.preventDefault()},{signal:m.signal}),i.addEventListener("change",()=>{var d;o.Checked=i.checked,o.Indeterminate=!1,r.textContent=i.checked?o.OnText||"":o.OffText||"",(d=n.Change)==null||d.call(n,i.checked)},{signal:m.signal}),i.addEventListener("blur",()=>{var d;return(d=n.Blur)==null?void 0:d.call(n)},{signal:m.signal}),p({}),{element:g.root,control:i,update:p,reset:b,getValue:()=>i.checked,focus:()=>i.focus(),validate:()=>i.reportValidity(),destroy:m.destroy}}function J(c,l={},n={}){return U(c,l,n,"checkbox")}function z(c,l={},n={}){return U(c,l,n,"switch")}function G(c,l,n={}){return U(c,l,n,"radio")}function W(c,l,n={}){let e={...l},o=[],a=_(c,e,!0),g=e.Name||F(),u=V(a.root,h);function i(t){var p,b;u.check();let r=!o.length||!!t.Options&&(t.Options.length!==e.Options.length||t.Options.some((d,k)=>{let T=e.Options[k];return d.Value!==T.Value||d.Label!==T.Label||d.Description!==T.Description||d.Disabled!==T.Disabled})),m=(p=o.find(d=>d===document.activeElement))==null?void 0:p.value;if(e={...e,...t},new Set(e.Options.map(d=>d.Value)).size!==e.Options.length)throw Error("Radio option values must be unique.");a.body.className="blu-radio-group blu-radio-group--"+(e.Direction||"Vertical").toLowerCase(),r&&(a.body.replaceChildren(),o=e.Options.map((d,k)=>{let T=f("label","blu-choice blu-choice--radio"),w=f("input","blu-choice__input"),x=f("span","blu-choice__mark"),C=f("span");w.type="radio",w.id=a.id+"-"+k,w.value=d.Value,x.setAttribute("aria-hidden","true");let S=f("span","",d.Label);if(S.id=w.id+"-label",C.append(S),w.setAttribute("aria-labelledby",S.id),d.Description){let M=f("small","blu-choice__description",d.Description);M.id=w.id+"-description",C.append(M)}return T.append(w,x,C),a.body.append(T),w.onchange=()=>{var M;w.checked&&(e.Value=w.value,(M=n.Change)==null||M.call(n,w.value))},w.onclick=M=>{e.ReadOnly&&M.preventDefault()},w.onkeydown=M=>{e.ReadOnly&&["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"," "].includes(M.key)&&M.preventDefault()},w.onblur=()=>{var M;return(M=n.Blur)==null?void 0:M.call(n)},w})),a.paint(e,o),o.forEach((d,k)=>{H(d,e),d.name=e.Name||g,d.disabled=!!e.Disabled||!!e.Options[k].Disabled,d.checked=d.value===e.Value,D(d,"aria-readonly",e.ReadOnly?"true":void 0),e.Options[k].Description&&D(d,"aria-describedby",[d.getAttribute("aria-describedby"),d.id+"-description"].filter(Boolean).join(" "))}),r&&m!==void 0&&((b=o.find(d=>d.value===m&&!d.disabled)||o.find(d=>d.checked&&!d.disabled)||o.find(d=>!d.disabled))==null||b.focus())}function h(){i({Value:l.Value||""})}return i({}),{element:a.root,update:i,reset:h,getValue:()=>{var t;return((t=o.find(r=>r.checked))==null?void 0:t.value)||""},focus:()=>{var t;return(t=o.find(r=>r.checked&&!r.disabled)||o.find(r=>!r.disabled))==null?void 0:t.focus()},validate:()=>o.filter(t=>!t.disabled).every(t=>t.reportValidity()),destroy:u.destroy}}function $(c,l={},n={}){let e={...l},o=!1,a=_(c,e),g=f("div","blu-text"),u=f("input","blu-text__input"),i=f("span","blu-text__adornment"),h=f("span","blu-text__adornment"),t=f("button","blu-text__action","\xD7"),r=f("button","blu-text__action","Show");t.type=r.type="button",t.setAttribute("aria-label","Clear "+(e.Label||"text")),g.append(i,u,h,t,r),a.body.append(g);let m=V(a.root,w),p=new WeakMap;function b(x,C){if(p.get(x)!==(C==null?void 0:C.Kind)&&x.replaceChildren(),x.removeAttribute("role"),x.removeAttribute("aria-label"),x.removeAttribute("aria-hidden"),x.hidden=!C,!C){p.delete(x);return}if(p.set(x,C.Kind),C.Kind==="Image"){let S=x.querySelector("img")||f("img"),M=te(C.Src);S.src!==M&&(S.src=M),S.alt=C.Alt,S.parentNode||x.append(S)}else if(C.Kind==="Action"){let S=x.querySelector("button")||f("button","blu-text__action");S.type="button",S.textContent=C.Text,S.setAttribute("aria-label",C.Label),S.disabled=!!e.Disabled||!!e.ReadOnly,S.onclick=()=>{var M;return(M=n.Action)==null?void 0:M.call(n,C.Key,u.value)},S.parentNode||x.append(S)}else x.textContent=C.Text,C.Kind==="Icon"&&(D(x,"role",C.Label?"img":void 0),D(x,"aria-label",C.Label),D(x,"aria-hidden",C.Label?void 0:"true"))}function d(){t.hidden=!e.Clearable||!u.value||!!e.ReadOnly,r.hidden=!e.RevealPassword||e.Type!=="password"}function k(x){m.check(),e={...e,...x},a.paint(e,[u]),H(u,e),u.type=e.Type==="password"&&o?"text":e.Type||"text",u.value!==(e.Value||"")&&(u.value=e.Value||""),u.placeholder=e.Placeholder||"",D(u,"maxlength",e.MaxLength===void 0?void 0:Math.max(0,Math.floor(e.MaxLength))),D(u,"autocomplete",e.Autocomplete),b(i,e.Leading),b(h,e.Trailing),t.disabled=r.disabled=!!e.Disabled,t.setAttribute("aria-label","Clear "+(e.Label||"text")),r.textContent=o?"Hide":"Show",r.setAttribute("aria-label",o?"Hide password":"Show password"),r.setAttribute("aria-pressed",String(o)),d()}function T(){var x;e.Value=u.value,d(),(x=n.Change)==null||x.call(n,u.value)}function w(){o=!1,k({Value:l.Value||""})}return u.addEventListener("input",T,{signal:m.signal}),u.addEventListener("blur",()=>{var x;return(x=n.Blur)==null?void 0:x.call(n)},{signal:m.signal}),t.addEventListener("click",()=>{u.value="",T(),u.focus()},{signal:m.signal}),r.addEventListener("click",()=>{o=!o,k({}),u.focus()},{signal:m.signal}),k({}),{element:a.root,control:u,update:k,reset:w,getValue:()=>u.value,focus:()=>u.focus(),validate:()=>u.reportValidity(),destroy:m.destroy}}function Z(c,l={},n={}){let e={...l},o=_(c,e),a=f("textarea","blu-textarea"),g=f("div","blu-field__count");g.id=o.id+"-count",o.body.append(a,g);let u=V(o.root,t);function i(){g.hidden=!e.ShowCount,g.textContent=a.value.length+(e.MaxLength===void 0?" characters":" / "+e.MaxLength),a.style.maxHeight=e.AutoGrow?I(e.MaxHeight,320,80,2e3)+"px":"",a.style.resize=e.AutoGrow?"none":"vertical",a.style.height="",e.AutoGrow&&(a.style.height=Math.min(a.scrollHeight+2,I(e.MaxHeight,320,80,2e3))+"px")}function h(p){u.check(),e={...e,...p},o.paint(e,[a]),H(a,e),a.rows=Math.floor(I(e.Rows,4,1,30)),a.placeholder=e.Placeholder||"",D(a,"maxlength",e.MaxLength===void 0?void 0:Math.max(0,Math.floor(e.MaxLength))),a.value!==(e.Value||"")&&(a.value=e.Value||""),e.ShowCount&&D(a,"aria-describedby",[a.getAttribute("aria-describedby"),g.id].filter(Boolean).join(" ")),i()}function t(){h({Value:l.Value||""})}a.addEventListener("input",()=>{var p;e.Value=a.value,i(),(p=n.Change)==null||p.call(n,a.value)},{signal:u.signal}),a.addEventListener("blur",()=>{var p;return(p=n.Blur)==null?void 0:p.call(n)},{signal:u.signal});let r=0,m=typeof ResizeObserver!="undefined"?new ResizeObserver(p=>{let b=p[0].contentRect.width;b!==r&&(r=b,i())}):void 0;return m==null||m.observe(o.root),h({}),{element:o.root,control:a,update:h,reset:t,getValue:()=>a.value,focus:()=>a.focus(),validate:()=>a.reportValidity(),destroy(){m==null||m.disconnect(),u.destroy()}}}function Q(c,l,n={}){let e={...l},o=!1,a=-1,g="",u=0,i=_(c,e),h=f("div","blu-select"),t=f("select","blu-select__native"),r=f("button","blu-select__trigger"),m=f("button","blu-text__action","\xD7"),p=f("div","blu-select__popup"),b=f("input","blu-select__search"),d=f("div","blu-select__list"),k=f("p","blu-field__help","No matching options");t.tabIndex=-1,t.setAttribute("aria-hidden","true"),t.dataset.enhanced="true",r.type=m.type="button",r.id=i.id,r.setAttribute("role","combobox"),r.setAttribute("aria-haspopup","listbox"),d.id=i.id+"-list",d.setAttribute("role","listbox"),r.setAttribute("aria-controls",d.id),b.type="search",b.placeholder="Search options",b.setAttribute("role","combobox"),b.setAttribute("aria-autocomplete","list"),b.setAttribute("aria-controls",d.id),p.hidden=!0,p.append(b,d,k),h.append(t,r,m,p),i.body.append(h);let T=typeof p.showPopover=="function";T&&p.setAttribute("popover","manual");let w=V(i.root,L),x=[];function C(){if(!o||!T)return;let s=r.getBoundingClientRect(),y=window.innerHeight-s.bottom-12,E=s.top-12,A=y<220&&E>y,O=Math.min(320,Math.max(100,A?E:y));p.style.cssText=`position:fixed;inset:auto;margin:0;left:${Math.max(8,Math.min(s.left,window.innerWidth-s.width-8))}px;width:${Math.min(s.width,window.innerWidth-16)}px;max-height:${O}px;${A?"bottom:"+(window.innerHeight-s.top+6):"top:"+(s.bottom+6)}px;`}function S(s){a=s,d.querySelectorAll("[role=option]").forEach(E=>{let A=Number(E.dataset.index)===a;E.dataset.active=String(A),A&&E.scrollIntoView({block:"nearest"})});let y=a<0?void 0:i.id+"-option-"+a;D(r,"aria-activedescendant",o?y:void 0),D(b,"aria-activedescendant",o?y:void 0)}function M(){var y,E;x=e.Options.map((A,O)=>O).filter(A=>e.Options[A].Label.toLocaleLowerCase().includes(b.value.toLocaleLowerCase())),d.replaceChildren();for(let A of x){let O=e.Options[A],R=f("div","blu-select__option",O.Label);R.id=i.id+"-option-"+A,R.setAttribute("role","option"),R.dataset.index=String(A),R.setAttribute("aria-selected",String(O.Value===t.value)),R.setAttribute("aria-disabled",String(!!O.Disabled)),O.Description&&R.append(f("small","blu-choice__description",O.Description)),R.onpointerdown=q=>q.preventDefault(),R.onclick=()=>{O.Disabled||P(A)},d.append(R)}k.hidden=!!x.length;let s=x.filter(A=>!e.Options[A].Disabled);S(s.includes(a)?a:(E=(y=s.find(A=>e.Options[A].Value===t.value))!=null?y:s[0])!=null?E:-1)}function v(s,y=!0){s&&(e.Disabled||e.ReadOnly)||(o=s,r.setAttribute("aria-expanded",String(o)),b.setAttribute("aria-expanded",String(o)),o?(p.hidden=!1,T&&!p.matches(":popover-open")&&p.showPopover(),b.value="",a=-1,M(),C(),e.Searchable&&b.focus()):(T&&p.matches(":popover-open")&&p.hidePopover(),p.hidden=!0,S(-1),y&&r.focus()))}function P(s){var y;e.Value=s<0?"":e.Options[s].Value,t.value=e.Value,B(),v(!1),(y=n.Change)==null||y.call(n,e.Value)}function B(){var s;r.textContent=((s=e.Options.find(y=>y.Value===t.value))==null?void 0:s.Label)||e.Placeholder||"Choose an option",r.dataset.placeholder=String(!t.value),m.hidden=!e.Clearable||!t.value||!!e.ReadOnly,t.validity.valid&&!e.Error&&(i.error.hidden=!0,i.error.textContent="",i.paint(e,[r]))}function N(s){if(w.check(),e={...e,...s},e.Options.some(E=>!E.Value)||new Set(e.Options.map(E=>E.Value)).size!==e.Options.length)throw Error("Select option values must be non-empty and unique.");H(t,e),i.paint(e,[r]),t.id=i.id+"-native";let y=f("option","",e.Placeholder||"Choose an option");y.value="",t.replaceChildren(y,...e.Options.map(E=>{let A=f("option","",E.Label);return A.value=E.Value,A.disabled=!!E.Disabled,A})),t.value=e.Options.some(E=>E.Value===e.Value)?e.Value:"",e.Value=t.value,r.disabled=m.disabled=!!e.Disabled,D(r,"aria-readonly",e.ReadOnly?"true":void 0),m.setAttribute("aria-label","Clear "+(e.Label||"selection")),b.setAttribute("aria-label","Search "+(e.Label||"options")),d.setAttribute("aria-label",e.Label||"Options"),b.hidden=!e.Searchable,e.Disabled||e.ReadOnly?v(!1,!1):o&&(M(),C()),r.setAttribute("aria-expanded",String(o)),B()}function j(s){var A;if(e.Disabled||e.ReadOnly)return;let y=x.filter(O=>!e.Options[O].Disabled),E=y.indexOf(a);if(s.key==="Escape"&&o)s.preventDefault(),v(!1);else if(s.key==="Tab")v(!1,!1);else if(["ArrowDown","ArrowUp","Home","End"].includes(s.key)){if(!o){s.preventDefault(),v(!0);return}s.preventDefault();let O=s.key==="Home"?0:s.key==="End"?y.length-1:Math.max(0,Math.min(y.length-1,E+(s.key==="ArrowDown"?1:-1)));S((A=y[O])!=null?A:-1)}else if(s.key==="Enter"||s.key===" "&&s.target!==b)s.preventDefault(),o?a>=0&&P(a):v(!0);else if(s.key.length===1&&!s.ctrlKey&&!s.metaKey&&s.target!==b){s.preventDefault(),o||v(!0),g=Date.now()-u>650?s.key:g+s.key,u=Date.now();let O=x.find(R=>!e.Options[R].Disabled&&e.Options[R].Label.toLocaleLowerCase().startsWith(g.toLocaleLowerCase()));O!==void 0&&S(O)}}function L(){N({Value:l.Value||""}),v(!1,!1)}return r.addEventListener("click",()=>v(!o),{signal:w.signal}),m.addEventListener("click",()=>P(-1),{signal:w.signal}),h.addEventListener("keydown",j,{signal:w.signal}),b.addEventListener("input",M,{signal:w.signal}),document.addEventListener("pointerdown",s=>{o&&!i.root.contains(s.target)&&v(!1,!1)},{signal:w.signal}),h.addEventListener("focusout",s=>{var y;h.contains(s.relatedTarget)||(v(!1,!1),(y=n.Blur)==null||y.call(n))},{signal:w.signal}),window.addEventListener("resize",C,{signal:w.signal}),window.addEventListener("scroll",C,{signal:w.signal,capture:!0}),t.addEventListener("invalid",s=>{s.preventDefault(),D(r,"aria-invalid","true"),i.error.textContent=t.validationMessage,i.error.hidden=!1,D(r,"aria-describedby",i.error.id),r.focus()},{signal:w.signal}),t.addEventListener("change",()=>{var s;e.Value=t.value,B(),(s=n.Change)==null||s.call(n,t.value)},{signal:w.signal}),N({}),{element:i.root,control:t,update:N,reset:L,getValue:()=>t.value,focus:()=>r.focus(),validate:()=>t.reportValidity(),destroy(){v(!1,!1),w.destroy()}}}function le(c){let l=[...c.Rows],n=c.SortKey;n&&c.Columns.some(g=>g.Key===n&&g.Sortable)&&l.sort((g,u)=>{let i=g[n],h=u[n];if(i==null||h==null)return i==null?h==null?0:1:-1;let t=typeof i=="number"&&typeof h=="number"?i-h:String(i).localeCompare(String(h),void 0,{numeric:!0,sensitivity:"base"});return c.SortDirection==="Descending"?-t:t});let e=c.PageSize?Math.floor(I(c.PageSize,10,1,1e4)):Math.max(1,l.length),o=Math.max(1,Math.ceil(l.length/e)),a=Math.floor(I(c.Page,1,1,o));return{rows:l.slice((a-1)*e,a*e),page:a,pages:o,total:l.length,start:l.length?(a-1)*e+1:0,end:Math.min(a*e,l.length)}}function X(c,l,n={}){let e={...l},o=!1,a=f("div","blu-table"),g=f("div","blu-table__scroll"),u=f("table"),i=f("caption"),h=f("thead"),t=f("tbody"),r=f("div","blu-table__footer"),m=f("span"),p=f("button","blu-table-button","Previous"),b=f("button","blu-table-button","Next"),d="";i.id=F(),g.tabIndex=0,g.setAttribute("role","region"),g.setAttribute("aria-labelledby",i.id),p.type=b.type="button",m.setAttribute("role","status"),r.append(m,p,b),u.append(i,h,t),g.append(u),a.append(g,r),c.append(a);function k(T){var M,v,P,B,N,j;if(o)throw Error("Component is destroyed.");if(e={...e,...T},!e.Columns.length)throw Error("Table needs at least one column.");if(new Set(e.Columns.map(L=>L.Key)).size!==e.Columns.length)throw Error("Table column keys must be unique.");a.className="blu-table"+(e.ExtendedClass?" "+e.ExtendedClass:""),a.dataset.density=e.Density||"Comfortable",a.dataset.striped=String(!!e.Striped),u.setAttribute("aria-busy",String(!!e.Loading)),i.textContent=e.Caption;let w=document.activeElement instanceof HTMLElement&&a.contains(document.activeElement)?document.activeElement.dataset.focusKey:void 0,x=document.activeElement===b?b:document.activeElement===p?p:void 0,C=JSON.stringify([e.Columns.map(L=>[L.Key,L.Header,!!L.Sortable,L.Align||"Left"]),!!((M=e.Actions)!=null&&M.length)]);if(C!==d){d=C,h.replaceChildren();let L=f("tr");h.append(L);for(let s of e.Columns){let y=f("th");if(y.scope="col",y.style.textAlign=(s.Align||"Left").toLowerCase(),s.Sortable){let E=f("button","blu-table__sort",s.Header);E.type="button",E.dataset.focusKey="sort-"+s.Key;let A=f("span");A.setAttribute("aria-hidden","true"),E.append(A),E.onclick=()=>{var R;let O=e.SortKey===s.Key&&e.SortDirection!=="Descending"?"Descending":"Ascending";k({SortKey:s.Key,SortDirection:O,Page:1}),(R=n.SortChanged)==null||R.call(n,s.Key,O)},y.append(E)}else y.textContent=s.Header;L.append(y)}if((v=e.Actions)!=null&&v.length){let s=f("th","","Actions");s.scope="col",L.append(s)}}e.Columns.forEach((L,s)=>{if(!L.Sortable)return;let y=h.rows[0].cells[s];y.setAttribute("aria-sort",e.SortKey===L.Key?(e.SortDirection||"Ascending").toLowerCase():"none"),y.querySelector("span").textContent=e.SortKey===L.Key?e.SortDirection==="Descending"?"\u2193":"\u2191":"\u2195"});let S=le(e);if(e.Page=S.page,t.replaceChildren(),e.Loading||!S.rows.length){let L=f("tr"),s=f("td","blu-table__empty",e.Loading?"Loading records\u2026":e.EmptyMessage||"No records yet.");s.colSpan=e.Columns.length+((P=e.Actions)!=null&&P.length?1:0),L.append(s),t.append(L)}else for(let[L,s]of S.rows.entries()){let y=f("tr");for(let E of e.Columns){let A=f("td");A.style.textAlign=(E.Align||"Left").toLowerCase(),A.textContent=E.Format?E.Format(s[E.Key],s):String((B=s[E.Key])!=null?B:"\u2014"),y.append(A)}if((N=e.Actions)!=null&&N.length){let E=f("td"),A=f("div","blu-table__actions");for(let O of e.Actions){let R=f("button","blu-table-button",O.Label);R.type="button",R.disabled=typeof O.Disabled=="function"?O.Disabled(s):!!O.Disabled,R.dataset.focusKey="row-"+String(e.RowKey?s[e.RowKey]:L)+"-"+O.Key,e.RowKey&&R.setAttribute("aria-label",O.Label+" "+String(s[e.RowKey])),R.onclick=()=>{var q;return(q=n.RowAction)==null?void 0:q.call(n,O.Key,s)},A.append(R)}E.append(A),y.append(E)}t.append(y)}m.textContent=e.Loading?"Loading records\u2026":`${S.start}\u2013${S.end} of ${S.total} records`,p.hidden=b.hidden=!e.PageSize,p.disabled=!!e.Loading||S.page<=1,b.disabled=!!e.Loading||S.page>=S.pages,p.onclick=()=>{var L;k({Page:S.page-1}),(L=n.PageChanged)==null||L.call(n,e.Page)},b.onclick=()=>{var L;k({Page:S.page+1}),(L=n.PageChanged)==null||L.call(n,e.Page)},w&&((j=Array.from(a.querySelectorAll("[data-focus-key]")).find(L=>L.dataset.focusKey===w))==null||j.focus()),!e.Loading&&e.PageSize&&(x===b&&b.disabled?(p.disabled?g:p).focus():x===p&&p.disabled&&(b.disabled?g:b).focus())}try{k({})}catch(T){throw a.remove(),T}return{element:a,update:k,getState:()=>({Page:e.Page||1,SortKey:e.SortKey,SortDirection:e.SortDirection||"Ascending"}),destroy(){o||(o=!0,a.remove())}}}var ee={};re(ee,{getAppearance:()=>de,mountAppearanceSelector:()=>ce,setAppearance:()=>se});(function(c){"use strict";if(c.BluUITheme&&c.BluUITheme.version==="1.0.0")return;var l="bluui:appearance:v1",n=c.matchMedia("(prefers-color-scheme: dark)"),e="System";function o(t){var r=String(t||"System").toLowerCase();if(r!=="system"&&r!=="light"&&r!=="dark")throw new Error("Mode must be Light, Dark or System.");return r.charAt(0).toUpperCase()+r.slice(1)}function a(){try{return o(c.localStorage.getItem(l))}catch(t){return"System"}}function g(){return{Mode:e,EffectiveMode:e==="System"?n.matches?"Dark":"Light":e}}function u(){var t=g(),r=document.documentElement;return r.setAttribute("data-bluui-mode",t.Mode.toLowerCase()),r.setAttribute("data-bluui-theme",t.EffectiveMode.toLowerCase()),document.querySelectorAll("[data-bluui-theme-select]").forEach(function(m){m.value=e}),c.dispatchEvent(new CustomEvent("bluui:themechange",{detail:t})),t}function i(t,r){if(e=o(t),r!==!1)try{c.localStorage.setItem(l,e)}catch(m){}return u()}function h(t){if(!t)return null;var r=t.querySelector("[data-bluui-theme-select]");if(r)return r.value=e,r;var m=document.createElement("label");m.className="blu-theme-control";var p=document.createElementNS("http://www.w3.org/2000/svg","svg");p.setAttribute("viewBox","0 0 24 24"),p.setAttribute("width","17"),p.setAttribute("height","17"),p.setAttribute("aria-hidden","true"),p.setAttribute("focusable","false");var b=document.createElementNS("http://www.w3.org/2000/svg","path");b.setAttribute("d","M12 3a9 9 0 1 0 0 18V3Z M12 3a9 9 0 0 1 0 18"),b.setAttribute("fill","none"),b.setAttribute("stroke","currentColor"),b.setAttribute("stroke-width","1.7"),p.appendChild(b);var d=document.createElement("select");return d.setAttribute("data-bluui-theme-select",""),d.setAttribute("aria-label","Appearance"),["System","Light","Dark"].forEach(function(k){var T=document.createElement("option");T.value=k,T.textContent=k,d.appendChild(T)}),d.value=e,d.addEventListener("change",function(){i(d.value)}),m.appendChild(p),m.appendChild(d),t.appendChild(m),d}c.BluUITheme={version:"1.0.0",setMode:i,getMode:g,mountSelector:h},e=a(),n.addEventListener?n.addEventListener("change",function(){e==="System"&&u()}):n.addListener(function(){e==="System"&&u()}),c.addEventListener("storage",function(t){(t.key===l||t.key===null)&&(e=a(),u())}),u()})(window);function Y(){if(typeof window=="undefined")throw new Error("Set appearance in the browser.");return window.BluUITheme}function se(c,l=!0){return Y().setMode(c,l)}function de(){return Y().getMode()}function ce(c){return Y().mountSelector(c)}function ue(c){let l=new Map,n=new WeakMap;function e(u){let i=l.get(u);i&&(i.instance.destroy(),l.delete(u),n.get(i.host)===u&&(n.delete(i.host),delete i.host.dataset.bluCommunityReady))}function o(u,i,h,t,r){var m;try{if(!r)throw Error("Owner key is required.");let p=document.getElementById(i);if(!p)throw Error("Community component host was not found.");let b=n.get(p);b&&b!==r&&e(b);let d=l.get(r);d&&(d.host!==p||d.kind!==u)&&e(r),u==="BluGridBasic"&&(h={...h},"RowsJson"in h&&(h.Rows=JSON.parse(h.RowsJson),delete h.RowsJson),"ColumnsJson"in h&&(h.Columns=JSON.parse(h.ColumnsJson),delete h.ColumnsJson));let k=l.get(r);if(k)return k.instance.update(h),"";let T=c[u];if(typeof T!="function")throw Error("Unknown Community component.");let w=T(p,h,t);return l.set(r,{host:p,kind:u,instance:w}),n.set(p,r),p.dataset.bluCommunityReady="true",""}catch(p){let b=p instanceof Error?p.message:String(p);return(m=t==null?void 0:t.Error)==null||m.call(t,b),b}}function a(u,i){let h={...u},t=h.HostId,r=h.OwnerKey;delete h.HostId,delete h.OwnerKey;try{return h.Columns=JSON.parse(h.ColumnsJson).map(m=>(m.Width===0&&delete m.Width,m.Header||delete m.Header,m)),delete h.ColumnsJson,o("BluGridBasic",t,h,{Ready:()=>i.EmitReady(r),RowClicked:m=>i.EmitRowClicked(JSON.stringify(m)),SelectionChanged:m=>i.EmitSelectionChanged(JSON.stringify(m)),Error:m=>i.EmitError(m)},r)}catch(m){let p=m instanceof Error?m.message:String(m);return i.EmitError(p),p}}let g={syncGrid:a,version:"0.2.0",sync:o,destroy:e,clearSelection:u=>{let i=l.get(u);return i!=null&&i.instance.clearSelection?(i.instance.clearSelection(),""):"Grid instance was not found."},...ee};return Object.assign(g,{register:u=>Object.assign(c,u)})}function ne(c){let l=window;l.BluUICommunity?l.BluUICommunity.register(c):l.BluUICommunity=ue(c)}var K=c=>(l,n,e)=>{let o=c(l,oe(n),e);return{...o,update:a=>o.update(oe(a))}},oe=c=>{let l={...c};for(let n of["Options","Rows","Columns","Actions","Leading","Trailing"])n+"Json"in l&&(l[n]=JSON.parse(String(l[n+"Json"]||(["Leading","Trailing"].includes(n)?"null":"[]"))),delete l[n+"Json"]);return l};ne({Checkbox:K(J),TextInput:K($),TextArea:K(Z),RadioButton:K(G),RadioGroup:K(W),Switch:K(z),Select:K(Q),Table:K(X)});})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** Private O11 pilot. Enhances stable native wrappers; never owns their children. */
|
|
2
|
+
import { type MotionEffect } from './motion/controller.js';
|
|
3
|
+
import { type ComponentMotionSettings } from './motion/component-settings.js';
|
|
4
|
+
export interface NativeMotionOptions {
|
|
5
|
+
EnableMotion?: boolean;
|
|
6
|
+
Preference?: 'System' | 'Reduced' | 'Off';
|
|
7
|
+
UseDefaultDuration?: boolean;
|
|
8
|
+
DurationMs?: number;
|
|
9
|
+
Easing?: ComponentMotionSettings['easing'];
|
|
10
|
+
Effect?: MotionEffect;
|
|
11
|
+
ReplayKey?: string;
|
|
12
|
+
ActivePanel?: string;
|
|
13
|
+
FocusFallbackId?: string;
|
|
14
|
+
}
|
|
15
|
+
type Kind = 'provider' | 'container' | 'button' | 'field' | 'modal' | 'workspace';
|
|
16
|
+
export declare function nativeMotionSettings(p: NativeMotionOptions): ComponentMotionSettings;
|
|
17
|
+
/** Multiple producer scripts share this registry, never overlapping body controllers. */
|
|
18
|
+
export declare function createNativeMotionRuntime(): {
|
|
19
|
+
version: string;
|
|
20
|
+
sync: (kind: Kind, hostId: string, p: NativeMotionOptions, ownerId?: string) => string;
|
|
21
|
+
destroy: (id: string) => void;
|
|
22
|
+
capture: (id: string) => void | undefined;
|
|
23
|
+
/** Read-only counts for lifecycle checks; does not expose application data. */
|
|
24
|
+
inspect: () => {
|
|
25
|
+
owners: number;
|
|
26
|
+
kinds: Kind[];
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
declare global {
|
|
30
|
+
interface Window {
|
|
31
|
+
BluUIMotionPilot?: ReturnType<typeof createNativeMotionRuntime>;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/** Private, unpublished O11 1.2 integration. Enhances stable native wrappers; never owns their children. */
|
|
2
|
+
import { type MotionController, type MotionEffect } from './motion/controller.js';
|
|
3
|
+
import { type ComponentMotionSettings } from './motion/component-settings.js';
|
|
4
|
+
import { type MotionOrigin } from './motion/effects.js';
|
|
5
|
+
export interface NativeMotionOptions {
|
|
6
|
+
EnableMotion?: boolean;
|
|
7
|
+
Preference?: 'System' | 'Reduced' | 'Off';
|
|
8
|
+
UseDefaultDuration?: boolean;
|
|
9
|
+
DurationMs?: number;
|
|
10
|
+
Easing?: ComponentMotionSettings['easing'];
|
|
11
|
+
Effect?: MotionEffect;
|
|
12
|
+
Origin?: MotionOrigin;
|
|
13
|
+
Phase?: 'enter' | 'exit';
|
|
14
|
+
ReplayKey?: string;
|
|
15
|
+
ActivePanel?: string;
|
|
16
|
+
FocusFallbackId?: string;
|
|
17
|
+
Ripple?: boolean;
|
|
18
|
+
Value?: number;
|
|
19
|
+
Precision?: number;
|
|
20
|
+
Locale?: string;
|
|
21
|
+
IsVisible?: boolean;
|
|
22
|
+
IsActive?: boolean;
|
|
23
|
+
Paused?: boolean;
|
|
24
|
+
Once?: boolean;
|
|
25
|
+
Order?: string;
|
|
26
|
+
Columns?: number;
|
|
27
|
+
GapMs?: number;
|
|
28
|
+
LoopDurationMs?: number;
|
|
29
|
+
Decoration?: string;
|
|
30
|
+
RowKeysJson?: string;
|
|
31
|
+
RowsJson?: string;
|
|
32
|
+
ColumnsJson?: string;
|
|
33
|
+
RowKey?: string;
|
|
34
|
+
Page?: number;
|
|
35
|
+
PageSize?: number;
|
|
36
|
+
SortKey?: string;
|
|
37
|
+
SortDirection?: string;
|
|
38
|
+
Loading?: boolean;
|
|
39
|
+
Progress?: number;
|
|
40
|
+
Label?: string;
|
|
41
|
+
Variant?: string;
|
|
42
|
+
}
|
|
43
|
+
export type Kind = string;
|
|
44
|
+
export type Adapter = {
|
|
45
|
+
update(p: NativeMotionOptions): void;
|
|
46
|
+
capture?(): void;
|
|
47
|
+
destroy(): void;
|
|
48
|
+
};
|
|
49
|
+
export declare function nativeMotionSettings(p: NativeMotionOptions): ComponentMotionSettings;
|
|
50
|
+
/** Multiple producer scripts share this registry, never overlapping body controllers. */
|
|
51
|
+
export declare function createNativeMotionRuntime(): {
|
|
52
|
+
version: string;
|
|
53
|
+
sync: (kind: Kind, hostId: string, p: NativeMotionOptions, ownerId?: string) => string;
|
|
54
|
+
destroy: (id: string) => void;
|
|
55
|
+
register(kind: string, build: (root: HTMLElement, motion: MotionController) => Adapter): void;
|
|
56
|
+
play(id: string, targetId: string, effect?: MotionEffect, phase?: "enter" | "exit"): Promise<string>;
|
|
57
|
+
cancel(id: string, targetId: string): void;
|
|
58
|
+
setPreference(id: string, preference: NativeMotionOptions["Preference"]): string;
|
|
59
|
+
capture: (id: string) => void | undefined;
|
|
60
|
+
/** Read-only counts for lifecycle checks; does not expose application data. */
|
|
61
|
+
inspect: () => {
|
|
62
|
+
owners: number;
|
|
63
|
+
kinds: string[];
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
declare global {
|
|
67
|
+
interface Window {
|
|
68
|
+
BluUIMotion12?: ReturnType<typeof createNativeMotionRuntime>;
|
|
69
|
+
BluUIMotion12Plugins?: Array<(runtime: ReturnType<typeof createNativeMotionRuntime>) => void>;
|
|
70
|
+
}
|
|
71
|
+
}
|
package/dist/notification.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d}from"./chunk-
|
|
1
|
+
import"./chunk-VAM3FPCS.js";import{a,b,c,d}from"./chunk-OLDA73XG.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{a as createNotification,d as dismissNotification,b as showNotification,c as updateNotification};
|
package/dist/pagination.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import"./chunk-4LHIQROI.js";import{a}from"./chunk-G6OW4OZM.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{a as createPagination};
|
package/dist/radio-button.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunk-FNX33PDD.js";import{c as a}from"./chunk-
|
|
1
|
+
import"./chunk-FNX33PDD.js";import{c as a}from"./chunk-TZSX4OTV.js";import"./chunk-EOKNLCNS.js";export{a as createRadioButton};
|
package/dist/radio-group.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunk-IO22GWON.js";import{d as a}from"./chunk-
|
|
1
|
+
import"./chunk-IO22GWON.js";import{d as a}from"./chunk-TZSX4OTV.js";import"./chunk-EOKNLCNS.js";export{a as createRadioGroup};
|
package/dist/sidebar.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import"./chunk-7CEOCZ5L.js";import{a}from"./chunk-KBWB4OIF.js";import"./chunk-SDMH2EVD.js";export{a as createSidebar};
|