yuyeon 0.3.6-beta.6 → 0.3.6-beta.7
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/yuyeon.js +1506 -1484
- package/dist/yuyeon.umd.cjs +3 -3
- package/lib/components/dialog/YDialog.js +11 -2
- package/lib/components/dialog/YDialog.js.map +1 -1
- package/lib/components/snackbar/YSnackbar.js +10 -7
- package/lib/components/snackbar/YSnackbar.js.map +1 -1
- package/lib/util/animation/index.js +15 -2
- package/lib/util/animation/index.js.map +1 -1
- package/package.json +1 -1
- package/types/components/dialog/YDialog.d.ts +1 -1
- package/types/util/animation/index.d.ts +1 -1
|
@@ -35,7 +35,7 @@ export const YDialog = defineComponent({
|
|
|
35
35
|
YCard
|
|
36
36
|
},
|
|
37
37
|
props: pressYDialogPropsOptions(),
|
|
38
|
-
emits: ["update:modelValue"],
|
|
38
|
+
emits: ["update:modelValue", "afterEnter", "afterLeave"],
|
|
39
39
|
setup(props, _ref) {
|
|
40
40
|
let {
|
|
41
41
|
emit,
|
|
@@ -165,6 +165,12 @@ export const YDialog = defineComponent({
|
|
|
165
165
|
active.value = !currentActive;
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
+
function onAfterEnter() {
|
|
169
|
+
emit('afterEnter');
|
|
170
|
+
}
|
|
171
|
+
function onAfterLeave() {
|
|
172
|
+
emit('afterLeave');
|
|
173
|
+
}
|
|
168
174
|
watch(() => layer$.value?.baseEl, (neo, old) => {
|
|
169
175
|
if (neo) {
|
|
170
176
|
neo.addEventListener("click", onClick);
|
|
@@ -197,7 +203,10 @@ export const YDialog = defineComponent({
|
|
|
197
203
|
"content-styles": styles.value,
|
|
198
204
|
"modal": true,
|
|
199
205
|
"ref": layer$
|
|
200
|
-
}, omit(chooseProps(props, YLayer.props), ["contentStyles"])
|
|
206
|
+
}, omit(chooseProps(props, YLayer.props), ["contentStyles"]), {
|
|
207
|
+
"onAfterEnter": onAfterEnter,
|
|
208
|
+
"onAfterLeave": onAfterLeave
|
|
209
|
+
}), {
|
|
201
210
|
default: function () {
|
|
202
211
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
203
212
|
args[_key] = arguments[_key];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YDialog.js","names":["computed","getCurrentInstance","onMounted","onScopeDispose","ref","shallowRef","watch","Fragment","_Fragment","mergeProps","_mergeProps","createVNode","_createVNode","useModelDuplex","useRender","omit","bindClasses","chooseProps","defineComponent","propsFactory","toStyleSizeValue","YCard","pressYLayerProps","YLayer","useActiveStack","pressYDialogPropsOptions","persistent","type","Boolean","default","dialogClasses","Array","String","Object","focusTrap","offset","scrim","scrollStrategy","YDialog","name","components","props","emits","setup","_ref","emit","slots","vm","$yuyeon","appContext","config","globalProperties","active","classes","boundClasses","maximized","styles","contentStyles","paddingTop","layer$","children","onFocusin","e","prevTarget","relatedTarget","target","excludeTarget","document","querySelector","isSameNode","isArray","excluded","some","exclude","testChildrenContains","layers","layer","content$","contains","value","includes","focusableSelector","focusables","querySelectorAll","filter","el","hasAttribute","matches","length","firstChild","lastChild","focus","installFocusTrap","addEventListener","dismantleFocusTrap","removeEventListener","tempScrollTop","tempScrollLeft","preventInteractionBackground","toggle","root$","root","activeLayers","getActiveLayers","documentElement","classList","add","filtered","ctx","modal","scrollTop","scrollLeft","style","top","left","isMe","remove","requestAnimationFrame","every","onUpdate","v","onClick","currentActive","disabled","baseEl","neo","old","$event","_len","arguments","args","_key","base"],"sources":["../../../src/components/dialog/YDialog.tsx"],"sourcesContent":["import {\r\n\tcomputed,\r\n\tgetCurrentInstance,\r\n\tonMounted,\r\n\tonScopeDispose,\r\n\ttype PropType,\r\n\tref,\r\n\tshallowRef,\r\n\twatch,\r\n} from \"vue\";\r\n\r\nimport { useModelDuplex } from \"@/composables/communication\";\r\nimport { useRender } from \"@/composables/component\";\r\nimport { omit } from \"@/util/common\";\r\nimport {\r\n\tbindClasses,\r\n\tchooseProps,\r\n\tdefineComponent,\r\n\tpropsFactory,\r\n} from \"@/util/component\";\r\nimport { toStyleSizeValue } from \"@/util/ui\";\r\n\r\nimport { YCard } from \"../card\";\r\nimport { pressYLayerProps, YLayer } from \"../layer\";\r\nimport { useActiveStack } from \"../layer/active-stack\";\r\n\r\nimport \"./YDialog.scss\";\r\n\r\nexport const pressYDialogPropsOptions = propsFactory(\r\n\t{\r\n\t\tpersistent: {\r\n\t\t\ttype: Boolean as PropType<boolean>,\r\n\t\t\tdefault: true,\r\n\t\t},\r\n\t\tdialogClasses: {\r\n\t\t\ttype: [Array, String, Object] as PropType<\r\n\t\t\t\tstring[] | string | Record<string, any>\r\n\t\t\t>,\r\n\t\t},\r\n\t\tfocusTrap: {\r\n\t\t\ttype: [Boolean, String, Object, Array] as PropType<\r\n\t\t\t\tfalse | string | string[] | HTMLElement | HTMLElement[]\r\n\t\t\t>,\r\n\t\t\tdefault: true,\r\n\t\t},\r\n\t\toffset: {\r\n\t\t\ttype: String as PropType<string>,\r\n\t\t},\r\n\t\t...omit(\r\n\t\t\tpressYLayerProps({\r\n\t\t\t\tscrim: true,\r\n\t\t\t\tscrollStrategy: null,\r\n\t\t\t}),\r\n\t\t\t[\"offset\", \"classes\"],\r\n\t\t),\r\n\t},\r\n\t\"YDialog\",\r\n);\r\n\r\nexport const YDialog = defineComponent({\r\n\tname: \"YDialog\",\r\n\tcomponents: {\r\n\t\tYLayer,\r\n\t\tYCard,\r\n\t},\r\n\tprops: pressYDialogPropsOptions(),\r\n\temits: [\"update:modelValue\"],\r\n\tsetup(props, { emit, slots }) {\r\n\t\tconst vm = getCurrentInstance();\r\n\t\tconst $yuyeon = vm?.appContext.config.globalProperties.$yuyeon;\r\n\t\tconst active = useModelDuplex(props);\r\n\r\n\t\tconst classes = computed(() => {\r\n\t\t\tconst boundClasses = bindClasses(props.dialogClasses);\r\n\t\t\treturn {\r\n\t\t\t\t...boundClasses,\r\n\t\t\t\t\"y-dialog\": true,\r\n\t\t\t\t\"y-dialog--maximized\": props.maximized,\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst styles = computed(() => {\r\n\t\t\treturn {\r\n\t\t\t\t...(props.contentStyles ?? {}),\r\n\t\t\t\tpaddingTop: toStyleSizeValue(props.offset),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst layer$ = ref<typeof YLayer>();\r\n\t\tconst { children } = useActiveStack(layer$, active, shallowRef(true));\r\n\r\n\t\tfunction onFocusin(e: FocusEvent) {\r\n\t\t\tif (props.focusTrap === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst prevTarget = e.relatedTarget as HTMLElement | null;\r\n\t\t\tconst target = e.target as HTMLElement | null;\r\n\r\n\t\t\tconst excludeTarget = props.focusTrap;\r\n\r\n\t\t\tif (\r\n\t\t\t\ttypeof excludeTarget === \"string\" &&\r\n\t\t\t\tdocument.querySelector(excludeTarget)?.isSameNode(target)\r\n\t\t\t) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof excludeTarget === \"object\") {\r\n\t\t\t\tif (Array.isArray(excludeTarget)) {\r\n\t\t\t\t\tconst excluded = excludeTarget.some((exclude) => {\r\n\t\t\t\t\t\tif (typeof exclude === \"string\") {\r\n\t\t\t\t\t\t\treturn document.querySelector(exclude)?.isSameNode(target)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (typeof exclude === \"object\") {\r\n\t\t\t\t\t\t\treturn exclude?.isSameNode(target);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (excluded) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (excludeTarget?.isSameNode(target)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction testChildrenContains(layers: YLayer[]) {\r\n\t\t\t\treturn layers.some((layer) => {\r\n\t\t\t\t\treturn !layer.content$?.contains(target);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (\r\n\t\t\t\tprevTarget !== target &&\r\n\t\t\t\tlayer$.value?.content$ &&\r\n\t\t\t\t![document, layer$.value?.content$].includes(target) &&\r\n\t\t\t\t!layer$.value?.content$.contains(target) &&\r\n\t\t\t\t!testChildrenContains(children.value)\r\n\t\t\t) {\r\n\t\t\t\tconst focusableSelector =\r\n\t\t\t\t\t'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\r\n\t\t\t\tconst focusables = [\r\n\t\t\t\t\t...layer$.value.content$.querySelectorAll(focusableSelector),\r\n\t\t\t\t].filter(\r\n\t\t\t\t\t(el) =>\r\n\t\t\t\t\t\t!el.hasAttribute(\"disabled\") && !el.matches('[tabindex=\"-1\"]'),\r\n\t\t\t\t) as HTMLElement[];\r\n\t\t\t\tif (!focusables.length) return;\r\n\t\t\t\tconst firstChild = focusables[0];\r\n\t\t\t\tconst lastChild = focusables[focusables.length - 1];\r\n\t\t\t\tif (target?.isSameNode(firstChild) || target?.isSameNode(lastChild)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (firstChild === lastChild) {\r\n\t\t\t\t\tlastChild.focus();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfirstChild.focus();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction installFocusTrap() {\r\n\t\t\tdocument.addEventListener(\"focusin\", onFocusin);\r\n\t\t}\r\n\r\n\t\tfunction dismantleFocusTrap() {\r\n\t\t\tdocument.removeEventListener(\"focusin\", onFocusin);\r\n\t\t}\r\n\r\n\t\tconst tempScrollTop = ref(0);\r\n\t\tconst tempScrollLeft = ref(0);\r\n\r\n\t\tfunction preventInteractionBackground(toggle: boolean) {\r\n\t\t\tconst root$ = $yuyeon.root as HTMLElement;\r\n\t\t\tconst activeLayers = layer$.value?.getActiveLayers();\r\n\t\t\tif (toggle) {\r\n\t\t\t\tif (props.maximized) {\r\n\t\t\t\t\tdocument.documentElement.classList.add(\"y-dialog--prevent-scroll\");\r\n\t\t\t\t}\r\n\t\t\t\tconst filtered = activeLayers?.filter((layer: any) => {\r\n\t\t\t\t\treturn layer.ctx.modal;\r\n\t\t\t\t});\r\n\t\t\t\tif (\r\n\t\t\t\t\t(filtered && !filtered.length) ||\r\n\t\t\t\t\t!root$.classList.contains(\"y-dialog--virtual-scroll\")\r\n\t\t\t\t) {\r\n\t\t\t\t\tconst scrollTop = document.documentElement.scrollTop;\r\n\t\t\t\t\tconst scrollLeft = document.documentElement.scrollLeft;\r\n\t\t\t\t\ttempScrollTop.value = scrollTop;\r\n\t\t\t\t\ttempScrollLeft.value = scrollLeft;\r\n\r\n\t\t\t\t\troot$.classList.add(\"y-dialog--virtual-scroll\");\r\n\t\t\t\t\troot$.style.top = toStyleSizeValue(-1 * scrollTop) || \"\";\r\n\t\t\t\t\troot$.style.left = toStyleSizeValue(-1 * scrollLeft) || \"\";\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst filtered = activeLayers?.filter((layer: any) => {\r\n\t\t\t\t\treturn !layer$.value?.isMe(layer) && layer.ctx.modal;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!filtered?.length && root$) {\r\n\t\t\t\t\tdocument.documentElement.classList.remove(\"y-dialog--prevent-scroll\");\r\n\t\t\t\t\troot$.classList.remove(\"y-dialog--virtual-scroll\");\r\n\t\t\t\t\troot$.style.top = \"\";\r\n\t\t\t\t\troot$.style.left = \"\";\r\n\t\t\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\t\t\tdocument.documentElement.scrollTop = tempScrollTop.value;\r\n\t\t\t\t\t\tdocument.documentElement.scrollLeft = tempScrollLeft.value;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (filtered.every((layer: any) => !layer.ctx?.maximized)) {\r\n\t\t\t\t\tdocument.documentElement.classList.remove(\"y-dialog--prevent-scroll\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onUpdate(v: boolean) {\r\n\t\t\tactive.value = v;\r\n\t\t}\r\n\r\n\t\tfunction onClick(e: MouseEvent) {\r\n\t\t\tconst currentActive = active.value;\r\n\t\t\tif (!props.disabled) {\r\n\t\t\t\tactive.value = !currentActive;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twatch(\r\n\t\t\t() => layer$.value?.baseEl,\r\n\t\t\t(neo, old) => {\r\n\t\t\t\tif (neo) {\r\n\t\t\t\t\tneo.addEventListener(\"click\", onClick);\r\n\t\t\t\t} else if (old) {\r\n\t\t\t\t\told.removeEventListener(\"click\", onClick);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\tif (active.value) {\r\n\t\t\tinstallFocusTrap();\r\n\t\t\tpreventInteractionBackground(true);\r\n\t\t}\r\n\r\n\t\twatch(active, (neo) => {\r\n\t\t\tneo ? installFocusTrap() : dismantleFocusTrap();\r\n\t\t\tpreventInteractionBackground(neo);\r\n\t\t});\r\n\r\n\t\tonMounted(() => {\r\n\t\t\tif (active.value) {\r\n\t\t\t\tpreventInteractionBackground(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tonScopeDispose(() => {\r\n\t\t\tdismantleFocusTrap();\r\n\t\t\tpreventInteractionBackground(false);\r\n\t\t});\r\n\r\n\t\tuseRender(() => {\r\n\t\t\treturn (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<YLayer\r\n\t\t\t\t\t\tv-model={active.value}\r\n\t\t\t\t\t\tclasses={classes.value}\r\n\t\t\t\t\t\tcontent-styles={styles.value}\r\n\t\t\t\t\t\tmodal\r\n\t\t\t\t\t\tref={layer$}\r\n\t\t\t\t\t\t{...omit(chooseProps(props, YLayer.props), [\"contentStyles\"])}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\tdefault: (...args: any[]) => slots.default?.(...args),\r\n\t\t\t\t\t\t\tbase: slots.base,\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t</YLayer>\r\n\t\t\t\t</>\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tactive,\r\n\t\t\tlayer: layer$,\r\n\t\t\tclasses,\r\n\t\t\tchildren,\r\n\t\t};\r\n\t},\r\n});\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"YDialog.js","names":["computed","getCurrentInstance","onMounted","onScopeDispose","ref","shallowRef","watch","Fragment","_Fragment","mergeProps","_mergeProps","createVNode","_createVNode","useModelDuplex","useRender","omit","bindClasses","chooseProps","defineComponent","propsFactory","toStyleSizeValue","YCard","pressYLayerProps","YLayer","useActiveStack","pressYDialogPropsOptions","persistent","type","Boolean","default","dialogClasses","Array","String","Object","focusTrap","offset","scrim","scrollStrategy","YDialog","name","components","props","emits","setup","_ref","emit","slots","vm","$yuyeon","appContext","config","globalProperties","active","classes","boundClasses","maximized","styles","contentStyles","paddingTop","layer$","children","onFocusin","e","prevTarget","relatedTarget","target","excludeTarget","document","querySelector","isSameNode","isArray","excluded","some","exclude","testChildrenContains","layers","layer","content$","contains","value","includes","focusableSelector","focusables","querySelectorAll","filter","el","hasAttribute","matches","length","firstChild","lastChild","focus","installFocusTrap","addEventListener","dismantleFocusTrap","removeEventListener","tempScrollTop","tempScrollLeft","preventInteractionBackground","toggle","root$","root","activeLayers","getActiveLayers","documentElement","classList","add","filtered","ctx","modal","scrollTop","scrollLeft","style","top","left","isMe","remove","requestAnimationFrame","every","onUpdate","v","onClick","currentActive","disabled","onAfterEnter","onAfterLeave","baseEl","neo","old","$event","_len","arguments","args","_key","base"],"sources":["../../../src/components/dialog/YDialog.tsx"],"sourcesContent":["import {\r\n\tcomputed,\r\n\tgetCurrentInstance,\r\n\tonMounted,\r\n\tonScopeDispose,\r\n\ttype PropType,\r\n\tref,\r\n\tshallowRef,\r\n\twatch,\r\n} from \"vue\";\r\n\r\nimport { useModelDuplex } from \"@/composables/communication\";\r\nimport { useRender } from \"@/composables/component\";\r\nimport { omit } from \"@/util/common\";\r\nimport {\r\n\tbindClasses,\r\n\tchooseProps,\r\n\tdefineComponent,\r\n\tpropsFactory,\r\n} from \"@/util/component\";\r\nimport { toStyleSizeValue } from \"@/util/ui\";\r\n\r\nimport { YCard } from \"../card\";\r\nimport { pressYLayerProps, YLayer } from \"../layer\";\r\nimport { useActiveStack } from \"../layer/active-stack\";\r\n\r\nimport \"./YDialog.scss\";\r\n\r\nexport const pressYDialogPropsOptions = propsFactory(\r\n\t{\r\n\t\tpersistent: {\r\n\t\t\ttype: Boolean as PropType<boolean>,\r\n\t\t\tdefault: true,\r\n\t\t},\r\n\t\tdialogClasses: {\r\n\t\t\ttype: [Array, String, Object] as PropType<\r\n\t\t\t\tstring[] | string | Record<string, any>\r\n\t\t\t>,\r\n\t\t},\r\n\t\tfocusTrap: {\r\n\t\t\ttype: [Boolean, String, Object, Array] as PropType<\r\n\t\t\t\tfalse | string | string[] | HTMLElement | HTMLElement[]\r\n\t\t\t>,\r\n\t\t\tdefault: true,\r\n\t\t},\r\n\t\toffset: {\r\n\t\t\ttype: String as PropType<string>,\r\n\t\t},\r\n\t\t...omit(\r\n\t\t\tpressYLayerProps({\r\n\t\t\t\tscrim: true,\r\n\t\t\t\tscrollStrategy: null,\r\n\t\t\t}),\r\n\t\t\t[\"offset\", \"classes\"],\r\n\t\t),\r\n\t},\r\n\t\"YDialog\",\r\n);\r\n\r\nexport const YDialog = defineComponent({\r\n\tname: \"YDialog\",\r\n\tcomponents: {\r\n\t\tYLayer,\r\n\t\tYCard,\r\n\t},\r\n\tprops: pressYDialogPropsOptions(),\r\n\temits: [\"update:modelValue\", \"afterEnter\", \"afterLeave\"],\r\n\tsetup(props, { emit, slots }) {\r\n\t\tconst vm = getCurrentInstance();\r\n\t\tconst $yuyeon = vm?.appContext.config.globalProperties.$yuyeon;\r\n\t\tconst active = useModelDuplex(props);\r\n\r\n\t\tconst classes = computed(() => {\r\n\t\t\tconst boundClasses = bindClasses(props.dialogClasses);\r\n\t\t\treturn {\r\n\t\t\t\t...boundClasses,\r\n\t\t\t\t\"y-dialog\": true,\r\n\t\t\t\t\"y-dialog--maximized\": props.maximized,\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst styles = computed(() => {\r\n\t\t\treturn {\r\n\t\t\t\t...(props.contentStyles ?? {}),\r\n\t\t\t\tpaddingTop: toStyleSizeValue(props.offset),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst layer$ = ref<typeof YLayer>();\r\n\t\tconst { children } = useActiveStack(layer$, active, shallowRef(true));\r\n\r\n\t\tfunction onFocusin(e: FocusEvent) {\r\n\t\t\tif (props.focusTrap === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst prevTarget = e.relatedTarget as HTMLElement | null;\r\n\t\t\tconst target = e.target as HTMLElement | null;\r\n\r\n\t\t\tconst excludeTarget = props.focusTrap;\r\n\r\n\t\t\tif (\r\n\t\t\t\ttypeof excludeTarget === \"string\" &&\r\n\t\t\t\tdocument.querySelector(excludeTarget)?.isSameNode(target)\r\n\t\t\t) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof excludeTarget === \"object\") {\r\n\t\t\t\tif (Array.isArray(excludeTarget)) {\r\n\t\t\t\t\tconst excluded = excludeTarget.some((exclude) => {\r\n\t\t\t\t\t\tif (typeof exclude === \"string\") {\r\n\t\t\t\t\t\t\treturn document.querySelector(exclude)?.isSameNode(target)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (typeof exclude === \"object\") {\r\n\t\t\t\t\t\t\treturn exclude?.isSameNode(target);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (excluded) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (excludeTarget?.isSameNode(target)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction testChildrenContains(layers: YLayer[]) {\r\n\t\t\t\treturn layers.some((layer) => {\r\n\t\t\t\t\treturn !layer.content$?.contains(target);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (\r\n\t\t\t\tprevTarget !== target &&\r\n\t\t\t\tlayer$.value?.content$ &&\r\n\t\t\t\t![document, layer$.value?.content$].includes(target) &&\r\n\t\t\t\t!layer$.value?.content$.contains(target) &&\r\n\t\t\t\t!testChildrenContains(children.value)\r\n\t\t\t) {\r\n\t\t\t\tconst focusableSelector =\r\n\t\t\t\t\t'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\r\n\t\t\t\tconst focusables = [\r\n\t\t\t\t\t...layer$.value.content$.querySelectorAll(focusableSelector),\r\n\t\t\t\t].filter(\r\n\t\t\t\t\t(el) =>\r\n\t\t\t\t\t\t!el.hasAttribute(\"disabled\") && !el.matches('[tabindex=\"-1\"]'),\r\n\t\t\t\t) as HTMLElement[];\r\n\t\t\t\tif (!focusables.length) return;\r\n\t\t\t\tconst firstChild = focusables[0];\r\n\t\t\t\tconst lastChild = focusables[focusables.length - 1];\r\n\t\t\t\tif (target?.isSameNode(firstChild) || target?.isSameNode(lastChild)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (firstChild === lastChild) {\r\n\t\t\t\t\tlastChild.focus();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfirstChild.focus();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction installFocusTrap() {\r\n\t\t\tdocument.addEventListener(\"focusin\", onFocusin);\r\n\t\t}\r\n\r\n\t\tfunction dismantleFocusTrap() {\r\n\t\t\tdocument.removeEventListener(\"focusin\", onFocusin);\r\n\t\t}\r\n\r\n\t\tconst tempScrollTop = ref(0);\r\n\t\tconst tempScrollLeft = ref(0);\r\n\r\n\t\tfunction preventInteractionBackground(toggle: boolean) {\r\n\t\t\tconst root$ = $yuyeon.root as HTMLElement;\r\n\t\t\tconst activeLayers = layer$.value?.getActiveLayers();\r\n\t\t\tif (toggle) {\r\n\t\t\t\tif (props.maximized) {\r\n\t\t\t\t\tdocument.documentElement.classList.add(\"y-dialog--prevent-scroll\");\r\n\t\t\t\t}\r\n\t\t\t\tconst filtered = activeLayers?.filter((layer: any) => {\r\n\t\t\t\t\treturn layer.ctx.modal;\r\n\t\t\t\t});\r\n\t\t\t\tif (\r\n\t\t\t\t\t(filtered && !filtered.length) ||\r\n\t\t\t\t\t!root$.classList.contains(\"y-dialog--virtual-scroll\")\r\n\t\t\t\t) {\r\n\t\t\t\t\tconst scrollTop = document.documentElement.scrollTop;\r\n\t\t\t\t\tconst scrollLeft = document.documentElement.scrollLeft;\r\n\t\t\t\t\ttempScrollTop.value = scrollTop;\r\n\t\t\t\t\ttempScrollLeft.value = scrollLeft;\r\n\r\n\t\t\t\t\troot$.classList.add(\"y-dialog--virtual-scroll\");\r\n\t\t\t\t\troot$.style.top = toStyleSizeValue(-1 * scrollTop) || \"\";\r\n\t\t\t\t\troot$.style.left = toStyleSizeValue(-1 * scrollLeft) || \"\";\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst filtered = activeLayers?.filter((layer: any) => {\r\n\t\t\t\t\treturn !layer$.value?.isMe(layer) && layer.ctx.modal;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!filtered?.length && root$) {\r\n\t\t\t\t\tdocument.documentElement.classList.remove(\"y-dialog--prevent-scroll\");\r\n\t\t\t\t\troot$.classList.remove(\"y-dialog--virtual-scroll\");\r\n\t\t\t\t\troot$.style.top = \"\";\r\n\t\t\t\t\troot$.style.left = \"\";\r\n\t\t\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\t\t\tdocument.documentElement.scrollTop = tempScrollTop.value;\r\n\t\t\t\t\t\tdocument.documentElement.scrollLeft = tempScrollLeft.value;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (filtered.every((layer: any) => !layer.ctx?.maximized)) {\r\n\t\t\t\t\tdocument.documentElement.classList.remove(\"y-dialog--prevent-scroll\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onUpdate(v: boolean) {\r\n\t\t\tactive.value = v;\r\n\t\t}\r\n\r\n\t\tfunction onClick(e: MouseEvent) {\r\n\t\t\tconst currentActive = active.value;\r\n\t\t\tif (!props.disabled) {\r\n\t\t\t\tactive.value = !currentActive;\r\n\t\t\t}\r\n\t\t}\r\n\r\n function onAfterEnter() {\r\n emit('afterEnter')\r\n }\r\n\r\n function onAfterLeave() {\r\n emit('afterLeave')\r\n }\r\n\r\n\t\twatch(\r\n\t\t\t() => layer$.value?.baseEl,\r\n\t\t\t(neo, old) => {\r\n\t\t\t\tif (neo) {\r\n\t\t\t\t\tneo.addEventListener(\"click\", onClick);\r\n\t\t\t\t} else if (old) {\r\n\t\t\t\t\told.removeEventListener(\"click\", onClick);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t);\r\n\r\n\t\tif (active.value) {\r\n\t\t\tinstallFocusTrap();\r\n\t\t\tpreventInteractionBackground(true);\r\n\t\t}\r\n\r\n\t\twatch(active, (neo) => {\r\n\t\t\tneo ? installFocusTrap() : dismantleFocusTrap();\r\n\t\t\tpreventInteractionBackground(neo);\r\n\t\t});\r\n\r\n\t\tonMounted(() => {\r\n\t\t\tif (active.value) {\r\n\t\t\t\tpreventInteractionBackground(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tonScopeDispose(() => {\r\n\t\t\tdismantleFocusTrap();\r\n\t\t\tpreventInteractionBackground(false);\r\n\t\t});\r\n\r\n\t\tuseRender(() => {\r\n\t\t\treturn (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<YLayer\r\n\t\t\t\t\t\tv-model={active.value}\r\n\t\t\t\t\t\tclasses={classes.value}\r\n\t\t\t\t\t\tcontent-styles={styles.value}\r\n\t\t\t\t\t\tmodal\r\n\t\t\t\t\t\tref={layer$}\r\n\t\t\t\t\t\t{...omit(chooseProps(props, YLayer.props), [\"contentStyles\"])}\r\n onAfterEnter={onAfterEnter}\r\n onAfterLeave={onAfterLeave}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\tdefault: (...args: any[]) => slots.default?.(...args),\r\n\t\t\t\t\t\t\tbase: slots.base,\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t</YLayer>\r\n\t\t\t\t</>\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tactive,\r\n\t\t\tlayer: layer$,\r\n\t\t\tclasses,\r\n\t\t\tchildren,\r\n\t\t};\r\n\t},\r\n});\r\n"],"mappings":"AAAA,SACCA,QAAQ,EACRC,kBAAkB,EAClBC,SAAS,EACTC,cAAc,EAEdC,GAAG,EACHC,UAAU,EACVC,KAAK,EAAAC,QAAA,IAAAC,SAAA,EAAAC,UAAA,IAAAC,WAAA,EAAAC,WAAA,IAAAC,YAAA,QACC,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,IAAI;AAAA,SAEZC,WAAW,EACXC,WAAW,EACXC,eAAe,EACfC,YAAY;AAAA,SAEJC,gBAAgB;AAAA,SAEhBC,KAAK;AAAA,SACLC,gBAAgB,EAAEC,MAAM;AAAA,SACxBC,cAAc;AAEvB;AAEA,OAAO,MAAMC,wBAAwB,GAAGN,YAAY,CACnD;EACCO,UAAU,EAAE;IACXC,IAAI,EAAEC,OAA4B;IAClCC,OAAO,EAAE;EACV,CAAC;EACDC,aAAa,EAAE;IACdH,IAAI,EAAE,CAACI,KAAK,EAAEC,MAAM,EAAEC,MAAM;EAG7B,CAAC;EACDC,SAAS,EAAE;IACVP,IAAI,EAAE,CAACC,OAAO,EAAEI,MAAM,EAAEC,MAAM,EAAEF,KAAK,CAEpC;IACDF,OAAO,EAAE;EACV,CAAC;EACDM,MAAM,EAAE;IACPR,IAAI,EAAEK;EACP,CAAC;EACD,GAAGjB,IAAI,CACNO,gBAAgB,CAAC;IAChBc,KAAK,EAAE,IAAI;IACXC,cAAc,EAAE;EACjB,CAAC,CAAC,EACF,CAAC,QAAQ,EAAE,SAAS,CACrB;AACD,CAAC,EACD,SACD,CAAC;AAED,OAAO,MAAMC,OAAO,GAAGpB,eAAe,CAAC;EACtCqB,IAAI,EAAE,SAAS;EACfC,UAAU,EAAE;IACXjB,MAAM;IACNF;EACD,CAAC;EACDoB,KAAK,EAAEhB,wBAAwB,CAAC,CAAC;EACjCiB,KAAK,EAAE,CAAC,mBAAmB,EAAE,YAAY,EAAE,YAAY,CAAC;EACxDC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,EAAE,GAAG9C,kBAAkB,CAAC,CAAC;IAC/B,MAAM+C,OAAO,GAAGD,EAAE,EAAEE,UAAU,CAACC,MAAM,CAACC,gBAAgB,CAACH,OAAO;IAC9D,MAAMI,MAAM,GAAGvC,cAAc,CAAC4B,KAAK,CAAC;IAEpC,MAAMY,OAAO,GAAGrD,QAAQ,CAAC,MAAM;MAC9B,MAAMsD,YAAY,GAAGtC,WAAW,CAACyB,KAAK,CAACX,aAAa,CAAC;MACrD,OAAO;QACN,GAAGwB,YAAY;QACf,UAAU,EAAE,IAAI;QAChB,qBAAqB,EAAEb,KAAK,CAACc;MAC9B,CAAC;IACF,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAGxD,QAAQ,CAAC,MAAM;MAC7B,OAAO;QACN,IAAIyC,KAAK,CAACgB,aAAa,IAAI,CAAC,CAAC,CAAC;QAC9BC,UAAU,EAAEtC,gBAAgB,CAACqB,KAAK,CAACN,MAAM;MAC1C,CAAC;IACF,CAAC,CAAC;IAEF,MAAMwB,MAAM,GAAGvD,GAAG,CAAgB,CAAC;IACnC,MAAM;MAAEwD;IAAS,CAAC,GAAGpC,cAAc,CAACmC,MAAM,EAAEP,MAAM,EAAE/C,UAAU,CAAC,IAAI,CAAC,CAAC;IAErE,SAASwD,SAASA,CAACC,CAAa,EAAE;MACjC,IAAIrB,KAAK,CAACP,SAAS,KAAK,KAAK,EAAE;QAC9B;MACD;MAEA,MAAM6B,UAAU,GAAGD,CAAC,CAACE,aAAmC;MACxD,MAAMC,MAAM,GAAGH,CAAC,CAACG,MAA4B;MAE7C,MAAMC,aAAa,GAAGzB,KAAK,CAACP,SAAS;MAErC,IACC,OAAOgC,aAAa,KAAK,QAAQ,IACjCC,QAAQ,CAACC,aAAa,CAACF,aAAa,CAAC,EAAEG,UAAU,CAACJ,MAAM,CAAC,EACxD;QACD;MACD;MAEA,IAAI,OAAOC,aAAa,KAAK,QAAQ,EAAE;QACtC,IAAInC,KAAK,CAACuC,OAAO,CAACJ,aAAa,CAAC,EAAE;UACjC,MAAMK,QAAQ,GAAGL,aAAa,CAACM,IAAI,CAAEC,OAAO,IAAK;YAChD,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;cAChC,OAAON,QAAQ,CAACC,aAAa,CAACK,OAAO,CAAC,EAAEJ,UAAU,CAACJ,MAAM,CAAC;YAC3D;YACA,IAAI,OAAOQ,OAAO,KAAK,QAAQ,EAAE;cAChC,OAAOA,OAAO,EAAEJ,UAAU,CAACJ,MAAM,CAAC;YACnC;YACA,OAAO,KAAK;UACb,CAAC,CAAC;UACF,IAAIM,QAAQ,EAAE;YACb;UACD;QACD,CAAC,MAAM,IAAIL,aAAa,EAAEG,UAAU,CAACJ,MAAM,CAAC,EAAE;UAC7C;QACD;MACD;MAEA,SAASS,oBAAoBA,CAACC,MAAgB,EAAE;QAC/C,OAAOA,MAAM,CAACH,IAAI,CAAEI,KAAK,IAAK;UAC7B,OAAO,CAACA,KAAK,CAACC,QAAQ,EAAEC,QAAQ,CAACb,MAAM,CAAC;QACzC,CAAC,CAAC;MACH;MAEA,IACCF,UAAU,KAAKE,MAAM,IACrBN,MAAM,CAACoB,KAAK,EAAEF,QAAQ,IACtB,CAAC,CAACV,QAAQ,EAAER,MAAM,CAACoB,KAAK,EAAEF,QAAQ,CAAC,CAACG,QAAQ,CAACf,MAAM,CAAC,IACpD,CAACN,MAAM,CAACoB,KAAK,EAAEF,QAAQ,CAACC,QAAQ,CAACb,MAAM,CAAC,IACxC,CAACS,oBAAoB,CAACd,QAAQ,CAACmB,KAAK,CAAC,EACpC;QACD,MAAME,iBAAiB,GACtB,+FAA+F;QAChG,MAAMC,UAAU,GAAG,CAClB,GAAGvB,MAAM,CAACoB,KAAK,CAACF,QAAQ,CAACM,gBAAgB,CAACF,iBAAiB,CAAC,CAC5D,CAACG,MAAM,CACNC,EAAE,IACF,CAACA,EAAE,CAACC,YAAY,CAAC,UAAU,CAAC,IAAI,CAACD,EAAE,CAACE,OAAO,CAAC,iBAAiB,CAC/D,CAAkB;QAClB,IAAI,CAACL,UAAU,CAACM,MAAM,EAAE;QACxB,MAAMC,UAAU,GAAGP,UAAU,CAAC,CAAC,CAAC;QAChC,MAAMQ,SAAS,GAAGR,UAAU,CAACA,UAAU,CAACM,MAAM,GAAG,CAAC,CAAC;QACnD,IAAIvB,MAAM,EAAEI,UAAU,CAACoB,UAAU,CAAC,IAAIxB,MAAM,EAAEI,UAAU,CAACqB,SAAS,CAAC,EAAE;UACpE;QACD;QACA,IAAID,UAAU,KAAKC,SAAS,EAAE;UAC7BA,SAAS,CAACC,KAAK,CAAC,CAAC;QAClB,CAAC,MAAM;UACNF,UAAU,CAACE,KAAK,CAAC,CAAC;QACnB;MACD;IACD;IAEA,SAASC,gBAAgBA,CAAA,EAAG;MAC3BzB,QAAQ,CAAC0B,gBAAgB,CAAC,SAAS,EAAEhC,SAAS,CAAC;IAChD;IAEA,SAASiC,kBAAkBA,CAAA,EAAG;MAC7B3B,QAAQ,CAAC4B,mBAAmB,CAAC,SAAS,EAAElC,SAAS,CAAC;IACnD;IAEA,MAAMmC,aAAa,GAAG5F,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM6F,cAAc,GAAG7F,GAAG,CAAC,CAAC,CAAC;IAE7B,SAAS8F,4BAA4BA,CAACC,MAAe,EAAE;MACtD,MAAMC,KAAK,GAAGpD,OAAO,CAACqD,IAAmB;MACzC,MAAMC,YAAY,GAAG3C,MAAM,CAACoB,KAAK,EAAEwB,eAAe,CAAC,CAAC;MACpD,IAAIJ,MAAM,EAAE;QACX,IAAI1D,KAAK,CAACc,SAAS,EAAE;UACpBY,QAAQ,CAACqC,eAAe,CAACC,SAAS,CAACC,GAAG,CAAC,0BAA0B,CAAC;QACnE;QACA,MAAMC,QAAQ,GAAGL,YAAY,EAAElB,MAAM,CAAER,KAAU,IAAK;UACrD,OAAOA,KAAK,CAACgC,GAAG,CAACC,KAAK;QACvB,CAAC,CAAC;QACF,IACEF,QAAQ,IAAI,CAACA,QAAQ,CAACnB,MAAM,IAC7B,CAACY,KAAK,CAACK,SAAS,CAAC3B,QAAQ,CAAC,0BAA0B,CAAC,EACpD;UACD,MAAMgC,SAAS,GAAG3C,QAAQ,CAACqC,eAAe,CAACM,SAAS;UACpD,MAAMC,UAAU,GAAG5C,QAAQ,CAACqC,eAAe,CAACO,UAAU;UACtDf,aAAa,CAACjB,KAAK,GAAG+B,SAAS;UAC/Bb,cAAc,CAAClB,KAAK,GAAGgC,UAAU;UAEjCX,KAAK,CAACK,SAAS,CAACC,GAAG,CAAC,0BAA0B,CAAC;UAC/CN,KAAK,CAACY,KAAK,CAACC,GAAG,GAAG7F,gBAAgB,CAAC,CAAC,CAAC,GAAG0F,SAAS,CAAC,IAAI,EAAE;UACxDV,KAAK,CAACY,KAAK,CAACE,IAAI,GAAG9F,gBAAgB,CAAC,CAAC,CAAC,GAAG2F,UAAU,CAAC,IAAI,EAAE;QAC3D;MACD,CAAC,MAAM;QACN,MAAMJ,QAAQ,GAAGL,YAAY,EAAElB,MAAM,CAAER,KAAU,IAAK;UACrD,OAAO,CAACjB,MAAM,CAACoB,KAAK,EAAEoC,IAAI,CAACvC,KAAK,CAAC,IAAIA,KAAK,CAACgC,GAAG,CAACC,KAAK;QACrD,CAAC,CAAC;QAEF,IAAI,CAACF,QAAQ,EAAEnB,MAAM,IAAIY,KAAK,EAAE;UAC/BjC,QAAQ,CAACqC,eAAe,CAACC,SAAS,CAACW,MAAM,CAAC,0BAA0B,CAAC;UACrEhB,KAAK,CAACK,SAAS,CAACW,MAAM,CAAC,0BAA0B,CAAC;UAClDhB,KAAK,CAACY,KAAK,CAACC,GAAG,GAAG,EAAE;UACpBb,KAAK,CAACY,KAAK,CAACE,IAAI,GAAG,EAAE;UACrBG,qBAAqB,CAAC,MAAM;YAC3BlD,QAAQ,CAACqC,eAAe,CAACM,SAAS,GAAGd,aAAa,CAACjB,KAAK;YACxDZ,QAAQ,CAACqC,eAAe,CAACO,UAAU,GAAGd,cAAc,CAAClB,KAAK;UAC3D,CAAC,CAAC;QACH,CAAC,MAAM,IAAI4B,QAAQ,CAACW,KAAK,CAAE1C,KAAU,IAAK,CAACA,KAAK,CAACgC,GAAG,EAAErD,SAAS,CAAC,EAAE;UACjEY,QAAQ,CAACqC,eAAe,CAACC,SAAS,CAACW,MAAM,CAAC,0BAA0B,CAAC;QACtE;MACD;IACD;IAEA,SAASG,QAAQA,CAACC,CAAU,EAAE;MAC7BpE,MAAM,CAAC2B,KAAK,GAAGyC,CAAC;IACjB;IAEA,SAASC,OAAOA,CAAC3D,CAAa,EAAE;MAC/B,MAAM4D,aAAa,GAAGtE,MAAM,CAAC2B,KAAK;MAClC,IAAI,CAACtC,KAAK,CAACkF,QAAQ,EAAE;QACpBvE,MAAM,CAAC2B,KAAK,GAAG,CAAC2C,aAAa;MAC9B;IACD;IAEE,SAASE,YAAYA,CAAA,EAAG;MACtB/E,IAAI,CAAC,YAAY,CAAC;IACpB;IAEA,SAASgF,YAAYA,CAAA,EAAG;MACtBhF,IAAI,CAAC,YAAY,CAAC;IACpB;IAEFvC,KAAK,CACJ,MAAMqD,MAAM,CAACoB,KAAK,EAAE+C,MAAM,EAC1B,CAACC,GAAG,EAAEC,GAAG,KAAK;MACb,IAAID,GAAG,EAAE;QACRA,GAAG,CAAClC,gBAAgB,CAAC,OAAO,EAAE4B,OAAO,CAAC;MACvC,CAAC,MAAM,IAAIO,GAAG,EAAE;QACfA,GAAG,CAACjC,mBAAmB,CAAC,OAAO,EAAE0B,OAAO,CAAC;MAC1C;IACD,CACD,CAAC;IAED,IAAIrE,MAAM,CAAC2B,KAAK,EAAE;MACjBa,gBAAgB,CAAC,CAAC;MAClBM,4BAA4B,CAAC,IAAI,CAAC;IACnC;IAEA5F,KAAK,CAAC8C,MAAM,EAAG2E,GAAG,IAAK;MACtBA,GAAG,GAAGnC,gBAAgB,CAAC,CAAC,GAAGE,kBAAkB,CAAC,CAAC;MAC/CI,4BAA4B,CAAC6B,GAAG,CAAC;IAClC,CAAC,CAAC;IAEF7H,SAAS,CAAC,MAAM;MACf,IAAIkD,MAAM,CAAC2B,KAAK,EAAE;QACjBmB,4BAA4B,CAAC,IAAI,CAAC;MACnC;IACD,CAAC,CAAC;IAEF/F,cAAc,CAAC,MAAM;MACpB2F,kBAAkB,CAAC,CAAC;MACpBI,4BAA4B,CAAC,KAAK,CAAC;IACpC,CAAC,CAAC;IAEFpF,SAAS,CAAC,MAAM;MACf,OAAAF,YAAA,CAAAJ,SAAA,SAAAI,YAAA,CAAAW,MAAA,EAAAb,WAAA;QAAA,cAGY0C,MAAM,CAAC2B,KAAK;QAAA,uBAAAkD,MAAA,IAAZ7E,MAAM,CAAC2B,KAAK,GAAAkD,MAAA;QAAA,WACZ5E,OAAO,CAAC0B,KAAK;QAAA,kBACNvB,MAAM,CAACuB,KAAK;QAAA;QAAA,OAEvBpB;MAAM,GACP5C,IAAI,CAACE,WAAW,CAACwB,KAAK,EAAElB,MAAM,CAACkB,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;QAAA,gBACzCmF,YAAY;QAAA,gBACZC;MAAY;QAG/BhG,OAAO,EAAE,SAAAA,CAAA;UAAA,SAAAqG,IAAA,GAAAC,SAAA,CAAA3C,MAAA,EAAI4C,IAAI,OAAArG,KAAA,CAAAmG,IAAA,GAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;YAAJD,IAAI,CAAAC,IAAA,IAAAF,SAAA,CAAAE,IAAA;UAAA;UAAA,OAAYvF,KAAK,CAACjB,OAAO,GAAG,GAAGuG,IAAI,CAAC;QAAA;QACrDE,IAAI,EAAExF,KAAK,CAACwF;MAAI;IAKrB,CAAC,CAAC;IAEF,OAAO;MACNlF,MAAM;MACNwB,KAAK,EAAEjB,MAAM;MACbN,OAAO;MACPO;IACD,CAAC;EACF;AACD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -14,23 +14,26 @@ const defaultSnackbarTransition = {
|
|
|
14
14
|
if (!el.getAttribute('data-transform')) {
|
|
15
15
|
const cache = el.style.getPropertyValue('transform');
|
|
16
16
|
el.setAttribute('data-transform', cache);
|
|
17
|
+
el.setAttribute('data-direction', direction);
|
|
17
18
|
el.style.setProperty('transform', `${cache} translateY(${direction === 'top' ? '-' : ''}40px)`);
|
|
18
19
|
}
|
|
19
20
|
},
|
|
20
21
|
onEnter(el, done) {
|
|
21
22
|
const cache = el.getAttribute('data-transform');
|
|
22
|
-
const
|
|
23
|
-
if (
|
|
23
|
+
const direction = el.getAttribute('data-direction');
|
|
24
|
+
if (!direction || !cache) {
|
|
24
25
|
return;
|
|
25
26
|
}
|
|
26
|
-
el
|
|
27
|
-
|
|
28
|
-
transform: `${cache.replace(/translateY(.+)/, 'translateY(0)')}`
|
|
27
|
+
animate(el, [{
|
|
28
|
+
transform: `${cache} translateY(${direction === 'top' ? '-' : ''}40px)`
|
|
29
29
|
}, {
|
|
30
|
-
|
|
30
|
+
transform: `${cache.replace(/translateY(.+)/, 'translateY(0)')}`
|
|
31
|
+
}], {
|
|
32
|
+
duration: 300,
|
|
33
|
+
easing: 'cubic-bezier(0.25, 0.8, 0.5, 1)'
|
|
31
34
|
}).then(() => {
|
|
32
35
|
el.removeAttribute('data-transform');
|
|
33
|
-
el.removeAttribute('data-
|
|
36
|
+
el.removeAttribute('data-direction');
|
|
34
37
|
done();
|
|
35
38
|
});
|
|
36
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YSnackbar.js","names":["computed","ref","toRef","watch","withModifiers","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","useModelDuplex","useRender","useTimer","animate","omit","bindClasses","chooseProps","defineComponent","propsFactory","pressYLayerProps","YLayer","YPlate","defaultSnackbarTransition","name","onBeforeEnter","direction","el","getAttribute","cache","style","getPropertyValue","setAttribute","setProperty","onEnter","done","motion","transform","replace","duration","then","removeAttribute","pressYSnackbarPropsOptions","scrollStrategy","position","modelValue","type","Boolean","contentClasses","Array","String","Object","transition","default","Number","closeClickContent","YSnackbar","components","emits","props","setup","_ref","emit","slots","active","hover","classes","computedContentClasses","boundClasses","computedInset","first","second","split","y","x","ret","dismiss","value","start","stop","reset","setTimer","neo","isNaN","immediate","onClickContent","event","proxyTransition","includes","v","onMouseenter","onMouseleave"],"sources":["../../../src/components/snackbar/YSnackbar.tsx"],"sourcesContent":["import { computed, type PropType, ref, toRef, watch, withModifiers } from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { useTimer } from '@/composables/timing';\nimport { animate } from '@/util/animation';\nimport { omit } from '@/util/common';\nimport {\n bindClasses,\n chooseProps,\n defineComponent,\n propsFactory,\n} from '@/util/component';\n\nimport { pressYLayerProps, YLayer } from '../layer';\nimport { YPlate } from '../plate';\n\nimport './YSnackbar.scss';\n\nconst defaultSnackbarTransition = {\n name: 'y-snackbar',\n onBeforeEnter: (direction: 'top' | 'bottom') => (el: HTMLElement) => {\n if (!el.getAttribute('data-transform')) {\n const cache = el.style.getPropertyValue('transform');\n el.setAttribute('data-transform', cache);\n el.style.setProperty(\n 'transform',\n `${cache} translateY(${direction === 'top' ? '-' : ''}40px)`,\n );\n }\n },\n onEnter(el: HTMLElement, done: () => void) {\n const cache = el.getAttribute('data-transform');\n const motion = el.getAttribute('data-motion');\n if (motion || !cache) {\n return;\n }\n el.setAttribute('data-motion', 'true');\n animate(\n el,\n {\n transform: `${cache.replace(/translateY(.+)/, 'translateY(0)')}`,\n },\n { duration: 0.1 },\n ).then(() => {\n el.removeAttribute('data-transform');\n el.removeAttribute('data-motion');\n done();\n });\n },\n};\n\nexport const pressYSnackbarPropsOptions = propsFactory(\n {\n ...pressYLayerProps({\n scrollStrategy: 'none' as const,\n position: 'top center',\n }),\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n contentClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n transition: {\n type: [String, Object] as PropType<string | any>,\n default: () => ({ ...defaultSnackbarTransition }),\n },\n /**\n * @property Number\n *\n * The amount of time the snackbar should be displayed.\n * @default 4000\n */\n duration: {\n type: Number as PropType<number>,\n default: 4000,\n },\n closeClickContent: {\n type: Boolean,\n default: true,\n },\n },\n 'YSnackbar',\n);\n\nexport const YSnackbar = defineComponent({\n name: 'YSnackbar',\n components: { YPlate, YLayer },\n emits: ['update:modelValue', 'click'],\n props: {\n ...pressYSnackbarPropsOptions(),\n },\n setup(props, { emit, slots }) {\n const active = useModelDuplex(props);\n const hover = ref(false);\n const duration = toRef(props, 'duration');\n\n const classes = computed(() => {\n return {\n 'y-snackbar': true,\n };\n });\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n 'y-snackbar__display': true,\n };\n });\n\n const computedInset = computed(() => {\n const [first, second] = props.position?.split(' ') ?? [];\n let y = 'top';\n let x = 'left';\n if (second) {\n x = second;\n y = first;\n } else if (first === 'bottom') {\n y = 'bottom';\n } else {\n x = first;\n }\n const ret = {\n [x === 'center' ? 'left' : x]: x === 'center' ? `50%` : 0,\n [y]: 0,\n } as any;\n if (x === 'center') {\n ret.transform = 'translateX(-50%)';\n }\n return ret;\n });\n\n function dismiss() {\n active.value = false;\n }\n\n const { start, stop, reset } = useTimer(dismiss, duration);\n function setTimer() {\n if (props.duration > 0) {\n start();\n }\n }\n\n watch(hover, (neo: boolean) => {\n if (neo) {\n stop();\n } else {\n setTimer();\n }\n });\n\n watch(\n () => props.duration,\n (neo) => {\n if (!Number.isNaN(neo) && active.value) {\n reset();\n if (!hover.value) {\n setTimer();\n }\n }\n },\n );\n\n watch(\n active,\n (neo: boolean) => {\n if (neo) {\n setTimer();\n } else {\n reset();\n }\n },\n { immediate: true },\n );\n\n function onClickContent(event: Event) {\n emit('click', event);\n if (props.closeClickContent) {\n active.value = false;\n }\n }\n\n const proxyTransition = computed(() => {\n const { transition, position } = props;\n if (transition?.name === 'y-snackbar') {\n transition.onBeforeEnter = defaultSnackbarTransition.onBeforeEnter(\n position.includes('top') ? 'top' : 'bottom',\n );\n return { ...transition };\n }\n return props.transition;\n });\n\n useRender(() => {\n return (\n <YLayer\n ref=\"layer\"\n {...omit(chooseProps(props, YLayer.props), [\n 'scrim',\n 'transition',\n 'content-classes',\n 'classes',\n ])}\n modelValue={active.value}\n onUpdate:modelValue={(v) => {\n (active.value = v);\n }}\n classes={classes.value}\n content-classes={computedContentClasses.value}\n scrim={false}\n content-styles={computedInset.value}\n transition={proxyTransition.value as any}\n >\n {{\n default: () => (\n <>\n <YPlate></YPlate>\n <div\n class=\"y-snackbar__content\"\n onClick={withModifiers(onClickContent, ['exact'])}\n onMouseenter={() => {\n (hover.value = true);\n }}\n onMouseleave={() => {\n (hover.value = false);\n }}\n >\n {slots.default?.()}\n </div>\n </>\n ),\n }}\n </YLayer>\n );\n });\n\n return {\n active,\n hover,\n classes,\n computedContentClasses,\n computedInset,\n proxyTransition,\n onClickContent,\n };\n },\n});\n\nexport type YSnackbar = InstanceType<typeof YSnackbar>;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"YSnackbar.js","names":["computed","ref","toRef","watch","withModifiers","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","useModelDuplex","useRender","useTimer","animate","omit","bindClasses","chooseProps","defineComponent","propsFactory","pressYLayerProps","YLayer","YPlate","defaultSnackbarTransition","name","onBeforeEnter","direction","el","getAttribute","cache","style","getPropertyValue","setAttribute","setProperty","onEnter","done","transform","replace","duration","easing","then","removeAttribute","pressYSnackbarPropsOptions","scrollStrategy","position","modelValue","type","Boolean","contentClasses","Array","String","Object","transition","default","Number","closeClickContent","YSnackbar","components","emits","props","setup","_ref","emit","slots","active","hover","classes","computedContentClasses","boundClasses","computedInset","first","second","split","y","x","ret","dismiss","value","start","stop","reset","setTimer","neo","isNaN","immediate","onClickContent","event","proxyTransition","includes","v","onMouseenter","onMouseleave"],"sources":["../../../src/components/snackbar/YSnackbar.tsx"],"sourcesContent":["import { computed, type PropType, ref, toRef, watch, withModifiers } from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { useTimer } from '@/composables/timing';\nimport { animate } from '@/util/animation';\nimport { omit } from '@/util/common';\nimport {\n bindClasses,\n chooseProps,\n defineComponent,\n propsFactory,\n} from '@/util/component';\n\nimport { pressYLayerProps, YLayer } from '../layer';\nimport { YPlate } from '../plate';\n\nimport './YSnackbar.scss';\n\nconst defaultSnackbarTransition = {\n name: 'y-snackbar',\n onBeforeEnter: (direction: 'top' | 'bottom') => (el: HTMLElement) => {\n if (!el.getAttribute('data-transform')) {\n const cache = el.style.getPropertyValue('transform');\n el.setAttribute('data-transform', cache);\n el.setAttribute('data-direction', direction);\n el.style.setProperty(\n 'transform',\n `${cache} translateY(${direction === 'top' ? '-' : ''}40px)`,\n );\n }\n },\n onEnter(el: HTMLElement, done: () => void) {\n const cache = el.getAttribute('data-transform');\n const direction = el.getAttribute('data-direction');\n if (!direction || !cache) {\n return;\n }\n animate(\n el,\n [\n {\n transform: `${cache} translateY(${direction === 'top' ? '-' : ''}40px)`,\n },\n {\n transform: `${cache.replace(/translateY(.+)/, 'translateY(0)')}`,\n },\n ],\n { duration: 300 , easing: 'cubic-bezier(0.25, 0.8, 0.5, 1)' },\n ).then(() => {\n el.removeAttribute('data-transform');\n el.removeAttribute('data-direction');\n done();\n });\n },\n};\n\nexport const pressYSnackbarPropsOptions = propsFactory(\n {\n ...pressYLayerProps({\n scrollStrategy: 'none' as const,\n position: 'top center',\n }),\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n contentClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n transition: {\n type: [String, Object] as PropType<string | any>,\n default: () => ({ ...defaultSnackbarTransition }),\n },\n /**\n * @property Number\n *\n * The amount of time the snackbar should be displayed.\n * @default 4000\n */\n duration: {\n type: Number as PropType<number>,\n default: 4000,\n },\n closeClickContent: {\n type: Boolean,\n default: true,\n },\n },\n 'YSnackbar',\n);\n\nexport const YSnackbar = defineComponent({\n name: 'YSnackbar',\n components: { YPlate, YLayer },\n emits: ['update:modelValue', 'click'],\n props: {\n ...pressYSnackbarPropsOptions(),\n },\n setup(props, { emit, slots }) {\n const active = useModelDuplex(props);\n const hover = ref(false);\n const duration = toRef(props, 'duration');\n\n const classes = computed(() => {\n return {\n 'y-snackbar': true,\n };\n });\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n 'y-snackbar__display': true,\n };\n });\n\n const computedInset = computed(() => {\n const [first, second] = props.position?.split(' ') ?? [];\n let y = 'top';\n let x = 'left';\n if (second) {\n x = second;\n y = first;\n } else if (first === 'bottom') {\n y = 'bottom';\n } else {\n x = first;\n }\n const ret = {\n [x === 'center' ? 'left' : x]: x === 'center' ? `50%` : 0,\n [y]: 0,\n } as any;\n if (x === 'center') {\n ret.transform = 'translateX(-50%)';\n }\n return ret;\n });\n\n function dismiss() {\n active.value = false;\n }\n\n const { start, stop, reset } = useTimer(dismiss, duration);\n function setTimer() {\n if (props.duration > 0) {\n start();\n }\n }\n\n watch(hover, (neo: boolean) => {\n if (neo) {\n stop();\n } else {\n setTimer();\n }\n });\n\n watch(\n () => props.duration,\n (neo) => {\n if (!Number.isNaN(neo) && active.value) {\n reset();\n if (!hover.value) {\n setTimer();\n }\n }\n },\n );\n\n watch(\n active,\n (neo: boolean) => {\n if (neo) {\n setTimer();\n } else {\n reset();\n }\n },\n { immediate: true },\n );\n\n function onClickContent(event: Event) {\n emit('click', event);\n if (props.closeClickContent) {\n active.value = false;\n }\n }\n\n const proxyTransition = computed(() => {\n const { transition, position } = props;\n if (transition?.name === 'y-snackbar') {\n transition.onBeforeEnter = defaultSnackbarTransition.onBeforeEnter(\n position.includes('top') ? 'top' : 'bottom',\n );\n return { ...transition };\n }\n return props.transition;\n });\n\n useRender(() => {\n return (\n <YLayer\n ref=\"layer\"\n {...omit(chooseProps(props, YLayer.props), [\n 'scrim',\n 'transition',\n 'content-classes',\n 'classes',\n ])}\n modelValue={active.value}\n onUpdate:modelValue={(v) => {\n (active.value = v);\n }}\n classes={classes.value}\n content-classes={computedContentClasses.value}\n scrim={false}\n content-styles={computedInset.value}\n transition={proxyTransition.value as any}\n >\n {{\n default: () => (\n <>\n <YPlate></YPlate>\n <div\n class=\"y-snackbar__content\"\n onClick={withModifiers(onClickContent, ['exact'])}\n onMouseenter={() => {\n (hover.value = true);\n }}\n onMouseleave={() => {\n (hover.value = false);\n }}\n >\n {slots.default?.()}\n </div>\n </>\n ),\n }}\n </YLayer>\n );\n });\n\n return {\n active,\n hover,\n classes,\n computedContentClasses,\n computedInset,\n proxyTransition,\n onClickContent,\n };\n },\n});\n\nexport type YSnackbar = InstanceType<typeof YSnackbar>;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
export function animate(el, keyframes, options) {
|
|
2
|
-
return
|
|
3
|
-
|
|
2
|
+
if (typeof el.animate === 'undefined') return Promise.resolve();
|
|
3
|
+
let animation;
|
|
4
|
+
try {
|
|
5
|
+
animation = el.animate(keyframes, options);
|
|
6
|
+
} catch (e) {
|
|
7
|
+
return Promise.resolve();
|
|
8
|
+
}
|
|
9
|
+
const promise = new Promise(resolve => {
|
|
10
|
+
animation.onfinish = () => {
|
|
11
|
+
resolve(animation);
|
|
12
|
+
};
|
|
4
13
|
});
|
|
14
|
+
Object.assign(promise, {
|
|
15
|
+
animation
|
|
16
|
+
});
|
|
17
|
+
return promise;
|
|
5
18
|
}
|
|
6
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["animate","el","keyframes","options","Promise"],"sources":["../../../src/util/animation/index.ts"],"sourcesContent":["export function animate(el: Element, keyframes: any, options?: any) {\r\n return
|
|
1
|
+
{"version":3,"file":"index.js","names":["animate","el","keyframes","options","Promise","resolve","animation","e","promise","onfinish","Object","assign"],"sources":["../../../src/util/animation/index.ts"],"sourcesContent":["export function animate(el: Element, keyframes: any, options?: any) {\r\n if (typeof el.animate === 'undefined') return Promise.resolve();\r\n\r\n let animation: Animation;\r\n try {\r\n animation = el.animate(keyframes, options);\r\n } catch (e) {\r\n return Promise.resolve();\r\n }\r\n\r\n const promise = new Promise<any>((resolve) => {\r\n animation.onfinish = () => {\r\n resolve(animation)\r\n };\r\n }) as any;\r\n Object.assign(promise, { animation });\r\n\r\n return promise;\r\n}\r\n"],"mappings":"AAAA,OAAO,SAASA,OAAOA,CAACC,EAAW,EAAEC,SAAc,EAAEC,OAAa,EAAE;EAClE,IAAI,OAAOF,EAAE,CAACD,OAAO,KAAK,WAAW,EAAE,OAAOI,OAAO,CAACC,OAAO,CAAC,CAAC;EAE/D,IAAIC,SAAoB;EACxB,IAAI;IACFA,SAAS,GAAGL,EAAE,CAACD,OAAO,CAACE,SAAS,EAAEC,OAAO,CAAC;EAC5C,CAAC,CAAC,OAAOI,CAAC,EAAE;IACV,OAAOH,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEA,MAAMG,OAAO,GAAG,IAAIJ,OAAO,CAAOC,OAAO,IAAK;IAC5CC,SAAS,CAACG,QAAQ,GAAG,MAAM;MACzBJ,OAAO,CAACC,SAAS,CAAC;IACpB,CAAC;EACH,CAAC,CAAQ;EACTI,MAAM,CAACC,MAAM,CAACH,OAAO,EAAE;IAAEF;EAAU,CAAC,CAAC;EAErC,OAAOE,OAAO;AAChB","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -718,4 +718,4 @@ export declare const YDialog: import('vue').DefineComponent<{
|
|
|
718
718
|
"y-dialog--maximized": boolean | undefined;
|
|
719
719
|
}>;
|
|
720
720
|
children: import('vue').ShallowRef<any[], any[]>;
|
|
721
|
-
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "update:modelValue"[], "update:modelValue">;
|
|
721
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("update:modelValue" | "afterLeave" | "afterEnter")[], "update:modelValue" | "afterLeave" | "afterEnter">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function animate(el: Element, keyframes: any, options?: any):
|
|
1
|
+
export declare function animate(el: Element, keyframes: any, options?: any): any;
|