@ixfx/components 0.3.2 → 0.4.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/bundle/index.d.ts +1086 -603
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +16153 -15296
- package/bundle/index.js.map +1 -1
- package/bundle/style.css +14 -4
- package/dist/ac-text.d.ts.map +1 -1
- package/dist/ac-text.js +11 -6
- package/dist/ac-text.js.map +1 -1
- package/dist/{button-DMt5XWUK.js → button-C3fLMKUv.js} +4 -4
- package/dist/{button-DMt5XWUK.js.map → button-C3fLMKUv.js.map} +1 -1
- package/dist/button.d.ts +1 -1
- package/dist/button.d.ts.map +1 -1
- package/dist/button.js +1 -1
- package/dist/checkbox.d.ts +2 -2
- package/dist/checkbox.d.ts.map +1 -1
- package/dist/checkbox.js +14 -8
- package/dist/checkbox.js.map +1 -1
- package/dist/{colour-C3MQIjFJ-BLXg8W3U.js → colour-C3MQIjFJ-vRCdr8W-.js} +146 -552
- package/dist/colour-C3MQIjFJ-vRCdr8W-.js.map +1 -0
- package/dist/{colour-picker-K6zu82lm.js → colour-picker-0sgAha1T.js} +14 -9
- package/dist/colour-picker-0sgAha1T.js.map +1 -0
- package/dist/colour-picker.d.ts +1 -1
- package/dist/colour-picker.js +1 -1
- package/dist/crumbs.d.ts +1 -1
- package/dist/crumbs.d.ts.map +1 -1
- package/dist/crumbs.js +11 -6
- package/dist/crumbs.js.map +1 -1
- package/dist/data-display.d.ts +9 -4
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +270 -43
- package/dist/data-display.js.map +1 -1
- package/dist/data-provider-DgI909FP.js +23 -0
- package/dist/data-provider-DgI909FP.js.map +1 -0
- package/dist/{decorate-D7rC1gLP.js → decorate-DdjvVHS-.js} +2 -2
- package/dist/{decorate-D7rC1gLP.js.map → decorate-DdjvVHS-.js.map} +1 -1
- package/dist/{defaults-C7elhuyJ.js → defaults-C3b9OWJD.js} +2 -2
- package/dist/{defaults-C7elhuyJ.js.map → defaults-C3b9OWJD.js.map} +1 -1
- package/dist/{dist-TAGYwaju.js → dist-CA13FvMn.js} +7 -66
- package/dist/dist-CA13FvMn.js.map +1 -0
- package/dist/editable-label.d.ts.map +1 -1
- package/dist/editable-label.js +3 -2
- package/dist/editable-label.js.map +1 -1
- package/dist/fallbacks-pNMOMx38.js +168 -0
- package/dist/fallbacks-pNMOMx38.js.map +1 -0
- package/dist/{hex-editor-DlfoA65y.d.ts → hex-editor-CMIxtNgT.d.ts} +1 -1
- package/dist/hex-editor-CMIxtNgT.d.ts.map +1 -0
- package/dist/{hex-editor-CsN_ySkH.js → hex-editor-WZrjRtvL.js} +3 -3
- package/dist/{hex-editor-CsN_ySkH.js.map → hex-editor-WZrjRtvL.js.map} +1 -1
- package/dist/hex.d.ts +1 -1
- package/dist/hex.js +1 -1
- package/dist/{highlight-TPbSHruI.js → highlight-B-eQrhhb.js} +1 -1
- package/dist/{highlight-TPbSHruI.js.map → highlight-B-eQrhhb.js.map} +1 -1
- package/dist/{icon-Dm_DHDz6.d.ts → icon-Bd5BiU4b.d.ts} +3 -3
- package/dist/icon-Bd5BiU4b.d.ts.map +1 -0
- package/dist/{icon-9NWTXtE1.js → icon-Ndo40kNO.js} +6 -5
- package/dist/icon-Ndo40kNO.js.map +1 -0
- package/dist/icons.d.ts +2 -2
- package/dist/icons.js +3 -3
- package/dist/{incr-search-DSKKsk6w.js → incr-search-CeERfijK.js} +2 -2
- package/dist/{incr-search-DSKKsk6w.js.map → incr-search-CeERfijK.js.map} +1 -1
- package/dist/incr-search.d.ts +1 -1
- package/dist/incr-search.js +2 -2
- package/dist/{index-hXFn14tM.d.ts → index-BMjri2-S.d.ts} +2 -2
- package/dist/{index-hXFn14tM.d.ts.map → index-BMjri2-S.d.ts.map} +1 -1
- package/dist/{index-DSlPeWLK.d.ts → index-CWpNcQKE.d.ts} +5 -5
- package/dist/index-CWpNcQKE.d.ts.map +1 -0
- package/dist/{index-DLkSKL4T.d.ts → index-CowKi2mo.d.ts} +1 -1
- package/dist/index-CowKi2mo.d.ts.map +1 -0
- package/dist/{index-B1hNR7Z9.d.ts → index-D87kRcEs.d.ts} +1 -1
- package/dist/{index-B1hNR7Z9.d.ts.map → index-D87kRcEs.d.ts.map} +1 -1
- package/dist/{index-CnL9krsH.d.ts → index-DgXpCg_G.d.ts} +32 -26
- package/dist/index-DgXpCg_G.d.ts.map +1 -0
- package/dist/{index-iZLld8Ca.d.ts → index-s_IhSnwc.d.ts} +2 -2
- package/dist/index-s_IhSnwc.d.ts.map +1 -0
- package/dist/index.d.ts +432 -121
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2369 -1706
- package/dist/index.js.map +1 -1
- package/dist/interaction-D6efrBLo.js +1 -0
- package/dist/{keyboard-De_vOHLg.js → keyboard-CimiEskD.js} +1 -1
- package/dist/{keyboard-De_vOHLg.js.map → keyboard-CimiEskD.js.map} +1 -1
- package/dist/{labelled-input-base-CqPL5rKm.js → labelled-input-base-9K_w3oLj.js} +2 -2
- package/dist/{labelled-input-base-CqPL5rKm.js.map → labelled-input-base-9K_w3oLj.js.map} +1 -1
- package/dist/{labelled-input-base-BVvNeb5R.d.ts → labelled-input-base-ORb1rGq6.d.ts} +2 -2
- package/dist/labelled-input-base-ORb1rGq6.d.ts.map +1 -0
- package/dist/labelled-radial-input.d.ts +3 -3
- package/dist/labelled-radial-input.d.ts.map +1 -1
- package/dist/labelled-radial-input.js +7 -6
- package/dist/labelled-radial-input.js.map +1 -1
- package/dist/labelled-range-input.d.ts +1 -1
- package/dist/labelled-range-input.js +2 -2
- package/dist/led.d.ts +1 -1
- package/dist/led.d.ts.map +1 -1
- package/dist/led.js +2 -2
- package/dist/led.js.map +1 -1
- package/dist/{menu-item-CKRfP0pN.js → menu-item-BrIuORYD.js} +20 -10
- package/dist/menu-item-BrIuORYD.js.map +1 -0
- package/dist/{menu-item-ClQF2DKN.d.ts → menu-item-COx-Azgj.d.ts} +1 -1
- package/dist/menu-item-COx-Azgj.d.ts.map +1 -0
- package/dist/{menu-DJJuCm-5.js → menu-vjoiHZ13.js} +30 -17
- package/dist/menu-vjoiHZ13.js.map +1 -0
- package/dist/menu.d.ts +2 -2
- package/dist/menu.js +2 -2
- package/dist/miller.d.ts +2 -2
- package/dist/miller.d.ts.map +1 -1
- package/dist/miller.js +18 -11
- package/dist/miller.js.map +1 -1
- package/dist/narrowed-text.d.ts.map +1 -1
- package/dist/narrowed-text.js +7 -5
- package/dist/narrowed-text.js.map +1 -1
- package/dist/panel.d.ts +1 -1
- package/dist/panel.d.ts.map +1 -1
- package/dist/panel.js +5 -4
- package/dist/panel.js.map +1 -1
- package/dist/plots.d.ts +2 -2
- package/dist/plots.js +2 -2
- package/dist/polar-pad.d.ts +1 -1
- package/dist/polar-pad.d.ts.map +1 -1
- package/dist/polar-pad.js +10 -4
- package/dist/polar-pad.js.map +1 -1
- package/dist/{popup-ImtS9KnS.js → popup-DiWMxsWj.js} +1 -1
- package/dist/{popup-ImtS9KnS.js.map → popup-DiWMxsWj.js.map} +1 -1
- package/dist/prominence-DlFShic3.js +104 -0
- package/dist/prominence-DlFShic3.js.map +1 -0
- package/dist/{radial-input-LUSBEycd.d.ts → radial-input-CpQPs1Mp.d.ts} +1 -1
- package/dist/radial-input-CpQPs1Mp.d.ts.map +1 -0
- package/dist/{radial-input-DZA6WaFu.js → radial-input-DZ7eQCcM.js} +11 -6
- package/dist/radial-input-DZ7eQCcM.js.map +1 -0
- package/dist/radial-input.d.ts +1 -1
- package/dist/radial-input.js +1 -1
- package/dist/range-input.d.ts +1 -1
- package/dist/range-input.d.ts.map +1 -1
- package/dist/range-input.js +9 -4
- package/dist/range-input.js.map +1 -1
- package/dist/range.d.ts +1 -1
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js +5 -3
- package/dist/range.js.map +1 -1
- package/dist/{registry-Q2gYQCHM.js → registry-CkW7q09Q.js} +1 -1
- package/dist/{registry-Q2gYQCHM.js.map → registry-CkW7q09Q.js.map} +1 -1
- package/dist/selecthorizontal.d.ts +1 -1
- package/dist/selecthorizontal.d.ts.map +1 -1
- package/dist/selecthorizontal.js +4 -3
- package/dist/selecthorizontal.js.map +1 -1
- package/dist/snap-container.d.ts.map +1 -1
- package/dist/snap-container.js +1 -1
- package/dist/split-layout.d.ts +1 -1
- package/dist/split-layout.d.ts.map +1 -1
- package/dist/split-layout.js +6 -5
- package/dist/split-layout.js.map +1 -1
- package/dist/style.css +14 -4
- package/dist/swipe.d.ts.map +1 -1
- package/dist/swipe.js +9 -4
- package/dist/swipe.js.map +1 -1
- package/dist/{tab-list-BnqISNvO.d.ts → tab-list-DLzb-m-I.d.ts} +2 -2
- package/dist/tab-list-DLzb-m-I.d.ts.map +1 -0
- package/dist/tabs.d.ts +1 -1
- package/dist/tabs.js +10 -4
- package/dist/tabs.js.map +1 -1
- package/dist/{tickled-controller-Cq1Va0rR.d.ts → tickled-controller-BjYCzGrU.d.ts} +2 -2
- package/dist/tickled-controller-BjYCzGrU.d.ts.map +1 -0
- package/dist/{tickled-styles-Bg3QbcrD.js → tickled-styles-fNDdqf6l.js} +1 -17
- package/dist/{tickled-styles-Bg3QbcrD.js.map → tickled-styles-fNDdqf6l.js.map} +1 -1
- package/dist/{timeline-Bh0PhlKW.js → timeline-2OFtN4Ta.js} +2 -2
- package/dist/{timeline-Bh0PhlKW.js.map → timeline-2OFtN4Ta.js.map} +1 -1
- package/dist/timeline.d.ts +1 -1
- package/dist/timeline.js +1 -1
- package/dist/{tooltip-DMxmBNky.js → tooltip-CJt3WLmN.js} +1 -1
- package/dist/{tooltip-DMxmBNky.js.map → tooltip-CJt3WLmN.js.map} +1 -1
- package/dist/{tooltip-CwGfb4lp.d.ts → tooltip-RGVIwHrZ.d.ts} +1 -1
- package/dist/{tooltip-CwGfb4lp.d.ts.map → tooltip-RGVIwHrZ.d.ts.map} +1 -1
- package/dist/{tree-CvvKbO-f.js → tree-CJWpMUvD.js} +113 -103
- package/dist/tree-CJWpMUvD.js.map +1 -0
- package/dist/{tree-component-D8Bg48tt.d.ts → tree-component-BcO26Xvt.d.ts} +65 -3
- package/dist/tree-component-BcO26Xvt.d.ts.map +1 -0
- package/dist/tree.d.ts +15 -15
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +1 -1
- package/dist/{types-BKaqnpwx.d.ts → types-DSfbtHs3.d.ts} +1 -1
- package/dist/types-DSfbtHs3.d.ts.map +1 -0
- package/dist/{xy-axis-DL0tfJDr.js → xy-axis-CK64haaK.js} +1831 -359
- package/dist/xy-axis-CK64haaK.js.map +1 -0
- package/dist/{xy-axis-D9uwpGTT.d.ts → xy-axis-McdUpcYr.d.ts} +102 -3
- package/dist/xy-axis-McdUpcYr.d.ts.map +1 -0
- package/dist/xy-pad.d.ts +1 -1
- package/dist/xy-pad.d.ts.map +1 -1
- package/dist/xy-pad.js +11 -6
- package/dist/xy-pad.js.map +1 -1
- package/docs-user/README.md +45 -0
- package/docs-user/ac-text.md +67 -0
- package/docs-user/ac-token.md +187 -0
- package/docs-user/button.md +355 -0
- package/docs-user/checkbox.md +62 -0
- package/docs-user/colour-picker.md +237 -0
- package/docs-user/crumbs.md +66 -0
- package/docs-user/data-display.md +98 -0
- package/docs-user/editable-label.md +244 -0
- package/docs-user/grouped-item-lister.md +424 -0
- package/docs-user/icons.md +191 -0
- package/docs-user/incr-search.md +94 -0
- package/docs-user/labelled-radial-input.md +204 -0
- package/docs-user/labelled-range-input.md +194 -0
- package/docs-user/led.md +40 -0
- package/docs-user/menu.md +319 -0
- package/docs-user/miller.md +453 -0
- package/docs-user/narrowed-text.md +72 -0
- package/docs-user/panel.md +250 -0
- package/docs-user/plots.md +361 -0
- package/docs-user/polar-pad.md +228 -0
- package/docs-user/radial-input.md +559 -0
- package/docs-user/range-input.md +264 -0
- package/docs-user/range.md +12 -0
- package/docs-user/selecthorizontal.md +32 -0
- package/docs-user/snap-container.md +132 -0
- package/docs-user/split-layout.md +232 -0
- package/docs-user/swipe.md +44 -0
- package/docs-user/tabs.md +217 -0
- package/docs-user/timeline.md +116 -0
- package/docs-user/transitory-label.md +120 -0
- package/docs-user/tree.md +592 -0
- package/docs-user/user-catalog.md +165 -0
- package/docs-user/user-theming.md +379 -0
- package/docs-user/util.md +122 -0
- package/docs-user/vertical-list.md +351 -0
- package/docs-user/xy-pad.md +94 -0
- package/package.json +18 -17
- package/dist/colour-C3MQIjFJ-BLXg8W3U.js.map +0 -1
- package/dist/colour-picker-K6zu82lm.js.map +0 -1
- package/dist/dist-BX0OVIm7.js +0 -1290
- package/dist/dist-BX0OVIm7.js.map +0 -1
- package/dist/dist-TAGYwaju.js.map +0 -1
- package/dist/hex-editor-DlfoA65y.d.ts.map +0 -1
- package/dist/icon-9NWTXtE1.js.map +0 -1
- package/dist/icon-Dm_DHDz6.d.ts.map +0 -1
- package/dist/index-CnL9krsH.d.ts.map +0 -1
- package/dist/index-DLkSKL4T.d.ts.map +0 -1
- package/dist/index-DSlPeWLK.d.ts.map +0 -1
- package/dist/index-iZLld8Ca.d.ts.map +0 -1
- package/dist/interaction-DG7X1rhI.js +0 -1
- package/dist/labelled-input-base-BVvNeb5R.d.ts.map +0 -1
- package/dist/menu-DJJuCm-5.js.map +0 -1
- package/dist/menu-item-CKRfP0pN.js.map +0 -1
- package/dist/menu-item-ClQF2DKN.d.ts.map +0 -1
- package/dist/prominence--ic9uWBl.js +0 -98
- package/dist/prominence--ic9uWBl.js.map +0 -1
- package/dist/radial-input-DZA6WaFu.js.map +0 -1
- package/dist/radial-input-LUSBEycd.d.ts.map +0 -1
- package/dist/tab-list-BnqISNvO.d.ts.map +0 -1
- package/dist/tickled-controller-Cq1Va0rR.d.ts.map +0 -1
- package/dist/tree-CvvKbO-f.js.map +0 -1
- package/dist/tree-component-D8Bg48tt.d.ts.map +0 -1
- package/dist/types-BKaqnpwx.d.ts.map +0 -1
- package/dist/xy-axis-D9uwpGTT.d.ts.map +0 -1
- package/dist/xy-axis-DL0tfJDr.js.map +0 -1
- /package/bundle/{chunk-pbuEa-1d.js → chunk-D7D4PA-g.js} +0 -0
- /package/dist/{chunk-pbuEa-1d.js → chunk-D7D4PA-g.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./tickled-styles-fNDdqf6l.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-
|
|
1
|
+
{"version":3,"file":"keyboard-CimiEskD.js","names":[],"sources":["../src/keyboard.ts"],"sourcesContent":["/**\n * Keyboard interaction constants\n */\nexport const KEY_STEP_DIVISOR = 10;\n\n/**\n * Resolve the effective keyboard nudge step for a single numeric axis.\n *\n * Priority: stops (quantised grid) > explicit step > percentage of range.\n *\n * @param range max - min for the axis\n * @param stops number of quantised divisions (undefined or ≤1 = ignored)\n * @param step explicit absolute step size (undefined = ignored)\n * @param defaultFraction fraction of range used when neither stops nor step is set (default 0.1 = 10%)\n */\nexport function resolveStep(\n range: number,\n stops: number | undefined,\n step: number | undefined,\n defaultFraction = 0.1,\n): number {\n if (stops !== undefined && stops > 1)\n return range / stops;\n if (step !== undefined)\n return step;\n return range * defaultFraction;\n}\n"],"mappings":";;;;;;;;;;;AAeA,SAAgB,YACd,OACA,OACA,MACA,kBAAkB,IACV;CACR,IAAI,UAAU,KAAA,KAAa,QAAQ,GACjC,OAAO,QAAQ;CACjB,IAAI,SAAS,KAAA,GACX,OAAO;CACT,OAAO,QAAQ;AACjB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as __decorate } from "./decorate-
|
|
1
|
+
import { t as __decorate } from "./decorate-DdjvVHS-.js";
|
|
2
2
|
import { LitElement, html, nothing } from "lit";
|
|
3
3
|
import { property, state } from "lit/decorators.js";
|
|
4
4
|
//#region src/mixins/labelled-input-util.ts
|
|
@@ -152,4 +152,4 @@ __decorate([state()], LabelledInputBase.prototype, "_formatter", void 0);
|
|
|
152
152
|
//#endregion
|
|
153
153
|
export { LabelledInputBase as t };
|
|
154
154
|
|
|
155
|
-
//# sourceMappingURL=labelled-input-base-
|
|
155
|
+
//# sourceMappingURL=labelled-input-base-9K_w3oLj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labelled-input-base-
|
|
1
|
+
{"version":3,"file":"labelled-input-base-9K_w3oLj.js","names":[],"sources":["../src/mixins/labelled-input-util.ts","../src/mixins/labelled-input-base.ts"],"sourcesContent":["export function clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function applyValue(\n el: Element | null,\n value: number,\n): void {\n if (el == null) {\n return;\n }\n (el as any).value = value;\n}\n","import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { applyValue } from './labelled-input-util.js';\n\nexport abstract class LabelledInputBase extends LitElement {\n @property() label = ``;\n\n @property({ type: Number }) min = 0;\n @property({ type: Number }) max = 1;\n @property({ type: Number }) value = 0;\n @property({ type: Number }) step = 0.01;\n @property({ type: Number }) precision = 0;\n @property({ type: Number, attribute: `drag-sensitivity` }) dragSensitivity = 1;\n\n @property({ type: Number, attribute: `mini-width-threshold` }) miniWidthThreshold = 120;\n @property({ type: Number, attribute: `mini-height-threshold` }) miniHeightThreshold = 45;\n\n @property({ attribute: `display-text-logic` }) displayTextLogic: `hidden` | `show` | `override` | `transient` = `transient`;\n\n @state() protected _isMini = false;\n @state() protected _isDragging = false;\n @state() protected _formatter?: (value: string) => string;\n\n private _debounceTimer: number | undefined = undefined;\n private _resizeObserver?: ResizeObserver;\n\n abstract readonly inputSelector: string;\n\n get formatter(): (value: string) => string {\n return this._formatter ?? ((v: string) => v);\n }\n\n set formatter(value: ((value: string) => string) | undefined) {\n this._formatter = value;\n }\n\n protected get hasCustomFormatter(): boolean {\n return this._formatter !== undefined;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._resizeObserver = new ResizeObserver(entries => this._handleResize(entries));\n this._resizeObserver.observe(this);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._resizeObserver?.disconnect();\n this._resizeObserver = undefined;\n }\n\n protected _handleResize(entries: ResizeObserverEntry[]): void {\n const { width, height } = entries[0].contentRect;\n const miniOverride = getComputedStyle(this).getPropertyValue(`--mini`).trim();\n if (miniOverride === `1`) {\n this._isMini = true;\n return;\n }\n if (miniOverride === `0`) {\n this._isMini = false;\n return;\n }\n this._isMini = width < this.miniWidthThreshold || height < this.miniHeightThreshold;\n }\n\n protected _handleNumberChange = (e: CustomEvent<{ value: string }>): void => {\n const newValue = Number.parseFloat(e.detail.value);\n this.value = newValue;\n this._syncValue(newValue);\n this.dispatchEvent(new CustomEvent(`change`, {\n detail: { value: e.detail.value },\n bubbles: true,\n composed: true,\n }));\n };\n\n protected _handleInputChange = (e: CustomEvent<{ value: number }>): void => {\n this.value = e.detail.value;\n clearTimeout(this._debounceTimer);\n this._debounceTimer = window.setTimeout(() => {\n this._isDragging = false;\n }, 300);\n this.dispatchEvent(new CustomEvent(`change`, {\n detail: { value: String(e.detail.value) },\n bubbles: true,\n composed: true,\n }));\n };\n\n protected _handleSliderInput = (e: CustomEvent<{ value: number }>): void => {\n console.log(`[LABELLED-INPUT] _handleSliderInput called`, { value: e.detail.value, composedPath: e.composedPath() });\n this.value = e.detail.value;\n this._isDragging = true;\n clearTimeout(this._debounceTimer);\n this.dispatchEvent(new CustomEvent(`input`, {\n detail: { value: e.detail.value },\n bubbles: true,\n composed: true,\n }));\n };\n\n protected _syncValue(v: number): void {\n const input = this.renderRoot?.querySelector(this.inputSelector);\n if (input) {\n applyValue(input, v);\n }\n const editableNumber = this.renderRoot?.querySelector(`ixfx-editable-number`);\n if (editableNumber) {\n applyValue(editableNumber, v);\n (editableNumber as any)._requestDisplayUpdate?.();\n }\n }\n\n protected _renderEditableNumber() {\n if (this._isMini) {\n return nothing;\n }\n return html`\n <ixfx-editable-number\n class=\"number\"\n mode=\"label\"\n no-drag\n .value=${String(this.value)}\n .min=${this.min}\n .max=${this.max}\n .step=${this.step}\n .dragSensitivity=${this.dragSensitivity}\n .precision=${this.precision}\n .displayText=${this.label}\n .displayTextLogic=${this._isDragging ? `hidden` : this.displayTextLogic}\n .formatter=${this._formatter}\n @change=${this._handleNumberChange}\n ></ixfx-editable-number>\n `;\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n if (changedProperties.has(`value`)) {\n this._syncValue(this.value);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -34,9 +34,9 @@ declare abstract class LabelledInputBase extends LitElement {
|
|
|
34
34
|
value: number;
|
|
35
35
|
}>) => void;
|
|
36
36
|
protected _syncValue(v: number): void;
|
|
37
|
-
protected _renderEditableNumber(): import("lit").TemplateResult<1
|
|
37
|
+
protected _renderEditableNumber(): typeof nothing | import("lit").TemplateResult<1>;
|
|
38
38
|
updated(changedProperties: Map<string, unknown>): void;
|
|
39
39
|
}
|
|
40
40
|
//#endregion
|
|
41
41
|
export { LabelledInputBase as t };
|
|
42
|
-
//# sourceMappingURL=labelled-input-base-
|
|
42
|
+
//# sourceMappingURL=labelled-input-base-ORb1rGq6.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labelled-input-base-ORb1rGq6.d.ts","names":[],"sources":["../src/mixins/labelled-input-base.ts"],"mappings":";;;uBAIsB,iBAAA,SAA0B,UAAA;EAClC,KAAA;EAEgB,GAAA;EACA,GAAA;EACA,KAAA;EACA,IAAA;EACA,SAAA;EAC+B,eAAA;EAEI,kBAAA;EACC,mBAAA;EAEjB,gBAAA;EAAA,UAE5B,OAAA;EAAA,UACA,WAAA;EAAA,UACA,UAAA,IAAc,KAAA;EAAA,QAEzB,cAAA;EAAA,QACA,eAAA;EAAA,kBAEU,aAAA;EAAA,IAEd,SAAA,KAAc,KAAA;EAAA,IAId,SAAA,CAAU,KAAA,IAAS,KAAA;EAAA,cAIT,kBAAA;EAIL,iBAAA;EAMA,oBAAA;EAAA,UAMC,aAAA,CAAc,OAAA,EAAS,mBAAA;EAAA,UAcvB,mBAAA,GAAuB,CAAA,EAAG,WAAA;IAAc,KAAA;EAAA;EAAA,UAWxC,kBAAA,GAAsB,CAAA,EAAG,WAAA;IAAc,KAAA;EAAA;EAAA,UAavC,kBAAA,GAAsB,CAAA,EAAG,WAAA;IAAc,KAAA;EAAA;EAAA,UAYvC,UAAA,CAAW,CAAA;EAAA,UAYX,qBAAA,WAAqB,OAAA,iBAAA,cAAA;EAuBtB,OAAA,CAAQ,iBAAA,EAAmB,GAAA;AAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as LabelledInputBase } from "./labelled-input-base-
|
|
2
|
-
import { i as MarkerStyle, l as ValueMode } from "./radial-input-
|
|
1
|
+
import { t as LabelledInputBase } from "./labelled-input-base-ORb1rGq6.js";
|
|
2
|
+
import { i as MarkerStyle, l as ValueMode } from "./radial-input-CpQPs1Mp.js";
|
|
3
3
|
import { CSSResultGroup, nothing } from "lit";
|
|
4
4
|
|
|
5
5
|
//#region src/labelled-radial-input/labelled-radial-input.d.ts
|
|
@@ -18,7 +18,7 @@ declare class LabelledRadialInput extends LabelledInputBase {
|
|
|
18
18
|
private _isWide;
|
|
19
19
|
private _getEffectivePrecision;
|
|
20
20
|
protected _handleResize(entries: ResizeObserverEntry[]): void;
|
|
21
|
-
protected _renderEditableNumber(): import("lit").TemplateResult<1
|
|
21
|
+
protected _renderEditableNumber(): typeof nothing | import("lit").TemplateResult<1>;
|
|
22
22
|
render(): import("lit").TemplateResult<1>;
|
|
23
23
|
private _getTooltipValue;
|
|
24
24
|
static styles: CSSResultGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labelled-radial-input.d.ts","names":[],"sources":["../src/labelled-radial-input/labelled-radial-input.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"labelled-radial-input.d.ts","names":[],"sources":["../src/labelled-radial-input/labelled-radial-input.ts"],"mappings":";;;;;cAwDa,mBAAA,SAA4B,iBAAA;EAAA,SAC9B,aAAA;EAGA,GAAA;EACA,IAAA;EAEmB,MAAA;EACA,OAAA;EAC2B,WAAA,EAAa,WAAA;EACvC,KAAA;EACwB,SAAA,EAAW,SAAA;EACnC,OAAA;EACA,IAAA;EAEoC,oBAAA;EAAA,QAEhD,OAAA;EAAA,QAIT,sBAAA;EAAA,UAeW,aAAA,CAAc,OAAA,EAAS,mBAAA;EAAA,UAMvB,qBAAA,WAAqB,OAAA,iBAAA,cAAA;EAyB/B,MAAA,kBAAM,cAAA;EAAA,QA4BP,gBAAA;EAAA,OAYD,MAAA,EAAQ,cAAA;AAAA;AAAA,QA0ET,MAAA;EAAA,UACI,qBAAA;IACR,4BAAA,EAA8B,mBAAmB;EAAA;AAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import "./
|
|
1
|
+
import { t as themeFallbacks } from "./fallbacks-pNMOMx38.js";
|
|
2
|
+
import { n as safeCustomElement, t as __decorate } from "./decorate-DdjvVHS-.js";
|
|
3
|
+
import { t as LabelledInputBase } from "./labelled-input-base-9K_w3oLj.js";
|
|
4
|
+
import "./radial-input-DZ7eQCcM.js";
|
|
4
5
|
import { css, html, nothing } from "lit";
|
|
5
6
|
import { property, state } from "lit/decorators.js";
|
|
6
7
|
//#region src/labelled-radial-input/labelled-radial-input.ts
|
|
@@ -89,8 +90,8 @@ let LabelledRadialInput = class LabelledRadialInput extends LabelledInputBase {
|
|
|
89
90
|
return numValue.toFixed(2);
|
|
90
91
|
}
|
|
91
92
|
static {
|
|
92
|
-
this.styles = css`
|
|
93
|
-
|
|
93
|
+
this.styles = [themeFallbacks, css`
|
|
94
|
+
:host {
|
|
94
95
|
display: block;
|
|
95
96
|
min-height: var(--min-height, 60px);
|
|
96
97
|
min-width: var(--min-width, 60px);
|
|
@@ -160,7 +161,7 @@ let LabelledRadialInput = class LabelledRadialInput extends LabelledInputBase {
|
|
|
160
161
|
width: 100%;
|
|
161
162
|
height: 100%;
|
|
162
163
|
}
|
|
163
|
-
|
|
164
|
+
`];
|
|
164
165
|
}
|
|
165
166
|
};
|
|
166
167
|
__decorate([property({ type: Number })], LabelledRadialInput.prototype, "radius", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labelled-radial-input.js","names":["customElement"],"sources":["../src/labelled-radial-input/labelled-radial-input.ts"],"sourcesContent":["/**\n * <ixfx-labelled-radial-input> — labelled radial input combining ixfx-editable-number and ixfx-radial-input.\n *\n * Layout is driven by container queries on the component's own aspect ratio (width / height):\n * - width / height >= 1.5 (wide) → horizontal layout (label to the left of dial)\n * - width / height < 1.5 (tall/square) → vertical layout (label above dial)\n *\n * Mini mode: hides ixfx-editable-number, shows only the dial with tooltip forced on.\n * Triggered when width < --mini-width-threshold (default 120px)\n * OR height < --mini-height-threshold (default 45px).\n * Force on/off with CSS variable: --mini: 1 (always mini) | 0 (never mini).\n *\n * Override layout entirely with --flow: row | column.\n *\n * CSS variables (passes through to ixfx-radial-input):\n * --dial-border-width, --dial-border-color, --dial-fill, --radius\n * --marker-color, --marker-thickness, --marker-length, --marker-offset\n * --marker-border-width, --marker-border-color\n * --midpoint-color, --midpoint-thickness, --midpoint-length, --midpoint-offset\n * --lane-width, --lane-color, --lane-border-width, --lane-offset, --lane-dasharray\n * --wedge-fill, --wedge-fill-opacity, --wedge-border-width, --wedge-border-color\n *\n * Properties:\n * label Label text content\n * min / max / value / step Range bounds and current value\n * drag-sensitivity Steps per pixel of drag (default: 1)\n * precision Decimal places (default: 0)\n * radius Dial size, 10-50 range (default: 45)\n * flatten How much circle to hide, 0-1 (default: 0.3)\n * markerStyle 'needle' | 'dot' | 'none' (default: 'needle')\n * wedge Show filled wedge sector (default: false)\n * valueMode 'range' | 'bipolar' | 'unipolar' (default: 'range')\n * aspectRatioThreshold Width/height ratio to trigger horizontal layout (default: 1.5)\n * mini-width-threshold Width (in pixels) below which mini mode activates (default: 120)\n * mini-height-threshold Height (in pixels) below which mini mode activates (default: 45)\n * tooltip Boolean — show dial tooltip\n * flip Boolean — place label after dial (bottom in vertical, right in horizontal)\n * display-text-logic 'hidden' | 'show' | 'override' | 'transient'\n * formatter Function (value: string) => string — formats value for display\n *\n * Events:\n * change — CustomEvent<{ value: string }>, bubbles + composed\n * Fired when value changes via dial or editable-number commit\n * input — CustomEvent<{ value: number }>, bubbles + composed\n * Fired on every dial interaction\n */\nimport type { CSSResultGroup } from 'lit';\nimport type { MarkerStyle, ValueMode } from '../radial-input/types.js';\nimport { css, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { LabelledInputBase } from '../mixins/labelled-input-base.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\nimport '../radial-input/radial-input.js';\n\n@customElement(`ixfx-labelled-radial-input`)\nexport class LabelledRadialInput extends LabelledInputBase {\n readonly inputSelector = `ixfx-radial-input`;\n\n // Override LabelledInputBase defaults (max=1, step=0.01) to match ixfx-radial-input defaults\n override max = 100;\n override step = 1;\n\n @property({ type: Number }) radius = 45;\n @property({ type: Number }) flatten = 0.3;\n @property({ type: String, attribute: `marker-style` }) markerStyle: MarkerStyle = `needle`;\n @property({ type: Boolean }) wedge = false;\n @property({ type: String, attribute: `value-mode` }) valueMode: ValueMode = `range`;\n @property({ type: Boolean }) tooltip = false;\n @property({ type: Boolean }) flip = false;\n\n @property({ type: Number, attribute: `aspect-ratio-threshold` }) aspectRatioThreshold = 1.5;\n\n @state() private _isWide = false;\n\n // Returns effective precision: uses explicit value if set, otherwise computes based on step or range.\n // Prefers step-derived precision, falls back to range-based heuristic.\n private _getEffectivePrecision(): number {\n if (this.hasAttribute(`precision`)) {\n return this.precision;\n }\n // If step is set, derive precision from it (e.g., step=0.5 → precision=1, step=1 → precision=0)\n if (this.step !== undefined) {\n const stepStr = String(this.step);\n const decimalPart = stepStr.split(`.`)[1];\n return decimalPart ? decimalPart.length : 0;\n }\n // Fallback: range > 10 → precision 0 (integers), range <= 10 → precision 2\n const range = this.max - this.min;\n return range > 10 ? 0 : 2;\n }\n\n protected override _handleResize(entries: ResizeObserverEntry[]): void {\n super._handleResize(entries);\n const { width, height } = entries[0].contentRect;\n this._isWide = height > 0 && (width / height) >= this.aspectRatioThreshold;\n }\n\n protected override _renderEditableNumber() {\n if (this._isMini) {\n return nothing;\n }\n const labelMinWidth = Math.max(this.label?.length ?? 0, 3) + 1;\n return html`\n <ixfx-editable-number\n class=\"number\"\n mode=\"label\"\n no-drag\n .value=${String(this.value)}\n .min=${this.min}\n .max=${this.max}\n .step=${this.step}\n .dragSensitivity=${this.dragSensitivity}\n .precision=${this._getEffectivePrecision()}\n .displayText=${this.label}\n .displayTextLogic=${this._isDragging ? `hidden` : this.displayTextLogic}\n .formatter=${this._formatter}\n style=\"--label-min-width: var(--label-width, ${labelMinWidth}ch); --label-align: center;\"\n @change=${this._handleNumberChange}\n ></ixfx-editable-number>\n `;\n }\n\n override render() {\n const showTooltip = this.tooltip || this._isMini;\n const tooltipValue = this._getTooltipValue();\n\n return html`\n <div class=\"wrap ${this._isMini ? `mini` : ``} ${this._isWide ? `wide` : ``} ${this.flip ? `flip` : ``}\">\n ${this._renderEditableNumber()}\n <ixfx-radial-input\n class=\"dial\"\n .value=${this.value}\n .min=${this.min}\n .max=${this.max}\n .step=${this.step}\n .radius=${this.radius}\n .flatten=${this.flatten}\n .markerStyle=${this.markerStyle}\n ?wedge=${this.wedge}\n .valueMode=${this.valueMode}\n data-tooltip-anchor=\"top\"\n data-tooltip=${tooltipValue}\n data-tooltip-live=${showTooltip ? `input` : nothing}\n @input=${this._handleSliderInput}\n @change=${this._handleInputChange}\n ></ixfx-radial-input>\n </div>\n `;\n }\n\n private _getTooltipValue(): string {\n const range = this.max - this.min;\n const numValue = Number(this.value);\n if (this.min === 0 && this.max === 1) {\n return `${Math.round(numValue * 100)}%`;\n }\n if (range > 10) {\n return String(Math.floor(numValue));\n }\n return numValue.toFixed(2);\n }\n\n static styles: CSSResultGroup = css`\n :host {\n display: block;\n min-height: var(--min-height, 60px);\n min-width: var(--min-width, 60px);\n width: var(--width, auto);\n height: var(--height, auto);\n }\n\n :host(:focus-within) {\n outline: 2px solid var(--accent);\n outline-offset: 2px;\n }\n\n .wrap {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n flex-direction: var(--flow, column);\n }\n\n ixfx-editable-number {\n flex-shrink: 0;\n --label-align: center;\n width: 100%;\n }\n\n ixfx-radial-input {\n flex-shrink: 1;\n min-height: 0;\n min-width: 0;\n max-width: 100%;\n --radial-input-svg-focus-outline: none;\n --radial-input-svg-focus-outline-offset: 0;\n --prominence-tickled-opacity: 1;\n --prominence-tickled-saturate: 1;\n }\n\n /* Wide layout (aspect ratio >= threshold): label to the left of dial */\n .wrap.wide {\n flex-direction: var(--flow, row);\n justify-content: space-evenly;\n }\n\n .wrap.wide ixfx-editable-number {\n --label-align: left;\n width: var(--label-width, 5ch);\n }\n\n .wrap.wide ixfx-radial-input {\n height: auto;\n max-width: none;\n }\n\n /* Flip: label after dial (bottom in column, right in row) */\n .wrap.flip ixfx-editable-number {\n order: 1;\n }\n\n /* Mini mode: dial fills the component */\n .wrap.mini {\n justify-content: center;\n gap: 0;\n }\n\n .wrap.mini ixfx-radial-input {\n width: 100%;\n height: 100%;\n }\n `;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-labelled-radial-input': LabelledRadialInput;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"labelled-radial-input.js","names":["customElement"],"sources":["../src/labelled-radial-input/labelled-radial-input.ts"],"sourcesContent":["/**\n * <ixfx-labelled-radial-input> — labelled radial input combining ixfx-editable-number and ixfx-radial-input.\n *\n * Layout is driven by container queries on the component's own aspect ratio (width / height):\n * - width / height >= 1.5 (wide) → horizontal layout (label to the left of dial)\n * - width / height < 1.5 (tall/square) → vertical layout (label above dial)\n *\n * Mini mode: hides ixfx-editable-number, shows only the dial with tooltip forced on.\n * Triggered when width < --mini-width-threshold (default 120px)\n * OR height < --mini-height-threshold (default 45px).\n * Force on/off with CSS variable: --mini: 1 (always mini) | 0 (never mini).\n *\n * Override layout entirely with --flow: row | column.\n *\n * CSS variables (passes through to ixfx-radial-input):\n * --dial-border-width, --dial-border-color, --dial-fill, --radius\n * --marker-color, --marker-thickness, --marker-length, --marker-offset\n * --marker-border-width, --marker-border-color\n * --midpoint-color, --midpoint-thickness, --midpoint-length, --midpoint-offset\n * --lane-width, --lane-color, --lane-border-width, --lane-offset, --lane-dasharray\n * --wedge-fill, --wedge-fill-opacity, --wedge-border-width, --wedge-border-color\n *\n * Properties:\n * label Label text content\n * min / max / value / step Range bounds and current value\n * drag-sensitivity Steps per pixel of drag (default: 1)\n * precision Decimal places (default: 0)\n * radius Dial size, 10-50 range (default: 45)\n * flatten How much circle to hide, 0-1 (default: 0.3)\n * markerStyle 'needle' | 'dot' | 'none' (default: 'needle')\n * wedge Show filled wedge sector (default: false)\n * valueMode 'range' | 'bipolar' | 'unipolar' (default: 'range')\n * aspectRatioThreshold Width/height ratio to trigger horizontal layout (default: 1.5)\n * mini-width-threshold Width (in pixels) below which mini mode activates (default: 120)\n * mini-height-threshold Height (in pixels) below which mini mode activates (default: 45)\n * tooltip Boolean — show dial tooltip\n * flip Boolean — place label after dial (bottom in vertical, right in horizontal)\n * display-text-logic 'hidden' | 'show' | 'override' | 'transient'\n * formatter Function (value: string) => string — formats value for display\n *\n * Events:\n * change — CustomEvent<{ value: string }>, bubbles + composed\n * Fired when value changes via dial or editable-number commit\n * input — CustomEvent<{ value: number }>, bubbles + composed\n * Fired on every dial interaction\n */\nimport type { CSSResultGroup } from 'lit';\nimport type { MarkerStyle, ValueMode } from '../radial-input/types.js';\nimport { css, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { LabelledInputBase } from '../mixins/labelled-input-base.js';\nimport { themeFallbacks } from '../styles/fallbacks.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\nimport '../radial-input/radial-input.js';\n\n@customElement(`ixfx-labelled-radial-input`)\nexport class LabelledRadialInput extends LabelledInputBase {\n readonly inputSelector = `ixfx-radial-input`;\n\n // Override LabelledInputBase defaults (max=1, step=0.01) to match ixfx-radial-input defaults\n override max = 100;\n override step = 1;\n\n @property({ type: Number }) radius = 45;\n @property({ type: Number }) flatten = 0.3;\n @property({ type: String, attribute: `marker-style` }) markerStyle: MarkerStyle = `needle`;\n @property({ type: Boolean }) wedge = false;\n @property({ type: String, attribute: `value-mode` }) valueMode: ValueMode = `range`;\n @property({ type: Boolean }) tooltip = false;\n @property({ type: Boolean }) flip = false;\n\n @property({ type: Number, attribute: `aspect-ratio-threshold` }) aspectRatioThreshold = 1.5;\n\n @state() private _isWide = false;\n\n // Returns effective precision: uses explicit value if set, otherwise computes based on step or range.\n // Prefers step-derived precision, falls back to range-based heuristic.\n private _getEffectivePrecision(): number {\n if (this.hasAttribute(`precision`)) {\n return this.precision;\n }\n // If step is set, derive precision from it (e.g., step=0.5 → precision=1, step=1 → precision=0)\n if (this.step !== undefined) {\n const stepStr = String(this.step);\n const decimalPart = stepStr.split(`.`)[1];\n return decimalPart ? decimalPart.length : 0;\n }\n // Fallback: range > 10 → precision 0 (integers), range <= 10 → precision 2\n const range = this.max - this.min;\n return range > 10 ? 0 : 2;\n }\n\n protected override _handleResize(entries: ResizeObserverEntry[]): void {\n super._handleResize(entries);\n const { width, height } = entries[0].contentRect;\n this._isWide = height > 0 && (width / height) >= this.aspectRatioThreshold;\n }\n\n protected override _renderEditableNumber() {\n if (this._isMini) {\n return nothing;\n }\n const labelMinWidth = Math.max(this.label?.length ?? 0, 3) + 1;\n return html`\n <ixfx-editable-number\n class=\"number\"\n mode=\"label\"\n no-drag\n .value=${String(this.value)}\n .min=${this.min}\n .max=${this.max}\n .step=${this.step}\n .dragSensitivity=${this.dragSensitivity}\n .precision=${this._getEffectivePrecision()}\n .displayText=${this.label}\n .displayTextLogic=${this._isDragging ? `hidden` : this.displayTextLogic}\n .formatter=${this._formatter}\n style=\"--label-min-width: var(--label-width, ${labelMinWidth}ch); --label-align: center;\"\n @change=${this._handleNumberChange}\n ></ixfx-editable-number>\n `;\n }\n\n override render() {\n const showTooltip = this.tooltip || this._isMini;\n const tooltipValue = this._getTooltipValue();\n\n return html`\n <div class=\"wrap ${this._isMini ? `mini` : ``} ${this._isWide ? `wide` : ``} ${this.flip ? `flip` : ``}\">\n ${this._renderEditableNumber()}\n <ixfx-radial-input\n class=\"dial\"\n .value=${this.value}\n .min=${this.min}\n .max=${this.max}\n .step=${this.step}\n .radius=${this.radius}\n .flatten=${this.flatten}\n .markerStyle=${this.markerStyle}\n ?wedge=${this.wedge}\n .valueMode=${this.valueMode}\n data-tooltip-anchor=\"top\"\n data-tooltip=${tooltipValue}\n data-tooltip-live=${showTooltip ? `input` : nothing}\n @input=${this._handleSliderInput}\n @change=${this._handleInputChange}\n ></ixfx-radial-input>\n </div>\n `;\n }\n\n private _getTooltipValue(): string {\n const range = this.max - this.min;\n const numValue = Number(this.value);\n if (this.min === 0 && this.max === 1) {\n return `${Math.round(numValue * 100)}%`;\n }\n if (range > 10) {\n return String(Math.floor(numValue));\n }\n return numValue.toFixed(2);\n }\n\n static styles: CSSResultGroup = [themeFallbacks, css`\n :host {\n display: block;\n min-height: var(--min-height, 60px);\n min-width: var(--min-width, 60px);\n width: var(--width, auto);\n height: var(--height, auto);\n }\n\n :host(:focus-within) {\n outline: 2px solid var(--accent);\n outline-offset: 2px;\n }\n\n .wrap {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n flex-direction: var(--flow, column);\n }\n\n ixfx-editable-number {\n flex-shrink: 0;\n --label-align: center;\n width: 100%;\n }\n\n ixfx-radial-input {\n flex-shrink: 1;\n min-height: 0;\n min-width: 0;\n max-width: 100%;\n --radial-input-svg-focus-outline: none;\n --radial-input-svg-focus-outline-offset: 0;\n --prominence-tickled-opacity: 1;\n --prominence-tickled-saturate: 1;\n }\n\n /* Wide layout (aspect ratio >= threshold): label to the left of dial */\n .wrap.wide {\n flex-direction: var(--flow, row);\n justify-content: space-evenly;\n }\n\n .wrap.wide ixfx-editable-number {\n --label-align: left;\n width: var(--label-width, 5ch);\n }\n\n .wrap.wide ixfx-radial-input {\n height: auto;\n max-width: none;\n }\n\n /* Flip: label after dial (bottom in column, right in row) */\n .wrap.flip ixfx-editable-number {\n order: 1;\n }\n\n /* Mini mode: dial fills the component */\n .wrap.mini {\n justify-content: center;\n gap: 0;\n }\n\n .wrap.mini ixfx-radial-input {\n width: 100%;\n height: 100%;\n }\n `];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-labelled-radial-input': LabelledRadialInput;\n }\n}\n"],"mappings":";;;;;;;AAwDO,IAAA,sBAAA,MAAM,4BAA4B,kBAAkB;;;uBAChC;aAGV;cACC;gBAEqB;iBACC;qBAC4C;eAC7C;mBACuC;iBACrC;cACH;8BAEoD;iBAE7D;;CAI3B,yBAAyC;EACvC,IAAI,KAAK,aAAa,WAAW,GAC/B,OAAO,KAAK;EAGd,IAAI,KAAK,SAAS,KAAA,GAAW;GAE3B,MAAM,cADU,OAAO,KAAK,IACF,EAAE,MAAM,GAAG,EAAE;GACvC,OAAO,cAAc,YAAY,SAAS;EAC5C;EAGA,OADc,KAAK,MAAM,KAAK,MACf,KAAK,IAAI;CAC1B;CAEA,cAAiC,SAAsC;EACrE,MAAM,cAAc,OAAO;EAC3B,MAAM,EAAE,OAAO,WAAW,QAAQ,GAAG;EACrC,KAAK,UAAU,SAAS,KAAM,QAAQ,UAAW,KAAK;CACxD;CAEA,wBAA2C;EACzC,IAAI,KAAK,SACP,OAAO;EAET,MAAM,gBAAgB,KAAK,IAAI,KAAK,OAAO,UAAU,GAAG,CAAC,IAAI;EAC7D,OAAO,IAAI;;;;;iBAKE,OAAO,KAAK,KAAK,EAAE;eACrB,KAAK,IAAI;eACT,KAAK,IAAI;gBACR,KAAK,KAAK;2BACC,KAAK,gBAAgB;qBAC3B,KAAK,uBAAuB,EAAE;uBAC5B,KAAK,MAAM;4BACN,KAAK,cAAc,WAAW,KAAK,iBAAiB;qBAC3D,KAAK,WAAW;uDACkB,cAAc;kBACnD,KAAK,oBAAoB;;;CAGzC;CAEA,SAAkB;EAChB,MAAM,cAAc,KAAK,WAAW,KAAK;EACzC,MAAM,eAAe,KAAK,iBAAiB;EAE3C,OAAO,IAAI;yBACU,KAAK,UAAU,SAAS,GAAG,GAAG,KAAK,UAAU,SAAS,GAAG,GAAG,KAAK,OAAO,SAAS,GAAG;UACnG,KAAK,sBAAsB,EAAE;;;mBAGpB,KAAK,MAAM;iBACb,KAAK,IAAI;iBACT,KAAK,IAAI;kBACR,KAAK,KAAK;oBACR,KAAK,OAAO;qBACX,KAAK,QAAQ;yBACT,KAAK,YAAY;mBACvB,KAAK,MAAM;uBACP,KAAK,UAAU;;yBAEb,aAAa;8BACR,cAAc,UAAU,QAAQ;mBAC3C,KAAK,mBAAmB;oBACvB,KAAK,mBAAmB;;;;CAI1C;CAEA,mBAAmC;EACjC,MAAM,QAAQ,KAAK,MAAM,KAAK;EAC9B,MAAM,WAAW,OAAO,KAAK,KAAK;EAClC,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,GACjC,OAAO,GAAG,KAAK,MAAM,WAAW,GAAG,EAAE;EAEvC,IAAI,QAAQ,IACV,OAAO,OAAO,KAAK,MAAM,QAAQ,CAAC;EAEpC,OAAO,SAAS,QAAQ,CAAC;CAC3B;;gBAEgC,CAAC,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEnD;;AACH;YA5KG,SAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,oBAAA,WAAA,UAAA,KAAA,CAAA;YACzB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,oBAAA,WAAA,WAAA,KAAA,CAAA;YACzB,SAAS;CAAE,MAAM;CAAQ,WAAW;AAAe,CAAC,CAAA,GAAA,oBAAA,WAAA,eAAA,KAAA,CAAA;YACpD,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAA,oBAAA,WAAA,SAAA,KAAA,CAAA;YAC1B,SAAS;CAAE,MAAM;CAAQ,WAAW;AAAa,CAAC,CAAA,GAAA,oBAAA,WAAA,aAAA,KAAA,CAAA;YAClD,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAA,oBAAA,WAAA,WAAA,KAAA,CAAA;YAC1B,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAA,oBAAA,WAAA,QAAA,KAAA,CAAA;YAE1B,SAAS;CAAE,MAAM;CAAQ,WAAW;AAAyB,CAAC,CAAA,GAAA,oBAAA,WAAA,wBAAA,KAAA,CAAA;YAE9D,MAAM,CAAA,GAAA,oBAAA,WAAA,WAAA,KAAA,CAAA;kCAlBRA,kBAAc,4BAA4B,CAAA,GAAA,mBAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as LabelledRangeInput } from "./index-
|
|
1
|
+
import { t as LabelledRangeInput } from "./index-s_IhSnwc.js";
|
|
2
2
|
export { LabelledRangeInput };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as safeCustomElement, t as __decorate } from "./decorate-
|
|
2
|
-
import { t as LabelledInputBase } from "./labelled-input-base-
|
|
1
|
+
import { n as safeCustomElement, t as __decorate } from "./decorate-DdjvVHS-.js";
|
|
2
|
+
import { t as LabelledInputBase } from "./labelled-input-base-9K_w3oLj.js";
|
|
3
3
|
import { css, html } from "lit";
|
|
4
4
|
import { property } from "lit/decorators.js";
|
|
5
5
|
//#region src/labelled-range-input/labelled-range-input.ts
|
package/dist/led.d.ts
CHANGED
package/dist/led.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"led.d.ts","names":[],"sources":["../src/led.ts"],"mappings":";;;cAKa,UAAA,SAAmB,UAAA;EAAA;EAE9B,KAAA;EAGA,GAAA;EAGA,KAAA;EAGA,QAAA;EAGA,IAAA;EAIA,UAAA,CAAW,iBAAA,EAAmB,GAAA;EAe9B,OAAA,CAAQ,iBAAA,EAAmB,GAAA;EAM3B,oBAAA
|
|
1
|
+
{"version":3,"file":"led.d.ts","names":[],"sources":["../src/led/led.ts"],"mappings":";;;cAKa,UAAA,SAAmB,UAAA;EAAA;EAE9B,KAAA;EAGA,GAAA;EAGA,KAAA;EAGA,QAAA;EAGA,IAAA;EAIA,UAAA,CAAW,iBAAA,EAAmB,GAAA;EAe9B,OAAA,CAAQ,iBAAA,EAAmB,GAAA;EAM3B,oBAAA;EAAA,UAwBU,MAAA,kBAAM,cAAA;EAAA,OAIT,MAAA,gBAAM,SAAA;AAAA;AAAA,QAqBP,MAAA;EAAA,UACI,qBAAA;IACR,UAAA,EAAY,UAAU;EAAA;AAAA"}
|
package/dist/led.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as safeCustomElement, t as __decorate } from "./decorate-
|
|
1
|
+
import { n as safeCustomElement, t as __decorate } from "./decorate-DdjvVHS-.js";
|
|
2
2
|
import { LitElement, css, html } from "lit";
|
|
3
3
|
import { property } from "lit/decorators.js";
|
|
4
|
-
//#region src/led.ts
|
|
4
|
+
//#region src/led/led.ts
|
|
5
5
|
let LedElement = class LedElement extends LitElement {
|
|
6
6
|
constructor(..._args) {
|
|
7
7
|
super(..._args);
|
package/dist/led.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"led.js","names":["#updateBlinking","#stopBlinking","#blinkInterval","customElement"],"sources":["../src/led.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { safeCustomElement as customElement } from \"
|
|
1
|
+
{"version":3,"file":"led.js","names":["#updateBlinking","#stopBlinking","#blinkInterval","customElement"],"sources":["../src/led/led.ts"],"sourcesContent":["import { css, html, LitElement } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { safeCustomElement as customElement } from \"../util/custom-elements.js\";\n\n@customElement(`ixfx-led`)\nexport class LedElement extends LitElement {\n @property({ type: Number })\n value = 0;\n\n @property({ type: Boolean, attribute: `lit`, reflect: true })\n lit = false;\n\n @property({ type: String })\n color = `oklch(50% 0.15 25)`;\n\n @property({ type: Boolean, attribute: `blinking`, reflect: true })\n blinking = false;\n\n @property({ type: Number, attribute: `rate` })\n rate = 500;\n\n #blinkInterval: number | undefined;\n\n willUpdate(changedProperties: Map<string, unknown>) {\n if (changedProperties.has(`value`)) {\n this.style.setProperty(`--value`, String(this.value));\n }\n\n if (changedProperties.has(`blinking`) || changedProperties.has(`rate`)) {\n this.#updateBlinking();\n }\n\n if (changedProperties.has(`rate`)) {\n const transitionMs = this.rate < 300 ? this.rate * 0.5 : 150;\n this.style.setProperty(`--transition-duration`, `${transitionMs}ms`);\n }\n }\n\n updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has(`lit`)) {\n this.value = this.lit ? 1 : 0;\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#stopBlinking();\n }\n\n #updateBlinking() {\n if (this.blinking && this.rate > 0) {\n this.#stopBlinking();\n this.#blinkInterval = window.setInterval(() => {\n this.value = this.value === 0 ? 1 : 0;\n }, this.rate);\n } else {\n this.#stopBlinking();\n this.value = 0;\n }\n }\n\n #stopBlinking() {\n if (this.#blinkInterval !== undefined) {\n clearInterval(this.#blinkInterval);\n this.#blinkInterval = undefined;\n }\n }\n\n protected render() {\n return html`<div part=\"circle\"></div>`;\n }\n\n static styles = css`\n :host {\n --_size: var(--size, 1ex);\n display: inline-block;\n min-width: 1ex;\n min-height: 1ex;\n width: var(--_size);\n height: var(--_size);\n vertical-align: middle;\n }\n\n div {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background: color-mix(in oklch, var(--colour, oklch(50% 0.15 25)), white calc((1 - var(--value, 0)) * 50%));\n transition: background var(--transition-duration, 150ms) ease-out;\n }\n `;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ixfx-led\": LedElement;\n }\n}\n"],"mappings":";;;;AAKO,IAAA,aAAA,MAAM,mBAAmB,WAAW;;;eAEjC;aAGF;eAGE;kBAGG;cAGJ;;CAEP;CAEA,WAAW,mBAAyC;EAClD,IAAI,kBAAkB,IAAI,OAAO,GAC/B,KAAK,MAAM,YAAY,WAAW,OAAO,KAAK,KAAK,CAAC;EAGtD,IAAI,kBAAkB,IAAI,UAAU,KAAK,kBAAkB,IAAI,MAAM,GACnE,KAAKA,gBAAgB;EAGvB,IAAI,kBAAkB,IAAI,MAAM,GAAG;GACjC,MAAM,eAAe,KAAK,OAAO,MAAM,KAAK,OAAO,KAAM;GACzD,KAAK,MAAM,YAAY,yBAAyB,GAAG,aAAa,GAAG;EACrE;CACF;CAEA,QAAQ,mBAAyC;EAC/C,IAAI,kBAAkB,IAAI,KAAK,GAC7B,KAAK,QAAQ,KAAK,MAAM,IAAI;CAEhC;CAEA,uBAAuB;EACrB,MAAM,qBAAqB;EAC3B,KAAKC,cAAc;CACrB;CAEA,kBAAkB;EAChB,IAAI,KAAK,YAAY,KAAK,OAAO,GAAG;GAClC,KAAKA,cAAc;GACnB,KAAKC,iBAAiB,OAAO,kBAAkB;IAC7C,KAAK,QAAQ,KAAK,UAAU,IAAI,IAAI;GACtC,GAAG,KAAK,IAAI;EACd,OAAO;GACL,KAAKD,cAAc;GACnB,KAAK,QAAQ;EACf;CACF;CAEA,gBAAgB;EACd,IAAI,KAAKC,mBAAmB,KAAA,GAAW;GACrC,cAAc,KAAKA,cAAc;GACjC,KAAKA,iBAAiB,KAAA;EACxB;CACF;CAEA,SAAmB;EACjB,OAAO,IAAI;CACb;;gBAEgB,GAAG;;;;;;;;;;;;;;;;;;;;AAmBrB;YArFG,SAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,WAAA,WAAA,SAAA,KAAA,CAAA;YAGzB,SAAS;CAAE,MAAM;CAAS,WAAW;CAAO,SAAS;AAAK,CAAC,CAAA,GAAA,WAAA,WAAA,OAAA,KAAA,CAAA;YAG3D,SAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,WAAA,WAAA,SAAA,KAAA,CAAA;YAGzB,SAAS;CAAE,MAAM;CAAS,WAAW;CAAY,SAAS;AAAK,CAAC,CAAA,GAAA,WAAA,WAAA,YAAA,KAAA,CAAA;YAGhE,SAAS;CAAE,MAAM;CAAQ,WAAW;AAAO,CAAC,CAAA,GAAA,WAAA,WAAA,QAAA,KAAA,CAAA;yBAd9CC,kBAAc,UAAU,CAAA,GAAA,UAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { n as tickledStyles, r as TickledController, t as tickledItemStyles } from "./tickled-styles-
|
|
2
|
-
import {
|
|
3
|
-
import "./
|
|
4
|
-
import
|
|
5
|
-
import "./
|
|
1
|
+
import { n as tickledStyles, r as TickledController, t as tickledItemStyles } from "./tickled-styles-fNDdqf6l.js";
|
|
2
|
+
import { t as themeFallbacks } from "./fallbacks-pNMOMx38.js";
|
|
3
|
+
import { n as safeCustomElement, t as __decorate } from "./decorate-DdjvVHS-.js";
|
|
4
|
+
import "./icon-Ndo40kNO.js";
|
|
5
|
+
import { t as popupSurfaceStyles } from "./popup-DiWMxsWj.js";
|
|
6
|
+
import "./interaction-D6efrBLo.js";
|
|
6
7
|
import { LitElement, css, html } from "lit";
|
|
7
8
|
import { property, query, state } from "lit/decorators.js";
|
|
8
9
|
//#region src/menu/menu-container.ts
|
|
@@ -75,6 +76,7 @@ let MenuContainer = class MenuContainer extends LitElement {
|
|
|
75
76
|
static {
|
|
76
77
|
this.styles = [
|
|
77
78
|
popupSurfaceStyles,
|
|
79
|
+
themeFallbacks,
|
|
78
80
|
tickledStyles,
|
|
79
81
|
css`
|
|
80
82
|
:host {
|
|
@@ -464,7 +466,10 @@ let MenuTrigger = class MenuTrigger extends LitElement {
|
|
|
464
466
|
} catch {}
|
|
465
467
|
}
|
|
466
468
|
static {
|
|
467
|
-
this.styles = [
|
|
469
|
+
this.styles = [
|
|
470
|
+
themeFallbacks,
|
|
471
|
+
popupSurfaceStyles,
|
|
472
|
+
css`
|
|
468
473
|
:host {
|
|
469
474
|
display: inline-block;
|
|
470
475
|
position: relative;
|
|
@@ -525,7 +530,8 @@ let MenuTrigger = class MenuTrigger extends LitElement {
|
|
|
525
530
|
opacity: 0;
|
|
526
531
|
transform: translateY(-4px) scale(0.97);
|
|
527
532
|
}
|
|
528
|
-
`
|
|
533
|
+
`
|
|
534
|
+
];
|
|
529
535
|
}
|
|
530
536
|
render() {
|
|
531
537
|
const showButton = this.mode !== `dropdown` && this._hasMenu && !this._hasTriggerSlot;
|
|
@@ -654,7 +660,10 @@ let MenuItem = class MenuItem extends LitElement {
|
|
|
654
660
|
return [...mods, key].join(``);
|
|
655
661
|
}
|
|
656
662
|
static {
|
|
657
|
-
this.styles = [
|
|
663
|
+
this.styles = [
|
|
664
|
+
themeFallbacks,
|
|
665
|
+
tickledItemStyles,
|
|
666
|
+
css`
|
|
658
667
|
:host {
|
|
659
668
|
display: block;
|
|
660
669
|
}
|
|
@@ -718,7 +727,8 @@ let MenuItem = class MenuItem extends LitElement {
|
|
|
718
727
|
color: var(--surface-muted-text);
|
|
719
728
|
margin-left: var(--space-m);
|
|
720
729
|
}
|
|
721
|
-
`
|
|
730
|
+
`
|
|
731
|
+
];
|
|
722
732
|
}
|
|
723
733
|
render() {
|
|
724
734
|
const shortcut = this._getShortcut();
|
|
@@ -763,4 +773,4 @@ MenuItem = __decorate([safeCustomElement(`ixfx-menu-item`)], MenuItem);
|
|
|
763
773
|
//#endregion
|
|
764
774
|
export { MenuTrigger as n, MenuContainer as r, MenuItem as t };
|
|
765
775
|
|
|
766
|
-
//# sourceMappingURL=menu-item-
|
|
776
|
+
//# sourceMappingURL=menu-item-BrIuORYD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-item-BrIuORYD.js","names":["customElement","customElement","customElement"],"sources":["../src/menu/menu-container.ts","../src/menu/menu-trigger.ts","../src/menu/menu-item.ts"],"sourcesContent":["import type { CommandRegistry, KeyboardManager } from '@clinth/ui-commands';\nimport { css, html, LitElement } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { TickledController, tickledStyles } from '../interaction/index.js';\nimport { themeFallbacks } from '../styles/fallbacks.js';\nimport { popupSurfaceStyles } from '../styles/popup.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\n\n@customElement(`ixfx-menu-container`)\nexport class MenuContainer extends LitElement {\n @property({ type: String, attribute: `anchor` }) anchor?: string;\n @property({ attribute: false }) registry?: CommandRegistry<unknown>;\n @property({ attribute: false }) keyboardManager?: KeyboardManager;\n @query(`.popover`) private _popover!: HTMLElement;\n\n // TickledController manages input mode and tickled state\n private tickled = new TickledController<number>(this, {\n getItems: () => {\n const items = this._getMenuItems();\n return items.map((item, i) => ({\n id: i,\n enabled: !item.hasAttribute(`disabled`),\n }));\n },\n onTickle: (index) => {\n // When an item is tickled (hovered/keyboard focused), handle submenu opening\n const items = this._getMenuItems();\n if (index !== undefined) {\n const item = items[index];\n // Ensure the item is focusable and focus it\n item.tabIndex = 0;\n item.focus({ preventScroll: true });\n }\n },\n onStateChange: () => {\n // Sync DOM attributes for slotted content\n this._syncTickledClasses();\n },\n });\n\n static styles = [popupSurfaceStyles, themeFallbacks, tickledStyles, css`\n :host {\n display: block;\n }\n\n .popover {\n padding: var(--space-xs) 0;\n min-width: 160px;\n }\n\n :host {\n opacity: 1;\n transform: translateY(0) scale(1);\n transition: opacity 0.12s ease-out, transform 0.12s ease-out,\n display 0.12s allow-discrete, overlay 0.12s allow-discrete;\n }\n\n @starting-style :host {\n opacity: 0;\n transform: translateY(-4px) scale(0.97);\n }\n\n ::slotted(menu-separator) {\n display: block;\n margin: var(--space-xs) 0;\n }\n `];\n\n private _updateIconSections(): void {\n const slot = this.shadowRoot?.querySelector(`slot`) as HTMLSlotElement | null;\n if (!slot)\n return;\n\n const assigned = slot.assignedElements({ flatten: true });\n\n // Group direct children into sections delimited by separators and headers\n const sections: Element[][] = [];\n let section: Element[] = [];\n for (const el of assigned) {\n if (el.tagName === `IXFX-MENU-SEPARATOR` || el.tagName === `IXFX-MENU-HEADER`) {\n if (section.length > 0) {\n sections.push(section); section = [];\n }\n } else {\n section.push(el);\n }\n }\n if (section.length > 0)\n sections.push(section);\n\n this._propagateContext();\n\n for (const sec of sections) {\n const hasIcon = sec.some((el) => {\n if (el.tagName === `IXFX-MENU-RADIO-GROUP`) {\n return [...el.children].some(ri => ri.hasAttribute(`icon-name`));\n }\n return el.hasAttribute(`icon-name`);\n });\n\n for (const el of sec) {\n if (el.tagName === `IXFX-MENU-RADIO-GROUP`) {\n for (const ri of el.children) {\n if (hasIcon)\n ri.setAttribute(`data-icon-section`, ``);\n else ri.removeAttribute(`data-icon-section`);\n }\n } else {\n if (hasIcon)\n el.setAttribute(`data-icon-section`, ``);\n else el.removeAttribute(`data-icon-section`);\n }\n }\n }\n\n this.performUpdate();\n }\n\n private _propagateContext(): void {\n const slot = this.shadowRoot?.querySelector(`slot`) as HTMLSlotElement | null;\n if (!slot)\n return;\n for (const el of slot.assignedElements({ flatten: true })) {\n if (`registry` in el)\n (el as any).registry = this.registry;\n if (`keyboardManager` in el)\n (el as any).keyboardManager = this.keyboardManager;\n }\n }\n\n override updated(changedProperties: Map<string, unknown>): void {\n if (changedProperties.has(`registry`) || changedProperties.has(`keyboardManager`)) {\n this._propagateContext();\n }\n }\n\n /**\n * Sync data-input-mode to :host so CSS variables cascade to slotted items\n */\n willUpdate(changed: Map<PropertyKey, unknown>): void {\n super.willUpdate(changed);\n // Set data-input-mode on :host so tickledStyles CSS variables cascade\n // through shadow DOM to slotted menu items\n this.setAttribute(`data-input-mode`, this.tickled.inputMode);\n }\n\n render() {\n return html`\n <div\n class=\"popover popup-surface\"\n role=\"menu\"\n @keydown=${this._handleKeydown}\n @mouseover=${this._handleMouseOver}\n >\n <slot @slotchange=${this._updateIconSections}></slot>\n </div>\n `;\n }\n\n private _getMenuItems(): HTMLElement[] {\n const slot = this.shadowRoot?.querySelector(`slot`);\n if (!slot)\n return [];\n\n const skipTags = [`IXFX-MENU-SEPARATOR`, `IXFX-MENU-HEADER`];\n const result: HTMLElement[] = [];\n\n for (const el of slot.assignedElements({ flatten: true })) {\n if (skipTags.includes(el.tagName))\n continue;\n if (el.hasAttribute(`disabled`))\n continue;\n const role = el.getAttribute(`role`);\n if (role === `none` || role === `presentation`)\n continue;\n\n if (el.tagName === `IXFX-MENU-RADIO-GROUP`) {\n const groupSlot = el.shadowRoot?.querySelector(`slot`) as HTMLSlotElement | null;\n for (const radioItem of groupSlot?.assignedElements({ flatten: true }) ?? []) {\n if (!radioItem.hasAttribute(`disabled`)) {\n result.push(radioItem as HTMLElement);\n }\n }\n } else {\n result.push(el as HTMLElement);\n }\n }\n\n return result;\n }\n\n /**\n * Sync .tickled class on slotted items to match controller state\n * This is called via onStateChange whenever the tickled state changes\n */\n private _syncTickledClasses(): void {\n const items = this._getMenuItems();\n items.forEach((item, i) => {\n if (this.tickled.isTickled(i)) {\n item.classList.add(`tickled`);\n item.tabIndex = 0;\n // Set inline styles to ensure visibility across shadow DOM boundaries\n const innerItem = item.shadowRoot?.querySelector(`.item`) as HTMLElement | null;\n if (innerItem) {\n innerItem.style.background = `rgba(0, 0, 0, 0.06)`;\n innerItem.style.borderColor = `var(--accent)`;\n innerItem.style.color = `inherit`;\n }\n } else {\n item.classList.remove(`tickled`);\n item.tabIndex = -1;\n // Clear inline styles\n const innerItem = item.shadowRoot?.querySelector(`.item`) as HTMLElement | null;\n if (innerItem) {\n innerItem.style.background = ``;\n innerItem.style.borderColor = ``;\n innerItem.style.color = ``;\n }\n }\n });\n\n // Focus the tickled item if in keyboard mode\n if (this.tickled.inputMode === `keyboard` && this.tickled.tickledId !== undefined) {\n const tickledItem = items[this.tickled.tickledId];\n tickledItem?.focus();\n }\n }\n\n private _handleMouseOver = (e: MouseEvent): void => {\n const items = this._getMenuItems();\n // composedPath crosses shadow boundaries to find the hovered menu item\n const path = e.composedPath();\n const hoveredIndex = items.findIndex(item => path.includes(item));\n if (hoveredIndex !== -1) {\n const item = items[hoveredIndex];\n // If IXFX-MENU-CONTAINER appears before this item in the composed path, the\n // event originated from inside a nested submenu. Skip the focus override so the\n // inner container keeps ownership of focus. stopPropagation() alone is not\n // sufficient because it does not reliably cross shadow-root boundaries with\n // popovers in the stack — both this handler and the inner one will fire.\n const itemPathIndex = path.indexOf(item);\n const isFromInsideSubmenu = path.slice(0, itemPathIndex).some(\n node => node instanceof Element && node.tagName === `IXFX-MENU-CONTAINER`,\n );\n if (!isFromInsideSubmenu) {\n // Use TickledController to handle mouse hover\n this.tickled.handlePointerEnter(hoveredIndex);\n }\n // Stop propagation so ancestor MenuContainers don't override this focus\n // with their own mouseover handler (e.g. outer menu focusing the sub-trigger).\n e.stopPropagation();\n }\n };\n\n focusFirst(): void {\n this.tickled.handleKeyboardNavigation(`first`);\n }\n\n private _focusNext(items: HTMLElement[], direction: number): void {\n if (items.length === 0) {\n return;\n }\n\n this.tickled.handleKeyboardNavigation(direction > 0 ? `next` : `previous`);\n }\n\n private _focusItem(items: HTMLElement[], index: number): void {\n if (items.length === 0) {\n return;\n }\n\n // Clamp index to valid range\n const clampedIndex = Math.max(0, Math.min(index, items.length - 1));\n this.tickled.handleKeyboardNavigation(clampedIndex);\n }\n\n private _activateFocusedItem(items: HTMLElement[]): void {\n const tickledIndex = this.tickled.tickledId;\n if (tickledIndex === undefined) {\n return;\n }\n\n const item = items[tickledIndex];\n if (!item) {\n return;\n }\n\n const tagName = item.tagName;\n\n if (tagName === `IXFX-MENU-SUB-TRIGGER`) {\n // Native menu behavior handles submenu navigation automatically\n return;\n }\n\n if (tagName === `IXFX-MENU-CHECK-ITEM`) {\n const checkItem = item as any;\n checkItem.checked = !checkItem.checked;\n checkItem.dispatchEvent(new CustomEvent(`command`, {\n detail: { command: checkItem.command, checked: checkItem.checked },\n bubbles: true,\n composed: true,\n }));\n return;\n }\n\n if (tagName === `IXFX-MENU-RADIO-ITEM`) {\n item.dispatchEvent(new CustomEvent(`radio-select`, {\n detail: { value: (item as any).value },\n bubbles: true,\n composed: true,\n }));\n return;\n }\n\n if (tagName === `IXFX-MENU-ITEM`) {\n const command = (item as any).command;\n if (command) {\n item.dispatchEvent(new CustomEvent(`command`, {\n detail: { command },\n bubbles: true,\n composed: true,\n }));\n }\n return;\n }\n\n (item as HTMLElement).click();\n }\n\n private _handleKeydown = (e: KeyboardEvent): void => {\n const items = this._getMenuItems();\n if (items.length === 0) {\n return;\n }\n\n switch (e.key) {\n case `ArrowDown`:\n e.preventDefault();\n e.stopPropagation();\n this._focusNext(items, 1);\n break;\n case `ArrowUp`:\n e.preventDefault();\n e.stopPropagation();\n this._focusNext(items, -1);\n break;\n case `Home`:\n e.preventDefault();\n e.stopPropagation();\n this._focusItem(items, 0);\n break;\n case `End`:\n e.preventDefault();\n e.stopPropagation();\n this._focusItem(items, items.length - 1);\n break;\n case `Enter`:\n case ` `:\n e.preventDefault();\n e.stopPropagation();\n this._activateFocusedItem(items);\n break;\n }\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-menu-container': MenuContainer;\n }\n}\n","import type { CommandRegistry, KeyboardManager } from '@clinth/ui-commands';\nimport { css, html, LitElement } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { themeFallbacks } from '../styles/fallbacks.js';\nimport { popupSurfaceStyles } from '../styles/popup.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\nimport './menu-container.js';\n\ntype MenuMode = `trigger` | `dropdown` | `context`;\ntype Placement = `bottom-start` | `bottom-end` | `right-start`;\n\nexport type MenuTriggerCommandDetail = {\n readonly command?: string;\n readonly value?: string;\n readonly checked?: boolean;\n};\n\nexport type MenuTriggerCommandEvent = CustomEvent<MenuTriggerCommandDetail>;\n\n@customElement(`ixfx-menu-trigger`)\nexport class MenuTrigger extends LitElement {\n @property({ type: String }) mode: MenuMode = `trigger`;\n @property({ type: String }) label = `⋮`;\n @property({ attribute: false }) registry?: CommandRegistry<unknown>;\n @property({ attribute: false }) keyboardManager?: KeyboardManager;\n @property({ type: String }) placement: Placement = `bottom-start`;\n\n @state() private _isOpen = false;\n @state() private _hasMenu = false;\n @state() private _hasTriggerSlot = false;\n\n @query(`.trigger-btn`) private _triggerBtn!: HTMLButtonElement;\n @query(`.popup`) private _popup!: HTMLElement;\n\n private static _count = 0;\n\n private _anchorName = `--mt-${MenuTrigger._count++}`;\n private _clickListener = this._handleClickOutside.bind(this);\n\n connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener(`keydown`, this._handleKeydown);\n this.addEventListener(`command`, this._handleCommand as EventListener);\n this.addEventListener(`radio-change`, this._handleRadioChange as EventListener);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener(`keydown`, this._handleKeydown);\n this.removeEventListener(`command`, this._handleCommand as EventListener);\n this.removeEventListener(`radio-change`, this._handleRadioChange as EventListener);\n document.removeEventListener(`click`, this._clickListener);\n }\n\n firstUpdated(): void {\n this.style.setProperty(`--anchor-name`, this._anchorName);\n this._popup.addEventListener(`toggle`, this._handlePopoverToggle);\n\n this.updateComplete.then(() => {\n const slot = this.shadowRoot?.querySelector(`slot[name=\"menu\"]`) as HTMLSlotElement | undefined;\n if (slot) {\n const assigned = slot.assignedElements({ flatten: true });\n if (assigned.length > 0) {\n this._hasMenu = true;\n this._propagateContext();\n }\n }\n\n this._updatePosition();\n });\n }\n\n updated(changedProperties: Map<string, unknown>): void {\n if (changedProperties.has(`registry`) || changedProperties.has(`keyboardManager`)) {\n this._propagateContext();\n }\n }\n\n private _updatePosition(): void {\n const placements: Record<Placement, { top: string; left: string }> = {\n 'bottom-start': { top: `anchor(bottom)`, left: `anchor(left)` },\n 'bottom-end': { top: `anchor(bottom)`, left: `anchor(right)` },\n 'right-start': { top: `anchor(top)`, left: `anchor(right)` },\n };\n const pos = placements[this.placement];\n this._popup.style.top = pos.top;\n this._popup.style.left = pos.left;\n (this._popup.style as any).positionAnchor = this._anchorName;\n }\n\n private _propagateContext(): void {\n const slot = this.shadowRoot?.querySelector(`slot[name=\"menu\"]`) as HTMLSlotElement | undefined;\n const items = slot?.assignedElements({ flatten: true }) ?? [];\n for (const el of items) {\n if (`registry` in el)\n (el as any).registry = this.registry;\n if (`keyboardManager` in el)\n (el as any).keyboardManager = this.keyboardManager;\n }\n }\n\n private _handleSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n const assigned = slot.assignedElements({ flatten: true });\n this._hasMenu = assigned.length > 0;\n this._propagateContext();\n }\n\n private _handleTriggerSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this._hasTriggerSlot = slot.assignedElements({ flatten: true }).length > 0;\n }\n\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n openMenu(): void {\n this._openMenu();\n }\n\n closeMenu(): void {\n this._closeMenu();\n }\n\n focusTrigger(): void {\n this._triggerBtn?.focus();\n }\n\n private _openMenu(): void {\n if (this._isOpen || !this._popup?.popover)\n return;\n try {\n (this._popup as any).showPopover({ source: this });\n this._isOpen = true;\n document.addEventListener(`click`, this._clickListener);\n this.dispatchEvent(new CustomEvent(`menu-trigger-open`, { bubbles: true, composed: true }));\n requestAnimationFrame(() => {\n this._getMenuContainer()?.focusFirst();\n });\n } catch (err) {\n console.warn(`showPopover failed:`, err);\n }\n }\n\n private _handlePopoverToggle = (e: Event): void => {\n if ((e as ToggleEvent).newState === `closed`) {\n this._isOpen = false;\n document.removeEventListener(`click`, this._clickListener);\n this.dispatchEvent(new CustomEvent(`menu-trigger-close`, { bubbles: true, composed: true }));\n }\n };\n\n private _closeMenu(): void {\n if (!this._isOpen)\n return;\n if (this._popup?.popover) {\n try {\n (this._popup as any).hidePopover();\n } catch { /* ignore */ }\n }\n this._isOpen = false;\n document.removeEventListener(`click`, this._clickListener);\n }\n\n private _handleTriggerClick(e: Event): void {\n e.stopPropagation();\n if (this._isOpen) {\n this._closeMenu();\n this._triggerBtn?.focus();\n } else {\n this._openMenu();\n }\n }\n\n private _handleClickOutside(e: Event): void {\n if (!this.contains(e.target as Node)) {\n if (this._popup?.popover && this._popup.hasAttribute(`open`)) {\n try {\n (this._popup as any).hidePopover();\n } catch {\n // ignore\n }\n }\n }\n }\n\n private _getMenuContainer(): (HTMLElement & { focusFirst: () => void }) | null {\n const slot = this.shadowRoot?.querySelector(`slot[name=\"menu\"]`) as HTMLSlotElement | null;\n const assigned = slot?.assignedElements({ flatten: true }) ?? [];\n const container = assigned.find(el => el.tagName === `IXFX-MENU-CONTAINER`);\n return (container as any) ?? null;\n }\n\n private _handleKeydown = (e: KeyboardEvent): void => {\n if (!this._isOpen)\n return;\n\n if (e.key === `Escape`) {\n e.preventDefault();\n e.stopPropagation();\n this._closeMenu();\n this._triggerBtn?.focus();\n } else if (e.key === `Tab`) {\n this._closeMenu();\n this._triggerBtn?.focus();\n }\n };\n\n private _handleCommand(e: CustomEvent): void {\n if (this._popup?.popover) {\n try {\n (this._popup as any).hidePopover();\n } catch {\n // ignore\n }\n }\n this.dispatchEvent(new CustomEvent<MenuTriggerCommandDetail>(`menu-command`, {\n detail: e.detail,\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleRadioChange(e: CustomEvent): void {\n if (this._popup?.popover) {\n try {\n (this._popup as any).hidePopover();\n } catch {\n // ignore\n }\n }\n this.dispatchEvent(new CustomEvent<MenuTriggerCommandDetail>(`menu-command`, {\n detail: {\n command: e.detail.name,\n value: e.detail.value,\n },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleContextMenu(e: MouseEvent): void {\n if (this.mode !== `context`)\n return;\n e.preventDefault();\n this._popup.style.top = `${e.clientY}px`;\n this._popup.style.left = `${e.clientX}px`;\n this._popup.style.position = `fixed`;\n (this._popup.style as any).positionAnchor = `none`;\n if (this._popup?.popover) {\n try {\n (this._popup as any).showPopover();\n } catch {\n // ignore\n }\n }\n }\n\n static styles = [\n themeFallbacks,\n popupSurfaceStyles,\n css`\n :host {\n display: inline-block;\n position: relative;\n }\n\n .trigger-area {\n anchor-name: var(--anchor-name);\n display: inline-flex;\n align-items: stretch;\n }\n\n .trigger-btn {\n background: none;\n border: none;\n color: var(--surface-3-text);\n cursor: pointer;\n padding: var(--space-s) var(--space-m);\n font-size: var(--text-m);\n font-weight: 600;\n border-radius: var(--radius-s);\n opacity: 0.6;\n transition: opacity var(--transition), background var(--transition);\n }\n\n .trigger-btn:hover {\n background: var(--_trigger-hover-bg, var(--surface-4));\n color: var(--surface-3-text);\n opacity: var(--_trigger-hover-opacity, 1);\n }\n\n .trigger-btn:focus-visible {\n background: var(--surface-4);\n color: var(--surface-3-text);\n outline: none;\n opacity: 1;\n }\n\n .popup {\n position: fixed;\n position-anchor: var(--anchor-name);\n inset: auto;\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n z-index: 100;\n position-try-fallbacks: flip-inline, flip-block, flip-block flip-inline;\n }\n\n .popup[popover] {\n opacity: 1;\n transform: translateY(0) scale(1);\n transition: opacity 0.12s ease-out, transform 0.12s ease-out,\n display 0.12s allow-discrete, overlay 0.12s allow-discrete;\n }\n\n @starting-style .popup {\n opacity: 0;\n transform: translateY(-4px) scale(0.97);\n }\n `,\n ];\n\n render() {\n const showButton = this.mode !== `dropdown` && this._hasMenu && !this._hasTriggerSlot;\n return html`\n <div\n class=\"trigger-area\"\n @click=${this._handleTriggerClick}\n @contextmenu=${this._handleContextMenu}\n >\n ${showButton\n ? html`<button class=\"trigger-btn\" part=\"base\">${this.label}</button>`\n : null}\n <slot name=\"trigger\" @slotchange=${this._handleTriggerSlotChange}></slot>\n </div>\n <div\n class=\"popup popup-surface\"\n popover=\"auto\"\n @click=${(e: Event) => e.stopPropagation()}\n >\n <slot name=\"menu\" @slotchange=${this._handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-menu-trigger': MenuTrigger;\n }\n}\n","import type { CommandRegistry, KeyboardManager } from '@clinth/ui-commands';\nimport { css, html, LitElement } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { tickledItemStyles } from '../interaction/index.js';\nimport { themeFallbacks } from '../styles/fallbacks.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\nimport '../icons/icon.js';\n\nexport type MenuItemCommandDetail = {\n readonly command: string;\n readonly args: string;\n};\n\nexport type MenuItemCommandEvent = CustomEvent<MenuItemCommandDetail>;\n\n@customElement(`ixfx-menu-item`)\nexport class MenuItem extends LitElement {\n @property({ type: String }) command = ``;\n @property({ type: String, attribute: `command-args` }) commandArgs = ``;\n @property({ type: String }) label = ``;\n @property({ type: Boolean }) disabled = false;\n @property({ type: String, attribute: `icon-name` }) iconName = ``;\n @property({ attribute: false }) registry?: CommandRegistry<unknown>;\n @property({ attribute: false }) keyboardManager?: KeyboardManager;\n @property({ attribute: false }) submenuPopover?: HTMLElement;\n\n @state() private _hasChildren = false;\n @query(`slot`) private _slot!: HTMLSlotElement;\n\n private _hoverTimeout: number | null = null;\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._hoverTimeout) {\n clearTimeout(this._hoverTimeout);\n }\n }\n\n private _handleSlotChange(): void {\n const assigned = this._slot?.assignedElements() ?? [];\n this._hasChildren = assigned.length > 0;\n }\n\n private _handleMouseEnter(): void {\n if (this.disabled || !this._hasChildren || !this.submenuPopover)\n return;\n if (this._hoverTimeout) {\n clearTimeout(this._hoverTimeout);\n }\n this._hoverTimeout = window.setTimeout(() => {\n this._showSubmenu();\n }, 150);\n }\n\n private _handleMouseLeave(): void {\n if (this._hoverTimeout) {\n clearTimeout(this._hoverTimeout);\n this._hoverTimeout = null;\n }\n this._hideSubmenu();\n }\n\n private _showSubmenu(): void {\n if (!this.submenuPopover?.popover)\n return;\n try {\n this.submenuPopover.showPopover();\n } catch (err) {\n console.warn(`showPopover failed:`, err);\n }\n }\n\n private _hideSubmenu(): void {\n if (!this.submenuPopover?.popover)\n return;\n try {\n this.submenuPopover.hidePopover();\n } catch (err) {\n console.warn(`hidePopover failed:`, err);\n }\n }\n\n private handleClick(): void {\n if (this.disabled)\n return;\n\n this.dispatchEvent(new CustomEvent<MenuItemCommandDetail>(`command`, {\n detail: { command: this.command, args: this.commandArgs },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _resolvedLabel(): string {\n if (this.label)\n return this.label;\n if (this.registry && this.command) {\n return this.registry.get(this.command)?.label ?? ``;\n }\n return ``;\n }\n\n private _resolvedIcon(): string | null {\n if (this.iconName)\n return this.iconName;\n if (this.registry && this.command) {\n return this.registry.get(this.command)?.icon ?? null;\n }\n return null;\n }\n\n willUpdate(changedProperties: Map<string, unknown>): void {\n super.willUpdate(changedProperties);\n const resolvedIcon = this._resolvedIcon();\n if (resolvedIcon && !this.iconName) {\n this.setAttribute(`data-icon-section`, ``);\n } else if (!resolvedIcon && !this.iconName) {\n this.removeAttribute(`data-icon-section`);\n }\n }\n\n updated(changedProperties: Map<string, unknown>): void {\n super.updated(changedProperties);\n }\n\n private _getShortcut(): string | null {\n if (!this.keyboardManager || !this.command)\n return null;\n const bindings = (this.keyboardManager as any).getBindings?.() ?? [];\n const binding = bindings.find((b: any) => b.commandId === this.command);\n if (!binding)\n return null;\n const mods = Array.from(binding.modifiers ?? [], (m: string) =>\n ({ ctrl: `⌃`, shift: `⇧`, alt: `⌥`, meta: `⌘` })[m] ?? m);\n const key = binding.key?.length === 1 ? binding.key.toUpperCase() : binding.key;\n return [...mods, key].join(``);\n }\n\n static override styles = [themeFallbacks, tickledItemStyles, css`\n :host {\n display: block;\n }\n\n .item {\n display: flex !important;\n align-items: center;\n padding: 6px var(--space-m);\n font-size: var(--text-m);\n background: var(--item-bg, transparent);\n border: var(--item-border, 1px solid transparent);\n color: var(--item-text, inherit);\n }\n\n :host(.tickled) .item {\n background: rgba(0, 0, 0, 0.06);\n border: 1px solid var(--accent);\n color: inherit;\n }\n\n :host(:focus) {\n outline: none;\n }\n\n .item.disabled {\n opacity: var(--disabled-opacity);\n cursor: default;\n }\n\n .item.disabled:hover {\n background: transparent;\n }\n\n .icon-slot {\n width: 0;\n overflow: hidden;\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n :host([icon-name]) .icon-slot,\n :host([data-icon-section]) .icon-slot {\n width: 1em;\n height: 1em;\n margin-right: var(--space-s);\n }\n\n .label {\n flex: 1;\n }\n\n .shortcut {\n margin-left: auto;\n color: var(--surface-muted-text);\n font-size: var(--text-s);\n }\n\n .arrow {\n color: var(--surface-muted-text);\n margin-left: var(--space-m);\n }\n `];\n\n render() {\n const shortcut = this._getShortcut();\n const resolvedIcon = this._resolvedIcon();\n return html`\n <div \n class=\"item ${this.disabled ? `disabled` : ``}\"\n @click=${this.handleClick}\n @mouseenter=${this._handleMouseEnter}\n @mouseleave=${this._handleMouseLeave}\n tabindex=\"${this.disabled ? -1 : 0}\"\n role=\"menuitem\"\n aria-haspopup=\"${this._hasChildren ? `true` : `false`}\"\n aria-expanded=\"${this.submenuPopover?.matches(`:popover-open`) ?? false}\"\n >\n <span class=\"icon-slot\">${resolvedIcon ? html`<ixfx-icon name=\"${resolvedIcon}\"></ixfx-icon>` : null}</span>\n <span class=\"label\"><slot></slot>${this._resolvedLabel()}</span>\n ${shortcut ? html`<span class=\"shortcut\">${shortcut}</span>` : null}\n ${this._hasChildren ? html`<span class=\"arrow\"><ixfx-icon name=\"chevron-right\"></ixfx-icon></span>` : null}\n </div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-menu-item': MenuItem;\n }\n}\n"],"mappings":"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"}
|
|
@@ -124,4 +124,4 @@ declare global {
|
|
|
124
124
|
} //# sourceMappingURL=menu-item.d.ts.map
|
|
125
125
|
//#endregion
|
|
126
126
|
export { MenuContainer as i, MenuTrigger as n, MenuTriggerCommandDetail as r, MenuItem as t };
|
|
127
|
-
//# sourceMappingURL=menu-item-
|
|
127
|
+
//# sourceMappingURL=menu-item-COx-Azgj.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-item-COx-Azgj.d.ts","names":[],"sources":["../src/menu/menu-container.ts","../src/menu/menu-trigger.ts","../src/menu/menu-item.ts"],"mappings":";;;;cASa,aAAA,SAAsB,UAAA;EACgB,MAAA;EACjB,QAAA,GAAW,eAAA;EACX,eAAA,GAAkB,eAAA;EAAA,QACvB,QAAA;EAAA,QAGnB,OAAA;EAAA,OAwBD,MAAA,gBAAM,SAAA;EAAA,QA4BL,mBAAA;EAAA,QAkDA,iBAAA;EAYC,OAAA,CAAQ,iBAAA,EAAmB,GAAA;EAShB;;;EAApB,UAAA,CAAW,OAAA,EAAS,GAAA,CAAI,WAAA;EAOxB,MAAA,kBAAM,cAAA;EAAA,QAaE,aAAA;EApJwB;;;;EAAA,QAwLxB,mBAAA;EAAA,QAiCA,gBAAA;EA0BR,UAAA;EAAA,QAIQ,UAAA;EAAA,QAQA,UAAA;EAAA,QAUA,oBAAA;EAAA,QAqDA,cAAA;AAAA;AAAA,QAqCF,MAAA;EAAA,UACI,qBAAA;IACR,qBAAA,EAAuB,aAAa;EAAA;AAAA;;;KCxWnC,QAAA;AAAA,KACA,SAAA;AAAA,KAEO,wBAAA;EAAA,SACD,OAAA;EAAA,SACA,KAAA;EAAA,SACA,OAAA;AAAA;AAAA,cAME,WAAA,SAAoB,UAAA;EACH,IAAA,EAAM,QAAA;EACN,KAAA;EACI,QAAA,GAAW,eAAA;EACX,eAAA,GAAkB,eAAA;EACtB,SAAA,EAAW,SAAA;EAAA,QAEtB,OAAA;EAAA,QACA,QAAA;EAAA,QACA,eAAA;EAAA,QAEc,WAAA;EAAA,QACN,MAAA;EAAA,eAEV,MAAA;EAAA,QAEP,WAAA;EAAA,QACA,cAAA;EAER,iBAAA;EAOA,oBAAA;EAQA,YAAA;EAkBA,OAAA,CAAQ,iBAAA,EAAmB,GAAA;EAAA,QAMnB,eAAA;EAAA,QAYA,iBAAA;EAAA,QAWA,iBAAA;EAAA,QAOA,wBAAA;EAAA,IAKJ,MAAA;EAIJ,QAAA;EAIA,SAAA;EAIA,YAAA;EAAA,QAIQ,SAAA;EAAA,QAgBA,oBAAA;EAAA,QAQA,UAAA;EAAA,QAYA,mBAAA;EAAA,QAUA,mBAAA;EAAA,QAYA,iBAAA;EAAA,QAOA,cAAA;EAAA,QAeA,cAAA;EAAA,QAeA,kBAAA;EAAA,QAkBA,kBAAA;EAAA,OAiBD,MAAA,gBAAM,SAAA;EAmEb,MAAA,kBAAM,cAAA;AAAA;AAAA,QAwBA,MAAA;EAAA,UACI,qBAAA;IACR,mBAAA,EAAqB,WAAW;EAAA;AAAA;;;cChVvB,QAAA,SAAiB,UAAA;EACA,OAAA;EAC2B,WAAA;EAC3B,KAAA;EACC,QAAA;EACuB,QAAA;EACpB,QAAA,GAAW,eAAA;EACX,eAAA,GAAkB,eAAA;EAClB,cAAA,GAAiB,WAAA;EAAA,QAEhC,YAAA;EAAA,QACM,KAAA;EAAA,QAEf,aAAA;EAER,oBAAA;EAAA,QAOQ,iBAAA;EAAA,QAKA,iBAAA;EAAA,QAWA,iBAAA;EAAA,QAQA,YAAA;EAAA,QAUA,YAAA;EAAA,QAUA,WAAA;EAAA,QAWA,cAAA;EAAA,QASA,aAAA;EASR,UAAA,CAAW,iBAAA,EAAmB,GAAA;EAU9B,OAAA,CAAQ,iBAAA,EAAmB,GAAA;EAAA,QAInB,YAAA;EAAA,OAaQ,MAAA,gBAAM,SAAA;EAkEtB,MAAA,kBAAM,cAAA;AAAA;AAAA,QAwBA,MAAA;EAAA,UACI,qBAAA;IACR,gBAAA,EAAkB,QAAQ;EAAA;AAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { t as __exportAll } from "./chunk-
|
|
2
|
-
import { t as tickledItemStyles } from "./tickled-styles-
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import
|
|
1
|
+
import { t as __exportAll } from "./chunk-D7D4PA-g.js";
|
|
2
|
+
import { t as tickledItemStyles } from "./tickled-styles-fNDdqf6l.js";
|
|
3
|
+
import { t as themeFallbacks } from "./fallbacks-pNMOMx38.js";
|
|
4
|
+
import { n as safeCustomElement, t as __decorate } from "./decorate-DdjvVHS-.js";
|
|
5
|
+
import "./icon-Ndo40kNO.js";
|
|
6
|
+
import "./interaction-D6efrBLo.js";
|
|
7
|
+
import { n as MenuTrigger, r as MenuContainer, t as MenuItem } from "./menu-item-BrIuORYD.js";
|
|
7
8
|
import { LitElement, css, html, nothing } from "lit";
|
|
8
9
|
import { property, query, state } from "lit/decorators.js";
|
|
9
10
|
//#region src/menu/menu-bar.ts
|
|
@@ -146,7 +147,10 @@ let MenuCheckItem = class MenuCheckItem extends LitElement {
|
|
|
146
147
|
return [...mods, key].join(``);
|
|
147
148
|
}
|
|
148
149
|
static {
|
|
149
|
-
this.styles = [
|
|
150
|
+
this.styles = [
|
|
151
|
+
themeFallbacks,
|
|
152
|
+
tickledItemStyles,
|
|
153
|
+
css`
|
|
150
154
|
:host {
|
|
151
155
|
display: block;
|
|
152
156
|
}
|
|
@@ -202,7 +206,8 @@ let MenuCheckItem = class MenuCheckItem extends LitElement {
|
|
|
202
206
|
color: var(--surface-muted-text);
|
|
203
207
|
font-size: var(--text-s);
|
|
204
208
|
}
|
|
205
|
-
`
|
|
209
|
+
`
|
|
210
|
+
];
|
|
206
211
|
}
|
|
207
212
|
render() {
|
|
208
213
|
const shortcut = this._getShortcut();
|
|
@@ -406,7 +411,10 @@ let MenuSubTrigger = class MenuSubTrigger extends LitElement {
|
|
|
406
411
|
}
|
|
407
412
|
}
|
|
408
413
|
static {
|
|
409
|
-
this.styles = [
|
|
414
|
+
this.styles = [
|
|
415
|
+
themeFallbacks,
|
|
416
|
+
tickledItemStyles,
|
|
417
|
+
css`
|
|
410
418
|
:host {
|
|
411
419
|
display: block;
|
|
412
420
|
}
|
|
@@ -471,7 +479,8 @@ let MenuSubTrigger = class MenuSubTrigger extends LitElement {
|
|
|
471
479
|
color: var(--surface-muted-text);
|
|
472
480
|
margin-left: var(--space-m);
|
|
473
481
|
}
|
|
474
|
-
`
|
|
482
|
+
`
|
|
483
|
+
];
|
|
475
484
|
}
|
|
476
485
|
render() {
|
|
477
486
|
const resolvedIcon = this._resolvedIcon();
|
|
@@ -521,7 +530,7 @@ MenuSubTrigger = _MenuSubTrigger = __decorate([safeCustomElement(`ixfx-menu-sub-
|
|
|
521
530
|
//#region src/menu/menu-separator.ts
|
|
522
531
|
let MenuSeparator = class MenuSeparator extends LitElement {
|
|
523
532
|
static {
|
|
524
|
-
this.styles = css`
|
|
533
|
+
this.styles = [themeFallbacks, css`
|
|
525
534
|
:host {
|
|
526
535
|
display: block;
|
|
527
536
|
margin: var(--space-xs) 0;
|
|
@@ -531,7 +540,7 @@ let MenuSeparator = class MenuSeparator extends LitElement {
|
|
|
531
540
|
height: 1px;
|
|
532
541
|
background: var(--surface-4);
|
|
533
542
|
}
|
|
534
|
-
|
|
543
|
+
`];
|
|
535
544
|
}
|
|
536
545
|
render() {
|
|
537
546
|
return html`<div class="separator"></div>`;
|
|
@@ -546,7 +555,7 @@ let MenuHeader = class MenuHeader extends LitElement {
|
|
|
546
555
|
this.label = ``;
|
|
547
556
|
}
|
|
548
557
|
static {
|
|
549
|
-
this.styles = css`
|
|
558
|
+
this.styles = [themeFallbacks, css`
|
|
550
559
|
:host {
|
|
551
560
|
display: block;
|
|
552
561
|
padding: 6px var(--space-m) var(--space-xs);
|
|
@@ -556,7 +565,7 @@ let MenuHeader = class MenuHeader extends LitElement {
|
|
|
556
565
|
color: var(--surface-muted-text);
|
|
557
566
|
letter-spacing: 0.5px;
|
|
558
567
|
}
|
|
559
|
-
|
|
568
|
+
`];
|
|
560
569
|
}
|
|
561
570
|
render() {
|
|
562
571
|
return html`<div>${this.label}</div>`;
|
|
@@ -660,7 +669,10 @@ let MenuRadioItem = class MenuRadioItem extends LitElement {
|
|
|
660
669
|
}));
|
|
661
670
|
}
|
|
662
671
|
static {
|
|
663
|
-
this.styles = [
|
|
672
|
+
this.styles = [
|
|
673
|
+
themeFallbacks,
|
|
674
|
+
tickledItemStyles,
|
|
675
|
+
css`
|
|
664
676
|
:host {
|
|
665
677
|
display: block;
|
|
666
678
|
}
|
|
@@ -710,7 +722,8 @@ let MenuRadioItem = class MenuRadioItem extends LitElement {
|
|
|
710
722
|
.label {
|
|
711
723
|
flex: 1;
|
|
712
724
|
}
|
|
713
|
-
`
|
|
725
|
+
`
|
|
726
|
+
];
|
|
714
727
|
}
|
|
715
728
|
render() {
|
|
716
729
|
const isSelected = this.groupValue === this.value;
|
|
@@ -810,4 +823,4 @@ var menu_exports = /* @__PURE__ */ __exportAll({
|
|
|
810
823
|
//#endregion
|
|
811
824
|
export { menuFromTreeToElements as a, MenuSubTrigger as c, MenuBar as d, menuFromTree as i, MenuCommandController as l, MenuRadioGroup as n, MenuHeader as o, MenuRadioItem as r, MenuSeparator as s, menu_exports as t, MenuCheckItem as u };
|
|
812
825
|
|
|
813
|
-
//# sourceMappingURL=menu-
|
|
826
|
+
//# sourceMappingURL=menu-vjoiHZ13.js.map
|