yuyeon 0.0.19 → 0.0.21

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choice.mjs","names":["computed","getCurrentInstance","inject","onBeforeUnmount","onMounted","provide","reactive","toRef","watch","wrapInArray","deepEqual","findChildrenWithProvide","getUid","propsFactory","useModelDuplex","pressChoicePropsOptions","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","pressChoiceItemPropsOptions","value","useChoiceItem","props","injectKey","required","arguments","length","vm","Error","id","Symbol","for","description","choiceProvider","register","unregister","isSelected","emit","toggle","select","provider","useChoice","isUnmounted","items","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","splice","push","forceMandatoryValue","findIndex","find","internalValue","slice","includes","step","offset","currentId","currentIndex","i","newIndex","newItem","state","prev","next","getItemIndex","ids","forEach","itemByIndex","values","itemIndex"],"sources":["../../src/composables/choice.ts"],"sourcesContent":["import type {\n ComponentInternalInstance,\n ComputedRef,\n ExtractPropTypes,\n InjectionKey,\n PropType,\n Ref,\n UnwrapRef,\n} from 'vue';\nimport {\n computed,\n getCurrentInstance,\n inject,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n toRef,\n watch,\n} from 'vue';\n\nimport { wrapInArray } from '../util/array';\nimport { deepEqual } from '../util/common';\nimport {\n findChildrenWithProvide,\n getUid,\n propsFactory,\n} from '../util/vue-component';\nimport { useModelDuplex } from './communication';\n\nexport interface ChoiceItem {\n id: number;\n value: Ref<unknown>;\n disabled: Ref<boolean | undefined>;\n}\n\nexport interface ChoiceProps {\n disabled: boolean;\n modelValue: unknown;\n multiple?: boolean;\n mandatory?: boolean | 'force' | undefined;\n max?: number | undefined;\n selectedClass: string | undefined;\n 'onUpdate:modelValue': ((value: unknown) => void) | undefined;\n}\n\nexport interface ChoiceProvide {\n register: (item: ChoiceItem, instance: ComponentInternalInstance) => void;\n unregister: (id: number) => void;\n select: (id: number, value: boolean) => void;\n selected: Ref<Readonly<number[]>>;\n selectedClass: Ref<string | undefined>;\n isSelected: (id: number) => boolean;\n disabled: Ref<boolean | undefined>;\n getItemIndex: (value: unknown) => number;\n prev: () => void;\n next: () => void;\n items: ComputedRef<\n { id: number; value: unknown; disabled: boolean | undefined }[]\n >;\n}\n\nexport interface ChoiceItemProvide {\n id: number;\n isSelected: Ref<boolean>;\n toggle: () => void;\n select: (value: boolean) => void;\n selectedClass: Ref<(string | undefined)[] | false>;\n value: Ref<unknown>;\n disabled: Ref<boolean | undefined>;\n provider: ChoiceProvide;\n}\n\nexport const pressChoicePropsOptions = propsFactory(\n {\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n },\n 'choice',\n);\n\nexport const pressChoiceItemPropsOptions = propsFactory(\n {\n value: null,\n disabled: Boolean,\n selectedClass: String,\n },\n 'choice-item',\n);\n\nexport interface ChoiceItemProps\n extends ExtractPropTypes<ReturnType<typeof pressChoiceItemPropsOptions>> {\n 'onChoice:selected': ((val: { value: boolean }) => void) | undefined;\n}\n\nexport function useChoiceItem(\n props: ChoiceItemProps,\n injectKey: InjectionKey<ChoiceProvide>,\n required?: true,\n): ChoiceItemProvide;\nexport function useChoiceItem(\n props: ChoiceItemProps,\n injectKey: InjectionKey<ChoiceProvide>,\n required: false,\n): ChoiceItemProvide | null;\nexport function useChoiceItem(\n props: ChoiceItemProps,\n injectKey: InjectionKey<ChoiceProvide>,\n required = true,\n): ChoiceItemProvide | null {\n const vm = getCurrentInstance();\n\n if (!vm) {\n throw new Error(\n '\"useChoiceItem\" must be used inside a component setup function',\n );\n }\n\n const id = getUid() as number;\n\n provide(Symbol.for(`${injectKey.description}:id`), id);\n\n const choiceProvider = inject(injectKey, null);\n\n if (!choiceProvider) {\n if (!required) return choiceProvider as null;\n\n throw new Error(`Not found provider`);\n }\n\n const value = toRef(props, 'value');\n const disabled = computed(\n () => !!(choiceProvider.disabled.value || props.disabled),\n );\n\n choiceProvider.register(\n {\n id,\n value,\n disabled,\n },\n vm,\n );\n\n onBeforeUnmount(() => {\n choiceProvider.unregister(id);\n });\n\n const isSelected = computed(() => {\n return choiceProvider.isSelected(id);\n });\n\n const selectedClass = computed(\n () =>\n isSelected.value && [\n choiceProvider.selectedClass.value,\n props.selectedClass,\n ],\n );\n\n watch(isSelected, (value) => {\n vm.emit('group:selected', { value });\n });\n\n return {\n id,\n isSelected,\n toggle: () => choiceProvider.select(id, !isSelected.value),\n select: (value: boolean) => choiceProvider.select(id, value),\n selectedClass,\n value,\n disabled,\n provider: choiceProvider,\n };\n}\n\nexport function useChoice(\n props: ChoiceProps,\n injectKey: InjectionKey<ChoiceProvide>,\n) {\n let isUnmounted = false;\n const items = reactive<ChoiceItem[]>([]);\n const selected = useModelDuplex(\n props,\n 'modelValue',\n [],\n (v) => {\n if (v == null) return [];\n\n return getIds(items, wrapInArray(v));\n },\n (v) => {\n const arr = getValues(items, v);\n\n return props.multiple ? arr : arr[0];\n },\n );\n\n const groupVm = getCurrentInstance();\n\n function register(item: ChoiceItem, vm: ComponentInternalInstance) {\n const unwrapped = item as unknown as UnwrapRef<ChoiceItem>;\n\n const key = Symbol.for(`${injectKey.description}:id`);\n const children = findChildrenWithProvide(key, groupVm?.vnode);\n const index = children.indexOf(vm);\n\n if (index > -1) {\n items.splice(index, 0, unwrapped);\n } else {\n items.push(unwrapped);\n }\n }\n\n function unregister(id: number) {\n if (isUnmounted) return;\n forceMandatoryValue();\n const index = items.findIndex((item) => item.id === id);\n items.splice(index, 1);\n }\n\n function forceMandatoryValue() {\n const item = items.find((item) => !item.disabled);\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id];\n }\n }\n\n onMounted(() => {\n forceMandatoryValue();\n });\n\n onBeforeUnmount(() => {\n isUnmounted = true;\n });\n\n function select(id: number, value?: boolean) {\n const item = items.find((item) => item.id === id);\n if (value && item?.disabled) return;\n\n if (props.multiple) {\n const internalValue = selected.value.slice();\n const index = internalValue.findIndex((v: any) => v === id);\n const isSelected = ~index;\n value = value ?? !isSelected;\n if (isSelected && props.mandatory && internalValue.length <= 1) return;\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n )\n return;\n\n if (index < 0 && value) internalValue.push(id);\n else if (index >= 0 && !value) internalValue.splice(index, 1);\n\n selected.value = internalValue;\n } else {\n const isSelected = selected.value.includes(id);\n if (props.mandatory && isSelected) return;\n\n selected.value = value ?? !isSelected ? [id] : [];\n }\n }\n\n function step(offset: number) {\n if (props.multiple) {\n }\n\n if (!selected.value.length) {\n const item = items.find((item) => !item.disabled);\n item && (selected.value = [item.id]);\n } else {\n const currentId = selected.value[0];\n const currentIndex = items.findIndex((i) => i.id === currentId);\n\n let newIndex = (currentIndex + offset) % items.length;\n let newItem = items[newIndex];\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length;\n newItem = items[newIndex];\n }\n\n if (newItem.disabled) return;\n\n selected.value = [items[newIndex].id];\n }\n }\n\n const state: ChoiceProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(props, 'disabled'),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: number) => selected.value.includes(id),\n selectedClass: computed(() => props.selectedClass),\n items: computed(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n };\n\n provide(injectKey, state);\n\n return state;\n}\n\nfunction getItemIndex(items: UnwrapRef<ChoiceItem[]>, value: unknown) {\n const ids = getIds(items, [value]);\n\n if (!ids.length) return -1;\n\n return items.findIndex((item) => item.id === ids[0]);\n}\n\nfunction getIds(items: UnwrapRef<ChoiceItem[]>, modelValue: any[]) {\n const ids: number[] = [];\n\n modelValue.forEach((value) => {\n const item = items.find((item) => deepEqual(value, item.value));\n const itemByIndex = items[value];\n\n if (item?.value != null) {\n ids.push(item.id);\n } else if (itemByIndex != null) {\n ids.push(itemByIndex.id);\n }\n });\n\n return ids;\n}\n\nfunction getValues(items: UnwrapRef<ChoiceItem[]>, ids: any[]) {\n const values: unknown[] = [];\n\n ids.forEach((id) => {\n const itemIndex = items.findIndex((item) => item.id === id);\n if (~itemIndex) {\n const item = items[itemIndex];\n values.push(item.value != null ? item.value : itemIndex);\n }\n });\n\n return values;\n}\n"],"mappings":"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"}
package/lib/util/dom.mjs CHANGED
@@ -5,4 +5,16 @@ export function documentRoot(domNode) {
5
5
  }) !== document) return null;
