@editora/ui-core 0.1.19 → 0.1.20
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/{ElementBase-1b301e7f.js → ElementBase-EV6mVBUV.js} +1 -1
- package/dist/{ElementBase-909688f3.mjs → ElementBase-YlTLMsGk.mjs} +3 -3
- package/dist/accordion.cjs.js +3 -3
- package/dist/accordion.esm.js +39 -62
- package/dist/alert-dialog.cjs.js +19 -19
- package/dist/alert-dialog.esm.js +69 -87
- package/dist/alert.cjs.js +1 -1
- package/dist/alert.esm.js +4 -7
- package/dist/anchor.cjs.js +2 -2
- package/dist/anchor.esm.js +3 -3
- package/dist/animated-beam.cjs.js +83 -83
- package/dist/animated-beam.esm.js +250 -277
- package/dist/animated-list.cjs.js +4 -4
- package/dist/animated-list.esm.js +47 -61
- package/dist/animated-text.cjs.js +2 -2
- package/dist/animated-text.esm.js +13 -24
- package/dist/app-header.cjs.js +3 -3
- package/dist/app-header.esm.js +11 -13
- package/dist/aspect-ratio.cjs.js +1 -1
- package/dist/aspect-ratio.esm.js +4 -7
- package/dist/avatar.cjs.js +1 -1
- package/dist/avatar.esm.js +7 -13
- package/dist/badge.cjs.js +1 -1
- package/dist/badge.esm.js +4 -7
- package/dist/block-controls.cjs.js +2 -2
- package/dist/block-controls.esm.js +19 -35
- package/dist/box.cjs.js +1 -1
- package/dist/box.esm.js +8 -15
- package/dist/breadcrumb.cjs.js +2 -2
- package/dist/breadcrumb.esm.js +20 -37
- package/dist/button.cjs.js +1 -521
- package/dist/button.esm.js +2 -671
- package/dist/{calendar-2c11b824.mjs → calendar-DLY4acgn.mjs} +293 -342
- package/dist/{calendar-a8735e40.js → calendar-Dkof-FTK.js} +25 -25
- package/dist/calendar.cjs.js +1 -1
- package/dist/calendar.esm.js +8 -9
- package/dist/card.cjs.js +4 -4
- package/dist/card.esm.js +13 -19
- package/dist/chart.cjs.js +64 -64
- package/dist/chart.esm.js +223 -254
- package/dist/checkbox.cjs.js +1 -1
- package/dist/checkbox.esm.js +2 -3
- package/dist/collapsible.cjs.js +1 -1
- package/dist/collapsible.esm.js +5 -9
- package/dist/{collection-a1aac0c6.mjs → collection-C7URGjEI.mjs} +8 -14
- package/dist/collection.cjs.js +1 -1
- package/dist/collection.esm.js +4 -7
- package/dist/color-picker.cjs.js +9 -9
- package/dist/color-picker.esm.js +189 -252
- package/dist/combobox.cjs.js +13 -13
- package/dist/combobox.esm.js +93 -126
- package/dist/command-palette.cjs.js +3 -3
- package/dist/command-palette.esm.js +19 -30
- package/dist/command.cjs.js +4 -4
- package/dist/command.esm.js +41 -53
- package/dist/components/ui-orbiter.d.ts.map +1 -1
- package/dist/components/ui-skeleton.d.ts.map +1 -1
- package/dist/components/ui-split-button.d.ts +1 -0
- package/dist/components/ui-split-button.d.ts.map +1 -1
- package/dist/components/ui-time-picker.d.ts.map +1 -1
- package/dist/container.cjs.js +2 -2
- package/dist/container.esm.js +2 -3
- package/dist/context-menu.cjs.js +8 -8
- package/dist/context-menu.esm.js +157 -219
- package/dist/control-group.cjs.js +1 -1
- package/dist/control-group.esm.js +2 -3
- package/dist/data-table.cjs.js +4 -4
- package/dist/data-table.esm.js +299 -381
- package/dist/date-field.cjs.js +3 -3
- package/dist/date-field.esm.js +68 -80
- package/dist/date-picker.cjs.js +9 -9
- package/dist/date-picker.esm.js +69 -97
- package/dist/date-range-picker.cjs.js +3 -3
- package/dist/date-range-picker.esm.js +32 -56
- package/dist/date-range-time-picker.cjs.js +9 -9
- package/dist/date-range-time-picker.esm.js +111 -140
- package/dist/date-time-picker.cjs.js +4 -4
- package/dist/date-time-picker.esm.js +112 -144
- package/dist/date-time-utils-Dmost5Ee.js +1 -0
- package/dist/date-time-utils-y1N2gvG2.mjs +268 -0
- package/dist/description.cjs.js +1 -1
- package/dist/description.esm.js +3 -5
- package/dist/dialog.cjs.js +12 -12
- package/dist/dialog.esm.js +44 -63
- package/dist/direction-provider.cjs.js +1 -1
- package/dist/direction-provider.esm.js +2 -3
- package/dist/{dismissable-layer-9c7e6b58.mjs → dismissable-layer-BmPIoK80.mjs} +29 -33
- package/dist/dismissable-layer-DNfrKA20.js +1 -0
- package/dist/dismissable-layer.cjs.js +2 -2
- package/dist/dismissable-layer.esm.js +4 -6
- package/dist/dock.cjs.js +5 -5
- package/dist/dock.esm.js +134 -155
- package/dist/drawer.cjs.js +2 -2
- package/dist/drawer.esm.js +18 -35
- package/dist/dropdown.cjs.js +2 -2
- package/dist/dropdown.esm.js +119 -149
- package/dist/dropzone.cjs.js +1 -1
- package/dist/dropzone.esm.js +0 -1
- package/dist/empty-state.cjs.js +1 -1
- package/dist/empty-state.esm.js +1 -1
- package/dist/field-error.cjs.js +1 -1
- package/dist/field-error.esm.js +3 -5
- package/dist/field.cjs.js +5 -5
- package/dist/field.esm.js +27 -34
- package/dist/fieldset.cjs.js +4 -4
- package/dist/fieldset.esm.js +19 -24
- package/dist/file-upload.cjs.js +4 -4
- package/dist/file-upload.esm.js +69 -93
- package/dist/flex.cjs.js +1 -1
- package/dist/flex.esm.js +5 -9
- package/dist/floating-toolbar.cjs.js +4 -4
- package/dist/floating-toolbar.esm.js +60 -85
- package/dist/focus-scope-Bwug2gDv.js +1 -0
- package/dist/{focus-scope-103833ee.mjs → focus-scope-CmEsG5UZ.mjs} +39 -48
- package/dist/focus-scope.cjs.js +2 -2
- package/dist/focus-scope.esm.js +15 -20
- package/dist/form.cjs.js +2 -2
- package/dist/form.esm.js +26 -53
- package/dist/gantt.cjs.js +43 -43
- package/dist/gantt.esm.js +295 -322
- package/dist/grid.cjs.js +1 -1
- package/dist/grid.esm.js +5 -9
- package/dist/hover-card.cjs.js +4 -4
- package/dist/hover-card.esm.js +22 -28
- package/dist/icon-cloud.cjs.js +7 -7
- package/dist/icon-cloud.esm.js +48 -62
- package/dist/icon.cjs.js +1 -1
- package/dist/icon.esm.js +2 -4
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +378 -390
- package/dist/inline-edit.cjs.js +11 -11
- package/dist/inline-edit.esm.js +32 -36
- package/dist/input.cjs.js +17 -17
- package/dist/input.esm.js +50 -63
- package/dist/label.cjs.js +2 -2
- package/dist/label.esm.js +8 -17
- package/dist/layout.cjs.js +2 -2
- package/dist/layout.esm.js +20 -26
- package/dist/listbox-B6QgECax.js +46 -0
- package/dist/listbox-DJamVeFj.mjs +200 -0
- package/dist/listbox.cjs.js +1 -1
- package/dist/listbox.esm.js +2 -4
- package/dist/marquee.cjs.js +5 -5
- package/dist/marquee.esm.js +33 -50
- package/dist/masonry-grid.cjs.js +1 -1
- package/dist/masonry-grid.esm.js +5 -9
- package/dist/menu.cjs.js +3 -3
- package/dist/menu.esm.js +106 -126
- package/dist/menubar.cjs.js +5 -5
- package/dist/menubar.esm.js +118 -164
- package/dist/meter.cjs.js +2 -2
- package/dist/meter.esm.js +4 -4
- package/dist/multi-select.cjs.js +4 -4
- package/dist/multi-select.esm.js +120 -140
- package/dist/navigation-menu.cjs.js +4 -4
- package/dist/navigation-menu.esm.js +44 -55
- package/dist/number-field.cjs.js +2 -2
- package/dist/number-field.esm.js +73 -98
- package/dist/number-ticker.cjs.js +3 -3
- package/dist/number-ticker.esm.js +22 -43
- package/dist/odometer.cjs.js +1 -1
- package/dist/odometer.esm.js +5 -9
- package/dist/orbiter.cjs.js +13 -13
- package/dist/orbiter.esm.js +79 -90
- package/dist/{overlayManager-5bbd4dc3.mjs → overlayManager-BJjU1VA8.mjs} +4 -5
- package/dist/{overlayManager-0eda4e08.js → overlayManager-CSy3fJmJ.js} +1 -1
- package/dist/pagination.cjs.js +2 -2
- package/dist/pagination.esm.js +14 -18
- package/dist/{panel-group-a376cc5e.mjs → panel-group-8sVNnGxg.mjs} +24 -46
- package/dist/panel-group-CaD0_KQf.js +36 -0
- package/dist/panel-group.cjs.js +1 -1
- package/dist/panel-group.esm.js +2 -5
- package/dist/panel.cjs.js +4 -4
- package/dist/panel.esm.js +8 -10
- package/dist/password-field.cjs.js +9 -9
- package/dist/password-field.esm.js +62 -82
- package/dist/pin-input.cjs.js +3 -3
- package/dist/pin-input.esm.js +33 -39
- package/dist/placement-grid.cjs.js +4 -4
- package/dist/placement-grid.esm.js +108 -131
- package/dist/plugin-panel.cjs.js +7 -7
- package/dist/plugin-panel.esm.js +13 -15
- package/dist/popover.cjs.js +2 -2
- package/dist/popover.esm.js +21 -31
- package/dist/portal-DgpQ3Jo1.js +1 -0
- package/dist/{portal-fe73e5cc.mjs → portal-bR42gHvG.mjs} +43 -48
- package/dist/portal.cjs.js +2 -2
- package/dist/portal.esm.js +10 -19
- package/dist/{positioner-e9770c66.mjs → positioner-D0VGxtYU.mjs} +189 -209
- package/dist/positioner-D_fqyx_j.js +1 -0
- package/dist/positioner.cjs.js +2 -2
- package/dist/positioner.esm.js +11 -18
- package/dist/presence.cjs.js +1 -1
- package/dist/presence.esm.js +7 -13
- package/dist/progress.cjs.js +1 -1
- package/dist/progress.esm.js +5 -9
- package/dist/quick-actions.cjs.js +6 -6
- package/dist/quick-actions.esm.js +52 -62
- package/dist/radio-group.cjs.js +13 -13
- package/dist/radio-group.esm.js +39 -51
- package/dist/radio.cjs.js +1 -1
- package/dist/radio.esm.js +5 -9
- package/dist/rating.cjs.js +1 -1
- package/dist/rating.esm.js +12 -23
- package/dist/{roving-focus-group-4350c9a7.mjs → roving-focus-group-Dbm1Jko_.mjs} +3 -6
- package/dist/roving-focus-group.cjs.js +1 -1
- package/dist/roving-focus-group.esm.js +3 -5
- package/dist/runtime-CTaOSmBj.js +1 -0
- package/dist/{runtime-161f68a2.mjs → runtime-D1gFh1fS.mjs} +338 -366
- package/dist/runtime.cjs.js +1 -1
- package/dist/runtime.esm.js +6 -6
- package/dist/scroll-area.cjs.js +3 -3
- package/dist/scroll-area.esm.js +38 -46
- package/dist/{scroll-lock-31da444f.mjs → scroll-lock-LfqXXqsu.mjs} +5 -9
- package/dist/section.cjs.js +1 -1
- package/dist/section.esm.js +1 -1
- package/dist/select.cjs.js +7 -7
- package/dist/select.esm.js +67 -97
- package/dist/selection-popup.cjs.js +1 -1
- package/dist/selection-popup.esm.js +8 -15
- package/dist/separator.cjs.js +1 -1
- package/dist/separator.esm.js +1 -1
- package/dist/sidebar.cjs.js +18 -18
- package/dist/sidebar.esm.js +117 -139
- package/dist/skeleton.cjs.js +11 -11
- package/dist/skeleton.esm.js +27 -24
- package/dist/slider.cjs.js +1 -1
- package/dist/slider.esm.js +6 -11
- package/dist/slot.cjs.js +4 -4
- package/dist/slot.esm.js +16 -19
- package/dist/sortable.cjs.js +45 -45
- package/dist/sortable.esm.js +421 -524
- package/dist/spinning-text.cjs.js +12 -12
- package/dist/spinning-text.esm.js +80 -92
- package/dist/split-button.cjs.js +4 -4
- package/dist/split-button.esm.js +77 -62
- package/dist/splitter.cjs.js +1 -1
- package/dist/splitter.esm.js +1 -1
- package/dist/stepper.cjs.js +8 -8
- package/dist/stepper.esm.js +32 -52
- package/dist/switch.cjs.js +7 -7
- package/dist/switch.esm.js +23 -31
- package/dist/table.cjs.js +2 -2
- package/dist/table.esm.js +46 -56
- package/dist/tabs.cjs.js +3 -3
- package/dist/tabs.esm.js +35 -55
- package/dist/tags-input.cjs.js +4 -4
- package/dist/tags-input.esm.js +45 -62
- package/dist/textarea.cjs.js +6 -6
- package/dist/textarea.esm.js +32 -41
- package/dist/time-field.cjs.js +4 -4
- package/dist/time-field.esm.js +70 -84
- package/dist/time-picker.cjs.js +22 -22
- package/dist/time-picker.esm.js +88 -110
- package/dist/timeline.cjs.js +1 -1
- package/dist/timeline.esm.js +3 -5
- package/dist/toast.cjs.js +2 -2
- package/dist/toast.esm.js +33 -47
- package/dist/toggle-group.cjs.js +6 -6
- package/dist/toggle-group.esm.js +85 -105
- package/dist/toggle.cjs.js +1 -1
- package/dist/toggle.esm.js +3 -5
- package/dist/toolbar.cjs.js +1 -1
- package/dist/toolbar.esm.js +13 -24
- package/dist/tooltip.cjs.js +2 -2
- package/dist/tooltip.esm.js +31 -42
- package/dist/transfer-list.cjs.js +19 -19
- package/dist/transfer-list.esm.js +98 -111
- package/dist/{tree-dcd74a4a.mjs → tree-B3kE8ESs.mjs} +55 -62
- package/dist/tree-Dx_kv_ih.js +39 -0
- package/dist/tree-item.cjs.js +2 -2
- package/dist/tree-item.esm.js +2 -3
- package/dist/tree.cjs.js +1 -1
- package/dist/tree.esm.js +2 -5
- package/dist/ui-button-Q0GNNWKC.mjs +665 -0
- package/dist/ui-button-rXQOS9QJ.js +521 -0
- package/dist/{icon-9e9da03b.js → ui-icon-BzVNC_lr.js} +4 -4
- package/dist/{icon-e2a85cc1.mjs → ui-icon-YI6lyuqU.mjs} +58 -65
- package/dist/visually-hidden.cjs.js +1 -1
- package/dist/visually-hidden.esm.js +1 -1
- package/dist/wizard.cjs.js +14 -14
- package/dist/wizard.esm.js +85 -105
- package/package.json +2 -2
- package/dist/date-time-utils-66480de4.js +0 -1
- package/dist/date-time-utils-a2c7af25.mjs +0 -307
- package/dist/dismissable-layer-193e3bed.js +0 -1
- package/dist/focus-scope-2b12b4e7.js +0 -1
- package/dist/listbox-308789a0.mjs +0 -210
- package/dist/listbox-ef2f708e.js +0 -46
- package/dist/panel-group-40254cdd.js +0 -36
- package/dist/portal-c69756c0.js +0 -1
- package/dist/positioner-33529bb8.js +0 -1
- package/dist/runtime-3f13807b.js +0 -1
- package/dist/tree-0a7a8d05.js +0 -39
- /package/dist/{collection-a2969ad2.js → collection-qv8A8rq4.js} +0 -0
- /package/dist/{menu-item-styles-27fdbac4.mjs → menu-item-styles-CZiPwPwl.mjs} +0 -0
- /package/dist/{menu-item-styles-83ad1e22.js → menu-item-styles-CbNUEwP2.js} +0 -0
- /package/dist/{roving-focus-group-5c059bf9.js → roving-focus-group-BdJ_4Njm.js} +0 -0
- /package/dist/{scroll-lock-d7b0df21.js → scroll-lock-BX6e3Ced.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const C=require("./ElementBase-EV6mVBUV.js"),D="14s",I=" • ",h="linear",N=4,L=1,O=12,F=new Set(["clockwise","counterclockwise"]),Q=new Set(["default","surface","soft","solid","glass","contrast","minimal"]),U=new Set(["brand","neutral","info","success","warning","danger"]),B=new Set(["sm","md","lg","xl","1","2","3","4"]),j=new Set(["none","low","high"]),r={sm:{fontSize:"12px",fontSizePx:12,radius:"56px",radiusPx:56,padding:"12px",letterSpacing:"0.16em",letterSpacingPx:1.92,surfaceRadius:"24px"},md:{fontSize:"14px",fontSizePx:14,radius:"78px",radiusPx:78,padding:"16px",letterSpacing:"0.16em",letterSpacingPx:2.24,surfaceRadius:"28px"},lg:{fontSize:"16px",fontSizePx:16,radius:"96px",radiusPx:96,padding:"20px",letterSpacing:"0.18em",letterSpacingPx:2.88,surfaceRadius:"32px"},xl:{fontSize:"20px",fontSizePx:20,radius:"122px",radiusPx:122,padding:"24px",letterSpacing:"0.2em",letterSpacingPx:4,surfaceRadius:"36px"}},q=`
|
|
2
2
|
:host {
|
|
3
|
-
--ui-spinning-text-duration: ${
|
|
4
|
-
--ui-spinning-text-easing: ${
|
|
3
|
+
--ui-spinning-text-duration: ${D};
|
|
4
|
+
--ui-spinning-text-easing: ${h};
|
|
5
5
|
--ui-spinning-text-font-size: ${r.lg.fontSize};
|
|
6
6
|
--ui-spinning-text-font-weight: 760;
|
|
7
7
|
--ui-spinning-text-letter-spacing: ${r.lg.letterSpacing};
|
|
@@ -367,16 +367,16 @@
|
|
|
367
367
|
forced-color-adjust: none;
|
|
368
368
|
}
|
|
369
369
|
}
|
|
370
|
-
`;function
|
|
370
|
+
`;function G(t){return t!=null&&F.has(t)?t:"clockwise"}function V(t){return t!=null&&Q.has(t)?t:"default"}function X(t){return t!=null&&U.has(t)?t:"brand"}function Y(t){return t==null||!B.has(t)?"lg":t==="1"?"sm":t==="2"?"md":t==="3"?"lg":t==="4"?"xl":t}function Z(t){return t!=null&&j.has(t)?t:"low"}function u(t){if(t==null||t.trim()==="")return null;const n=t.trim().split(/\s+/).filter(Boolean);return n.length?n.map(e=>/^-?\d+(\.\d+)?$/.test(e)?`${e}px`:e).join(" "):null}function H(t,i,n=Number.POSITIVE_INFINITY){if(t==null||t.trim()==="")return i;const e=Number.parseInt(t,10);return!Number.isFinite(e)||e<=0?i:Math.min(e,n)}function W(t,i){if(t==null||t.trim()==="")return i;const n=Number.parseFloat(t.replace(/rpm$/i,"").trim());return Number.isFinite(n)&&n>0?n:i}function x(t,i,n){if(t==null||t.trim()==="")return n;const e=t.trim();return/^-?\d+(\.\d+)?$/.test(e)||/^-?\d+(\.\d+)?px$/i.test(e)?Number.parseFloat(e):/^-?\d+(\.\d+)?em$/i.test(e)?Number.parseFloat(e)*i:/^-?\d+(\.\d+)?rem$/i.test(e)?Number.parseFloat(e)*16:n}function J(t,i){const n=K(t);if(n)return n;const e=W(i,N);return`${Math.max(60/e,.25)}s`}function K(t){if(t==null||t.trim()==="")return null;const i=t.trim();return/^-?\d+(\.\d+)?(ms|s)$/i.test(i)?i:/^-?\d+(\.\d+)?$/i.test(i)?`${i}s`:null}function f(t){const i=t.getAttribute("text");if(i!=null)return i;let n="";for(const e of Array.from(t.childNodes)){if(e.nodeType===Node.TEXT_NODE){n+=e.textContent||"";continue}if(e.nodeType!==Node.ELEMENT_NODE)continue;const a=e;a.getAttribute("slot")!=="center"&&(n+=a.textContent||"")}return n}function tt(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function it(t){if(!t)return[];const i=Intl;if(typeof Intl<"u"&&i.Segmenter){const n=new i.Segmenter(void 0,{granularity:"grapheme"});return Array.from(n.segment(t),e=>e.segment)}return Array.from(t)}function nt(t,i,n){const e=t.replace(/\s+/g," ").trim();return e?i<=1?e:Array.from({length:i},()=>e).join(n):""}function et(t,i,n){if(t<=1)return Math.max(i*1.5,20);const e=Math.max(i*.62+Math.max(n,0),i*.48),a=t*e;return Math.ceil(a/(2*Math.PI)+i*.6)}function s(t,i,n){n==null||n===""?t.style.removeProperty(i):t.style.setProperty(i,n)}class b extends C.ElementBase{constructor(){super(),this._lightDomObserver=null,this._mediaQuery=null,this._onLightDomMutation=this._onLightDomMutation.bind(this),this._onReducedMotionChange=this._onReducedMotionChange.bind(this)}static get observedAttributes(){return["text","repeat","separator","speed","duration","direction","variant","tone","size","radius","padding","font-size","font-weight","letter-spacing","color","accent","orbit-color","easing","elevation","paused","pause-on-hover","pause-on-focus"]}connectedCallback(){super.connectedCallback(),this.setAttribute("role","img"),this._observeLightDom(),this._bindReducedMotion(),this._syncState()}disconnectedCallback(){if(this._lightDomObserver&&(this._lightDomObserver.disconnect(),this._lightDomObserver=null),this._mediaQuery){try{this._mediaQuery.removeEventListener("change",this._onReducedMotionChange)}catch{this._mediaQuery.removeListener(this._onReducedMotionChange)}this._mediaQuery=null}super.disconnectedCallback()}play(){this.removeAttribute("paused"),this._syncState()}pause(){this.setAttribute("paused",""),this._syncState()}refresh(){this.requestRender()}attributeChangedCallback(i,n,e){super.attributeChangedCallback(i,n,e),i==="paused"&&n!==e&&this._syncState()}render(){const i=Y(this.getAttribute("size")),n=r[i],e=f(this),a=H(this.getAttribute("repeat"),L,O),m=this.getAttribute("separator")??I,v=nt(e,a,m),o=it(v),z=!!this.querySelector('[slot="center"]'),c=u(this.getAttribute("font-size")),g=u(this.getAttribute("letter-spacing")),S=u(this.getAttribute("padding")),y=u(this.getAttribute("radius")),p=x(c,n.fontSizePx,n.fontSizePx),w=x(g,p,n.letterSpacingPx),A=o.length?et(o.length,p,w):0,_=J(this.getAttribute("duration"),this.getAttribute("speed")),$=G(this.getAttribute("direction")),T=V(this.getAttribute("variant")),E=X(this.getAttribute("tone")),R=Z(this.getAttribute("elevation")),M=this.getAttribute("easing")?.trim()||h,P=o.length?o.map((d,l)=>{const k=d===" "?" ":tt(d);return`
|
|
371
371
|
<span
|
|
372
372
|
class="glyph"
|
|
373
373
|
part="glyph"
|
|
374
374
|
aria-hidden="true"
|
|
375
|
-
data-index="${
|
|
376
|
-
style="--ui-spinning-text-index:${
|
|
377
|
-
>${
|
|
378
|
-
`}).join(""):"";s(this,"--ui-spinning-text-duration"
|
|
379
|
-
<style>${
|
|
375
|
+
data-index="${l}"
|
|
376
|
+
style="--ui-spinning-text-index:${l};"
|
|
377
|
+
>${k}</span>
|
|
378
|
+
`}).join(""):"";s(this,"--ui-spinning-text-duration",_),s(this,"--ui-spinning-text-easing",M),s(this,"--ui-spinning-text-font-size",c),s(this,"--ui-spinning-text-letter-spacing",g),s(this,"--ui-spinning-text-padding",S),s(this,"--ui-spinning-text-radius",y),s(this,"--ui-spinning-text-color",this.getAttribute("color")),s(this,"--ui-spinning-text-accent",this.getAttribute("accent")),s(this,"--ui-spinning-text-orbit-color",this.getAttribute("orbit-color")),s(this,"--ui-spinning-text-font-weight",this.getAttribute("font-weight")),s(this,"--ui-spinning-text-min-radius",`${A}px`),s(this,"--ui-spinning-text-step",o.length?`${360/o.length}deg`:null),e.trim()?this.setAttribute("aria-label",e.replace(/\s+/g," ").trim()):this.removeAttribute("aria-label"),this.setAttribute("data-direction",$),this.setAttribute("data-variant",T),this.setAttribute("data-tone",E),this.setAttribute("data-elevation",R),this.setContent(`
|
|
379
|
+
<style>${q}</style>
|
|
380
380
|
<div class="root" part="root">
|
|
381
381
|
<div class="surface" part="surface">
|
|
382
382
|
<div class="stage" part="stage">
|
|
@@ -385,11 +385,11 @@
|
|
|
385
385
|
part="ring"
|
|
386
386
|
aria-hidden="true"
|
|
387
387
|
data-glyph-count="${o.length}"
|
|
388
|
-
>${
|
|
389
|
-
<div class="center-shell${
|
|
388
|
+
>${P}</div>
|
|
389
|
+
<div class="center-shell${z?"":" center-shell--empty"}" part="center">
|
|
390
390
|
<slot name="center"></slot>
|
|
391
391
|
</div>
|
|
392
392
|
</div>
|
|
393
393
|
</div>
|
|
394
394
|
</div>
|
|
395
|
-
`),this._syncState()}_observeLightDom(){this._lightDomObserver||typeof MutationObserver>"u"||(this._lightDomObserver=new MutationObserver(this._onLightDomMutation),this._lightDomObserver.observe(this,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:["slot"]}))}_bindReducedMotion(){if(!(this._mediaQuery||typeof window>"u"||typeof window.matchMedia!="function")){this._mediaQuery=window.matchMedia("(prefers-reduced-motion: reduce)");try{this._mediaQuery.addEventListener("change",this._onReducedMotionChange)}catch{this._mediaQuery.addListener(this._onReducedMotionChange)}}}_onLightDomMutation(){this.requestRender()}_onReducedMotionChange(){this._syncState()}_syncState(){
|
|
395
|
+
`),this._syncState()}_observeLightDom(){this._lightDomObserver||typeof MutationObserver>"u"||(this._lightDomObserver=new MutationObserver(this._onLightDomMutation),this._lightDomObserver.observe(this,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:["slot"]}))}_bindReducedMotion(){if(!(this._mediaQuery||typeof window>"u"||typeof window.matchMedia!="function")){this._mediaQuery=window.matchMedia("(prefers-reduced-motion: reduce)");try{this._mediaQuery.addEventListener("change",this._onReducedMotionChange)}catch{this._mediaQuery.addListener(this._onReducedMotionChange)}}}_onLightDomMutation(){this.requestRender()}_onReducedMotionChange(){this._syncState()}_syncState(){if(!f(this).replace(/\s+/g," ").trim()){this.setAttribute("data-state","idle");return}const n=!!this._mediaQuery?.matches;this.setAttribute("data-motion",n?"reduced":"auto"),this.setAttribute("data-state",n||this.hasAttribute("paused")?"paused":"running")}}typeof customElements<"u"&&!customElements.get("ui-spinning-text")&&customElements.define("ui-spinning-text",b);exports.UISpinningText=b;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as
|
|
2
|
-
const
|
|
1
|
+
import { E as k } from "./ElementBase-YlTLMsGk.mjs";
|
|
2
|
+
const C = "14s", D = " • ", h = "linear", N = 4, I = 1, L = 12, O = /* @__PURE__ */ new Set(["clockwise", "counterclockwise"]), F = /* @__PURE__ */ new Set(["default", "surface", "soft", "solid", "glass", "contrast", "minimal"]), Q = /* @__PURE__ */ new Set(["brand", "neutral", "info", "success", "warning", "danger"]), U = /* @__PURE__ */ new Set(["sm", "md", "lg", "xl", "1", "2", "3", "4"]), B = /* @__PURE__ */ new Set(["none", "low", "high"]), r = {
|
|
3
3
|
sm: {
|
|
4
4
|
fontSize: "12px",
|
|
5
5
|
fontSizePx: 12,
|
|
@@ -40,10 +40,10 @@ const D = "14s", N = " • ", b = "linear", I = 4, L = 1, O = 12, F = /* @__PURE
|
|
|
40
40
|
letterSpacingPx: 4,
|
|
41
41
|
surfaceRadius: "36px"
|
|
42
42
|
}
|
|
43
|
-
},
|
|
43
|
+
}, j = `
|
|
44
44
|
:host {
|
|
45
|
-
--ui-spinning-text-duration: ${
|
|
46
|
-
--ui-spinning-text-easing: ${
|
|
45
|
+
--ui-spinning-text-duration: ${C};
|
|
46
|
+
--ui-spinning-text-easing: ${h};
|
|
47
47
|
--ui-spinning-text-font-size: ${r.lg.fontSize};
|
|
48
48
|
--ui-spinning-text-font-weight: 760;
|
|
49
49
|
--ui-spinning-text-letter-spacing: ${r.lg.letterSpacing};
|
|
@@ -410,102 +410,92 @@ const D = "14s", N = " • ", b = "linear", I = 4, L = 1, O = 12, F = /* @__PURE
|
|
|
410
410
|
}
|
|
411
411
|
}
|
|
412
412
|
`;
|
|
413
|
+
function q(t) {
|
|
414
|
+
return t != null && O.has(t) ? t : "clockwise";
|
|
415
|
+
}
|
|
413
416
|
function G(t) {
|
|
414
|
-
return t != null && F.has(t) ? t : "
|
|
417
|
+
return t != null && F.has(t) ? t : "default";
|
|
415
418
|
}
|
|
416
419
|
function V(t) {
|
|
417
|
-
return t != null && Q.has(t) ? t : "
|
|
420
|
+
return t != null && Q.has(t) ? t : "brand";
|
|
418
421
|
}
|
|
419
422
|
function X(t) {
|
|
420
|
-
return t
|
|
423
|
+
return t == null || !U.has(t) ? "lg" : t === "1" ? "sm" : t === "2" ? "md" : t === "3" ? "lg" : t === "4" ? "xl" : t;
|
|
421
424
|
}
|
|
422
425
|
function Y(t) {
|
|
423
|
-
return t
|
|
424
|
-
}
|
|
425
|
-
function Z(t) {
|
|
426
|
-
return t != null && j.has(t) ? t : "low";
|
|
426
|
+
return t != null && B.has(t) ? t : "low";
|
|
427
427
|
}
|
|
428
428
|
function u(t) {
|
|
429
|
-
if (t == null || t.trim() === "")
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
return e.length ? e.map((i) => /^-?\d+(\.\d+)?$/.test(i) ? `${i}px` : i).join(" ") : null;
|
|
429
|
+
if (t == null || t.trim() === "") return null;
|
|
430
|
+
const n = t.trim().split(/\s+/).filter(Boolean);
|
|
431
|
+
return n.length ? n.map((e) => /^-?\d+(\.\d+)?$/.test(e) ? `${e}px` : e).join(" ") : null;
|
|
433
432
|
}
|
|
434
|
-
function
|
|
435
|
-
if (t == null || t.trim() === "")
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
return !Number.isFinite(i) || i <= 0 ? n : Math.min(i, e);
|
|
433
|
+
function Z(t, i, n = Number.POSITIVE_INFINITY) {
|
|
434
|
+
if (t == null || t.trim() === "") return i;
|
|
435
|
+
const e = Number.parseInt(t, 10);
|
|
436
|
+
return !Number.isFinite(e) || e <= 0 ? i : Math.min(e, n);
|
|
439
437
|
}
|
|
440
|
-
function
|
|
441
|
-
if (t == null || t.trim() === "")
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
return Number.isFinite(e) && e > 0 ? e : n;
|
|
438
|
+
function H(t, i) {
|
|
439
|
+
if (t == null || t.trim() === "") return i;
|
|
440
|
+
const n = Number.parseFloat(t.replace(/rpm$/i, "").trim());
|
|
441
|
+
return Number.isFinite(n) && n > 0 ? n : i;
|
|
445
442
|
}
|
|
446
|
-
function
|
|
447
|
-
if (t == null || t.trim() === "")
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
return /^-?\d+(\.\d+)?$/.test(i) || /^-?\d+(\.\d+)?px$/i.test(i) ? Number.parseFloat(i) : /^-?\d+(\.\d+)?em$/i.test(i) ? Number.parseFloat(i) * n : /^-?\d+(\.\d+)?rem$/i.test(i) ? Number.parseFloat(i) * 16 : e;
|
|
443
|
+
function x(t, i, n) {
|
|
444
|
+
if (t == null || t.trim() === "") return n;
|
|
445
|
+
const e = t.trim();
|
|
446
|
+
return /^-?\d+(\.\d+)?$/.test(e) || /^-?\d+(\.\d+)?px$/i.test(e) ? Number.parseFloat(e) : /^-?\d+(\.\d+)?em$/i.test(e) ? Number.parseFloat(e) * i : /^-?\d+(\.\d+)?rem$/i.test(e) ? Number.parseFloat(e) * 16 : n;
|
|
451
447
|
}
|
|
452
|
-
function
|
|
453
|
-
const
|
|
454
|
-
if (
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
return `${Math.max(60 / i, 0.25)}s`;
|
|
448
|
+
function W(t, i) {
|
|
449
|
+
const n = J(t);
|
|
450
|
+
if (n) return n;
|
|
451
|
+
const e = H(i, N);
|
|
452
|
+
return `${Math.max(60 / e, 0.25)}s`;
|
|
458
453
|
}
|
|
459
|
-
function
|
|
460
|
-
if (t == null || t.trim() === "")
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
return /^-?\d+(\.\d+)?(ms|s)$/i.test(n) ? n : /^-?\d+(\.\d+)?$/i.test(n) ? `${n}s` : null;
|
|
454
|
+
function J(t) {
|
|
455
|
+
if (t == null || t.trim() === "") return null;
|
|
456
|
+
const i = t.trim();
|
|
457
|
+
return /^-?\d+(\.\d+)?(ms|s)$/i.test(i) ? i : /^-?\d+(\.\d+)?$/i.test(i) ? `${i}s` : null;
|
|
464
458
|
}
|
|
465
|
-
function
|
|
466
|
-
const
|
|
467
|
-
if (
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
e += i.textContent || "";
|
|
459
|
+
function f(t) {
|
|
460
|
+
const i = t.getAttribute("text");
|
|
461
|
+
if (i != null) return i;
|
|
462
|
+
let n = "";
|
|
463
|
+
for (const e of Array.from(t.childNodes)) {
|
|
464
|
+
if (e.nodeType === Node.TEXT_NODE) {
|
|
465
|
+
n += e.textContent || "";
|
|
473
466
|
continue;
|
|
474
467
|
}
|
|
475
|
-
if (
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
a.getAttribute("slot") !== "center" && (e += a.textContent || "");
|
|
468
|
+
if (e.nodeType !== Node.ELEMENT_NODE) continue;
|
|
469
|
+
const a = e;
|
|
470
|
+
a.getAttribute("slot") !== "center" && (n += a.textContent || "");
|
|
479
471
|
}
|
|
480
|
-
return
|
|
472
|
+
return n;
|
|
481
473
|
}
|
|
482
|
-
function
|
|
474
|
+
function K(t) {
|
|
483
475
|
return t.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
484
476
|
}
|
|
485
|
-
function
|
|
486
|
-
if (!t)
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
return Array.from(e.segment(t), (i) => i.segment);
|
|
477
|
+
function tt(t) {
|
|
478
|
+
if (!t) return [];
|
|
479
|
+
const i = Intl;
|
|
480
|
+
if (typeof Intl < "u" && i.Segmenter) {
|
|
481
|
+
const n = new i.Segmenter(void 0, { granularity: "grapheme" });
|
|
482
|
+
return Array.from(n.segment(t), (e) => e.segment);
|
|
492
483
|
}
|
|
493
484
|
return Array.from(t);
|
|
494
485
|
}
|
|
495
|
-
function
|
|
496
|
-
const
|
|
497
|
-
return
|
|
486
|
+
function it(t, i, n) {
|
|
487
|
+
const e = t.replace(/\s+/g, " ").trim();
|
|
488
|
+
return e ? i <= 1 ? e : Array.from({ length: i }, () => e).join(n) : "";
|
|
498
489
|
}
|
|
499
|
-
function
|
|
500
|
-
if (t <= 1)
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
return Math.ceil(a / (2 * Math.PI) + n * 0.6);
|
|
490
|
+
function nt(t, i, n) {
|
|
491
|
+
if (t <= 1) return Math.max(i * 1.5, 20);
|
|
492
|
+
const e = Math.max(i * 0.62 + Math.max(n, 0), i * 0.48), a = t * e;
|
|
493
|
+
return Math.ceil(a / (2 * Math.PI) + i * 0.6);
|
|
504
494
|
}
|
|
505
|
-
function s(t,
|
|
506
|
-
|
|
495
|
+
function s(t, i, n) {
|
|
496
|
+
n == null || n === "" ? t.style.removeProperty(i) : t.style.setProperty(i, n);
|
|
507
497
|
}
|
|
508
|
-
class
|
|
498
|
+
class et extends k {
|
|
509
499
|
constructor() {
|
|
510
500
|
super(), this._lightDomObserver = null, this._mediaQuery = null, this._onLightDomMutation = this._onLightDomMutation.bind(this), this._onReducedMotionChange = this._onReducedMotionChange.bind(this);
|
|
511
501
|
}
|
|
@@ -558,25 +548,24 @@ class rt extends C {
|
|
|
558
548
|
refresh() {
|
|
559
549
|
this.requestRender();
|
|
560
550
|
}
|
|
561
|
-
attributeChangedCallback(n, e
|
|
562
|
-
super.attributeChangedCallback(n, e, i
|
|
551
|
+
attributeChangedCallback(i, n, e) {
|
|
552
|
+
super.attributeChangedCallback(i, n, e), i === "paused" && n !== e && this._syncState();
|
|
563
553
|
}
|
|
564
554
|
render() {
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
const k = l === " " ? " " : tt(l);
|
|
555
|
+
const i = X(this.getAttribute("size")), n = r[i], e = f(this), a = Z(this.getAttribute("repeat"), I, L), b = this.getAttribute("separator") ?? D, m = it(e, a, b), o = tt(m), v = !!this.querySelector('[slot="center"]'), c = u(this.getAttribute("font-size")), g = u(this.getAttribute("letter-spacing")), z = u(this.getAttribute("padding")), y = u(this.getAttribute("radius")), p = x(c, n.fontSizePx, n.fontSizePx), S = x(g, p, n.letterSpacingPx), w = o.length ? nt(o.length, p, S) : 0, A = W(this.getAttribute("duration"), this.getAttribute("speed")), _ = q(this.getAttribute("direction")), $ = G(this.getAttribute("variant")), E = V(this.getAttribute("tone")), T = Y(this.getAttribute("elevation")), R = this.getAttribute("easing")?.trim() || h, M = o.length ? o.map((d, l) => {
|
|
556
|
+
const P = d === " " ? " " : K(d);
|
|
568
557
|
return `
|
|
569
558
|
<span
|
|
570
559
|
class="glyph"
|
|
571
560
|
part="glyph"
|
|
572
561
|
aria-hidden="true"
|
|
573
|
-
data-index="${
|
|
574
|
-
style="--ui-spinning-text-index:${
|
|
575
|
-
>${
|
|
562
|
+
data-index="${l}"
|
|
563
|
+
style="--ui-spinning-text-index:${l};"
|
|
564
|
+
>${P}</span>
|
|
576
565
|
`;
|
|
577
566
|
}).join("") : "";
|
|
578
|
-
s(this, "--ui-spinning-text-duration",
|
|
579
|
-
<style>${
|
|
567
|
+
s(this, "--ui-spinning-text-duration", A), s(this, "--ui-spinning-text-easing", R), s(this, "--ui-spinning-text-font-size", c), s(this, "--ui-spinning-text-letter-spacing", g), s(this, "--ui-spinning-text-padding", z), s(this, "--ui-spinning-text-radius", y), s(this, "--ui-spinning-text-color", this.getAttribute("color")), s(this, "--ui-spinning-text-accent", this.getAttribute("accent")), s(this, "--ui-spinning-text-orbit-color", this.getAttribute("orbit-color")), s(this, "--ui-spinning-text-font-weight", this.getAttribute("font-weight")), s(this, "--ui-spinning-text-min-radius", `${w}px`), s(this, "--ui-spinning-text-step", o.length ? `${360 / o.length}deg` : null), e.trim() ? this.setAttribute("aria-label", e.replace(/\s+/g, " ").trim()) : this.removeAttribute("aria-label"), this.setAttribute("data-direction", _), this.setAttribute("data-variant", $), this.setAttribute("data-tone", E), this.setAttribute("data-elevation", T), this.setContent(`
|
|
568
|
+
<style>${j}</style>
|
|
580
569
|
<div class="root" part="root">
|
|
581
570
|
<div class="surface" part="surface">
|
|
582
571
|
<div class="stage" part="stage">
|
|
@@ -585,8 +574,8 @@ class rt extends C {
|
|
|
585
574
|
part="ring"
|
|
586
575
|
aria-hidden="true"
|
|
587
576
|
data-glyph-count="${o.length}"
|
|
588
|
-
>${
|
|
589
|
-
<div class="center-shell${
|
|
577
|
+
>${M}</div>
|
|
578
|
+
<div class="center-shell${v ? "" : " center-shell--empty"}" part="center">
|
|
590
579
|
<slot name="center"></slot>
|
|
591
580
|
</div>
|
|
592
581
|
</div>
|
|
@@ -620,16 +609,15 @@ class rt extends C {
|
|
|
620
609
|
this._syncState();
|
|
621
610
|
}
|
|
622
611
|
_syncState() {
|
|
623
|
-
|
|
624
|
-
if (!h(this).replace(/\s+/g, " ").trim()) {
|
|
612
|
+
if (!f(this).replace(/\s+/g, " ").trim()) {
|
|
625
613
|
this.setAttribute("data-state", "idle");
|
|
626
614
|
return;
|
|
627
615
|
}
|
|
628
|
-
const
|
|
629
|
-
this.setAttribute("data-motion",
|
|
616
|
+
const n = !!this._mediaQuery?.matches;
|
|
617
|
+
this.setAttribute("data-motion", n ? "reduced" : "auto"), this.setAttribute("data-state", n || this.hasAttribute("paused") ? "paused" : "running");
|
|
630
618
|
}
|
|
631
619
|
}
|
|
632
|
-
typeof customElements < "u" && !customElements.get("ui-spinning-text") && customElements.define("ui-spinning-text",
|
|
620
|
+
typeof customElements < "u" && !customElements.get("ui-spinning-text") && customElements.define("ui-spinning-text", et);
|
|
633
621
|
export {
|
|
634
|
-
|
|
622
|
+
et as UISpinningText
|
|
635
623
|
};
|
package/dist/split-button.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const b=require("./ElementBase-EV6mVBUV.js"),f=require("./portal-DgpQ3Jo1.js"),g=require("./dismissable-layer-DNfrKA20.js"),h=require("./positioner-D_fqyx_j.js");require("./listbox-B6QgECax.js");const l=160,x=["--ui-split-button-menu-bg","--ui-split-button-menu-color","--ui-split-button-menu-border","--ui-split-button-menu-radius","--ui-split-button-menu-shadow","--ui-split-button-menu-accent","--ui-split-button-menu-accent-strong","--ui-split-button-menu-shortcut","--ui-split-button-menu-separator","--ui-split-button-menu-muted","--ui-split-button-menu-danger","--ui-split-button-menu-option-border","--ui-split-button-menu-option-border-strong","--ui-split-button-menu-option-shadow","--ui-split-button-menu-affordance-bg","--ui-split-button-menu-affordance-border","--ui-split-button-menu-affordance-size","--ui-split-button-menu-list-gap","--ui-split-button-menu-list-padding-top","--ui-split-button-menu-item-min-height","--ui-split-button-menu-item-radius","--ui-split-button-menu-item-padding"],v=`
|
|
2
2
|
:host {
|
|
3
3
|
--ui-split-button-radius: 12px;
|
|
4
4
|
--ui-split-button-border: 1px solid color-mix(in srgb, var(--ui-color-border, #cbd5e1) 70%, transparent);
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
opacity: 0;
|
|
184
184
|
transform: translateY(-6px) scale(0.985);
|
|
185
185
|
transform-origin: top left;
|
|
186
|
-
transition: opacity ${
|
|
186
|
+
transition: opacity ${l}ms cubic-bezier(0.22, 1, 0.36, 1), transform ${l}ms cubic-bezier(0.22, 1, 0.36, 1);
|
|
187
187
|
will-change: opacity, transform;
|
|
188
188
|
}
|
|
189
189
|
|
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
transform: none;
|
|
474
474
|
}
|
|
475
475
|
}
|
|
476
|
-
`;function y(
|
|
476
|
+
`;function y(m,e){const t=m.cloneNode(!0);if(t.setAttribute("slot","menuitem"),t.setAttribute("data-menu-item","true"),t.setAttribute("data-index",String(e)),t.setAttribute("role","menuitem"),t.setAttribute("tabindex","-1"),t.classList.add("menu-option"),t.setAttribute("data-has-description",t.querySelector("[data-menu-description]")?"true":"false"),t.setAttribute("data-has-shortcut",t.querySelector("[data-menu-shortcut]")?"true":"false"),t.hasAttribute("disabled")&&t.setAttribute("aria-disabled","true"),!t.querySelector("[data-menu-affordance]")){const n=document.createElement("span");n.setAttribute("data-menu-affordance","true"),n.setAttribute("aria-hidden","true"),t.prepend(n)}return t.id||(t.id=`ui-split-button-item-${Math.random().toString(36).slice(2,9)}`),t}class c extends b.ElementBase{constructor(){super(),this._portalEl=null,this._portalRoot=null,this._layer=null,this._positioner=null,this._listbox=null,this._triggerButton=null,this._toggleButton=null,this._menuItems=[],this._lastFocused=null,this._closeTimer=null,this._onPrimaryClick=this._onPrimaryClick.bind(this),this._onToggleClick=this._onToggleClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onMenuPointerDown=this._onMenuPointerDown.bind(this),this._onMenuPointerMove=this._onMenuPointerMove.bind(this)}static get observedAttributes(){return["label","menu-label","menu-heading","menu-description","variant","density","menu-density","menu-shape","disabled","open"]}openMenu(){this.hasAttribute("disabled")||this.hasAttribute("open")&&this._portalEl?.getAttribute("data-state")!=="closing"||!this._portalEl&&this._collectMenuItems().length===0||(this._lastFocused=document.activeElement||this._toggleButton,this._clearCloseTimer(),this._portalEl&&(this._setMenuState("opening"),this._portalEl.style.pointerEvents="auto",this._positioner?.update(),requestAnimationFrame(()=>this._setMenuState("open"))),this.setAttribute("open",""),queueMicrotask(()=>{if(!this._portalEl)this._mountMenu();else try{this._portalEl.focus({preventScroll:!0})}catch{this._portalEl.focus()}}))}closeMenu(){this.hasAttribute("open")&&this.removeAttribute("open")}toggleMenu(){this.hasAttribute("open")?this.closeMenu():this.openMenu()}connectedCallback(){super.connectedCallback(),this.hasAttribute("open")&&this.openMenu()}disconnectedCallback(){this._teardownMenu(!0),super.disconnectedCallback()}attributeChangedCallback(e,t,n){if(t!==n){if(e==="open"){n!=null?this.openMenu():this._beginCloseMenu();return}this.isConnected&&this.requestRender()}}render(){const e=this.getAttribute("label")||"Run action",t=this.getAttribute("menu-label")||"Open action menu";this.setContent(`
|
|
477
477
|
<style>${v}</style>
|
|
478
478
|
<div class="group" part="group">
|
|
479
479
|
<button class="button" part="button" type="button">${e}</button>
|
|
@@ -482,4 +482,4 @@
|
|
|
482
482
|
</button>
|
|
483
483
|
</div>
|
|
484
484
|
<div class="slot-source"><slot name="menuitem"></slot></div>
|
|
485
|
-
`),this._triggerButton=this.root.querySelector(".button"),this._toggleButton=this.root.querySelector(".toggle"),this._syncToggleState(),
|
|
485
|
+
`),this._triggerButton=this.root.querySelector(".button"),this._toggleButton=this.root.querySelector(".toggle"),this._syncToggleState(),this._triggerButton?.addEventListener("click",this._onPrimaryClick),this._toggleButton?.addEventListener("click",this._onToggleClick),this._toggleButton?.addEventListener("keydown",this._onKeyDown)}_onPrimaryClick(e){this.hasAttribute("disabled")||this.dispatchEvent(new CustomEvent("primary-action",{detail:{originalEvent:e},bubbles:!0,composed:!0}))}_onToggleClick(){this.toggleMenu()}_onKeyDown(e){(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.openMenu())}_applyPortalTokens(e){const t=window.getComputedStyle(this);x.forEach(n=>{const i=t.getPropertyValue(n).trim();i?e.style.setProperty(n,i):e.style.removeProperty(n)})}_mountMenu(){if(this._portalEl)return;const e=f.createPortalContainer();if(!e)return;this._portalRoot=e,this._portalRoot.classList.add("ui-split-button-portal");const t=document.createElement("div");t.className="menu",t.setAttribute("role","menu"),t.setAttribute("data-state","opening"),t.tabIndex=-1,t.style.pointerEvents="auto";const n=document.createElement("style");n.textContent=_;const i=this.getAttribute("menu-heading")||"",r=this.getAttribute("menu-description")||"",d=i||r?(()=>{const s=document.createElement("div");if(s.className="menu-header",i){const a=document.createElement("p");a.className="menu-heading",a.textContent=i,s.appendChild(a)}if(r){const a=document.createElement("p");a.className="menu-description",a.textContent=r,s.appendChild(a)}return s})():null,o=document.createElement("ui-listbox");if(o.setAttribute("item-selector",'[slot="menuitem"]'),o.setAttribute("item-role","menuitem"),o.setAttribute("active-attribute","data-active"),this._menuItems=this._collectMenuItems(),this._menuItems.length===0){this.removeAttribute("open");return}const u=this.root.querySelector(".group")?.getBoundingClientRect();u&&Number.isFinite(u.width)&&u.width>0&&(t.style.minWidth=`${Math.max(260,Math.round(u.width))}px`),this._menuItems.forEach(s=>o.appendChild(s)),o.refresh(),t.append(n),d&&t.appendChild(d),t.appendChild(o),this._applyPortalTokens(t),this._portalRoot.appendChild(t),this._portalEl=t,this._listbox=o,this._positioner=h.createPositioner({floating:t,anchor:this.root.querySelector(".group")||this._toggleButton||this,placement:"bottom-start",offset:6,fitViewport:!0}),this._layer=g.createDismissableLayer({node:t,trigger:this._toggleButton,closeOnEscape:!0,closeOnPointerOutside:!0,onDismiss:()=>this.closeMenu()}),o.addEventListener("click",s=>this._onMenuClick(s)),o.addEventListener("pointerdown",this._onMenuPointerDown),o.addEventListener("pointermove",this._onMenuPointerMove,{passive:!0}),o.addEventListener("keydown",s=>this._onMenuKeyDown(s));const p=this._listbox.focusBoundary("first",{focus:!1,scroll:!1});p&&this._listbox.setActiveItem(p,{focus:!1,scroll:!1}),this._syncToggleState(),requestAnimationFrame(()=>this._setMenuState("open")),queueMicrotask(()=>{try{t.focus({preventScroll:!0})}catch{t.focus()}})}_collectMenuItems(){const e=this.root.querySelector('slot[name="menuitem"]');return(e?e.assignedElements({flatten:!0}):[]).filter(n=>n.getAttribute("slot")==="menuitem").map((n,i)=>y(n,i))}_onMenuClick(e){const t=e.composedPath(),n=this._menuItems.find(i=>t.includes(i));if(!n){const i=e.target?.closest?.("[data-menu-item]");i&&this._selectMenuItem(i);return}this._selectMenuItem(n)}_onMenuPointerDown(e){e.target?.closest?.("[data-menu-item]")&&e.preventDefault()}_onMenuPointerMove(e){if(!this._listbox)return;const t=e.target?.closest?.("[data-menu-item]");!t||t.hasAttribute("disabled")||t.getAttribute("aria-disabled")==="true"||this._listbox.getActiveItem()!==t&&this._listbox.setActiveItem(t,{focus:!1,scroll:!1})}_onMenuKeyDown(e){if(this._listbox){if(e.key==="Escape"||e.key==="Tab"){e.preventDefault(),this.closeMenu();return}if(e.key==="ArrowDown"){e.preventDefault(),this._listbox.move(1,{focus:!1,scroll:!0});return}if(e.key==="ArrowUp"){e.preventDefault(),this._listbox.move(-1,{focus:!1,scroll:!0});return}if(e.key==="Home"){e.preventDefault(),this._listbox.focusBoundary("first",{focus:!1,scroll:!0});return}if(e.key==="End"){e.preventDefault(),this._listbox.focusBoundary("last",{focus:!1,scroll:!0});return}if(e.key==="Enter"||e.key===" "){e.preventDefault();const t=this._listbox.getActiveItem();t&&this._selectMenuItem(t)}}}_syncToggleState(){this._toggleButton?.setAttribute("aria-expanded",this.hasAttribute("open")?"true":"false")}_selectMenuItem(e){const t=Number(e.getAttribute("data-index")||-1);this.dispatchEvent(new CustomEvent("select",{detail:{index:t,value:e.getAttribute("data-value")||void 0,label:e.getAttribute("data-label")||(e.textContent||"").trim()},bubbles:!0,composed:!0})),this.closeMenu()}_beginCloseMenu(){this._portalEl&&(this._clearCloseTimer(),this._setMenuState("closing"),this._portalEl.style.pointerEvents="none",this._closeTimer=window.setTimeout(()=>{this._closeTimer=null,this._teardownMenu(!0)},l))}_setMenuState(e){this._portalEl?.setAttribute("data-state",e)}_clearCloseTimer(){this._closeTimer!=null&&(window.clearTimeout(this._closeTimer),this._closeTimer=null)}_teardownMenu(e=!1){if(this._clearCloseTimer(),this._layer?.destroy(),this._layer=null,this._positioner?.destroy(),this._positioner=null,this._listbox=null,this._portalEl?.parentElement&&this._portalEl.parentElement.removeChild(this._portalEl),this._portalEl=null,this._portalRoot=null,this._syncToggleState(),e){const t=this._toggleButton||this._lastFocused;t&&t.isConnected&&queueMicrotask(()=>{try{t.focus({preventScroll:!0})}catch{t.focus()}})}this._lastFocused=null}}typeof customElements<"u"&&!customElements.get("ui-split-button")&&customElements.define("ui-split-button",c);exports.UISplitButton=c;
|