@synergy-design-system/components 1.10.1 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{chunk.GQFFWTB6.js → chunk.25VU42YC.js} +2 -2
- package/dist/chunks/{chunk.IZUTSNSL.js → chunk.2HCVVOEV.js} +2 -2
- package/dist/chunks/chunk.2KYFCKCK.js +10 -0
- package/dist/chunks/chunk.2KYFCKCK.js.map +7 -0
- package/dist/chunks/chunk.2QOQY4ZG.js +132 -0
- package/dist/chunks/chunk.2QOQY4ZG.js.map +7 -0
- package/dist/chunks/{chunk.GTSRMEPE.js → chunk.2QYALZBT.js} +2 -51
- package/dist/chunks/chunk.2QYALZBT.js.map +7 -0
- package/dist/chunks/chunk.3FOVDOJX.js +26 -0
- package/dist/chunks/chunk.3FOVDOJX.js.map +7 -0
- package/dist/chunks/{chunk.CIENFFDB.js → chunk.3V2G5ZN5.js} +5 -5
- package/dist/chunks/chunk.55KPESRA.js +131 -0
- package/dist/chunks/chunk.55KPESRA.js.map +7 -0
- package/dist/chunks/{chunk.RITXJLM2.js → chunk.5D6C4M2C.js} +4 -4
- package/dist/chunks/{chunk.G7SPBDNX.js → chunk.5IL2WT3S.js} +2 -2
- package/dist/chunks/{chunk.HXLFB7ZH.js → chunk.5UM7HWIJ.js} +2 -2
- package/dist/chunks/{chunk.4FD6EN6V.js → chunk.62EBS3GI.js} +2 -2
- package/dist/chunks/{chunk.XGXFE6IF.js → chunk.66WXVGAW.js} +16 -2
- package/dist/chunks/{chunk.XGXFE6IF.js.map → chunk.66WXVGAW.js.map} +1 -1
- package/dist/chunks/{chunk.NKGRF5PE.js → chunk.6CAMLQSC.js} +2 -2
- package/dist/chunks/chunk.6G5WBKTI.js +35 -0
- package/dist/chunks/chunk.6G5WBKTI.js.map +7 -0
- package/dist/chunks/chunk.76A3JS2N.js +12 -0
- package/dist/chunks/chunk.76A3JS2N.js.map +7 -0
- package/dist/chunks/chunk.7BEVGRQ2.js +52 -0
- package/dist/chunks/chunk.7BEVGRQ2.js.map +7 -0
- package/dist/chunks/{chunk.7W73A57K.js → chunk.B6R3IVGO.js} +2 -1
- package/dist/chunks/chunk.B6R3IVGO.js.map +7 -0
- package/dist/chunks/{chunk.EVPQK6A6.js → chunk.B7UA4FRG.js} +2 -2
- package/dist/chunks/{chunk.LH3GMK7S.js → chunk.BRWLHYC5.js} +4 -4
- package/dist/chunks/{chunk.BI3SSGDL.js → chunk.BUBQFHSV.js} +3 -3
- package/dist/chunks/{chunk.MOE5YJDU.js → chunk.D3SWRAXW.js} +2 -2
- package/dist/chunks/chunk.ENYO4NCR.js +21 -0
- package/dist/chunks/chunk.ENYO4NCR.js.map +7 -0
- package/dist/chunks/{chunk.PKNEJYPC.js → chunk.FTTKC5YD.js} +2 -2
- package/dist/chunks/{chunk.P2KXCLJX.js → chunk.G5TO77WM.js} +2 -2
- package/dist/chunks/chunk.GAES53RX.js +12 -0
- package/dist/chunks/chunk.GAES53RX.js.map +7 -0
- package/dist/chunks/chunk.HUCNUF4L.js +194 -0
- package/dist/chunks/chunk.HUCNUF4L.js.map +7 -0
- package/dist/chunks/{chunk.LVDTUHAK.js → chunk.I2E3UJIK.js} +7 -7
- package/dist/chunks/{chunk.73CGLYDS.js → chunk.IQK6FVMW.js} +2 -2
- package/dist/chunks/{chunk.ZGNSJN4N.js → chunk.ISU5BF2G.js} +2 -2
- package/dist/chunks/{chunk.WHZYEHUG.js → chunk.JT32Q3RE.js} +4 -4
- package/dist/chunks/{chunk.NUWM3YC3.js → chunk.KDY26CBL.js} +3 -3
- package/dist/chunks/{chunk.FUUO3LIN.js → chunk.KNZNW4VS.js} +3 -3
- package/dist/chunks/{chunk.W2U4WOJV.js → chunk.MFHUNGFO.js} +5 -5
- package/dist/chunks/{chunk.DG6V34TC.js → chunk.MWXEDKNQ.js} +2 -2
- package/dist/chunks/{chunk.XQCYTG77.js → chunk.N3SVWIVG.js} +3 -3
- package/dist/chunks/{chunk.AFOOC2IJ.js → chunk.NOUFWET6.js} +2 -2
- package/dist/chunks/{chunk.GQCIN3QI.js → chunk.NYY4POP7.js} +3 -3
- package/dist/chunks/chunk.OOABXWCW.js +111 -0
- package/dist/chunks/chunk.OOABXWCW.js.map +7 -0
- package/dist/chunks/chunk.PDHVYHXD.js +156 -0
- package/dist/chunks/chunk.PDHVYHXD.js.map +7 -0
- package/dist/chunks/chunk.PFJUBUDL.js +12 -0
- package/dist/chunks/chunk.PFJUBUDL.js.map +7 -0
- package/dist/chunks/{chunk.NSYEQECK.js → chunk.PLIQ6RPD.js} +2 -2
- package/dist/chunks/{chunk.L5APUSPB.js → chunk.PN6VIFO3.js} +10 -8
- package/dist/chunks/{chunk.L5APUSPB.js.map → chunk.PN6VIFO3.js.map} +1 -1
- package/dist/chunks/{chunk.SNE4YYHY.js → chunk.PQKD6OYF.js} +2 -2
- package/dist/chunks/{chunk.VJ5NFXWS.js → chunk.QDYPBFX4.js} +2 -2
- package/dist/chunks/{chunk.GXPIMLW3.js → chunk.QXUPCXT5.js} +2 -2
- package/dist/chunks/{chunk.5S4NBTAE.js → chunk.R6GYAHAZ.js} +3 -3
- package/dist/chunks/chunk.RD2376VJ.js +12 -0
- package/dist/chunks/chunk.RD2376VJ.js.map +7 -0
- package/dist/chunks/chunk.RRWSXFQ5.js +239 -0
- package/dist/chunks/chunk.RRWSXFQ5.js.map +7 -0
- package/dist/chunks/chunk.RSSY7KPD.js +24 -0
- package/dist/chunks/chunk.RSSY7KPD.js.map +7 -0
- package/dist/chunks/{chunk.ZYXL5PMB.js → chunk.SJCYCGUZ.js} +6 -6
- package/dist/chunks/chunk.SLCYXMHB.js +57 -0
- package/dist/chunks/chunk.SLCYXMHB.js.map +7 -0
- package/dist/chunks/{chunk.SOGEZO2M.js → chunk.TYPMG2S4.js} +2 -2
- package/dist/chunks/{chunk.JLNH2W3S.js → chunk.VKSYJXTN.js} +18 -133
- package/dist/chunks/chunk.VKSYJXTN.js.map +7 -0
- package/dist/chunks/{chunk.LGADMVOP.js → chunk.W2GO4M3V.js} +2 -2
- package/dist/chunks/chunk.WATON67O.js +12 -0
- package/dist/chunks/chunk.WATON67O.js.map +7 -0
- package/dist/chunks/{chunk.UAHEM2KD.js → chunk.WMAUFYXR.js} +2 -2
- package/dist/chunks/{chunk.ZFFM3DYG.js → chunk.WWMWREE4.js} +4 -4
- package/dist/chunks/{chunk.U24UDJCX.js → chunk.X3D3MBIH.js} +2 -2
- package/dist/chunks/{chunk.U24UDJCX.js.map → chunk.X3D3MBIH.js.map} +1 -1
- package/dist/chunks/chunk.X6GR6IA2.js +29 -0
- package/dist/chunks/chunk.X6GR6IA2.js.map +7 -0
- package/dist/chunks/{chunk.ZQKBDPXT.js → chunk.YGF5AV75.js} +2 -2
- package/dist/chunks/chunk.ZZKLLRUA.js +365 -0
- package/dist/chunks/chunk.ZZKLLRUA.js.map +7 -0
- package/dist/components/button/button.component.js +7 -7
- package/dist/components/button/button.js +8 -8
- package/dist/components/button-group/button-group.component.js +2 -2
- package/dist/components/button-group/button-group.js +3 -3
- package/dist/components/checkbox/checkbox.component.js +6 -6
- package/dist/components/checkbox/checkbox.js +7 -7
- package/dist/components/divider/divider.component.js +2 -2
- package/dist/components/divider/divider.js +3 -3
- package/dist/components/drawer/drawer.component.js +11 -9
- package/dist/components/drawer/drawer.js +12 -10
- package/dist/components/dropdown/dropdown.component.d.ts +96 -0
- package/dist/components/dropdown/dropdown.component.js +19 -0
- package/dist/components/dropdown/dropdown.component.js.map +7 -0
- package/dist/components/dropdown/dropdown.custom.styles.d.ts +2 -0
- package/dist/components/dropdown/dropdown.custom.styles.js +8 -0
- package/dist/components/dropdown/dropdown.custom.styles.js.map +7 -0
- package/dist/components/dropdown/dropdown.d.ts +8 -0
- package/dist/components/dropdown/dropdown.js +20 -0
- package/dist/components/dropdown/dropdown.js.map +7 -0
- package/dist/components/dropdown/dropdown.styles.d.ts +2 -0
- package/dist/components/dropdown/dropdown.styles.js +8 -0
- package/dist/components/dropdown/dropdown.styles.js.map +7 -0
- package/dist/components/header/header.component.js +7 -7
- package/dist/components/header/header.js +8 -8
- package/dist/components/icon/icon.component.js +4 -4
- package/dist/components/icon/icon.js +5 -5
- package/dist/components/icon-button/icon-button.component.js +5 -5
- package/dist/components/icon-button/icon-button.js +6 -6
- package/dist/components/input/input.component.js +7 -7
- package/dist/components/input/input.js +8 -8
- package/dist/components/menu/menu.component.d.ts +39 -0
- package/dist/components/menu/menu.component.js +11 -0
- package/dist/components/menu/menu.component.js.map +7 -0
- package/dist/components/menu/menu.custom.styles.d.ts +2 -0
- package/dist/components/menu/menu.custom.styles.js +8 -0
- package/dist/components/menu/menu.custom.styles.js.map +7 -0
- package/dist/components/menu/menu.d.ts +8 -0
- package/dist/components/menu/menu.js +12 -0
- package/dist/components/menu/menu.js.map +7 -0
- package/dist/components/menu/menu.styles.d.ts +2 -0
- package/dist/components/menu/menu.styles.js +8 -0
- package/dist/components/menu/menu.styles.js.map +7 -0
- package/dist/components/menu-item/menu-item.component.d.ts +67 -0
- package/dist/components/menu-item/menu-item.component.js +27 -0
- package/dist/components/menu-item/menu-item.component.js.map +7 -0
- package/dist/components/menu-item/menu-item.custom.styles.d.ts +2 -0
- package/dist/components/menu-item/menu-item.custom.styles.js +8 -0
- package/dist/components/menu-item/menu-item.custom.styles.js.map +7 -0
- package/dist/components/menu-item/menu-item.d.ts +8 -0
- package/dist/components/menu-item/menu-item.js +28 -0
- package/dist/components/menu-item/menu-item.js.map +7 -0
- package/dist/components/menu-item/menu-item.styles.d.ts +2 -0
- package/dist/components/menu-item/menu-item.styles.js +8 -0
- package/dist/components/menu-item/menu-item.styles.js.map +7 -0
- package/dist/components/menu-item/submenu-controller.d.ts +36 -0
- package/dist/components/menu-item/submenu-controller.js +11 -0
- package/dist/components/menu-item/submenu-controller.js.map +7 -0
- package/dist/components/menu-label/menu-label.component.d.ts +31 -0
- package/dist/components/menu-label/menu-label.component.js +15 -0
- package/dist/components/menu-label/menu-label.component.js.map +7 -0
- package/dist/components/menu-label/menu-label.custom.styles.d.ts +2 -0
- package/dist/components/menu-label/menu-label.custom.styles.js +8 -0
- package/dist/components/menu-label/menu-label.custom.styles.js.map +7 -0
- package/dist/components/menu-label/menu-label.d.ts +8 -0
- package/dist/components/menu-label/menu-label.js +16 -0
- package/dist/components/menu-label/menu-label.js.map +7 -0
- package/dist/components/menu-label/menu-label.styles.d.ts +2 -0
- package/dist/components/menu-label/menu-label.styles.js +8 -0
- package/dist/components/menu-label/menu-label.styles.js.map +7 -0
- package/dist/components/optgroup/optgroup.component.js +4 -4
- package/dist/components/optgroup/optgroup.js +5 -5
- package/dist/components/option/option.component.js +5 -5
- package/dist/components/option/option.js +6 -6
- package/dist/components/popup/popup.component.js +2 -2
- package/dist/components/popup/popup.d.ts +8 -0
- package/dist/components/popup/popup.js +11 -0
- package/dist/components/popup/popup.js.map +7 -0
- package/dist/components/radio/radio.component.js +5 -5
- package/dist/components/radio/radio.js +6 -6
- package/dist/components/radio-button/radio-button.component.js +3 -3
- package/dist/components/radio-button/radio-button.js +4 -4
- package/dist/components/radio-group/radio-group.component.js +4 -4
- package/dist/components/radio-group/radio-group.js +5 -5
- package/dist/components/select/select.component.js +14 -13
- package/dist/components/select/select.js +15 -14
- package/dist/components/spinner/spinner.component.js +2 -2
- package/dist/components/switch/switch.component.js +3 -3
- package/dist/components/switch/switch.js +4 -4
- package/dist/components/tag/tag.component.js +7 -7
- package/dist/components/tag/tag.custom.styles.js +1 -1
- package/dist/components/tag/tag.js +8 -8
- package/dist/components/textarea/textarea.component.js +3 -3
- package/dist/components/textarea/textarea.js +4 -4
- package/dist/custom-elements.json +1993 -1134
- package/dist/events/events.d.ts +1 -0
- package/dist/events/syn-select.d.ts +9 -0
- package/dist/synergy.d.ts +5 -0
- package/dist/synergy.js +94 -59
- package/dist/themes/utility.css +12 -3
- package/dist/vscode.html-custom-data.json +137 -17
- package/package.json +3 -3
- package/dist/chunks/chunk.7W73A57K.js.map +0 -7
- package/dist/chunks/chunk.GTSRMEPE.js.map +0 -7
- package/dist/chunks/chunk.JLNH2W3S.js.map +0 -7
- /package/dist/chunks/{chunk.GQFFWTB6.js.map → chunk.25VU42YC.js.map} +0 -0
- /package/dist/chunks/{chunk.IZUTSNSL.js.map → chunk.2HCVVOEV.js.map} +0 -0
- /package/dist/chunks/{chunk.CIENFFDB.js.map → chunk.3V2G5ZN5.js.map} +0 -0
- /package/dist/chunks/{chunk.RITXJLM2.js.map → chunk.5D6C4M2C.js.map} +0 -0
- /package/dist/chunks/{chunk.G7SPBDNX.js.map → chunk.5IL2WT3S.js.map} +0 -0
- /package/dist/chunks/{chunk.HXLFB7ZH.js.map → chunk.5UM7HWIJ.js.map} +0 -0
- /package/dist/chunks/{chunk.4FD6EN6V.js.map → chunk.62EBS3GI.js.map} +0 -0
- /package/dist/chunks/{chunk.NKGRF5PE.js.map → chunk.6CAMLQSC.js.map} +0 -0
- /package/dist/chunks/{chunk.EVPQK6A6.js.map → chunk.B7UA4FRG.js.map} +0 -0
- /package/dist/chunks/{chunk.LH3GMK7S.js.map → chunk.BRWLHYC5.js.map} +0 -0
- /package/dist/chunks/{chunk.BI3SSGDL.js.map → chunk.BUBQFHSV.js.map} +0 -0
- /package/dist/chunks/{chunk.MOE5YJDU.js.map → chunk.D3SWRAXW.js.map} +0 -0
- /package/dist/chunks/{chunk.PKNEJYPC.js.map → chunk.FTTKC5YD.js.map} +0 -0
- /package/dist/chunks/{chunk.P2KXCLJX.js.map → chunk.G5TO77WM.js.map} +0 -0
- /package/dist/chunks/{chunk.LVDTUHAK.js.map → chunk.I2E3UJIK.js.map} +0 -0
- /package/dist/chunks/{chunk.73CGLYDS.js.map → chunk.IQK6FVMW.js.map} +0 -0
- /package/dist/chunks/{chunk.ZGNSJN4N.js.map → chunk.ISU5BF2G.js.map} +0 -0
- /package/dist/chunks/{chunk.WHZYEHUG.js.map → chunk.JT32Q3RE.js.map} +0 -0
- /package/dist/chunks/{chunk.NUWM3YC3.js.map → chunk.KDY26CBL.js.map} +0 -0
- /package/dist/chunks/{chunk.FUUO3LIN.js.map → chunk.KNZNW4VS.js.map} +0 -0
- /package/dist/chunks/{chunk.W2U4WOJV.js.map → chunk.MFHUNGFO.js.map} +0 -0
- /package/dist/chunks/{chunk.DG6V34TC.js.map → chunk.MWXEDKNQ.js.map} +0 -0
- /package/dist/chunks/{chunk.XQCYTG77.js.map → chunk.N3SVWIVG.js.map} +0 -0
- /package/dist/chunks/{chunk.AFOOC2IJ.js.map → chunk.NOUFWET6.js.map} +0 -0
- /package/dist/chunks/{chunk.GQCIN3QI.js.map → chunk.NYY4POP7.js.map} +0 -0
- /package/dist/chunks/{chunk.NSYEQECK.js.map → chunk.PLIQ6RPD.js.map} +0 -0
- /package/dist/chunks/{chunk.SNE4YYHY.js.map → chunk.PQKD6OYF.js.map} +0 -0
- /package/dist/chunks/{chunk.VJ5NFXWS.js.map → chunk.QDYPBFX4.js.map} +0 -0
- /package/dist/chunks/{chunk.GXPIMLW3.js.map → chunk.QXUPCXT5.js.map} +0 -0
- /package/dist/chunks/{chunk.5S4NBTAE.js.map → chunk.R6GYAHAZ.js.map} +0 -0
- /package/dist/chunks/{chunk.ZYXL5PMB.js.map → chunk.SJCYCGUZ.js.map} +0 -0
- /package/dist/chunks/{chunk.SOGEZO2M.js.map → chunk.TYPMG2S4.js.map} +0 -0
- /package/dist/chunks/{chunk.LGADMVOP.js.map → chunk.W2GO4M3V.js.map} +0 -0
- /package/dist/chunks/{chunk.UAHEM2KD.js.map → chunk.WMAUFYXR.js.map} +0 -0
- /package/dist/chunks/{chunk.ZFFM3DYG.js.map → chunk.WWMWREE4.js.map} +0 -0
- /package/dist/chunks/{chunk.ZQKBDPXT.js.map → chunk.YGF5AV75.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SynOptgroup
|
|
3
|
-
} from "./chunk.
|
|
3
|
+
} from "./chunk.JT32Q3RE.js";
|
|
4
4
|
|
|
5
5
|
// src/components/optgroup/optgroup.ts
|
|
6
6
|
var optgroup_default = SynOptgroup;
|
|
@@ -9,4 +9,4 @@ SynOptgroup.define("syn-optgroup");
|
|
|
9
9
|
export {
|
|
10
10
|
optgroup_default
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=chunk.
|
|
12
|
+
//# sourceMappingURL=chunk.25VU42YC.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SynRadioGroup
|
|
3
|
-
} from "./chunk.
|
|
3
|
+
} from "./chunk.5D6C4M2C.js";
|
|
4
4
|
|
|
5
5
|
// src/components/radio-group/radio-group.ts
|
|
6
6
|
var radio_group_default = SynRadioGroup;
|
|
@@ -9,4 +9,4 @@ SynRadioGroup.define("syn-radio-group");
|
|
|
9
9
|
export {
|
|
10
10
|
radio_group_default
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=chunk.
|
|
12
|
+
//# sourceMappingURL=chunk.2HCVVOEV.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/dropdown/dropdown.custom.styles.ts"],
|
|
4
|
+
"sourcesContent": ["import { css } from 'lit';\n\nexport default css`\n /* Write custom CSS here */\n`;\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,WAAW;AAEpB,IAAO,iCAAQ;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// src/internal/tabbable.ts
|
|
2
|
+
var computedStyleMap = /* @__PURE__ */ new WeakMap();
|
|
3
|
+
function getCachedComputedStyle(el) {
|
|
4
|
+
let computedStyle = computedStyleMap.get(el);
|
|
5
|
+
if (!computedStyle) {
|
|
6
|
+
computedStyle = window.getComputedStyle(el, null);
|
|
7
|
+
computedStyleMap.set(el, computedStyle);
|
|
8
|
+
}
|
|
9
|
+
return computedStyle;
|
|
10
|
+
}
|
|
11
|
+
function isVisible(el) {
|
|
12
|
+
if (typeof el.checkVisibility === "function") {
|
|
13
|
+
return el.checkVisibility({ checkOpacity: false, checkVisibilityCSS: true });
|
|
14
|
+
}
|
|
15
|
+
const computedStyle = getCachedComputedStyle(el);
|
|
16
|
+
return computedStyle.visibility !== "hidden" && computedStyle.display !== "none";
|
|
17
|
+
}
|
|
18
|
+
function isOverflowingAndTabbable(el) {
|
|
19
|
+
const computedStyle = getCachedComputedStyle(el);
|
|
20
|
+
const { overflowY, overflowX } = computedStyle;
|
|
21
|
+
if (overflowY === "scroll" || overflowX === "scroll") {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
if (overflowY !== "auto" || overflowX !== "auto") {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const isOverflowingY = el.scrollHeight > el.clientHeight;
|
|
28
|
+
if (isOverflowingY && overflowY === "auto") {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
const isOverflowingX = el.scrollWidth > el.clientWidth;
|
|
32
|
+
if (isOverflowingX && overflowX === "auto") {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
function isTabbable(el) {
|
|
38
|
+
const tag = el.tagName.toLowerCase();
|
|
39
|
+
const tabindex = Number(el.getAttribute("tabindex"));
|
|
40
|
+
const hasTabindex = el.hasAttribute("tabindex");
|
|
41
|
+
if (hasTabindex && (isNaN(tabindex) || tabindex <= -1)) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
if (el.hasAttribute("disabled")) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
if (el.closest("[inert]")) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
if (tag === "input" && el.getAttribute("type") === "radio" && !el.hasAttribute("checked")) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
if (!isVisible(el)) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
if ((tag === "audio" || tag === "video") && el.hasAttribute("controls")) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
if (el.hasAttribute("tabindex")) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
if (el.hasAttribute("contenteditable") && el.getAttribute("contenteditable") !== "false") {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
const isNativelyTabbable = [
|
|
66
|
+
"button",
|
|
67
|
+
"input",
|
|
68
|
+
"select",
|
|
69
|
+
"textarea",
|
|
70
|
+
"a",
|
|
71
|
+
"audio",
|
|
72
|
+
"video",
|
|
73
|
+
"summary",
|
|
74
|
+
"iframe"
|
|
75
|
+
].includes(tag);
|
|
76
|
+
if (isNativelyTabbable) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
return isOverflowingAndTabbable(el);
|
|
80
|
+
}
|
|
81
|
+
function getTabbableBoundary(root) {
|
|
82
|
+
var _a, _b;
|
|
83
|
+
const tabbableElements = getTabbableElements(root);
|
|
84
|
+
const start = (_a = tabbableElements[0]) != null ? _a : null;
|
|
85
|
+
const end = (_b = tabbableElements[tabbableElements.length - 1]) != null ? _b : null;
|
|
86
|
+
return { start, end };
|
|
87
|
+
}
|
|
88
|
+
function getSlottedChildrenOutsideRootElement(slotElement, root) {
|
|
89
|
+
var _a;
|
|
90
|
+
return ((_a = slotElement.getRootNode({ composed: true })) == null ? void 0 : _a.host) !== root;
|
|
91
|
+
}
|
|
92
|
+
function getTabbableElements(root) {
|
|
93
|
+
const walkedEls = /* @__PURE__ */ new WeakMap();
|
|
94
|
+
const tabbableElements = [];
|
|
95
|
+
function walk(el) {
|
|
96
|
+
if (el instanceof Element) {
|
|
97
|
+
if (el.hasAttribute("inert") || el.closest("[inert]")) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (walkedEls.has(el)) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
walkedEls.set(el, true);
|
|
104
|
+
if (!tabbableElements.includes(el) && isTabbable(el)) {
|
|
105
|
+
tabbableElements.push(el);
|
|
106
|
+
}
|
|
107
|
+
if (el instanceof HTMLSlotElement && getSlottedChildrenOutsideRootElement(el, root)) {
|
|
108
|
+
el.assignedElements({ flatten: true }).forEach((assignedEl) => {
|
|
109
|
+
walk(assignedEl);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
if (el.shadowRoot !== null && el.shadowRoot.mode === "open") {
|
|
113
|
+
walk(el.shadowRoot);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
for (const e of el.children) {
|
|
117
|
+
walk(e);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
walk(root);
|
|
121
|
+
return tabbableElements.sort((a, b) => {
|
|
122
|
+
const aTabindex = Number(a.getAttribute("tabindex")) || 0;
|
|
123
|
+
const bTabindex = Number(b.getAttribute("tabindex")) || 0;
|
|
124
|
+
return bTabindex - aTabindex;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export {
|
|
129
|
+
getTabbableBoundary,
|
|
130
|
+
getTabbableElements
|
|
131
|
+
};
|
|
132
|
+
//# sourceMappingURL=chunk.2QOQY4ZG.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/internal/tabbable.ts"],
|
|
4
|
+
"sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\n// Cached compute style calls. This is specifically for browsers that dont support `checkVisibility()`.\n// computedStyle calls are \"live\" so they only need to be retrieved once for an element.\nconst computedStyleMap = new WeakMap<Element, CSSStyleDeclaration>();\n\nfunction getCachedComputedStyle(el: HTMLElement): CSSStyleDeclaration {\n let computedStyle: undefined | CSSStyleDeclaration = computedStyleMap.get(el);\n\n if (!computedStyle) {\n computedStyle = window.getComputedStyle(el, null);\n computedStyleMap.set(el, computedStyle);\n }\n\n return computedStyle;\n}\n\nfunction isVisible(el: HTMLElement): boolean {\n // This is the fastest check, but isn't supported in Safari.\n if (typeof el.checkVisibility === 'function') {\n // Opacity is focusable, visibility is not.\n return el.checkVisibility({ checkOpacity: false, checkVisibilityCSS: true });\n }\n\n // Fallback \"polyfill\" for \"checkVisibility\"\n const computedStyle = getCachedComputedStyle(el);\n\n return computedStyle.visibility !== 'hidden' && computedStyle.display !== 'none';\n}\n\n// While this behavior isn't standard in Safari / Chrome yet, I think it's the most reasonable\n// way of handling tabbable overflow areas. Browser sniffing seems gross, and it's the most\n// accessible way of handling overflow areas. [Konnor]\nfunction isOverflowingAndTabbable(el: HTMLElement): boolean {\n const computedStyle = getCachedComputedStyle(el);\n\n const { overflowY, overflowX } = computedStyle;\n\n if (overflowY === 'scroll' || overflowX === 'scroll') {\n return true;\n }\n\n if (overflowY !== 'auto' || overflowX !== 'auto') {\n return false;\n }\n\n // Always overflow === \"auto\" by this point\n const isOverflowingY = el.scrollHeight > el.clientHeight;\n\n if (isOverflowingY && overflowY === 'auto') {\n return true;\n }\n\n const isOverflowingX = el.scrollWidth > el.clientWidth;\n\n if (isOverflowingX && overflowX === 'auto') {\n return true;\n }\n\n return false;\n}\n\n/** Determines if the specified element is tabbable using heuristics inspired by https://github.com/focus-trap/tabbable */\nfunction isTabbable(el: HTMLElement) {\n const tag = el.tagName.toLowerCase();\n\n const tabindex = Number(el.getAttribute('tabindex'));\n const hasTabindex = el.hasAttribute('tabindex');\n\n // elements with a tabindex attribute that is either NaN or <= -1 are not tabbable\n if (hasTabindex && (isNaN(tabindex) || tabindex <= -1)) {\n return false;\n }\n\n // Elements with a disabled attribute are not tabbable\n if (el.hasAttribute('disabled')) {\n return false;\n }\n\n // If any parents have \"inert\", we aren't \"tabbable\"\n if (el.closest('[inert]')) {\n return false;\n }\n\n // Radios without a checked attribute are not tabbable\n if (tag === 'input' && el.getAttribute('type') === 'radio' && !el.hasAttribute('checked')) {\n return false;\n }\n\n if (!isVisible(el)) {\n return false;\n }\n\n // Audio and video elements with the controls attribute are tabbable\n if ((tag === 'audio' || tag === 'video') && el.hasAttribute('controls')) {\n return true;\n }\n\n // Elements with a tabindex other than -1 are tabbable\n if (el.hasAttribute('tabindex')) {\n return true;\n }\n\n // Elements with a contenteditable attribute are tabbable\n if (el.hasAttribute('contenteditable') && el.getAttribute('contenteditable') !== 'false') {\n return true;\n }\n\n // At this point, the following elements are considered tabbable\n const isNativelyTabbable = [\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'a',\n 'audio',\n 'video',\n 'summary',\n 'iframe'\n ].includes(tag);\n\n if (isNativelyTabbable) {\n return true;\n }\n\n // We save the overflow checks for last, because they're the most expensive\n return isOverflowingAndTabbable(el);\n}\n\n/**\n * Returns the first and last bounding elements that are tabbable. This is more performant than checking every single\n * element because it short-circuits after finding the first and last ones.\n */\nexport function getTabbableBoundary(root: HTMLElement | ShadowRoot) {\n const tabbableElements = getTabbableElements(root);\n\n // Find the first and last tabbable elements\n const start = tabbableElements[0] ?? null;\n const end = tabbableElements[tabbableElements.length - 1] ?? null;\n\n return { start, end };\n}\n\n/**\n * This looks funky. Basically a slot's children will always be picked up *if* they're within the `root` element.\n * However, there is an edge case when, if the `root` is wrapped by another shadow DOM, it won't grab the children.\n * This fixes that fun edge case.\n */\nfunction getSlottedChildrenOutsideRootElement(slotElement: HTMLSlotElement, root: HTMLElement | ShadowRoot) {\n return (slotElement.getRootNode({ composed: true }) as ShadowRoot | null)?.host !== root;\n}\n\nexport function getTabbableElements(root: HTMLElement | ShadowRoot) {\n const walkedEls = new WeakMap();\n const tabbableElements: HTMLElement[] = [];\n\n function walk(el: HTMLElement | ShadowRoot) {\n if (el instanceof Element) {\n // if the element has \"inert\" we can just no-op it.\n if (el.hasAttribute('inert') || el.closest('[inert]')) {\n return;\n }\n\n if (walkedEls.has(el)) {\n return;\n }\n walkedEls.set(el, true);\n\n if (!tabbableElements.includes(el) && isTabbable(el)) {\n tabbableElements.push(el);\n }\n\n if (el instanceof HTMLSlotElement && getSlottedChildrenOutsideRootElement(el, root)) {\n el.assignedElements({ flatten: true }).forEach((assignedEl: HTMLElement) => {\n walk(assignedEl);\n });\n }\n\n if (el.shadowRoot !== null && el.shadowRoot.mode === 'open') {\n walk(el.shadowRoot);\n }\n }\n\n for (const e of el.children) {\n walk(e as HTMLElement);\n }\n }\n\n // Collect all elements including the root\n walk(root);\n\n // Is this worth having? Most sorts will always add increased overhead. And positive tabindexes shouldn't really be used.\n // So is it worth being right? Or fast?\n return tabbableElements.sort((a, b) => {\n // Make sure we sort by tabindex.\n const aTabindex = Number(a.getAttribute('tabindex')) || 0;\n const bTabindex = Number(b.getAttribute('tabindex')) || 0;\n return bTabindex - aTabindex;\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,36 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
__spreadProps,
|
|
3
|
-
__spreadValues
|
|
4
|
-
} from "./chunk.QNDC5KWA.js";
|
|
5
|
-
|
|
6
|
-
// src/internal/animate.ts
|
|
7
|
-
function animateTo(el, keyframes, options) {
|
|
8
|
-
return new Promise((resolve) => {
|
|
9
|
-
if ((options == null ? void 0 : options.duration) === Infinity) {
|
|
10
|
-
throw new Error("Promise-based animations must be finite.");
|
|
11
|
-
}
|
|
12
|
-
const animation = el.animate(keyframes, __spreadProps(__spreadValues({}, options), {
|
|
13
|
-
duration: prefersReducedMotion() ? 0 : options.duration
|
|
14
|
-
}));
|
|
15
|
-
animation.addEventListener("cancel", resolve, { once: true });
|
|
16
|
-
animation.addEventListener("finish", resolve, { once: true });
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
function prefersReducedMotion() {
|
|
20
|
-
const query = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
21
|
-
return query.matches;
|
|
22
|
-
}
|
|
23
|
-
function stopAnimations(el) {
|
|
24
|
-
return Promise.all(
|
|
25
|
-
el.getAnimations().map((animation) => {
|
|
26
|
-
return new Promise((resolve) => {
|
|
27
|
-
animation.cancel();
|
|
28
|
-
requestAnimationFrame(resolve);
|
|
29
|
-
});
|
|
30
|
-
})
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
1
|
// src/internal/offset.ts
|
|
35
2
|
function getOffset(element, parent) {
|
|
36
3
|
return {
|
|
@@ -84,25 +51,9 @@ function scrollIntoView(element, container, direction = "vertical", behavior = "
|
|
|
84
51
|
}
|
|
85
52
|
}
|
|
86
53
|
|
|
87
|
-
// src/internal/event.ts
|
|
88
|
-
function waitForEvent(el, eventName) {
|
|
89
|
-
return new Promise((resolve) => {
|
|
90
|
-
function done(event) {
|
|
91
|
-
if (event.target === el) {
|
|
92
|
-
el.removeEventListener(eventName, done);
|
|
93
|
-
resolve();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
el.addEventListener(eventName, done);
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
|
|
100
54
|
export {
|
|
101
|
-
animateTo,
|
|
102
|
-
stopAnimations,
|
|
103
55
|
lockBodyScrolling,
|
|
104
56
|
unlockBodyScrolling,
|
|
105
|
-
scrollIntoView
|
|
106
|
-
waitForEvent
|
|
57
|
+
scrollIntoView
|
|
107
58
|
};
|
|
108
|
-
//# sourceMappingURL=chunk.
|
|
59
|
+
//# sourceMappingURL=chunk.2QYALZBT.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/internal/offset.ts", "../../src/internal/scroll.ts"],
|
|
4
|
+
"sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\n/**\n * Returns an element's offset relative to its parent. Similar to element.offsetTop and element.offsetLeft, except the\n * parent doesn't have to be positioned relative or absolute.\n *\n * NOTE: This was created to work around what appears to be a bug in Chrome where a slotted element's offsetParent seems\n * to ignore elements inside the surrounding shadow DOM: https://bugs.chromium.org/p/chromium/issues/detail?id=920069\n */\nexport function getOffset(element: HTMLElement, parent: HTMLElement) {\n return {\n top: Math.round(element.getBoundingClientRect().top - parent.getBoundingClientRect().top),\n left: Math.round(element.getBoundingClientRect().left - parent.getBoundingClientRect().left)\n };\n}\n", "// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { getOffset } from './offset.js';\n\nconst locks = new Set();\n\n/** Returns the width of the document's scrollbar */\nfunction getScrollbarWidth() {\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n}\n\n/**\n * Prevents body scrolling. Keeps track of which elements requested a lock so multiple levels of locking are possible\n * without premature unlocking.\n */\nexport function lockBodyScrolling(lockingEl: HTMLElement) {\n locks.add(lockingEl);\n\n // When the first lock is created, set the scroll lock size to match the scrollbar's width to prevent content from\n // shifting. We only do this on the first lock because the scrollbar width will measure zero after overflow is hidden.\n if (!document.body.classList.contains('syn-scroll-lock')) {\n const scrollbarWidth = getScrollbarWidth(); // must be measured before the `syn-scroll-lock` class is applied\n document.body.classList.add('syn-scroll-lock');\n document.body.style.setProperty('--syn-scroll-lock-size', `${scrollbarWidth}px`);\n }\n}\n\n/**\n * Unlocks body scrolling. Scrolling will only be unlocked once all elements that requested a lock call this method.\n */\nexport function unlockBodyScrolling(lockingEl: HTMLElement) {\n locks.delete(lockingEl);\n\n if (locks.size === 0) {\n document.body.classList.remove('syn-scroll-lock');\n document.body.style.removeProperty('--syn-scroll-lock-size');\n }\n}\n\n/** Scrolls an element into view of its container. If the element is already in view, nothing will happen. */\nexport function scrollIntoView(\n element: HTMLElement,\n container: HTMLElement,\n direction: 'horizontal' | 'vertical' | 'both' = 'vertical',\n behavior: 'smooth' | 'auto' = 'smooth'\n) {\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n\n if (direction === 'horizontal' || direction === 'both') {\n if (offsetLeft < minX) {\n container.scrollTo({ left: offsetLeft, behavior });\n } else if (offsetLeft + element.clientWidth > maxX) {\n container.scrollTo({ left: offsetLeft - container.offsetWidth + element.clientWidth, behavior });\n }\n }\n\n if (direction === 'vertical' || direction === 'both') {\n if (offsetTop < minY) {\n container.scrollTo({ top: offsetTop, behavior });\n } else if (offsetTop + element.clientHeight > maxY) {\n container.scrollTo({ top: offsetTop - container.offsetHeight + element.clientHeight, behavior });\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAaO,SAAS,UAAU,SAAsB,QAAqB;AACnE,SAAO;AAAA,IACL,KAAK,KAAK,MAAM,QAAQ,sBAAsB,EAAE,MAAM,OAAO,sBAAsB,EAAE,GAAG;AAAA,IACxF,MAAM,KAAK,MAAM,QAAQ,sBAAsB,EAAE,OAAO,OAAO,sBAAsB,EAAE,IAAI;AAAA,EAC7F;AACF;;;ACVA,IAAM,QAAQ,oBAAI,IAAI;AAGtB,SAAS,oBAAoB;AAC3B,QAAM,gBAAgB,SAAS,gBAAgB;AAC/C,SAAO,KAAK,IAAI,OAAO,aAAa,aAAa;AACnD;AAMO,SAAS,kBAAkB,WAAwB;AACxD,QAAM,IAAI,SAAS;AAInB,MAAI,CAAC,SAAS,KAAK,UAAU,SAAS,iBAAiB,GAAG;AACxD,UAAM,iBAAiB,kBAAkB;AACzC,aAAS,KAAK,UAAU,IAAI,iBAAiB;AAC7C,aAAS,KAAK,MAAM,YAAY,0BAA0B,GAAG,cAAc,IAAI;AAAA,EACjF;AACF;AAKO,SAAS,oBAAoB,WAAwB;AAC1D,QAAM,OAAO,SAAS;AAEtB,MAAI,MAAM,SAAS,GAAG;AACpB,aAAS,KAAK,UAAU,OAAO,iBAAiB;AAChD,aAAS,KAAK,MAAM,eAAe,wBAAwB;AAAA,EAC7D;AACF;AAGO,SAAS,eACd,SACA,WACA,YAAgD,YAChD,WAA8B,UAC9B;AACA,QAAM,SAAS,UAAU,SAAS,SAAS;AAC3C,QAAM,YAAY,OAAO,MAAM,UAAU;AACzC,QAAM,aAAa,OAAO,OAAO,UAAU;AAC3C,QAAM,OAAO,UAAU;AACvB,QAAM,OAAO,UAAU,aAAa,UAAU;AAC9C,QAAM,OAAO,UAAU;AACvB,QAAM,OAAO,UAAU,YAAY,UAAU;AAE7C,MAAI,cAAc,gBAAgB,cAAc,QAAQ;AACtD,QAAI,aAAa,MAAM;AACrB,gBAAU,SAAS,EAAE,MAAM,YAAY,SAAS,CAAC;AAAA,IACnD,WAAW,aAAa,QAAQ,cAAc,MAAM;AAClD,gBAAU,SAAS,EAAE,MAAM,aAAa,UAAU,cAAc,QAAQ,aAAa,SAAS,CAAC;AAAA,IACjG;AAAA,EACF;AAEA,MAAI,cAAc,cAAc,cAAc,QAAQ;AACpD,QAAI,YAAY,MAAM;AACpB,gBAAU,SAAS,EAAE,KAAK,WAAW,SAAS,CAAC;AAAA,IACjD,WAAW,YAAY,QAAQ,eAAe,MAAM;AAClD,gBAAU,SAAS,EAAE,KAAK,YAAY,UAAU,eAAe,QAAQ,cAAc,SAAS,CAAC;AAAA,IACjG;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// src/components/menu-label/menu-label.styles.ts
|
|
2
|
+
import { css } from "lit";
|
|
3
|
+
var menu_label_styles_default = css`
|
|
4
|
+
/* stylelint-disable */
|
|
5
|
+
:host {
|
|
6
|
+
display: block;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.menu-label {
|
|
10
|
+
display: inline-block;
|
|
11
|
+
font-family: var(--syn-font-sans);
|
|
12
|
+
font-size: var(--syn-font-size-small);
|
|
13
|
+
font-weight: var(--syn-font-weight-semibold);
|
|
14
|
+
line-height: var(--syn-line-height-normal);
|
|
15
|
+
letter-spacing: var(--syn-letter-spacing-normal);
|
|
16
|
+
color: var(--syn-color-neutral-500);
|
|
17
|
+
padding: var(--syn-spacing-2x-small) var(--syn-spacing-x-large);
|
|
18
|
+
user-select: none;
|
|
19
|
+
-webkit-user-select: none;
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
menu_label_styles_default
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=chunk.3FOVDOJX.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/menu-label/menu-label.styles.ts"],
|
|
4
|
+
"sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { css } from 'lit';\nexport default css`\n\t/* stylelint-disable */\n :host {\n display: block;\n }\n\n .menu-label {\n display: inline-block;\n font-family: var(--syn-font-sans);\n font-size: var(--syn-font-size-small);\n font-weight: var(--syn-font-weight-semibold);\n line-height: var(--syn-line-height-normal);\n letter-spacing: var(--syn-letter-spacing-normal);\n color: var(--syn-color-neutral-500);\n padding: var(--syn-spacing-2x-small) var(--syn-spacing-x-large);\n user-select: none;\n -webkit-user-select: none;\n }\n`;\n"],
|
|
5
|
+
"mappings": ";AAMA,SAAS,WAAW;AACpB,IAAO,4BAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SynSpinner
|
|
3
|
-
} from "./chunk.
|
|
3
|
+
} from "./chunk.NOUFWET6.js";
|
|
4
4
|
import {
|
|
5
5
|
LocalizeController
|
|
6
6
|
} from "./chunk.LAB4YJYE.js";
|
|
@@ -10,10 +10,10 @@ import {
|
|
|
10
10
|
} from "./chunk.SZCGMXW5.js";
|
|
11
11
|
import {
|
|
12
12
|
HasSlotController
|
|
13
|
-
} from "./chunk.
|
|
13
|
+
} from "./chunk.66WXVGAW.js";
|
|
14
14
|
import {
|
|
15
15
|
SynIcon
|
|
16
|
-
} from "./chunk.
|
|
16
|
+
} from "./chunk.I2E3UJIK.js";
|
|
17
17
|
import {
|
|
18
18
|
watch
|
|
19
19
|
} from "./chunk.AVTU2BGE.js";
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
import {
|
|
27
27
|
SynergyElement,
|
|
28
28
|
component_styles_default
|
|
29
|
-
} from "./chunk.
|
|
29
|
+
} from "./chunk.X3D3MBIH.js";
|
|
30
30
|
import {
|
|
31
31
|
__decorateClass
|
|
32
32
|
} from "./chunk.QNDC5KWA.js";
|
|
@@ -273,4 +273,4 @@ __decorateClass([
|
|
|
273
273
|
export {
|
|
274
274
|
SynButton
|
|
275
275
|
};
|
|
276
|
-
//# sourceMappingURL=chunk.
|
|
276
|
+
//# sourceMappingURL=chunk.3V2G5ZN5.js.map
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import {
|
|
2
|
+
menu_custom_styles_default
|
|
3
|
+
} from "./chunk.ENYO4NCR.js";
|
|
4
|
+
import {
|
|
5
|
+
menu_styles_default
|
|
6
|
+
} from "./chunk.RSSY7KPD.js";
|
|
7
|
+
import {
|
|
8
|
+
SynergyElement,
|
|
9
|
+
component_styles_default
|
|
10
|
+
} from "./chunk.X3D3MBIH.js";
|
|
11
|
+
import {
|
|
12
|
+
__decorateClass
|
|
13
|
+
} from "./chunk.QNDC5KWA.js";
|
|
14
|
+
|
|
15
|
+
// src/components/menu/menu.component.ts
|
|
16
|
+
import { html } from "lit";
|
|
17
|
+
import { query } from "lit/decorators.js";
|
|
18
|
+
var SynMenu = class extends SynergyElement {
|
|
19
|
+
connectedCallback() {
|
|
20
|
+
super.connectedCallback();
|
|
21
|
+
this.setAttribute("role", "menu");
|
|
22
|
+
}
|
|
23
|
+
handleClick(event) {
|
|
24
|
+
const menuItemTypes = ["menuitem", "menuitemcheckbox"];
|
|
25
|
+
const target = event.composedPath().find((el) => {
|
|
26
|
+
var _a;
|
|
27
|
+
return menuItemTypes.includes(((_a = el == null ? void 0 : el.getAttribute) == null ? void 0 : _a.call(el, "role")) || "");
|
|
28
|
+
});
|
|
29
|
+
if (!target)
|
|
30
|
+
return;
|
|
31
|
+
const item = target;
|
|
32
|
+
if (item.type === "checkbox") {
|
|
33
|
+
item.checked = !item.checked;
|
|
34
|
+
}
|
|
35
|
+
this.emit("syn-select", { detail: { item } });
|
|
36
|
+
}
|
|
37
|
+
handleKeyDown(event) {
|
|
38
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
39
|
+
const item = this.getCurrentItem();
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
event.stopPropagation();
|
|
42
|
+
item == null ? void 0 : item.click();
|
|
43
|
+
} else if (["ArrowDown", "ArrowUp", "Home", "End"].includes(event.key)) {
|
|
44
|
+
const items = this.getAllItems();
|
|
45
|
+
const activeItem = this.getCurrentItem();
|
|
46
|
+
let index = activeItem ? items.indexOf(activeItem) : 0;
|
|
47
|
+
if (items.length > 0) {
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
event.stopPropagation();
|
|
50
|
+
if (event.key === "ArrowDown") {
|
|
51
|
+
index++;
|
|
52
|
+
} else if (event.key === "ArrowUp") {
|
|
53
|
+
index--;
|
|
54
|
+
} else if (event.key === "Home") {
|
|
55
|
+
index = 0;
|
|
56
|
+
} else if (event.key === "End") {
|
|
57
|
+
index = items.length - 1;
|
|
58
|
+
}
|
|
59
|
+
if (index < 0) {
|
|
60
|
+
index = items.length - 1;
|
|
61
|
+
}
|
|
62
|
+
if (index > items.length - 1) {
|
|
63
|
+
index = 0;
|
|
64
|
+
}
|
|
65
|
+
this.setCurrentItem(items[index]);
|
|
66
|
+
items[index].focus();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
handleMouseDown(event) {
|
|
71
|
+
const target = event.target;
|
|
72
|
+
if (this.isMenuItem(target)) {
|
|
73
|
+
this.setCurrentItem(target);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
handleSlotChange() {
|
|
77
|
+
const items = this.getAllItems();
|
|
78
|
+
if (items.length > 0) {
|
|
79
|
+
this.setCurrentItem(items[0]);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
isMenuItem(item) {
|
|
83
|
+
var _a;
|
|
84
|
+
return item.tagName.toLowerCase() === "syn-menu-item" || ["menuitem", "menuitemcheckbox", "menuitemradio"].includes((_a = item.getAttribute("role")) != null ? _a : "");
|
|
85
|
+
}
|
|
86
|
+
/** @internal Gets all slotted menu items, ignoring dividers, headers, and other elements. */
|
|
87
|
+
getAllItems() {
|
|
88
|
+
return [...this.defaultSlot.assignedElements({ flatten: true })].filter((el) => {
|
|
89
|
+
if (el.inert || !this.isMenuItem(el)) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
return true;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* @internal Gets the current menu item, which is the menu item that has `tabindex="0"` within the roving tab index.
|
|
97
|
+
* The menu item may or may not have focus, but for keyboard interaction purposes it's considered the "active" item.
|
|
98
|
+
*/
|
|
99
|
+
getCurrentItem() {
|
|
100
|
+
return this.getAllItems().find((i) => i.getAttribute("tabindex") === "0");
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* @internal Sets the current menu item to the specified element. This sets `tabindex="0"` on the target element and
|
|
104
|
+
* `tabindex="-1"` to all other items. This method must be called prior to setting focus on a menu item.
|
|
105
|
+
*/
|
|
106
|
+
setCurrentItem(item) {
|
|
107
|
+
const items = this.getAllItems();
|
|
108
|
+
items.forEach((i) => {
|
|
109
|
+
i.setAttribute("tabindex", i === item ? "0" : "-1");
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
render() {
|
|
113
|
+
return html`
|
|
114
|
+
<slot
|
|
115
|
+
@slotchange=${this.handleSlotChange}
|
|
116
|
+
@click=${this.handleClick}
|
|
117
|
+
@keydown=${this.handleKeyDown}
|
|
118
|
+
@mousedown=${this.handleMouseDown}
|
|
119
|
+
></slot>
|
|
120
|
+
`;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
SynMenu.styles = [component_styles_default, menu_styles_default, menu_custom_styles_default];
|
|
124
|
+
__decorateClass([
|
|
125
|
+
query("slot")
|
|
126
|
+
], SynMenu.prototype, "defaultSlot", 2);
|
|
127
|
+
|
|
128
|
+
export {
|
|
129
|
+
SynMenu
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=chunk.55KPESRA.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/menu/menu.component.ts"],
|
|
4
|
+
"sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { html } from 'lit';\nimport { query } from 'lit/decorators.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport styles from './menu.styles.js';\nimport customStyles from './menu.custom.styles.js';\nimport type { CSSResultGroup } from 'lit';\nimport type SynMenuItem from '../menu-item/menu-item.component.js';\n\nexport interface MenuSelectEventDetail {\n item: SynMenuItem;\n}\n\n/**\n * @summary Menus provide a list of options for the user to choose from.\n * @documentation https://synergy.style/components/menu\n * @status stable\n * @since 2.0\n *\n * @slot - The menu's content, including menu items, menu labels, and dividers.\n *\n * @event {{ item: SynMenuItem }} syn-select - Emitted when a menu item is selected.\n */\nexport default class SynMenu extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles, customStyles];\n\n @query('slot') defaultSlot: HTMLSlotElement;\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'menu');\n }\n\n private handleClick(event: MouseEvent) {\n const menuItemTypes = ['menuitem', 'menuitemcheckbox'];\n\n const target = event.composedPath().find((el: Element) => menuItemTypes.includes(el?.getAttribute?.('role') || ''));\n\n if (!target) return;\n\n // This isn't true. But we use it for TypeScript checks below.\n const item = target as SynMenuItem;\n\n if (item.type === 'checkbox') {\n item.checked = !item.checked;\n }\n\n this.emit('syn-select', { detail: { item } });\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n // Make a selection when pressing enter or space\n if (event.key === 'Enter' || event.key === ' ') {\n const item = this.getCurrentItem();\n event.preventDefault();\n event.stopPropagation();\n\n // Simulate a click to support @click handlers on menu items that also work with the keyboard\n item?.click();\n }\n\n // Move the selection when pressing down or up\n else if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n const items = this.getAllItems();\n const activeItem = this.getCurrentItem();\n let index = activeItem ? items.indexOf(activeItem) : 0;\n\n if (items.length > 0) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'ArrowDown') {\n index++;\n } else if (event.key === 'ArrowUp') {\n index--;\n } else if (event.key === 'Home') {\n index = 0;\n } else if (event.key === 'End') {\n index = items.length - 1;\n }\n\n if (index < 0) {\n index = items.length - 1;\n }\n if (index > items.length - 1) {\n index = 0;\n }\n\n this.setCurrentItem(items[index]);\n items[index].focus();\n }\n }\n }\n\n private handleMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement;\n\n if (this.isMenuItem(target)) {\n this.setCurrentItem(target as SynMenuItem);\n }\n }\n\n private handleSlotChange() {\n const items = this.getAllItems();\n\n // Reset the roving tab index when the slotted items change\n if (items.length > 0) {\n this.setCurrentItem(items[0]);\n }\n }\n\n private isMenuItem(item: HTMLElement) {\n return (\n item.tagName.toLowerCase() === 'syn-menu-item' ||\n ['menuitem', 'menuitemcheckbox', 'menuitemradio'].includes(item.getAttribute('role') ?? '')\n );\n }\n\n /** @internal Gets all slotted menu items, ignoring dividers, headers, and other elements. */\n getAllItems() {\n return [...this.defaultSlot.assignedElements({ flatten: true })].filter((el: HTMLElement) => {\n if (el.inert || !this.isMenuItem(el)) {\n return false;\n }\n return true;\n }) as SynMenuItem[];\n }\n\n /**\n * @internal Gets the current menu item, which is the menu item that has `tabindex=\"0\"` within the roving tab index.\n * The menu item may or may not have focus, but for keyboard interaction purposes it's considered the \"active\" item.\n */\n getCurrentItem() {\n return this.getAllItems().find(i => i.getAttribute('tabindex') === '0');\n }\n\n /**\n * @internal Sets the current menu item to the specified element. This sets `tabindex=\"0\"` on the target element and\n * `tabindex=\"-1\"` to all other items. This method must be called prior to setting focus on a menu item.\n */\n setCurrentItem(item: SynMenuItem) {\n const items = this.getAllItems();\n\n // Update tab indexes\n items.forEach(i => {\n i.setAttribute('tabindex', i === item ? '0' : '-1');\n });\n }\n\n render() {\n return html`\n <slot\n @slotchange=${this.handleSlotChange}\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n @mousedown=${this.handleMouseDown}\n ></slot>\n `;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -16,17 +16,17 @@ import {
|
|
|
16
16
|
} from "./chunk.SZCGMXW5.js";
|
|
17
17
|
import {
|
|
18
18
|
HasSlotController
|
|
19
|
-
} from "./chunk.
|
|
19
|
+
} from "./chunk.66WXVGAW.js";
|
|
20
20
|
import {
|
|
21
21
|
watch
|
|
22
22
|
} from "./chunk.AVTU2BGE.js";
|
|
23
23
|
import {
|
|
24
24
|
SynButtonGroup
|
|
25
|
-
} from "./chunk.
|
|
25
|
+
} from "./chunk.QDYPBFX4.js";
|
|
26
26
|
import {
|
|
27
27
|
SynergyElement,
|
|
28
28
|
component_styles_default
|
|
29
|
-
} from "./chunk.
|
|
29
|
+
} from "./chunk.X3D3MBIH.js";
|
|
30
30
|
import {
|
|
31
31
|
__decorateClass
|
|
32
32
|
} from "./chunk.QNDC5KWA.js";
|
|
@@ -356,4 +356,4 @@ __decorateClass([
|
|
|
356
356
|
export {
|
|
357
357
|
SynRadioGroup
|
|
358
358
|
};
|
|
359
|
-
//# sourceMappingURL=chunk.
|
|
359
|
+
//# sourceMappingURL=chunk.5D6C4M2C.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SynHeader
|
|
3
|
-
} from "./chunk.
|
|
3
|
+
} from "./chunk.SJCYCGUZ.js";
|
|
4
4
|
|
|
5
5
|
// src/components/header/header.ts
|
|
6
6
|
var header_default = SynHeader;
|
|
@@ -9,4 +9,4 @@ SynHeader.define("syn-header");
|
|
|
9
9
|
export {
|
|
10
10
|
header_default
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=chunk.
|
|
12
|
+
//# sourceMappingURL=chunk.5IL2WT3S.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SynIcon
|
|
3
|
-
} from "./chunk.
|
|
3
|
+
} from "./chunk.I2E3UJIK.js";
|
|
4
4
|
|
|
5
5
|
// src/components/icon/icon.ts
|
|
6
6
|
var icon_default = SynIcon;
|
|
@@ -9,4 +9,4 @@ SynIcon.define("syn-icon");
|
|
|
9
9
|
export {
|
|
10
10
|
icon_default
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=chunk.
|
|
12
|
+
//# sourceMappingURL=chunk.5UM7HWIJ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SynCheckbox
|
|
3
|
-
} from "./chunk.
|
|
3
|
+
} from "./chunk.WWMWREE4.js";
|
|
4
4
|
|
|
5
5
|
// src/components/checkbox/checkbox.ts
|
|
6
6
|
var checkbox_default = SynCheckbox;
|
|
@@ -9,4 +9,4 @@ SynCheckbox.define("syn-checkbox");
|
|
|
9
9
|
export {
|
|
10
10
|
checkbox_default
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=chunk.
|
|
12
|
+
//# sourceMappingURL=chunk.62EBS3GI.js.map
|
|
@@ -42,8 +42,22 @@ var HasSlotController = class {
|
|
|
42
42
|
this.host.shadowRoot.removeEventListener("slotchange", this.handleSlotChange);
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
|
+
function getTextContent(slot) {
|
|
46
|
+
if (!slot) {
|
|
47
|
+
return "";
|
|
48
|
+
}
|
|
49
|
+
const nodes = slot.assignedNodes({ flatten: true });
|
|
50
|
+
let text = "";
|
|
51
|
+
[...nodes].forEach((node) => {
|
|
52
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
53
|
+
text += node.textContent;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return text;
|
|
57
|
+
}
|
|
45
58
|
|
|
46
59
|
export {
|
|
47
|
-
HasSlotController
|
|
60
|
+
HasSlotController,
|
|
61
|
+
getTextContent
|
|
48
62
|
};
|
|
49
|
-
//# sourceMappingURL=chunk.
|
|
63
|
+
//# sourceMappingURL=chunk.66WXVGAW.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/internal/slot.ts"],
|
|
4
4
|
"sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport type { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/** A reactive controller that determines when slots exist. */\nexport class HasSlotController implements ReactiveController {\n host: ReactiveControllerHost & Element;\n slotNames: string[] = [];\n\n constructor(host: ReactiveControllerHost & Element, ...slotNames: string[]) {\n (this.host = host).addController(this);\n this.slotNames = slotNames;\n }\n\n private hasDefaultSlot() {\n return [...this.host.childNodes].some(node => {\n if (node.nodeType === node.TEXT_NODE && node.textContent!.trim() !== '') {\n return true;\n }\n\n if (node.nodeType === node.ELEMENT_NODE) {\n const el = node as HTMLElement;\n const tagName = el.tagName.toLowerCase();\n\n // Ignore visually hidden elements since they aren't rendered\n if (tagName === 'syn-visually-hidden') {\n return false;\n }\n\n // If it doesn't have a slot attribute, it's part of the default slot\n if (!el.hasAttribute('slot')) {\n return true;\n }\n }\n\n return false;\n });\n }\n\n private hasNamedSlot(name: string) {\n return this.host.querySelector(`:scope > [slot=\"${name}\"]`) !== null;\n }\n\n test(slotName: string) {\n return slotName === '[default]' ? this.hasDefaultSlot() : this.hasNamedSlot(slotName);\n }\n\n hostConnected() {\n this.host.shadowRoot!.addEventListener('slotchange', this.handleSlotChange);\n }\n\n hostDisconnected() {\n this.host.shadowRoot!.removeEventListener('slotchange', this.handleSlotChange);\n }\n\n private handleSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n\n if ((this.slotNames.includes('[default]') && !slot.name) || (slot.name && this.slotNames.includes(slot.name))) {\n this.host.requestUpdate();\n }\n };\n}\n\n/**\n * Given a slot, this function iterates over all of its assigned element and text nodes and returns the concatenated\n * HTML as a string. This is useful because we can't use slot.innerHTML as an alternative.\n */\nexport function getInnerHTML(slot: HTMLSlotElement): string {\n const nodes = slot.assignedNodes({ flatten: true });\n let html = '';\n\n [...nodes].forEach(node => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n html += (node as HTMLElement).outerHTML;\n }\n\n if (node.nodeType === Node.TEXT_NODE) {\n html += node.textContent;\n }\n });\n\n return html;\n}\n\n/**\n * Given a slot, this function iterates over all of its assigned text nodes and returns the concatenated text as a\n * string. This is useful because we can't use slot.textContent as an alternative.\n */\nexport function getTextContent(slot: HTMLSlotElement | undefined | null): string {\n if (!slot) {\n return '';\n }\n const nodes = slot.assignedNodes({ flatten: true });\n let text = '';\n\n [...nodes].forEach(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n text += node.textContent;\n }\n });\n\n return text;\n}\n"],
|
|
5
|
-
"mappings": ";AASO,IAAM,oBAAN,MAAsD;AAAA,EAI3D,YAAY,SAA2C,WAAqB;AAF5E,qBAAsB,CAAC;AAgDvB,SAAQ,mBAAmB,CAAC,UAAiB;AAC3C,YAAM,OAAO,MAAM;AAEnB,UAAK,KAAK,UAAU,SAAS,WAAW,KAAK,CAAC,KAAK,QAAU,KAAK,QAAQ,KAAK,UAAU,SAAS,KAAK,IAAI,GAAI;AAC7G,aAAK,KAAK,cAAc;AAAA,MAC1B;AAAA,IACF;AAnDE,KAAC,KAAK,OAAO,MAAM,cAAc,IAAI;AACrC,SAAK,YAAY;AAAA,EACnB;AAAA,EAEQ,iBAAiB;AACvB,WAAO,CAAC,GAAG,KAAK,KAAK,UAAU,EAAE,KAAK,UAAQ;AAC5C,UAAI,KAAK,aAAa,KAAK,aAAa,KAAK,YAAa,KAAK,MAAM,IAAI;AACvE,eAAO;AAAA,MACT;AAEA,UAAI,KAAK,aAAa,KAAK,cAAc;AACvC,cAAM,KAAK;AACX,cAAM,UAAU,GAAG,QAAQ,YAAY;AAGvC,YAAI,YAAY,uBAAuB;AACrC,iBAAO;AAAA,QACT;AAGA,YAAI,CAAC,GAAG,aAAa,MAAM,GAAG;AAC5B,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEQ,aAAa,MAAc;AACjC,WAAO,KAAK,KAAK,cAAc,mBAAmB,IAAI,IAAI,MAAM;AAAA,EAClE;AAAA,EAEA,KAAK,UAAkB;AACrB,WAAO,aAAa,cAAc,KAAK,eAAe,IAAI,KAAK,aAAa,QAAQ;AAAA,EACtF;AAAA,EAEA,gBAAgB;AACd,SAAK,KAAK,WAAY,iBAAiB,cAAc,KAAK,gBAAgB;AAAA,EAC5E;AAAA,EAEA,mBAAmB;AACjB,SAAK,KAAK,WAAY,oBAAoB,cAAc,KAAK,gBAAgB;AAAA,EAC/E;AASF;",
|
|
5
|
+
"mappings": ";AASO,IAAM,oBAAN,MAAsD;AAAA,EAI3D,YAAY,SAA2C,WAAqB;AAF5E,qBAAsB,CAAC;AAgDvB,SAAQ,mBAAmB,CAAC,UAAiB;AAC3C,YAAM,OAAO,MAAM;AAEnB,UAAK,KAAK,UAAU,SAAS,WAAW,KAAK,CAAC,KAAK,QAAU,KAAK,QAAQ,KAAK,UAAU,SAAS,KAAK,IAAI,GAAI;AAC7G,aAAK,KAAK,cAAc;AAAA,MAC1B;AAAA,IACF;AAnDE,KAAC,KAAK,OAAO,MAAM,cAAc,IAAI;AACrC,SAAK,YAAY;AAAA,EACnB;AAAA,EAEQ,iBAAiB;AACvB,WAAO,CAAC,GAAG,KAAK,KAAK,UAAU,EAAE,KAAK,UAAQ;AAC5C,UAAI,KAAK,aAAa,KAAK,aAAa,KAAK,YAAa,KAAK,MAAM,IAAI;AACvE,eAAO;AAAA,MACT;AAEA,UAAI,KAAK,aAAa,KAAK,cAAc;AACvC,cAAM,KAAK;AACX,cAAM,UAAU,GAAG,QAAQ,YAAY;AAGvC,YAAI,YAAY,uBAAuB;AACrC,iBAAO;AAAA,QACT;AAGA,YAAI,CAAC,GAAG,aAAa,MAAM,GAAG;AAC5B,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEQ,aAAa,MAAc;AACjC,WAAO,KAAK,KAAK,cAAc,mBAAmB,IAAI,IAAI,MAAM;AAAA,EAClE;AAAA,EAEA,KAAK,UAAkB;AACrB,WAAO,aAAa,cAAc,KAAK,eAAe,IAAI,KAAK,aAAa,QAAQ;AAAA,EACtF;AAAA,EAEA,gBAAgB;AACd,SAAK,KAAK,WAAY,iBAAiB,cAAc,KAAK,gBAAgB;AAAA,EAC5E;AAAA,EAEA,mBAAmB;AACjB,SAAK,KAAK,WAAY,oBAAoB,cAAc,KAAK,gBAAgB;AAAA,EAC/E;AASF;AA2BO,SAAS,eAAe,MAAkD;AAC/E,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,KAAK,cAAc,EAAE,SAAS,KAAK,CAAC;AAClD,MAAI,OAAO;AAEX,GAAC,GAAG,KAAK,EAAE,QAAQ,UAAQ;AACzB,QAAI,KAAK,aAAa,KAAK,WAAW;AACpC,cAAQ,KAAK;AAAA,IACf;AAAA,EACF,CAAC;AAED,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SynSelect
|
|
3
|
-
} from "./chunk.
|
|
3
|
+
} from "./chunk.PN6VIFO3.js";
|
|
4
4
|
|
|
5
5
|
// src/components/select/select.ts
|
|
6
6
|
var select_default = SynSelect;
|
|
@@ -9,4 +9,4 @@ SynSelect.define("syn-select");
|
|
|
9
9
|
export {
|
|
10
10
|
select_default
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=chunk.
|
|
12
|
+
//# sourceMappingURL=chunk.6CAMLQSC.js.map
|