6
6
  return root;
7
7
  }
8
+ export function hasElementMouseEvent(mouseEvent, element, include) {
9
+ if (!mouseEvent) {
10
+ return false;
11
+ }
12
+ const root = documentRoot(element);
13
+ if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot && root.host === mouseEvent.target) {
14
+ return false;
15
+ }
16
+ const elements = include ?? [];
17
+ elements.push(element);
18
+ return !elements.some(el => el?.contains(mouseEvent.target));
19
+ }
8
20
  //# sourceMappingURL=dom.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.mjs","names":["documentRoot","domNode","root","getRootNode","document","composed"],"sources":["../../src/util/dom.ts"],"sourcesContent":["export function documentRoot(domNode: Node): null | HTMLDocument | ShadowRoot {\n const root = domNode.getRootNode();\n if (root !== document && root.getRootNode({ composed: true }) !== document)\n return null;\n return root as HTMLDocument | ShadowRoot;\n}\n"],"mappings":"AAAA,OAAO,SAASA,YAAYA,CAACC,OAAa,EAAoC;EAC5E,MAAMC,IAAI,GAAGD,OAAO,CAACE,WAAW,CAAC,CAAC;EAClC,IAAID,IAAI,KAAKE,QAAQ,IAAIF,IAAI,CAACC,WAAW,CAAC;IAAEE,QAAQ,EAAE;EAAK,CAAC,CAAC,KAAKD,QAAQ,EACxE,OAAO,IAAI;EACb,OAAOF,IAAI;AACb"}
