@greypan/web-ui 2.1.1 → 2.1.3
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/README.CN.md +43 -39
- package/README.md +53 -48
- package/dist/assets/menu-portal.js +1 -1
- package/dist/assets/menu-portal.js.map +1 -1
- package/dist/assets/toast-containers.js +1 -1
- package/dist/assets/toast-containers.js.map +1 -1
- package/dist/components/back-top/index.d.ts +3 -1
- package/dist/components/back-top/index.js +16 -12
- package/dist/components/back-top/index.js.map +1 -1
- package/dist/components/back-top/style.js +1 -1
- package/dist/components/back-top/style.js.map +1 -1
- package/dist/components/context-menu/index.d.ts +3 -4
- package/dist/components/context-menu/index.js +55 -69
- package/dist/components/context-menu/index.js.map +1 -1
- package/dist/components/context-menu/style.js +1 -1
- package/dist/components/context-menu/style.js.map +1 -1
- package/dist/components/dialog/index.d.ts +4 -11
- package/dist/components/dialog/index.js +29 -53
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/drawer/index.d.ts +4 -11
- package/dist/components/drawer/index.js +42 -63
- package/dist/components/drawer/index.js.map +1 -1
- package/dist/components/dropdown/index.d.ts +3 -3
- package/dist/components/dropdown/index.js +70 -78
- package/dist/components/dropdown/index.js.map +1 -1
- package/dist/components/dropdown/style.js +1 -1
- package/dist/components/dropdown/style.js.map +1 -1
- package/dist/components/dropdown-item/style.js +1 -1
- package/dist/components/dropdown-item/style.js.map +1 -1
- package/dist/components/option/style.js +1 -1
- package/dist/components/option/style.js.map +1 -1
- package/dist/components/popover/index.d.ts +2 -5
- package/dist/components/popover/index.js +47 -70
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/select/index.d.ts +4 -7
- package/dist/components/select/index.js +64 -74
- package/dist/components/select/index.js.map +1 -1
- package/dist/components/select/style.js +1 -1
- package/dist/components/select/style.js.map +1 -1
- package/dist/components/switch/style.js +1 -1
- package/dist/components/switch/style.js.map +1 -1
- package/dist/components/theme/style.js +1 -1
- package/dist/components/theme/style.js.map +1 -1
- package/dist/components/toast/manager.js +1 -1
- package/dist/components/toast/manager.js.map +1 -1
- package/dist/components/toast/toast.d.ts +1 -1
- package/dist/components/toast/toast.js +26 -26
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/tooltip/index.d.ts +3 -5
- package/dist/components/tooltip/index.js +61 -70
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/icons/generated/ooui-close.d.ts +6 -0
- package/dist/icons/generated/ooui-close.js +10 -0
- package/dist/icons/generated/ooui-close.js.map +1 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.js +2 -1
- package/dist/shared/menu-portal/menu-portal.js +8 -1
- package/dist/shared/menu-portal/menu-portal.js.map +1 -1
- package/dist/shared/menu-portal/menu-tree.js +29 -0
- package/dist/shared/menu-portal/menu-tree.js.map +1 -0
- package/dist/shared/overlay/anchored-panel.js +49 -0
- package/dist/shared/overlay/anchored-panel.js.map +1 -0
- package/dist/shared/overlay/native-dialog-presence.js +45 -0
- package/dist/shared/overlay/native-dialog-presence.js.map +1 -0
- package/dist/shared/overlay/overlay.js +5 -2
- package/dist/shared/overlay/overlay.js.map +1 -1
- package/dist/shared/overlay/portal.js +3 -3
- package/dist/shared/overlay/portal.js.map +1 -1
- package/dist/shared/overlay/presence.js +1 -1
- package/dist/shared/overlay/presence.js.map +1 -1
- package/dist/shared/scroll-lock/scroll-lock.js +15 -1
- package/dist/shared/scroll-lock/scroll-lock.js.map +1 -1
- package/dist/types/vue.d.ts +2 -1
- package/package.json +1 -1
- package/dist/shared/property-converters/boolean-with-false-string.js +0 -9
- package/dist/shared/property-converters/boolean-with-false-string.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.js","names":[],"sources":["../../../src/shared/overlay/presence.ts"],"sourcesContent":["const DEFAULT_EXIT_DURATION = 160\nconst EXIT_FALLBACK_BUFFER = 80\n\nconst pendingExits = new WeakMap<HTMLElement, () => void>()\n\ninterface OverlayPresenceOptions {\n isInstant?: boolean\n}\n\nfunction parseDuration(value: string): number {\n const trimmed = value.trim()\n if (trimmed.endsWith('ms')) return Number.parseFloat(trimmed)\n if (trimmed.endsWith('s')) return Number.parseFloat(trimmed) * 1000\n return 0\n}\n\n/** 读取元素实际 CSS transition 的最长时长,供可覆盖主题 token 的 JS 生命周期使用。 */\nexport function getTransitionDuration(panel: HTMLElement, fallback = DEFAULT_EXIT_DURATION): number {\n const style = getComputedStyle(panel)\n const durations = style.transitionDuration.split(',').map(parseDuration)\n const delays = style.transitionDelay.split(',').map(parseDuration)\n const longest = durations.reduce(\n (max, duration, index) => Math.max(max, duration + (delays[index] ?? delays[0] ?? 0)),\n 0\n )\n\n return longest || fallback\n}\n\n/** 以可中断的方式显示浮层,避免快速切换时重启动画。 */\nexport function showOverlayPresence(panel: HTMLElement, options: OverlayPresenceOptions = {}) {\n pendingExits.get(panel)?.()\n panel.hidden = false\n if (options.isInstant) {\n panel.dataset.wuiPresence = 'open'\n return\n }\n panel.dataset.wuiPresence = 'entering'\n\n requestAnimationFrame(() => {\n if (panel.dataset.wuiPresence === 'entering') panel.dataset.wuiPresence = 'open'\n })\n}\n\n/** 播放退出过渡;若在结束前重新显示则返回 false。 */\nexport function hideOverlayPresence(panel: HTMLElement): Promise<boolean> {\n pendingExits.get(panel)?.()\n panel.dataset.wuiPresence = 'closing'\n\n // jsdom 等没有计算 CSS transition 的环境无需伪造退场等待。\n if (getTransitionDuration(panel, 0) === 0) {\n panel.hidden = true\n return Promise.resolve(true)\n }\n\n return new Promise(resolve => {\n let settled = false\n const finish = (didClose: boolean) => {\n if (settled) return\n settled = true\n panel.removeEventListener('transitionend', onTransitionEnd)\n clearTimeout(timeout)\n pendingExits.delete(panel)\n if (didClose && panel.dataset.wuiPresence === 'closing') panel.hidden = true\n resolve(didClose)\n }\n\n const onTransitionEnd = (event: TransitionEvent) => {\n if (event.target === panel && (event.propertyName === 'opacity' || event.propertyName === 'transform'))\n finish(true)\n }\n\n pendingExits.set(panel, () => finish(false))\n panel.addEventListener('transitionend', onTransitionEnd)\n const timeout = setTimeout(() => finish(true), getTransitionDuration(panel) + EXIT_FALLBACK_BUFFER)\n })\n}\n"],"mappings":";AAAA,IAGM,oBAAe,IAAI,QAAiC;AAM1D,SAAS,EAAc,GAAuB;CAC5C,IAAM,IAAU,EAAM,KAAK;CAG3B,OAFI,EAAQ,SAAS,IAAI,IAAU,OAAO,WAAW,CAAO,IACxD,EAAQ,SAAS,GAAG,IAAU,OAAO,WAAW,CAAO,IAAI,MACxD;AACT;AAGA,SAAgB,EAAsB,GAAoB,IAAW,KAA+B;CAClG,IAAM,IAAQ,iBAAiB,CAAK,GAC9B,IAAY,EAAM,mBAAmB,MAAM,GAAG,CAAC,CAAC,IAAI,CAAa,GACjE,IAAS,EAAM,gBAAgB,MAAM,GAAG,CAAC,CAAC,IAAI,CAAa;CAMjE,OALgB,EAAU,QACvB,GAAK,GAAU,MAAU,KAAK,IAAI,GAAK,KAAY,EAAO,MAAU,EAAO,MAAM,EAAE,GACpF,CAGK,KAAW;AACpB;AAGA,SAAgB,EAAoB,GAAoB,IAAkC,CAAC,GAAG;CAG5F,IAFA,EAAa,IAAI,CAAK,CAAC,GAAG,GAC1B,EAAM,SAAS,IACX,EAAQ,WAAW;EACrB,EAAM,QAAQ,cAAc;EAC5B;CACF;
|
|
1
|
+
{"version":3,"file":"presence.js","names":[],"sources":["../../../src/shared/overlay/presence.ts"],"sourcesContent":["const DEFAULT_EXIT_DURATION = 160\nconst EXIT_FALLBACK_BUFFER = 80\n\nconst pendingExits = new WeakMap<HTMLElement, () => void>()\n\ninterface OverlayPresenceOptions {\n isInstant?: boolean\n}\n\nfunction parseDuration(value: string): number {\n const trimmed = value.trim()\n if (trimmed.endsWith('ms')) return Number.parseFloat(trimmed)\n if (trimmed.endsWith('s')) return Number.parseFloat(trimmed) * 1000\n return 0\n}\n\n/** 读取元素实际 CSS transition 的最长时长,供可覆盖主题 token 的 JS 生命周期使用。 */\nexport function getTransitionDuration(panel: HTMLElement, fallback = DEFAULT_EXIT_DURATION): number {\n const style = getComputedStyle(panel)\n const durations = style.transitionDuration.split(',').map(parseDuration)\n const delays = style.transitionDelay.split(',').map(parseDuration)\n const longest = durations.reduce(\n (max, duration, index) => Math.max(max, duration + (delays[index] ?? delays[0] ?? 0)),\n 0\n )\n\n return longest || fallback\n}\n\n/** 以可中断的方式显示浮层,避免快速切换时重启动画。 */\nexport function showOverlayPresence(panel: HTMLElement, options: OverlayPresenceOptions = {}) {\n pendingExits.get(panel)?.()\n panel.hidden = false\n if (options.isInstant) {\n panel.dataset.wuiPresence = 'open'\n return\n }\n panel.dataset.wuiPresence = 'entering'\n\n // Commit the initial state so a newly mounted panel has a transition source.\n void panel.offsetWidth\n\n requestAnimationFrame(() => {\n if (panel.dataset.wuiPresence === 'entering') panel.dataset.wuiPresence = 'open'\n })\n}\n\n/** 播放退出过渡;若在结束前重新显示则返回 false。 */\nexport function hideOverlayPresence(panel: HTMLElement): Promise<boolean> {\n pendingExits.get(panel)?.()\n panel.dataset.wuiPresence = 'closing'\n\n // jsdom 等没有计算 CSS transition 的环境无需伪造退场等待。\n if (getTransitionDuration(panel, 0) === 0) {\n panel.hidden = true\n return Promise.resolve(true)\n }\n\n return new Promise(resolve => {\n let settled = false\n const finish = (didClose: boolean) => {\n if (settled) return\n settled = true\n panel.removeEventListener('transitionend', onTransitionEnd)\n clearTimeout(timeout)\n pendingExits.delete(panel)\n if (didClose && panel.dataset.wuiPresence === 'closing') panel.hidden = true\n resolve(didClose)\n }\n\n const onTransitionEnd = (event: TransitionEvent) => {\n if (event.target === panel && (event.propertyName === 'opacity' || event.propertyName === 'transform'))\n finish(true)\n }\n\n pendingExits.set(panel, () => finish(false))\n panel.addEventListener('transitionend', onTransitionEnd)\n const timeout = setTimeout(() => finish(true), getTransitionDuration(panel) + EXIT_FALLBACK_BUFFER)\n })\n}\n"],"mappings":";AAAA,IAGM,oBAAe,IAAI,QAAiC;AAM1D,SAAS,EAAc,GAAuB;CAC5C,IAAM,IAAU,EAAM,KAAK;CAG3B,OAFI,EAAQ,SAAS,IAAI,IAAU,OAAO,WAAW,CAAO,IACxD,EAAQ,SAAS,GAAG,IAAU,OAAO,WAAW,CAAO,IAAI,MACxD;AACT;AAGA,SAAgB,EAAsB,GAAoB,IAAW,KAA+B;CAClG,IAAM,IAAQ,iBAAiB,CAAK,GAC9B,IAAY,EAAM,mBAAmB,MAAM,GAAG,CAAC,CAAC,IAAI,CAAa,GACjE,IAAS,EAAM,gBAAgB,MAAM,GAAG,CAAC,CAAC,IAAI,CAAa;CAMjE,OALgB,EAAU,QACvB,GAAK,GAAU,MAAU,KAAK,IAAI,GAAK,KAAY,EAAO,MAAU,EAAO,MAAM,EAAE,GACpF,CAGK,KAAW;AACpB;AAGA,SAAgB,EAAoB,GAAoB,IAAkC,CAAC,GAAG;CAG5F,IAFA,EAAa,IAAI,CAAK,CAAC,GAAG,GAC1B,EAAM,SAAS,IACX,EAAQ,WAAW;EACrB,EAAM,QAAQ,cAAc;EAC5B;CACF;CAMA,AALA,EAAM,QAAQ,cAAc,YAG5B,EAAW,aAEX,4BAA4B;EAC1B,AAAI,EAAM,QAAQ,gBAAgB,eAAY,EAAM,QAAQ,cAAc;CAC5E,CAAC;AACH;AAGA,SAAgB,EAAoB,GAAsC;CAUxE,OATA,EAAa,IAAI,CAAK,CAAC,GAAG,GAC1B,EAAM,QAAQ,cAAc,WAGxB,EAAsB,GAAO,CAAC,MAAM,KACtC,EAAM,SAAS,IACR,QAAQ,QAAQ,EAAI,KAGtB,IAAI,SAAQ,MAAW;EAC5B,IAAI,IAAU,IACR,KAAU,MAAsB;GAChC,MACJ,IAAU,IACV,EAAM,oBAAoB,iBAAiB,CAAe,GAC1D,aAAa,CAAO,GACpB,EAAa,OAAO,CAAK,GACrB,KAAY,EAAM,QAAQ,gBAAgB,cAAW,EAAM,SAAS,KACxE,EAAQ,CAAQ;EAClB,GAEM,KAAmB,MAA2B;GAClD,AAAI,EAAM,WAAW,MAAU,EAAM,iBAAiB,aAAa,EAAM,iBAAiB,gBACxF,EAAO,EAAI;EACf;EAGA,AADA,EAAa,IAAI,SAAa,EAAO,EAAK,CAAC,GAC3C,EAAM,iBAAiB,iBAAiB,CAAe;EACvD,IAAM,IAAU,iBAAiB,EAAO,EAAI,GAAG,EAAsB,CAAK,IAAI,EAAoB;CACpG,CAAC;AACH"}
|
|
@@ -6,7 +6,21 @@ function r() {
|
|
|
6
6
|
function i() {
|
|
7
7
|
e = Math.max(0, e - 1), e === 0 && (document.documentElement.style.overflow = t, document.body.style.position = "", document.body.style.top = "", document.body.style.width = "", window.scrollTo(0, n));
|
|
8
8
|
}
|
|
9
|
+
function a() {
|
|
10
|
+
let e = !1;
|
|
11
|
+
return {
|
|
12
|
+
get isLocked() {
|
|
13
|
+
return e;
|
|
14
|
+
},
|
|
15
|
+
sync(t) {
|
|
16
|
+
t !== e && (t ? r() : i(), e = t);
|
|
17
|
+
},
|
|
18
|
+
release() {
|
|
19
|
+
this.sync(!1);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
9
23
|
//#endregion
|
|
10
|
-
export { r as lockScroll, i as unlockScroll };
|
|
24
|
+
export { a as createScrollLockLease, r as lockScroll, i as unlockScroll };
|
|
11
25
|
|
|
12
26
|
//# sourceMappingURL=scroll-lock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-lock.js","names":[],"sources":["../../../src/shared/scroll-lock/scroll-lock.ts"],"sourcesContent":["let lockCount = 0\nlet savedOverflow = ''\nlet savedScrollY = 0\n\n/**\n * 锁定页面滚动。支持嵌套调用(引用计数),仅在最后一个锁释放时恢复。\n */\nexport function lockScroll() {\n if (lockCount === 0) {\n savedScrollY = window.scrollY\n savedOverflow = document.documentElement.style.overflow\n document.documentElement.style.overflow = 'hidden'\n // 固定 body 防止 iOS 弹性滚动\n document.body.style.position = 'fixed'\n document.body.style.top = `-${savedScrollY}px`\n document.body.style.width = '100%'\n }\n lockCount++\n}\n\n/**\n * 解锁页面滚动。与 lockScroll 配对,引用归零时恢复。\n */\nexport function unlockScroll() {\n lockCount = Math.max(0, lockCount - 1)\n if (lockCount === 0) {\n document.documentElement.style.overflow = savedOverflow\n document.body.style.position = ''\n document.body.style.top = ''\n document.body.style.width = ''\n window.scrollTo(0, savedScrollY)\n }\n}\n"],"mappings":";AAAA,IAAI,IAAY,GACZ,IAAgB,IAChB,IAAe;
|
|
1
|
+
{"version":3,"file":"scroll-lock.js","names":[],"sources":["../../../src/shared/scroll-lock/scroll-lock.ts"],"sourcesContent":["let lockCount = 0\nlet savedOverflow = ''\nlet savedScrollY = 0\n\nexport interface ScrollLockLease {\n readonly isLocked: boolean\n sync(shouldLock: boolean): void\n release(): void\n}\n\n/**\n * 锁定页面滚动。支持嵌套调用(引用计数),仅在最后一个锁释放时恢复。\n */\nexport function lockScroll() {\n if (lockCount === 0) {\n savedScrollY = window.scrollY\n savedOverflow = document.documentElement.style.overflow\n document.documentElement.style.overflow = 'hidden'\n // 固定 body 防止 iOS 弹性滚动\n document.body.style.position = 'fixed'\n document.body.style.top = `-${savedScrollY}px`\n document.body.style.width = '100%'\n }\n lockCount++\n}\n\n/**\n * 解锁页面滚动。与 lockScroll 配对,引用归零时恢复。\n */\nexport function unlockScroll() {\n lockCount = Math.max(0, lockCount - 1)\n if (lockCount === 0) {\n document.documentElement.style.overflow = savedOverflow\n document.body.style.position = ''\n document.body.style.top = ''\n document.body.style.width = ''\n window.scrollTo(0, savedScrollY)\n }\n}\n\n/**\n * 组件实例持有的滚动锁租约。它只会释放自身已获取的那一次锁,\n * 避免卸载、属性切换和嵌套浮层互相影响。\n */\nexport function createScrollLockLease(): ScrollLockLease {\n let isLocked = false\n\n return {\n get isLocked() {\n return isLocked\n },\n\n sync(shouldLock) {\n if (shouldLock === isLocked) return\n if (shouldLock) lockScroll()\n else unlockScroll()\n isLocked = shouldLock\n },\n\n release() {\n this.sync(false)\n }\n }\n}\n"],"mappings":";AAAA,IAAI,IAAY,GACZ,IAAgB,IAChB,IAAe;AAWnB,SAAgB,IAAa;CAU3B,AATI,MAAc,MAChB,IAAe,OAAO,SACtB,IAAgB,SAAS,gBAAgB,MAAM,UAC/C,SAAS,gBAAgB,MAAM,WAAW,UAE1C,SAAS,KAAK,MAAM,WAAW,SAC/B,SAAS,KAAK,MAAM,MAAM,IAAI,EAAa,KAC3C,SAAS,KAAK,MAAM,QAAQ,SAE9B;AACF;AAKA,SAAgB,IAAe;CAE7B,AADA,IAAY,KAAK,IAAI,GAAG,IAAY,CAAC,GACjC,MAAc,MAChB,SAAS,gBAAgB,MAAM,WAAW,GAC1C,SAAS,KAAK,MAAM,WAAW,IAC/B,SAAS,KAAK,MAAM,MAAM,IAC1B,SAAS,KAAK,MAAM,QAAQ,IAC5B,OAAO,SAAS,GAAG,CAAY;AAEnC;AAMA,SAAgB,IAAyC;CACvD,IAAI,IAAW;CAEf,OAAO;EACL,IAAI,WAAW;GACb,OAAO;EACT;EAEA,KAAK,GAAY;GACX,MAAe,MACf,IAAY,EAAW,IACtB,EAAa,GAClB,IAAW;EACb;EAEA,UAAU;GACR,KAAK,KAAK,EAAK;EACjB;CACF;AACF"}
|
package/dist/types/vue.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentOptionsMixin, DefineComponent, HTMLAttributes } from 'vue';
|
|
2
|
-
import { WebUiAvatar, WebUiBackTop, WebUiBadge, WebUiButton, WebUiButtonGroup, WebUiCheckbox, WebUiCheckboxGroup, WebUiContextMenu, WebUiDialog, WebUiDrawer, WebUiEmpty, WebUiDropdownDivider, WebUiDropdownHeader, WebUiDropdownItem, WebUiDropdown, WebUiIcon, WebUiInput, WebUiInputNumber, WebUiLayout, WebUiOption, WebUiPopover, WebUiRadio, WebUiRadioGroup, WebUiSegmented, WebUiSegmentedTrigger, WebUiSelect, WebUiSlider, WebUiSpinner, WebUiTextarea, WebUiTheme, WebUiToast, WebUiSwitch, WebUiTooltip } from '../components';
|
|
2
|
+
import { WebUiAvatar, WebUiBackTop, WebUiBadge, WebUiButton, WebUiButtonGroup, WebUiCheckbox, WebUiCheckboxGroup, WebUiContextMenu, WebUiDialog, WebUiDrawer, WebUiEmpty, WebUiDropdownDivider, WebUiDropdownHeader, WebUiDropdownItem, WebUiDropdown, WebUiIcon, WebUiInput, WebUiInputNumber, WebUiLayout, WebUiOption, WebUiPopover, WebUiRadio, WebUiRadioGroup, WebUiSegmented, WebUiSegmentedTrigger, WebUiSelect, WebUiSlider, WebUiSpinner, WebUiTextarea, WebUiTheme, WebUiToast, WebUiSwitch, WebUiTooltip, WebUiSvgDrawLines } from '../components';
|
|
3
3
|
import { ExtractProps, OmitLitBase } from './utils';
|
|
4
4
|
type ExtractVueEmits<T> = T extends {
|
|
5
5
|
readonly $events: infer E;
|
|
@@ -37,6 +37,7 @@ export interface WebUiComponents {
|
|
|
37
37
|
'web-ui-select': LitVueWrapper<WebUiSelect>;
|
|
38
38
|
'web-ui-slider': LitVueWrapper<WebUiSlider>;
|
|
39
39
|
'web-ui-spinner': LitVueWrapper<WebUiSpinner>;
|
|
40
|
+
'web-ui-svg-draw-lines': LitVueWrapper<WebUiSvgDrawLines>;
|
|
40
41
|
'web-ui-option': LitVueWrapper<WebUiOption>;
|
|
41
42
|
'web-ui-popover': LitVueWrapper<WebUiPopover>;
|
|
42
43
|
'web-ui-radio': LitVueWrapper<WebUiRadio>;
|
package/package.json
CHANGED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
//#region src/shared/property-converters/boolean-with-false-string.ts
|
|
2
|
-
var e = {
|
|
3
|
-
fromAttribute: (e) => e !== "false",
|
|
4
|
-
toAttribute: (e) => e ? "" : "false"
|
|
5
|
-
};
|
|
6
|
-
//#endregion
|
|
7
|
-
export { e as booleanWithFalseString };
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=boolean-with-false-string.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"boolean-with-false-string.js","names":[],"sources":["../../../src/shared/property-converters/boolean-with-false-string.ts"],"sourcesContent":["import type { PropertyDeclaration } from 'lit'\n\n/** 默认 true 的布尔属性需要保留 false 字面量,供模板框架声明式传值。 */\nexport const booleanWithFalseString: PropertyDeclaration<unknown>['converter'] = {\n fromAttribute: value => value !== 'false',\n toAttribute: value => (value ? '' : 'false')\n}\n"],"mappings":";AAGA,IAAa,IAAoE;CAC/E,gBAAe,MAAS,MAAU;CAClC,cAAa,MAAU,IAAQ,KAAK;AACtC"}
|