1
+ {"version":3,"file":"dom.mjs","names":["documentRoot","domNode","root","getRootNode","document","composed","hasElementMouseEvent","mouseEvent","element","include","ShadowRoot","host","target","elements","push","some","el","contains"],"sources":["../../src/util/dom.ts"],"sourcesContent":["export function documentRoot(domNode: Node): null | HTMLDocument | ShadowRoot {\n const root = domNode.getRootNode();\n if (root !== document && root.getRootNode({ composed: true }) !== document)\n return null;\n return root as HTMLDocument | ShadowRoot;\n}\n\nexport function hasElementMouseEvent(\n mouseEvent: Event,\n element: HTMLElement,\n include?: HTMLElement[],\n): boolean {\n if (!mouseEvent) {\n return false;\n }\n const root = documentRoot(element);\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === mouseEvent.target\n ) {\n return false;\n }\n const elements = include ?? [];\n elements.push(element);\n return !elements.some((el) => el?.contains(mouseEvent.target as Node));\n}\n"],"mappings":"AAAA,OAAO,SAASA,YAAYA,CAACC,OAAa,EAAoC;EAC5E,MAAMC,IAAI,GAAGD,OAAO,CAACE,WAAW,CAAC,CAAC;EAClC,IAAID,IAAI,KAAKE,QAAQ,IAAIF,IAAI,CAACC,WAAW,CAAC;IAAEE,QAAQ,EAAE;EAAK,CAAC,CAAC,KAAKD,QAAQ,EACxE,OAAO,IAAI;EACb,OAAOF,IAAI;AACb;AAEA,OAAO,SAASI,oBAAoBA,CAClCC,UAAiB,EACjBC,OAAoB,EACpBC,OAAuB,EACd;EACT,IAAI,CAACF,UAAU,EAAE;IACf,OAAO,KAAK;EACd;EACA,MAAML,IAAI,GAAGF,YAAY,CAACQ,OAAO,CAAC;EAClC,IACE,OAAOE,UAAU,KAAK,WAAW,IACjCR,IAAI,YAAYQ,UAAU,IAC1BR,IAAI,CAACS,IAAI,KAAKJ,UAAU,CAACK,MAAM,EAC/B;IACA,OAAO,KAAK;EACd;EACA,MAAMC,QAAQ,GAAGJ,OAAO,IAAI,EAAE;EAC9BI,QAAQ,CAACC,IAAI,CAACN,OAAO,CAAC;EACtB,OAAO,CAACK,QAAQ,CAACE,IAAI,CAAEC,EAAE,IAAKA,EAAE,EAAEC,QAAQ,CAACV,UAAU,CAACK,MAAc,CAAC,CAAC;AACxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"vue-component.mjs","names":["getCurrentInstance","hasOwnProperty","getSlot","vm","name","arguments","length","undefined","data","optional","$slots","slot","Function","filter","node","el","nodeType","getUid","uid","chooseProps","props","target","Object","keys","reduce","acc","prop","bindClasses","classes","boundClasses","Array","isArray","clas","getHtmlElement","$el","propsFactory","source","defaults","options","option","isObjectOption","objectOption","type","default"],"sources":["../../src/util/vue-component.ts"],"sourcesContent":["import type { IfAny } from '@vue/shared';\nimport type {\n ComponentObjectPropsOptions,\n ComponentPublicInstance,\n ExtractPropTypes,\n Prop,\n PropType,\n VNode,\n} from 'vue';\nimport { getCurrentInstance } from 'vue';\n\nimport { hasOwnProperty } from './common';\n\nexport function getSlot(\n vm: ComponentPublicInstance | any,\n // eslint-disable-next-line default-param-last\n name = 'default',\n data?: any | (() => any),\n optional = false,\n): VNode[] | undefined {\n if (vm.$slots?.[name]) {\n const slot = vm.$slots[name]!(data instanceof Function ? data() : data);\n return slot.filter((node: VNode) => {\n return node.el?.nodeType !== 8;\n });\n }\n return undefined;\n}\n\nexport function getUid() {\n const vm = getCurrentInstance();\n return vm?.uid;\n}\n\nexport function chooseProps<PropsOptions extends ComponentObjectPropsOptions>(\n props: any,\n target: PropsOptions,\n): ExtractPropTypes<PropsOptions> {\n return Object.keys(target).reduce((acc, prop) => {\n if (props && prop in props) {\n acc[prop as keyof ExtractPropTypes<PropsOptions>] = props[prop];\n }\n return acc;\n }, {} as ExtractPropTypes<PropsOptions>);\n}\n\nexport function bindClasses(\n classes: string | string[] | Record<string, any> | undefined,\n) {\n const boundClasses = {} as Record<string, boolean>;\n if (typeof classes === 'string') {\n boundClasses[classes] = true;\n } else if (Array.isArray(classes)) {\n (classes as string[]).reduce((acc, clas) => {\n acc[clas] = true;\n return acc;\n }, boundClasses);\n } else if (typeof classes === 'object') {\n Object.keys(classes).reduce((acc, clas) => {\n acc[clas] = !!classes[clas];\n return acc;\n }, boundClasses);\n }\n return boundClasses;\n}\n\nexport function getHtmlElement<N extends object | undefined>(\n node: N,\n): Exclude<N, ComponentPublicInstance> | HTMLElement {\n return node && hasOwnProperty(node, '$el')\n ? ((node as ComponentPublicInstance).$el as HTMLElement)\n : (node as HTMLElement);\n}\n\nexport function propsFactory<PropsOptions extends ComponentObjectPropsOptions>(\n props: PropsOptions,\n source: string,\n) {\n return <Defaults extends PartialKeys<PropsOptions> = {}>(\n defaults?: Defaults,\n ): OverwrittenPropOptions<PropsOptions, Defaults> => {\n return Object.keys(props).reduce<any>((options, prop) => {\n const option = props[prop];\n const isObjectOption =\n typeof option === 'object' && option != null && !Array.isArray(option);\n const objectOption = isObjectOption ? option : { type: option };\n if (defaults && prop in defaults) {\n options[prop] = {\n ...objectOption,\n default: defaults[prop],\n };\n } else {\n options[prop] = objectOption;\n }\n\n if (source && !options[prop].source) {\n options[prop].source = source;\n }\n return options;\n }, {} as PropsOptions);\n };\n}\n\ntype OverwrittenPropOptions<\n T extends ComponentObjectPropsOptions,\n D extends PartialKeys<T>,\n> = {\n [P in keyof T]-?: unknown extends D[P]\n ? T[P]\n : T[P] extends Record<string, unknown>\n ? Omit<T[P], 'type' | 'default'> & {\n type: FollowPropType<Pick<T[P], 'type'>, T[P], D[P]>;\n default: MergeDefault<T[P], D[P]>;\n }\n : {\n type: PropType<MergeDefault<P, D>>;\n default: MergeDefault<T[P], D[P]>;\n };\n};\n\ntype MergeDefault<T, D> = unknown extends D\n ? InferPropType<T>\n : NonNullable<InferPropType<T>> | D;\n\ntype FollowPropType<T, P, D> = [T] extends [PropType<unknown>]\n ? T\n : PropType<MergeDefault<P, D>>;\n\ntype PartialKeys<T> = { [P in keyof T]?: unknown };\n\n// Copied from Vue\ntype InferPropType<T> = [T] extends [null]\n ? any // null & true would fail to infer\n : [T] extends [{ type: null | true }]\n ? // As TS issue https://github.com/Microsoft/TypeScript/issues/14829\n // somehow `ObjectConstructor` when inferred from { (): T } becomes `any`\n // `BooleanConstructor` when inferred from PropConstructor(with PropMethod) becomes `Boolean`\n any\n : [T] extends [ObjectConstructor | { type: ObjectConstructor }]\n ? Record<string, any>\n : [T] extends [BooleanConstructor | { type: BooleanConstructor }]\n ? boolean\n : [T] extends [DateConstructor | { type: DateConstructor }]\n ? Date\n : [T] extends [(infer U)[] | { type: (infer U)[] }]\n ? U extends DateConstructor\n ? Date | InferPropType<U>\n : InferPropType<U>\n : [T] extends [Prop<infer V, infer D>]\n ? unknown extends V\n ? IfAny<V, V, D>\n : V\n : T;\n"],"mappings":"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"}
1
+ {"version":3,"file":"vue-component.mjs","names":["getCurrentInstance","hasOwnProperty","getSlot","vm","name","arguments","length","undefined","data","optional","$slots","slot","Function","filter","node","el","nodeType","getUid","uid","chooseProps","props","target","Object","keys","reduce","acc","prop","bindClasses","classes","boundClasses","Array","isArray","clas","getHtmlElement","$el","propsFactory","source","defaults","options","option","isObjectOption","objectOption","type","default"],"sources":["../../src/util/vue-component.ts"],"sourcesContent":["import type { IfAny } from '@vue/shared';\r\nimport type {\r\n ComponentObjectPropsOptions,\r\n ComponentPublicInstance,\r\n ExtractPropTypes,\r\n Prop,\r\n PropType,\r\n VNode,\r\n} from 'vue';\r\nimport { getCurrentInstance } from 'vue';\r\n\r\nimport { hasOwnProperty } from './common';\r\n\r\nexport function getSlot(\r\n vm: ComponentPublicInstance | any,\r\n // eslint-disable-next-line default-param-last\r\n name = 'default',\r\n data?: any | (() => any),\r\n optional = false,\r\n): VNode[] | undefined {\r\n if (vm.$slots?.[name]) {\r\n const slot = vm.$slots[name]!(data instanceof Function ? data() : data);\r\n return slot.filter((node: VNode) => {\r\n return node.el?.nodeType !== 8;\r\n });\r\n }\r\n return undefined;\r\n}\r\n\r\nexport function getUid() {\r\n const vm = getCurrentInstance();\r\n return vm?.uid;\r\n}\r\n\r\nexport function chooseProps<PropsOptions extends ComponentObjectPropsOptions>(\r\n props: any,\r\n target: PropsOptions,\r\n): ExtractPropTypes<PropsOptions> {\r\n return Object.keys(target).reduce((acc, prop) => {\r\n if (props && prop in props) {\r\n acc[prop as keyof ExtractPropTypes<PropsOptions>] = props[prop];\r\n }\r\n return acc;\r\n }, {} as ExtractPropTypes<PropsOptions>);\r\n}\r\n\r\nexport function bindClasses(\r\n classes: string | string[] | Record<string, any> | undefined,\r\n) {\r\n const boundClasses = {} as Record<string, boolean>;\r\n if (typeof classes === 'string') {\r\n boundClasses[classes] = true;\r\n } else if (Array.isArray(classes)) {\r\n (classes as string[]).reduce((acc, clas) => {\r\n acc[clas] = true;\r\n return acc;\r\n }, boundClasses);\r\n } else if (typeof classes === 'object') {\r\n Object.keys(classes).reduce((acc, clas) => {\r\n acc[clas] = !!classes[clas];\r\n return acc;\r\n }, boundClasses);\r\n }\r\n return boundClasses;\r\n}\r\n\r\nexport function getHtmlElement<N extends object | undefined>(\r\n node: N,\r\n): Exclude<N, ComponentPublicInstance> | HTMLElement {\r\n return node && hasOwnProperty(node, '$el')\r\n ? ((node as ComponentPublicInstance).$el as HTMLElement)\r\n : (node as HTMLElement);\r\n}\r\n\r\nexport function propsFactory<PropsOptions extends ComponentObjectPropsOptions>(\r\n props: PropsOptions,\r\n source: string,\r\n) {\r\n return <Defaults extends PartialKeys<PropsOptions> = {}>(\r\n defaults?: Defaults,\r\n ): OverwrittenPropOptions<PropsOptions, Defaults> => {\r\n return Object.keys(props).reduce<any>((options, prop) => {\r\n const option = props[prop];\r\n const isObjectOption =\r\n typeof option === 'object' && option != null && !Array.isArray(option);\r\n const objectOption = isObjectOption ? option : { type: option };\r\n if (defaults && prop in defaults) {\r\n options[prop] = {\r\n ...objectOption,\r\n default: defaults[prop],\r\n };\r\n } else {\r\n options[prop] = objectOption;\r\n }\r\n\r\n if (source && !options[prop].source) {\r\n options[prop].source = source;\r\n }\r\n return options;\r\n }, {} as PropsOptions);\r\n };\r\n}\r\n\r\ntype OverwrittenPropOptions<\r\n T extends ComponentObjectPropsOptions,\r\n D extends PartialKeys<T>,\r\n> = {\r\n [P in keyof T]-?: unknown extends D[P]\r\n ? T[P]\r\n : T[P] extends Record<string, unknown>\r\n ? Omit<T[P], 'type' | 'default'> & {\r\n type: FollowPropType<Pick<T[P], 'type'>, T[P], D[P]>;\r\n default: MergeDefault<T[P], D[P]>;\r\n }\r\n : {\r\n type: PropType<MergeDefault<P, D>>;\r\n default: MergeDefault<T[P], D[P]>;\r\n };\r\n};\r\n\r\ntype MergeDefault<T, D> = unknown extends D\r\n ? InferPropType<T>\r\n : NonNullable<InferPropType<T>> | D;\r\n\r\ntype FollowPropType<T, P, D> = [T] extends [PropType<unknown>]\r\n ? T\r\n : PropType<MergeDefault<P, D>>;\r\n\r\ntype PartialKeys<T> = { [P in keyof T]?: unknown };\r\n\r\n// Copied from Vue\r\ntype InferPropType<T> = [T] extends [null]\r\n ? any // null & true would fail to infer\r\n : [T] extends [{ type: null | true }]\r\n ? // As TS issue https://github.com/Microsoft/TypeScript/issues/14829\r\n // somehow `ObjectConstructor` when inferred from { (): T } becomes `any`\r\n // `BooleanConstructor` when inferred from PropConstructor(with PropMethod) becomes `Boolean`\r\n any\r\n : [T] extends [ObjectConstructor | { type: ObjectConstructor }]\r\n ? Record<string, any>\r\n : [T] extends [BooleanConstructor | { type: BooleanConstructor }]\r\n ? boolean\r\n : [T] extends [DateConstructor | { type: DateConstructor }]\r\n ? Date\r\n : [T] extends [(infer U)[] | { type: (infer U)[] }]\r\n ? U extends DateConstructor\r\n ? Date | InferPropType<U>\r\n : InferPropType<U>\r\n : [T] extends [Prop<infer V, infer D>]\r\n ? unknown extends V\r\n ? IfAny<V, V, D>\r\n : V\r\n : T;\r\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,108 +1,108 @@
1
- {
2
- "name": "yuyeon",
3
- "version": "0.0.19",
4
- "keywords": [
5
- "UI Library",
6
- "Vue"
7
- ],
8
- "repository": {
9
- "type": "git",
10
- "url": "https://github.com/yuyeonUI/yuyeon",
11
- "directory": "packages/yuyeon"
12
- },
13
- "author": "yeonyew",
14
- "license": "Apache-2.0",
15
- "files": [
16
- "dist/",
17
- "lib/",
18
- "types/"
19
- ],
20
- "type": "module",
21
- "exports": {
22
- ".": {
23
- "types": "./types/index.d.ts",
24
- "default": "./lib/index.mjs"
25
- },
26
- "./styles/*": "./lib/styles/*",
27
- "./lib": {
28
- "types": "./types/index.d.ts"
29
- },
30
- "./components": {
31
- "types": "./types/components/index.d.ts",
32
- "module": "./lib/components/index.mjs"
33
- },
34
- "./components/*": "./lib/components/*/index.mjs",
35
- "./types/*": "./types/*",
36
- "./*": "./*"
37
- },
38
- "main": "lib/index.mjs",
39
- "module": "lib/index.mjs",
40
- "types": "types/index.d.ts",
41
- "typesVersions": {
42
- "*": {
43
- "lib/index.mjs": [
44
- "types/index.d.ts"
45
- ],
46
- "*": [
47
- "*",
48
- "types/*",
49
- "types/*.d.ts",
50
- "types/*/index.d.ts"
51
- ]
52
- }
53
- },
54
- "scripts": {
55
- "build": "vue-tsc && vite build",
56
- "build:lib": "cross-env NODE_ENV=lib babel src --out-dir lib --source-maps --extensions \".ts\",\".tsx\" --copy-files --no-copy-ignored --out-file-extension .mjs"
57
- },
58
- "dependencies": {
59
- "motion": "^10.15.5"
60
- },
61
- "devDependencies": {
62
- "@babel/cli": "^7.21.0",
63
- "@babel/core": "^7.21.3",
64
- "@babel/preset-env": "^7.20.2",
65
- "@babel/preset-typescript": "^7.21.0",
66
- "@rollup/plugin-alias": "^4.0.3",
67
- "@rollup/plugin-babel": "^6.0.3",
68
- "@rollup/plugin-node-resolve": "^15.0.1",
69
- "@rollup/plugin-typescript": "^11.0.0",
70
- "@trivago/prettier-plugin-sort-imports": "^4.1.1",
71
- "@types/jest": "^28.1.8",
72
- "@types/node": "^18.15.11",
73
- "@types/resize-observer-browser": "^0.1.7",
74
- "@vitejs/plugin-vue": "^4.2.3",
75
- "@vitejs/plugin-vue-jsx": "^3.0.1",
76
- "@vue/babel-plugin-jsx": "^1.1.1",
77
- "@vue/compiler-sfc": "^3.3.4",
78
- "@vue/runtime-core": "^3.3.4",
79
- "@vue/shared": "^3.3.4",
80
- "@vue/test-utils": "2.3.2",
81
- "autoprefixer": "^10.4.14",
82
- "babel-plugin-add-import-extension": "1.5.1",
83
- "babel-plugin-module-resolver": "^5.0.0",
84
- "babel-plugin-transform-define": "^2.1.0",
85
- "babel-polyfill": "^6.26.0",
86
- "concurrently": "^4.1.1",
87
- "cross-env": "^7.0.3",
88
- "rollup": "^3.20.2",
89
- "rollup-plugin-dts": "^5.3.0",
90
- "rollup-plugin-sass": "^1.2.19",
91
- "rollup-plugin-sourcemaps": "^0.6.3",
92
- "rollup-plugin-terser": "^7.0.2",
93
- "sass": "^1.63.3",
94
- "vite": "^4.3.8",
95
- "vite-plugin-dts": "^2.2.0",
96
- "vue": "^3.3.4",
97
- "vue-tsc": "^1.2.0"
98
- },
99
- "peerDependencies": {
100
- "vue": "^3.3.0",
101
- "vue-i18n": "^9.0.0"
102
- },
103
- "peerDependenciesMeta": {
104
- "vue-i18n": {
105
- "optional": true
106
- }
107
- }
108
- }
1
+ {
2
+ "name": "yuyeon",
3
+ "version": "0.0.21",
4
+ "keywords": [
5
+ "UI Library",
6
+ "Vue"
7
+ ],
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/yuyeonUI/yuyeon",
11
+ "directory": "packages/yuyeon"
12
+ },
13
+ "author": "yeonyew",
14
+ "license": "Apache-2.0",
15
+ "files": [
16
+ "dist/",
17
+ "lib/",
18
+ "types/"
19
+ ],
20
+ "type": "module",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./types/index.d.ts",
24
+ "default": "./lib/index.mjs"
25
+ },
26
+ "./styles/*": "./lib/styles/*",
27
+ "./lib": {
28
+ "types": "./types/index.d.ts"
29
+ },
30
+ "./components": {
31
+ "types": "./types/components/index.d.ts",
32
+ "module": "./lib/components/index.mjs"
33
+ },
34
+ "./components/*": "./lib/components/*/index.mjs",
35
+ "./types/*": "./types/*",
36
+ "./*": "./*"
37
+ },
38
+ "main": "lib/index.mjs",
39
+ "module": "lib/index.mjs",
40
+ "types": "types/index.d.ts",
41
+ "typesVersions": {
42
+ "*": {
43
+ "lib/index.mjs": [
44
+ "types/index.d.ts"
45
+ ],
46
+ "*": [
47
+ "*",
48
+ "types/*",
49
+ "types/*.d.ts",
50
+ "types/*/index.d.ts"
51
+ ]
52
+ }
53
+ },
54
+ "scripts": {
55
+ "build": "vue-tsc && vite build",
56
+ "build:lib": "cross-env NODE_ENV=lib babel src --out-dir lib --source-maps --extensions \".ts\",\".tsx\" --copy-files --no-copy-ignored --out-file-extension .mjs"
57
+ },
58
+ "dependencies": {
59
+ "motion": "^10.15.5"
60
+ },
61
+ "devDependencies": {
62
+ "@babel/cli": "^7.21.0",
63
+ "@babel/core": "^7.21.3",
64
+ "@babel/preset-env": "^7.20.2",
65
+ "@babel/preset-typescript": "^7.21.0",
66
+ "@rollup/plugin-alias": "^4.0.3",
67
+ "@rollup/plugin-babel": "^6.0.3",
68
+ "@rollup/plugin-node-resolve": "^15.0.1",
69
+ "@rollup/plugin-typescript": "^11.0.0",
70
+ "@trivago/prettier-plugin-sort-imports": "^4.1.1",
71
+ "@types/jest": "^28.1.8",
72
+ "@types/node": "^18.15.11",
73
+ "@types/resize-observer-browser": "^0.1.7",
74
+ "@vitejs/plugin-vue": "^4.2.3",
75
+ "@vitejs/plugin-vue-jsx": "^3.0.1",
76
+ "@vue/babel-plugin-jsx": "^1.1.1",
77
+ "@vue/compiler-sfc": "^3.3.4",
78
+ "@vue/runtime-core": "^3.3.4",
79
+ "@vue/shared": "^3.3.4",
80
+ "@vue/test-utils": "2.3.2",
81
+ "autoprefixer": "^10.4.14",
82
+ "babel-plugin-add-import-extension": "1.5.1",
83
+ "babel-plugin-module-resolver": "^5.0.0",
84
+ "babel-plugin-transform-define": "^2.1.0",
85
+ "babel-polyfill": "^6.26.0",
86
+ "concurrently": "^4.1.1",
87
+ "cross-env": "^7.0.3",
88
+ "rollup": "^3.20.2",
89
+ "rollup-plugin-dts": "^5.3.0",
90
+ "rollup-plugin-sass": "^1.2.19",
91
+ "rollup-plugin-sourcemaps": "^0.6.3",
92
+ "rollup-plugin-terser": "^7.0.2",
93
+ "sass": "^1.63.3",
94
+ "vite": "^4.3.8",
95
+ "vite-plugin-dts": "^2.2.0",
96
+ "vue": "^3.3.4",
97
+ "vue-tsc": "^1.2.0"
98
+ },
99
+ "peerDependencies": {
100
+ "vue": "^3.3.0",
101
+ "vue-i18n": "^9.0.0"
102
+ },
103
+ "peerDependenciesMeta": {
104
+ "vue-i18n": {
105
+ "optional": true
106
+ }
107
+ }
108
+ }
@@ -76,6 +76,18 @@ export declare const YDialog: import("vue").DefineComponent<{
76
76
  type: PropType<boolean>;
77
77
  default: boolean;
78
78
  };
79
+ openOnHover: {
80
+ type: PropType<boolean>;
81
+ default: boolean;
82
+ };
83
+ openDelay: {
84
+ type: PropType<number>;
85
+ default: number;
86
+ };
87
+ closeDelay: {
88
+ type: PropType<number>;
89
+ default: number;
90
+ };
79
91
  }, {
80
92
  complementClickOption: {
81
93
  handler: (mouseEvent: MouseEvent) => void;
@@ -85,6 +97,7 @@ export declare const YDialog: import("vue").DefineComponent<{
85
97
  layerGroup: import("vue").ComputedRef<string | HTMLElement>;
86
98
  active: import("vue").WritableComputedRef<boolean>;
87
99
  rendered: import("vue").ComputedRef<boolean>;
100
+ lazyValue: import("vue").ComputedRef<any>;
88
101
  onAfterUpdate: () => void;
89
102
  scrim$: import("vue").Ref<HTMLElement | undefined>;
90
103
  content$: import("vue").Ref<HTMLElement | undefined>;
@@ -1722,6 +1735,18 @@ export declare const YDialog: import("vue").DefineComponent<{
1722
1735
  type: PropType<boolean>;
1723
1736
  default: boolean;
1724
1737
  };
1738
+ openOnHover: {
1739
+ type: PropType<boolean>;
1740
+ default: boolean;
1741
+ };
1742
+ openDelay: {
1743
+ type: PropType<number>;
1744
+ default: number;
1745
+ };
1746
+ closeDelay: {
1747
+ type: PropType<number>;
1748
+ default: number;
1749
+ };
1725
1750
  }>> & {
1726
1751
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
1727
1752
  onAfterLeave?: (() => any) | undefined;
@@ -1729,6 +1754,9 @@ export declare const YDialog: import("vue").DefineComponent<{
1729
1754
  }, {
1730
1755
  disabled: boolean;
1731
1756
  contentStyles: import("vue").CSSProperties;
1757
+ openOnHover: boolean;
1758
+ openDelay: number;
1759
+ closeDelay: number;
1732
1760
  coordinateStrategy: "levitation" | "arrangement" | import("../../composables/coordinate").CoordinateStrategyFn;
1733
1761
  position: "default" | "top" | "end" | "right" | "bottom" | "left" | "start";
1734
1762
  align: "end" | "start" | "center";
@@ -23,6 +23,9 @@ export declare const pressYLayerProps: <Defaults extends {
23
23
  modal?: unknown;
24
24
  contentStyles?: unknown;
25
25
  disabled?: unknown;
26
+ openOnHover?: unknown;
27
+ openDelay?: unknown;
28
+ closeDelay?: unknown;
26
29
  } = {}>(defaults?: Defaults | undefined) => {
27
30
  minWidth: unknown extends Defaults["minWidth"] ? PropType<string | number> : {
28
31
  type: PropType<unknown extends Defaults ? "minWidth" : "minWidth" | Defaults>;
@@ -204,6 +207,36 @@ export declare const pressYLayerProps: <Defaults extends {
204
207
  type: PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
205
208
  default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
206
209
  };
210
+ openOnHover: unknown extends Defaults["openOnHover"] ? {
211
+ type: PropType<boolean>;
212
+ default: boolean;
213
+ } : Omit<{
214
+ type: PropType<boolean>;
215
+ default: boolean;
216
+ }, "default" | "type"> & {
217
+ type: PropType<unknown extends Defaults["openOnHover"] ? boolean : boolean | Defaults["openOnHover"]>;
218
+ default: unknown extends Defaults["openOnHover"] ? boolean : boolean | Defaults["openOnHover"];
219
+ };
220
+ openDelay: unknown extends Defaults["openDelay"] ? {
221
+ type: PropType<number>;
222
+ default: number;
223
+ } : Omit<{
224
+ type: PropType<number>;
225
+ default: number;
226
+ }, "default" | "type"> & {
227
+ type: PropType<unknown extends Defaults["openDelay"] ? number : number | Defaults["openDelay"]>;
228
+ default: unknown extends Defaults["openDelay"] ? number : number | Defaults["openDelay"];
229
+ };
230
+ closeDelay: unknown extends Defaults["closeDelay"] ? {
231
+ type: PropType<number>;
232
+ default: number;
233
+ } : Omit<{
234
+ type: PropType<number>;
235
+ default: number;
236
+ }, "default" | "type"> & {
237
+ type: PropType<unknown extends Defaults["closeDelay"] ? number : number | Defaults["closeDelay"]>;
238
+ default: unknown extends Defaults["closeDelay"] ? number : number | Defaults["closeDelay"];
239
+ };
207
240
  };
208
241
  export declare const YLayer: import("vue").DefineComponent<{
209
242
  minWidth: PropType<string | number>;
@@ -269,6 +302,18 @@ export declare const YLayer: import("vue").DefineComponent<{
269
302
  type: PropType<boolean>;
270
303
  default: boolean;
271
304
  };
305
+ openOnHover: {
306
+ type: PropType<boolean>;
307
+ default: boolean;
308
+ };
309
+ openDelay: {
310
+ type: PropType<number>;
311
+ default: number;
312
+ };
313
+ closeDelay: {
314
+ type: PropType<number>;
315
+ default: number;
316
+ };
272
317
  }, {
273
318
  complementClickOption: {
274
319
  handler: (mouseEvent: MouseEvent) => void;
@@ -278,6 +323,7 @@ export declare const YLayer: import("vue").DefineComponent<{
278
323
  layerGroup: import("vue").ComputedRef<string | HTMLElement>;
279
324
  active: import("vue").WritableComputedRef<boolean>;
280
325
  rendered: import("vue").ComputedRef<boolean>;
326
+ lazyValue: import("vue").ComputedRef<any>;
281
327
  onAfterUpdate: () => void;
282
328
  scrim$: import("vue").Ref<HTMLElement | undefined>;
283
329
  content$: import("vue").Ref<HTMLElement | undefined>;
@@ -1915,6 +1961,18 @@ export declare const YLayer: import("vue").DefineComponent<{
1915
1961
  type: PropType<boolean>;
1916
1962
  default: boolean;
1917
1963
  };
1964
+ openOnHover: {
1965
+ type: PropType<boolean>;
1966
+ default: boolean;
1967
+ };
1968
+ openDelay: {
1969
+ type: PropType<number>;
1970
+ default: number;
1971
+ };
1972
+ closeDelay: {
1973
+ type: PropType<number>;
1974
+ default: number;
1975
+ };
1918
1976
  }>> & {
1919
1977
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
1920
1978
  onAfterLeave?: (() => any) | undefined;
@@ -1922,6 +1980,9 @@ export declare const YLayer: import("vue").DefineComponent<{
1922
1980
  }, {
1923
1981
  disabled: boolean;
1924
1982
  contentStyles: CSSProperties;
1983
+ openOnHover: boolean;
1984
+ openDelay: number;
1985
+ closeDelay: number;
1925
1986
  coordinateStrategy: "levitation" | "arrangement" | import("../../composables/coordinate").CoordinateStrategyFn;
1926
1987
  position: "default" | "top" | "end" | "right" | "bottom" | "left" | "start";
1927
1988
  align: "end" | "start" | "center";
@@ -0,0 +1,4 @@
1
+ export declare function useDelay(props: any, callback?: (active: boolean) => void): {
2
+ startOpenDelay: () => Promise<boolean>;
3
+ startCloseDelay: () => Promise<boolean>;
4
+ };
@@ -0,0 +1,16 @@
1
+ import type { InjectionKey, Ref } from 'vue';
2
+ import { YLayer } from './YLayer';
3
+ interface ActiveStackProvide {
4
+ push: (instance: any) => void;
5
+ pop: (instance?: any) => void;
6
+ clear: () => void;
7
+ $el: Ref<typeof YLayer | undefined>;
8
+ }
9
+ export declare const YUYEON_ACTIVE_STACK_KEY: InjectionKey<ActiveStackProvide>;
10
+ export declare function useActiveStack($el: Ref<typeof YLayer | undefined>, active: Ref<boolean>, sequential?: Ref<boolean | undefined>): {
11
+ push: (instance: any) => void;
12
+ pop: (instance?: any) => void;
13
+ parent: ActiveStackProvide | null;
14
+ children: import("vue").ShallowRef<any[]>;
15
+ };
16
+ export {};