yuyeon 0.1.2-rc.2 → 0.2.1-rc.1

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.
Files changed (171) hide show
  1. package/dist/yuyeon.js +2592 -2523
  2. package/dist/yuyeon.umd.cjs +11 -11
  3. package/lib/abstract/items.mjs +1 -1
  4. package/lib/abstract/items.mjs.map +1 -1
  5. package/lib/components/alert/YAlert.mjs +4 -3
  6. package/lib/components/alert/YAlert.mjs.map +1 -1
  7. package/lib/components/badge/YBadge.mjs +1 -1
  8. package/lib/components/badge/YBadge.mjs.map +1 -1
  9. package/lib/components/button/YButton.mjs +3 -3
  10. package/lib/components/button/YButton.mjs.map +1 -1
  11. package/lib/components/checkbox/YCheckbox.mjs +1 -1
  12. package/lib/components/checkbox/YCheckbox.mjs.map +1 -1
  13. package/lib/components/date-picker/YDateCalendar.mjs +1 -1
  14. package/lib/components/date-picker/YDateCalendar.mjs.map +1 -1
  15. package/lib/components/date-picker/YDatePicker.mjs +1 -1
  16. package/lib/components/date-picker/YDatePicker.mjs.map +1 -1
  17. package/lib/components/date-picker/YDatePickerControl.mjs +1 -1
  18. package/lib/components/date-picker/YDatePickerControl.mjs.map +1 -1
  19. package/lib/components/date-picker/YMonthPicker.mjs +1 -1
  20. package/lib/components/date-picker/YMonthPicker.mjs.map +1 -1
  21. package/lib/components/date-picker/YYearPicker.mjs +1 -1
  22. package/lib/components/date-picker/YYearPicker.mjs.map +1 -1
  23. package/lib/components/dialog/YDialog.mjs +1 -1
  24. package/lib/components/dialog/YDialog.mjs.map +1 -1
  25. package/lib/components/dropdown/YDropdown.mjs +1 -1
  26. package/lib/components/dropdown/YDropdown.mjs.map +1 -1
  27. package/lib/components/field-input/YFieldInput.mjs +1 -1
  28. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  29. package/lib/components/icon/YIcon.mjs +1 -1
  30. package/lib/components/icon/YIcon.mjs.map +1 -1
  31. package/lib/components/img/YImg.mjs +5 -5
  32. package/lib/components/img/YImg.mjs.map +1 -1
  33. package/lib/components/input/YInput.mjs +1 -1
  34. package/lib/components/input/YInput.mjs.map +1 -1
  35. package/lib/components/ip-field/YIpv4Field.mjs +1 -1
  36. package/lib/components/ip-field/YIpv4Field.mjs.map +1 -1
  37. package/lib/components/layer/YLayer.mjs +1 -1
  38. package/lib/components/layer/YLayer.mjs.map +1 -1
  39. package/lib/components/layer/base.mjs +1 -1
  40. package/lib/components/layer/base.mjs.map +1 -1
  41. package/lib/components/layer/content.mjs +1 -1
  42. package/lib/components/layer/content.mjs.map +1 -1
  43. package/lib/components/layer/scroll-strategies.mjs +1 -1
  44. package/lib/components/layer/scroll-strategies.mjs.map +1 -1
  45. package/lib/components/list/YList.mjs +1 -1
  46. package/lib/components/list/YList.mjs.map +1 -1
  47. package/lib/components/list/YListItem.mjs +1 -1
  48. package/lib/components/list/YListItem.mjs.map +1 -1
  49. package/lib/components/menu/YMenu.mjs +1 -1
  50. package/lib/components/menu/YMenu.mjs.map +1 -1
  51. package/lib/components/pagination/YPagination.mjs +1 -1
  52. package/lib/components/pagination/YPagination.mjs.map +1 -1
  53. package/lib/components/select/YSelect.mjs +1 -1
  54. package/lib/components/select/YSelect.mjs.map +1 -1
  55. package/lib/components/snackbar/YSnackbar.mjs +6 -6
  56. package/lib/components/snackbar/YSnackbar.mjs.map +1 -1
  57. package/lib/components/tab/YTabs.mjs +1 -1
  58. package/lib/components/tab/YTabs.mjs.map +1 -1
  59. package/lib/components/table/YDataTable.mjs +1 -1
  60. package/lib/components/table/YDataTable.mjs.map +1 -1
  61. package/lib/components/table/YDataTableBody.mjs +1 -1
  62. package/lib/components/table/YDataTableBody.mjs.map +1 -1
  63. package/lib/components/table/YDataTableHead.mjs +1 -1
  64. package/lib/components/table/YDataTableHead.mjs.map +1 -1
  65. package/lib/components/table/YDataTableRow.mjs +1 -1
  66. package/lib/components/table/YDataTableRow.mjs.map +1 -1
  67. package/lib/components/table/YDataTableServer.mjs +1 -1
  68. package/lib/components/table/YDataTableServer.mjs.map +1 -1
  69. package/lib/components/table/YTable.mjs +1 -1
  70. package/lib/components/table/YTable.mjs.map +1 -1
  71. package/lib/components/table/composibles/header.mjs +1 -1
  72. package/lib/components/table/composibles/header.mjs.map +1 -1
  73. package/lib/components/table/composibles/items.mjs +1 -1
  74. package/lib/components/table/composibles/items.mjs.map +1 -1
  75. package/lib/components/table/composibles/pagination.mjs +1 -1
  76. package/lib/components/table/composibles/pagination.mjs.map +1 -1
  77. package/lib/components/table/composibles/selection.mjs +1 -1
  78. package/lib/components/table/composibles/selection.mjs.map +1 -1
  79. package/lib/components/table/composibles/sorting.mjs +1 -1
  80. package/lib/components/table/composibles/sorting.mjs.map +1 -1
  81. package/lib/components/tooltip/YTooltip.mjs +1 -1
  82. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  83. package/lib/components/tree-view/YTreeView.mjs +1 -1
  84. package/lib/components/tree-view/YTreeView.mjs.map +1 -1
  85. package/lib/components/tree-view/YTreeViewNode.mjs +1 -1
  86. package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
  87. package/lib/composables/choice.mjs +1 -1
  88. package/lib/composables/choice.mjs.map +1 -1
  89. package/lib/composables/coordinate/index.mjs +1 -1
  90. package/lib/composables/coordinate/index.mjs.map +1 -1
  91. package/lib/composables/date/index.mjs +1 -1
  92. package/lib/composables/date/index.mjs.map +1 -1
  93. package/lib/composables/defaults/index.mjs +99 -0
  94. package/lib/composables/defaults/index.mjs.map +1 -0
  95. package/lib/composables/defaults/share.mjs +2 -0
  96. package/lib/composables/defaults/share.mjs.map +1 -0
  97. package/lib/composables/defaults/types.mjs +2 -0
  98. package/lib/composables/defaults/types.mjs.map +1 -0
  99. package/lib/composables/dimension.mjs +1 -1
  100. package/lib/composables/dimension.mjs.map +1 -1
  101. package/lib/composables/focus.mjs +1 -1
  102. package/lib/composables/focus.mjs.map +1 -1
  103. package/lib/composables/form.mjs +1 -1
  104. package/lib/composables/form.mjs.map +1 -1
  105. package/lib/composables/i18n/index.mjs +2 -2
  106. package/lib/composables/i18n/index.mjs.map +1 -1
  107. package/lib/composables/list-items.mjs +1 -1
  108. package/lib/composables/list-items.mjs.map +1 -1
  109. package/lib/composables/resize-observer.mjs +1 -1
  110. package/lib/composables/resize-observer.mjs.map +1 -1
  111. package/lib/composables/theme/index.mjs +2 -2
  112. package/lib/composables/theme/index.mjs.map +1 -1
  113. package/lib/index.mjs +6 -1
  114. package/lib/index.mjs.map +1 -1
  115. package/lib/util/component/component.mjs +21 -0
  116. package/lib/util/component/component.mjs.map +1 -0
  117. package/lib/util/component/index.mjs +64 -0
  118. package/lib/util/component/index.mjs.map +1 -0
  119. package/lib/util/component/inject-self.mjs +10 -0
  120. package/lib/util/component/inject-self.mjs.map +1 -0
  121. package/lib/util/component/props.mjs +41 -0
  122. package/lib/util/component/props.mjs.map +1 -0
  123. package/lib/util/component/types.mjs +2 -0
  124. package/lib/util/component/types.mjs.map +1 -0
  125. package/lib/util/index.mjs +1 -1
  126. package/lib/util/index.mjs.map +1 -1
  127. package/lib/util/vue-component/index.mjs +63 -0
  128. package/lib/util/vue-component/index.mjs.map +1 -0
  129. package/lib/util/vue-component/props.mjs +37 -0
  130. package/lib/util/vue-component/props.mjs.map +1 -0
  131. package/lib/util/vue-component/types.mjs +2 -0
  132. package/lib/util/vue-component/types.mjs.map +1 -0
  133. package/package.json +1 -1
  134. package/types/components/alert/YAlert.d.ts +2 -13
  135. package/types/components/badge/YBadge.d.ts +3 -3
  136. package/types/components/date-picker/YDateCalendar.d.ts +7 -7
  137. package/types/components/date-picker/YDatePicker.d.ts +22 -22
  138. package/types/components/date-picker/YMonthPicker.d.ts +3 -3
  139. package/types/components/date-picker/YYearPicker.d.ts +3 -3
  140. package/types/components/dialog/YDialog.d.ts +42 -42
  141. package/types/components/dropdown/YDropdown.d.ts +18 -18
  142. package/types/components/field-input/YFieldInput.d.ts +3 -3
  143. package/types/components/form/YForm.d.ts +1 -1
  144. package/types/components/hover/YHover.d.ts +1 -1
  145. package/types/components/icon/YIcon.d.ts +4 -4
  146. package/types/components/input/YInput.d.ts +3 -3
  147. package/types/components/ip-field/YIpv4Field.d.ts +2 -2
  148. package/types/components/layer/YLayer.d.ts +5 -5
  149. package/types/components/menu/YMenu.d.ts +7 -7
  150. package/types/components/pagination/YPagination.d.ts +20 -20
  151. package/types/components/select/YSelect.d.ts +93 -93
  152. package/types/components/snackbar/YSnackbar.d.ts +29 -9
  153. package/types/components/tab/YTabs.d.ts +1 -1
  154. package/types/components/textarea/YTextarea.d.ts +6 -6
  155. package/types/components/tooltip/YTooltip.d.ts +9 -9
  156. package/types/components/tree-view/YTreeView.d.ts +2 -2
  157. package/types/composables/coordinate/index.d.ts +2 -2
  158. package/types/composables/defaults/index.d.ts +11 -0
  159. package/types/composables/defaults/share.d.ts +4 -0
  160. package/types/composables/defaults/types.d.ts +12 -0
  161. package/types/composables/form.d.ts +1 -1
  162. package/types/globals.d.ts +1 -0
  163. package/types/util/component/component.d.ts +4 -0
  164. package/types/util/component/index.d.ts +11 -0
  165. package/types/util/component/inject-self.d.ts +3 -0
  166. package/types/util/component/props.d.ts +32 -0
  167. package/types/util/component/types.d.ts +21 -0
  168. package/types/util/index.d.ts +1 -1
  169. package/types/util/vue-component/index.d.ts +10 -0
  170. package/types/util/vue-component/props.d.ts +31 -0
  171. package/types/util/vue-component/types.d.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"YIpv4Field.mjs","names":["computed","defineComponent","mergeProps","nextTick","reactive","ref","toRef","watch","useModelDuplex","useRender","chooseProps","YInput","pressYInputPropsOptions","INHERIT_NAME","NAME","IP_PART_REGEX","YIpv4Field","name","props","fixedUntil","Number","text","Boolean","subnet","autoFillSubnet","String","emits","_v","tab","_id","focus","blur","setup","_ref","slots","emit","field$","yInput$","input$","model","parts","lazyParts","isFocused","fieldFocused","testSubnetRange","value","test","onInput","id","event","target","neoValue","oldValue","pass","neo","toString","nextChange","length","focusNextPart","emitInput","onFocus","_event","push","onBlur","setTimeout","forEach","index","splice","onChange","onKeydown","$target","key","focusPrevPart","shiftKey","selectionStart","preventDefault","onTab","onKeyup","putParts","tempParts","lastIndexOf","sub","substring","split","part","undefined","onPaste","content","clipboardData","window","getData","isNaN","whenBlur","currentId","nextId","$input","prevId","joinParts","focused","immediate","_createVNode","_mergeProps","leading","_len","arguments","args","Array","_key","default","defaultProps","attrId","map","inputValue","el","readonly","loading","disabled","$event","trailing","_len2","_key2","label"],"sources":["../../../src/components/ip-field/YIpv4Field.tsx"],"sourcesContent":["import {\n PropType,\n computed,\n defineComponent,\n mergeProps,\n nextTick,\n reactive,\n ref,\n toRef,\n watch,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { chooseProps } from '../../util/vue-component';\nimport { YInput, pressYInputPropsOptions } from '../input';\n\nimport './YIpField.scss';\n\nconst INHERIT_NAME = 'y-ip-field';\nconst NAME = 'y-ipv4-field';\nconst IP_PART_REGEX = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\ntype PartId = 0 | 1 | 2 | 3 | 4;\n\nexport const YIpv4Field = defineComponent({\n name: NAME,\n props: {\n fixedUntil: Number as PropType<0 | 1 | 2 | 3>,\n text: Boolean as PropType<boolean>,\n subnet: Boolean as PropType<boolean>,\n autoFillSubnet: [Boolean, Number, String] as PropType<\n boolean | number | string\n >,\n ...pressYInputPropsOptions(),\n },\n emits: {\n 'update:modelValue': (_v: string) => true,\n tab: (_id?: number) => true,\n focus: () => true,\n blur: () => true,\n },\n setup(props, { slots, emit }) {\n const field$ = ref();\n const yInput$ = ref();\n const input$ = ref<any[]>([]);\n\n const model = useModelDuplex(props);\n\n const parts = reactive<Record<PartId, any>>({\n 0: '',\n 1: '',\n 2: '',\n 3: '',\n 4: '',\n });\n //\n const lazyParts = reactive({\n 0: '',\n 1: '',\n 2: '',\n 3: '',\n 4: '',\n });\n\n const isFocused = ref(false);\n const fieldFocused = ref<number[]>([]);\n\n /// Events\n function testSubnetRange(value: string) {\n return !/[^0-9]/.test(value) && Number(value) < 33 && Number(value) > -1;\n }\n\n function onInput(id: PartId, event: Event) {\n const target = event.target as HTMLInputElement | null;\n const neoValue = target?.value || '';\n const oldValue = lazyParts[id];\n const pass =\n id < 4 ? IP_PART_REGEX.test(neoValue) : testSubnetRange(neoValue);\n const neo = neoValue !== '' ? Number(neoValue).toString() : '';\n parts[id] = neo;\n if (!pass && neoValue !== '') {\n nextChange(id, oldValue);\n } else {\n if (neoValue.length > 2) {\n focusNextPart(id);\n }\n lazyParts[id] = neo;\n emitInput();\n }\n }\n\n function onFocus(id: PartId, _event: FocusEvent) {\n isFocused.value = true;\n fieldFocused.value.push(id);\n }\n\n function onBlur(id: PartId, _event: FocusEvent) {\n isFocused.value = false;\n nextTick(() => {\n setTimeout(() => {\n fieldFocused.value.forEach((value, index) => {\n if (value === id) {\n fieldFocused.value.splice(index, 1);\n }\n });\n });\n });\n }\n\n function onChange(_id: PartId, _event: Event) {\n //\n // const changed = [id, event];\n }\n\n function onKeydown(id: PartId, event: KeyboardEvent) {\n const $target = event.target as HTMLInputElement;\n if (event.key === 'Backspace' && event.target && $target.value === '') {\n focusPrevPart(id);\n }\n if (\n event.key === 'ArrowRight' ||\n (event.key === 'ArrowDown' && !event.shiftKey)\n ) {\n if (\n $target.selectionStart !== null &&\n $target.value.length <= $target.selectionStart\n ) {\n if (id === 3) {\n event.preventDefault();\n emit('tab');\n return;\n } else {\n event.preventDefault();\n focusNextPart(id);\n return;\n }\n }\n }\n if (\n event.key === 'ArrowLeft' ||\n (event.key === 'ArrowUp' && !event.shiftKey)\n ) {\n if ($target.selectionStart !== null && $target.selectionStart === 0) {\n if (id === 0) {\n event.preventDefault();\n emit('tab', -1);\n return;\n } else {\n event.preventDefault();\n focusPrevPart(id);\n return;\n }\n }\n }\n if (\n ((event.key === 'Tab' && !event.shiftKey && $target.value !== '') ||\n event.key === 'Enter' ||\n event.key === '.') &&\n props.onTab &&\n id === 3\n ) {\n event.preventDefault();\n emit('tab', 3);\n }\n }\n\n function onKeyup(id: PartId, event: KeyboardEvent) {\n if (event.key === '.') {\n focusNextPart(id);\n }\n }\n\n function putParts(neo: string | undefined) {\n if (typeof neo === 'string') {\n let tempParts: string[] = [];\n if (neo.lastIndexOf('/') > -1) {\n const sub = neo.substring(neo.lastIndexOf('/') + 1, neo.length);\n if (props.subnet && testSubnetRange(sub)) {\n parts[4] = sub;\n }\n tempParts = neo.substring(0, neo.lastIndexOf('/')).split('.');\n } else {\n tempParts = neo.split('.');\n }\n if (tempParts.length > 2) {\n for (let index = 0; index < 4; index += 1) {\n const part = tempParts[index];\n if (part !== undefined && IP_PART_REGEX.test(part)) {\n parts[index as PartId] = part;\n } else {\n parts[index as PartId] = '';\n }\n }\n emitInput();\n }\n }\n }\n\n function onPaste(event: ClipboardEvent) {\n const content = (\n event.clipboardData || (window as any).clipboardData\n ).getData('text');\n if (isNaN(Number(content))) {\n event.preventDefault();\n putParts(content);\n }\n }\n\n function whenBlur() {\n if (\n props.autoFillSubnet &&\n parts[0] &&\n parts[1] &&\n parts[2] &&\n parts[3] &&\n !parts[4]\n ) {\n if (typeof props.autoFillSubnet === 'boolean') {\n parts[4] = '32';\n } else {\n parts[4] = props.autoFillSubnet.toString();\n }\n emitInput();\n }\n }\n\n /// Actions\n function nextChange(id: PartId, value: any) {\n nextTick(() => {\n parts[id] = value;\n emitInput();\n });\n }\n\n function focusNextPart(currentId: PartId) {\n const nextId = currentId + 1;\n if (nextId < 4) {\n const $input = input$.value[nextId] as HTMLInputElement;\n $input.focus();\n $input.selectionStart = 0;\n }\n }\n\n function focusPrevPart(currentId: PartId) {\n const prevId = currentId - 1;\n if (prevId > -1) {\n const $input = input$.value[prevId] as HTMLInputElement;\n $input.focus();\n $input.selectionStart = $input.value.length + 1;\n }\n }\n\n function emitInput() {\n model.value = joinParts();\n }\n\n function joinParts(): string {\n if (\n parts[0] === '' &&\n parts[1] === '' &&\n parts[2] === '' &&\n parts[3] === ''\n ) {\n return '';\n }\n return `${parts[0]}.${parts[1]}.${parts[2]}.${parts[3]}${\n props.subnet ? '/' + parts[4] : ''\n }`;\n }\n\n const focused = computed(() => {\n return fieldFocused.value.length > 0;\n });\n\n watch(\n model,\n (neo: string | undefined) => {\n if (neo === '') {\n for (let index = 0; index < 5; index += 1) {\n parts[index as PartId] = '';\n lazyParts[index as PartId] = '';\n }\n return;\n } else {\n putParts(neo);\n }\n },\n { immediate: true },\n );\n\n watch(focused, (neo: boolean) => {\n if (!neo) {\n whenBlur();\n }\n });\n\n watch(isFocused, (neo: boolean) => {\n if (neo) {\n emit('focus');\n } else {\n emit('blur');\n }\n });\n\n useRender(() => {\n input$.value = [];\n return (\n <YInput\n ref={yInput$}\n class={[\n NAME,\n INHERIT_NAME,\n { [`${INHERIT_NAME}--text`]: props.text },\n ]}\n {...chooseProps(props, YInput.props)}\n >\n {{\n leading: (...args: any[]) => slots.leading?.(...args),\n default: (defaultProps: any) => {\n return (\n <div\n class={[`${INHERIT_NAME}__field`]}\n {...mergeProps({ 'data-id': defaultProps.attrId })}\n ref={field$}\n >\n {([0, 1, 2, 3, 4] as PartId[]).map((id) => {\n const inputValue = toRef(parts, id);\n return (\n ((!props.subnet && id < 4) || props.subnet) && [\n <div class={[`${INHERIT_NAME}__part`]}>\n <input\n ref={(el) => input$.value.push(el)}\n id={`${defaultProps.attrId}__part--${id}`}\n value={inputValue.value}\n class={[`${INHERIT_NAME}__part-input`]}\n readonly={props.readonly || props.loading}\n disabled={props.disabled}\n autocomplete=\"false\"\n maxlength={id === 4 ? 2 : 3}\n onInput={($event) => onInput(id, $event)}\n onFocus={($event) => onFocus(id, $event)}\n onBlur={($event) => onBlur(id, $event)}\n onChange={($event) => onChange(id, $event)}\n onKeydown={($event) => onKeydown(id, $event)}\n onKeyup={($event) => onKeyup(id, $event)}\n onPaste={onPaste}\n />\n </div>,\n id !== 4 &&\n ((!props.subnet && id < 3) || props.subnet) && (\n <div class={[`${INHERIT_NAME}__part`]}>\n {id < 3 ? '.' : '/'}\n </div>\n ),\n ]\n );\n })}\n </div>\n );\n },\n trailing: (...args: any[]) => slots.trailing?.(...args),\n label: slots.label && (() => slots.label?.()),\n 'helper-text':\n slots['helper-text'] && (() => slots['helper-text']?.()),\n }}\n </YInput>\n );\n });\n\n return {};\n },\n});\n\nexport type YIpv4Field = InstanceType<typeof YIpv4Field>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YIpv4Field.mjs","names":["computed","defineComponent","mergeProps","nextTick","reactive","ref","toRef","watch","useModelDuplex","useRender","chooseProps","YInput","pressYInputPropsOptions","INHERIT_NAME","NAME","IP_PART_REGEX","YIpv4Field","name","props","fixedUntil","Number","text","Boolean","subnet","autoFillSubnet","String","emits","_v","tab","_id","focus","blur","setup","_ref","slots","emit","field$","yInput$","input$","model","parts","lazyParts","isFocused","fieldFocused","testSubnetRange","value","test","onInput","id","event","target","neoValue","oldValue","pass","neo","toString","nextChange","length","focusNextPart","emitInput","onFocus","_event","push","onBlur","setTimeout","forEach","index","splice","onChange","onKeydown","$target","key","focusPrevPart","shiftKey","selectionStart","preventDefault","onTab","onKeyup","putParts","tempParts","lastIndexOf","sub","substring","split","part","undefined","onPaste","content","clipboardData","window","getData","isNaN","whenBlur","currentId","nextId","$input","prevId","joinParts","focused","immediate","_createVNode","_mergeProps","leading","_len","arguments","args","Array","_key","default","defaultProps","attrId","map","inputValue","el","readonly","loading","disabled","$event","trailing","_len2","_key2","label"],"sources":["../../../src/components/ip-field/YIpv4Field.tsx"],"sourcesContent":["import {\r\n PropType,\r\n computed,\r\n defineComponent,\r\n mergeProps,\r\n nextTick,\r\n reactive,\r\n ref,\r\n toRef,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { chooseProps } from '../../util/component';\r\nimport { YInput, pressYInputPropsOptions } from '../input';\r\n\r\nimport './YIpField.scss';\r\n\r\nconst INHERIT_NAME = 'y-ip-field';\r\nconst NAME = 'y-ipv4-field';\r\nconst IP_PART_REGEX = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\r\n\r\ntype PartId = 0 | 1 | 2 | 3 | 4;\r\n\r\nexport const YIpv4Field = defineComponent({\r\n name: NAME,\r\n props: {\r\n fixedUntil: Number as PropType<0 | 1 | 2 | 3>,\r\n text: Boolean as PropType<boolean>,\r\n subnet: Boolean as PropType<boolean>,\r\n autoFillSubnet: [Boolean, Number, String] as PropType<\r\n boolean | number | string\r\n >,\r\n ...pressYInputPropsOptions(),\r\n },\r\n emits: {\r\n 'update:modelValue': (_v: string) => true,\r\n tab: (_id?: number) => true,\r\n focus: () => true,\r\n blur: () => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const field$ = ref();\r\n const yInput$ = ref();\r\n const input$ = ref<any[]>([]);\r\n\r\n const model = useModelDuplex(props);\r\n\r\n const parts = reactive<Record<PartId, any>>({\r\n 0: '',\r\n 1: '',\r\n 2: '',\r\n 3: '',\r\n 4: '',\r\n });\r\n //\r\n const lazyParts = reactive({\r\n 0: '',\r\n 1: '',\r\n 2: '',\r\n 3: '',\r\n 4: '',\r\n });\r\n\r\n const isFocused = ref(false);\r\n const fieldFocused = ref<number[]>([]);\r\n\r\n /// Events\r\n function testSubnetRange(value: string) {\r\n return !/[^0-9]/.test(value) && Number(value) < 33 && Number(value) > -1;\r\n }\r\n\r\n function onInput(id: PartId, event: Event) {\r\n const target = event.target as HTMLInputElement | null;\r\n const neoValue = target?.value || '';\r\n const oldValue = lazyParts[id];\r\n const pass =\r\n id < 4 ? IP_PART_REGEX.test(neoValue) : testSubnetRange(neoValue);\r\n const neo = neoValue !== '' ? Number(neoValue).toString() : '';\r\n parts[id] = neo;\r\n if (!pass && neoValue !== '') {\r\n nextChange(id, oldValue);\r\n } else {\r\n if (neoValue.length > 2) {\r\n focusNextPart(id);\r\n }\r\n lazyParts[id] = neo;\r\n emitInput();\r\n }\r\n }\r\n\r\n function onFocus(id: PartId, _event: FocusEvent) {\r\n isFocused.value = true;\r\n fieldFocused.value.push(id);\r\n }\r\n\r\n function onBlur(id: PartId, _event: FocusEvent) {\r\n isFocused.value = false;\r\n nextTick(() => {\r\n setTimeout(() => {\r\n fieldFocused.value.forEach((value, index) => {\r\n if (value === id) {\r\n fieldFocused.value.splice(index, 1);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n function onChange(_id: PartId, _event: Event) {\r\n //\r\n // const changed = [id, event];\r\n }\r\n\r\n function onKeydown(id: PartId, event: KeyboardEvent) {\r\n const $target = event.target as HTMLInputElement;\r\n if (event.key === 'Backspace' && event.target && $target.value === '') {\r\n focusPrevPart(id);\r\n }\r\n if (\r\n event.key === 'ArrowRight' ||\r\n (event.key === 'ArrowDown' && !event.shiftKey)\r\n ) {\r\n if (\r\n $target.selectionStart !== null &&\r\n $target.value.length <= $target.selectionStart\r\n ) {\r\n if (id === 3) {\r\n event.preventDefault();\r\n emit('tab');\r\n return;\r\n } else {\r\n event.preventDefault();\r\n focusNextPart(id);\r\n return;\r\n }\r\n }\r\n }\r\n if (\r\n event.key === 'ArrowLeft' ||\r\n (event.key === 'ArrowUp' && !event.shiftKey)\r\n ) {\r\n if ($target.selectionStart !== null && $target.selectionStart === 0) {\r\n if (id === 0) {\r\n event.preventDefault();\r\n emit('tab', -1);\r\n return;\r\n } else {\r\n event.preventDefault();\r\n focusPrevPart(id);\r\n return;\r\n }\r\n }\r\n }\r\n if (\r\n ((event.key === 'Tab' && !event.shiftKey && $target.value !== '') ||\r\n event.key === 'Enter' ||\r\n event.key === '.') &&\r\n props.onTab &&\r\n id === 3\r\n ) {\r\n event.preventDefault();\r\n emit('tab', 3);\r\n }\r\n }\r\n\r\n function onKeyup(id: PartId, event: KeyboardEvent) {\r\n if (event.key === '.') {\r\n focusNextPart(id);\r\n }\r\n }\r\n\r\n function putParts(neo: string | undefined) {\r\n if (typeof neo === 'string') {\r\n let tempParts: string[] = [];\r\n if (neo.lastIndexOf('/') > -1) {\r\n const sub = neo.substring(neo.lastIndexOf('/') + 1, neo.length);\r\n if (props.subnet && testSubnetRange(sub)) {\r\n parts[4] = sub;\r\n }\r\n tempParts = neo.substring(0, neo.lastIndexOf('/')).split('.');\r\n } else {\r\n tempParts = neo.split('.');\r\n }\r\n if (tempParts.length > 2) {\r\n for (let index = 0; index < 4; index += 1) {\r\n const part = tempParts[index];\r\n if (part !== undefined && IP_PART_REGEX.test(part)) {\r\n parts[index as PartId] = part;\r\n } else {\r\n parts[index as PartId] = '';\r\n }\r\n }\r\n emitInput();\r\n }\r\n }\r\n }\r\n\r\n function onPaste(event: ClipboardEvent) {\r\n const content = (\r\n event.clipboardData || (window as any).clipboardData\r\n ).getData('text');\r\n if (isNaN(Number(content))) {\r\n event.preventDefault();\r\n putParts(content);\r\n }\r\n }\r\n\r\n function whenBlur() {\r\n if (\r\n props.autoFillSubnet &&\r\n parts[0] &&\r\n parts[1] &&\r\n parts[2] &&\r\n parts[3] &&\r\n !parts[4]\r\n ) {\r\n if (typeof props.autoFillSubnet === 'boolean') {\r\n parts[4] = '32';\r\n } else {\r\n parts[4] = props.autoFillSubnet.toString();\r\n }\r\n emitInput();\r\n }\r\n }\r\n\r\n /// Actions\r\n function nextChange(id: PartId, value: any) {\r\n nextTick(() => {\r\n parts[id] = value;\r\n emitInput();\r\n });\r\n }\r\n\r\n function focusNextPart(currentId: PartId) {\r\n const nextId = currentId + 1;\r\n if (nextId < 4) {\r\n const $input = input$.value[nextId] as HTMLInputElement;\r\n $input.focus();\r\n $input.selectionStart = 0;\r\n }\r\n }\r\n\r\n function focusPrevPart(currentId: PartId) {\r\n const prevId = currentId - 1;\r\n if (prevId > -1) {\r\n const $input = input$.value[prevId] as HTMLInputElement;\r\n $input.focus();\r\n $input.selectionStart = $input.value.length + 1;\r\n }\r\n }\r\n\r\n function emitInput() {\r\n model.value = joinParts();\r\n }\r\n\r\n function joinParts(): string {\r\n if (\r\n parts[0] === '' &&\r\n parts[1] === '' &&\r\n parts[2] === '' &&\r\n parts[3] === ''\r\n ) {\r\n return '';\r\n }\r\n return `${parts[0]}.${parts[1]}.${parts[2]}.${parts[3]}${\r\n props.subnet ? '/' + parts[4] : ''\r\n }`;\r\n }\r\n\r\n const focused = computed(() => {\r\n return fieldFocused.value.length > 0;\r\n });\r\n\r\n watch(\r\n model,\r\n (neo: string | undefined) => {\r\n if (neo === '') {\r\n for (let index = 0; index < 5; index += 1) {\r\n parts[index as PartId] = '';\r\n lazyParts[index as PartId] = '';\r\n }\r\n return;\r\n } else {\r\n putParts(neo);\r\n }\r\n },\r\n { immediate: true },\r\n );\r\n\r\n watch(focused, (neo: boolean) => {\r\n if (!neo) {\r\n whenBlur();\r\n }\r\n });\r\n\r\n watch(isFocused, (neo: boolean) => {\r\n if (neo) {\r\n emit('focus');\r\n } else {\r\n emit('blur');\r\n }\r\n });\r\n\r\n useRender(() => {\r\n input$.value = [];\r\n return (\r\n <YInput\r\n ref={yInput$}\r\n class={[\r\n NAME,\r\n INHERIT_NAME,\r\n { [`${INHERIT_NAME}--text`]: props.text },\r\n ]}\r\n {...chooseProps(props, YInput.props)}\r\n >\r\n {{\r\n leading: (...args: any[]) => slots.leading?.(...args),\r\n default: (defaultProps: any) => {\r\n return (\r\n <div\r\n class={[`${INHERIT_NAME}__field`]}\r\n {...mergeProps({ 'data-id': defaultProps.attrId })}\r\n ref={field$}\r\n >\r\n {([0, 1, 2, 3, 4] as PartId[]).map((id) => {\r\n const inputValue = toRef(parts, id);\r\n return (\r\n ((!props.subnet && id < 4) || props.subnet) && [\r\n <div class={[`${INHERIT_NAME}__part`]}>\r\n <input\r\n ref={(el) => input$.value.push(el)}\r\n id={`${defaultProps.attrId}__part--${id}`}\r\n value={inputValue.value}\r\n class={[`${INHERIT_NAME}__part-input`]}\r\n readonly={props.readonly || props.loading}\r\n disabled={props.disabled}\r\n autocomplete=\"false\"\r\n maxlength={id === 4 ? 2 : 3}\r\n onInput={($event) => onInput(id, $event)}\r\n onFocus={($event) => onFocus(id, $event)}\r\n onBlur={($event) => onBlur(id, $event)}\r\n onChange={($event) => onChange(id, $event)}\r\n onKeydown={($event) => onKeydown(id, $event)}\r\n onKeyup={($event) => onKeyup(id, $event)}\r\n onPaste={onPaste}\r\n />\r\n </div>,\r\n id !== 4 &&\r\n ((!props.subnet && id < 3) || props.subnet) && (\r\n <div class={[`${INHERIT_NAME}__part`]}>\r\n {id < 3 ? '.' : '/'}\r\n </div>\r\n ),\r\n ]\r\n );\r\n })}\r\n </div>\r\n );\r\n },\r\n trailing: (...args: any[]) => slots.trailing?.(...args),\r\n label: slots.label && (() => slots.label?.()),\r\n 'helper-text':\r\n slots['helper-text'] && (() => slots['helper-text']?.()),\r\n }}\r\n </YInput>\r\n );\r\n });\r\n\r\n return {};\r\n },\r\n});\r\n\r\nexport type YIpv4Field = InstanceType<typeof YIpv4Field>;\r\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ import { pressThemePropsOptions, useLocalTheme } from "../../composables/theme/i
9
9
  import { useLazy } from "../../composables/timing.mjs";
10
10
  import { PolyTransition, pressPolyTransitionPropsOptions, usePolyTransition } from "../../composables/transition.mjs";
11
11
  import { ComplementClick } from "../../directives/complement-click/index.mjs";
12
- import { bindClasses, propsFactory } from "../../util/vue-component.mjs";
12
+ import { bindClasses, propsFactory } from "../../util/component/index.mjs";
13
13
  import { pressBasePropsOptions, useBase } from "./base.mjs";
14
14
  import { pressContentPropsOptions, useContent } from "./content.mjs";
15
15
  import { pressScrollStrategyProps, useScrollStrategies } from "./scroll-strategies.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"YLayer.mjs","names":["Teleport","Transition","computed","defineComponent","getCurrentInstance","mergeProps","reactive","ref","shallowRef","toRef","useModelDuplex","useRender","pressCoordinateProps","useCoordinate","pressDimensionPropsOptions","useDimension","useLayerGroup","pressThemePropsOptions","useLocalTheme","useLazy","PolyTransition","pressPolyTransitionPropsOptions","usePolyTransition","ComplementClick","bindClasses","propsFactory","pressBasePropsOptions","useBase","pressContentPropsOptions","useContent","pressScrollStrategyProps","useScrollStrategies","pressYLayerProps","modelValue","type","Boolean","scrim","scrimOpacity","Number","eager","classes","Array","String","Object","contentClasses","closeClickScrim","contentStyles","default","disabled","openOnHover","openDelay","closeDelay","zIndex","contained","YLayer","name","inheritAttrs","components","directives","props","modal","emits","value","mouseEvent","afterLeave","slots","setup","_ref","emit","expose","attrs","vm","scrim$","content$","root$","base","base$","baseEl","baseSlot","baseFromSlotEl","themeClasses","layerGroup","layerGroupState","getActiveLayers","polyTransitionBindProps","dimensionStyles","model","active","get","set","v","contentEvents","finish","hovered","lazyValue","onAfterUpdate","rendered","coordinateStyles","updateCoordinate","contentEl","root","onClickComplementLayer","target","closeConditional","complementClickOption","handler","determine","include","onAfterEnter","onAfterLeave","onClickScrim","onMouseenter","event","onMouseleave","computedStyle","toString","computedClass","boundClasses","computedContentClasses","isMe","vnode","slotBase","class","_createVNode","_Fragment","_mergeProps","_withDirectives","_vShow","_resolveDirective"],"sources":["../../../src/components/layer/YLayer.tsx"],"sourcesContent":["import type {\n CSSProperties,\n ComponentInternalInstance,\n PropType,\n SlotsType,\n} from 'vue';\nimport {\n Teleport,\n Transition,\n computed,\n defineComponent,\n getCurrentInstance,\n mergeProps,\n reactive,\n ref,\n shallowRef,\n toRef,\n watchEffect,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport {\n pressCoordinateProps,\n useCoordinate,\n} from '../../composables/coordinate';\nimport {\n pressDimensionPropsOptions,\n useDimension,\n} from '../../composables/dimension';\nimport { useLayerGroup } from '../../composables/layer-group';\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\nimport { useLazy } from '../../composables/timing';\nimport {\n PolyTransition,\n pressPolyTransitionPropsOptions,\n usePolyTransition,\n} from '../../composables/transition';\nimport {\n ComplementClick,\n ComplementClickBindingOptions,\n} from '../../directives/complement-click';\nimport { bindClasses, propsFactory } from '../../util/vue-component';\nimport { pressBasePropsOptions, useBase } from './base';\nimport { pressContentPropsOptions, useContent } from './content';\nimport {\n pressScrollStrategyProps,\n useScrollStrategies,\n} from './scroll-strategies';\n\nimport './YLayer.scss';\n\nexport const pressYLayerProps = propsFactory(\n {\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n scrim: {\n type: Boolean as PropType<boolean>,\n },\n scrimOpacity: {\n type: Number as PropType<number>,\n },\n eager: {\n type: Boolean as PropType<boolean>,\n },\n classes: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n contentClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n closeClickScrim: {\n type: Boolean as PropType<boolean>,\n },\n contentStyles: {\n type: Object as PropType<CSSProperties>,\n default: () => {},\n },\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n openOnHover: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n openDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n closeDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n zIndex: {\n type: [Number, String] as PropType<number | string>,\n default: 2000,\n },\n contained: Boolean,\n ...pressThemePropsOptions(),\n ...pressPolyTransitionPropsOptions(),\n ...pressBasePropsOptions(),\n ...pressContentPropsOptions(),\n ...pressCoordinateProps(),\n ...pressScrollStrategyProps(),\n ...pressDimensionPropsOptions(),\n },\n 'YLayer',\n);\n\nexport const YLayer = defineComponent({\n name: 'YLayer',\n inheritAttrs: false,\n components: {\n PolyTransition,\n },\n directives: {\n ComplementClick,\n },\n props: {\n modal: Boolean as PropType<boolean>,\n ...pressYLayerProps(),\n },\n emits: {\n 'update:modelValue': (value: boolean) => true,\n 'click:complement': (mouseEvent: MouseEvent) => true,\n afterLeave: () => true,\n },\n slots: Object as SlotsType<{\n base: any;\n default: any;\n }>,\n setup(props, { emit, expose, attrs, slots }) {\n const vm = getCurrentInstance();\n\n const scrim$ = ref<HTMLElement>();\n const content$ = ref<HTMLElement>();\n const root$ = ref<HTMLElement>();\n\n const { base, base$, baseEl, baseSlot, baseFromSlotEl } = useBase(props);\n\n const { themeClasses } = useLocalTheme(props);\n const { layerGroup, layerGroupState, getActiveLayers } = useLayerGroup();\n const { polyTransitionBindProps } = usePolyTransition(props);\n const { dimensionStyles } = useDimension(props);\n const model = useModelDuplex(props);\n\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n const { contentEvents } = useContent(props, active);\n const finish = shallowRef(false);\n const hovered = ref(false);\n\n const disabled = toRef(props, 'disabled');\n const { lazyValue, onAfterUpdate } = useLazy(toRef(props, 'eager'), active);\n const rendered = computed<boolean>(\n () => !disabled.value && (lazyValue.value || active.value),\n );\n\n const { coordinateStyles, updateCoordinate } = useCoordinate(props, {\n contentEl: content$,\n base,\n active,\n });\n useScrollStrategies(props, {\n root: root$,\n contentEl: content$,\n active,\n baseEl: base,\n updateCoordinate,\n });\n\n function onClickComplementLayer(mouseEvent: MouseEvent) {\n emit('click:complement', mouseEvent);\n if (!props.modal) {\n if (\n scrim$.value !== null &&\n scrim$.value === mouseEvent.target &&\n props.closeClickScrim\n ) {\n active.value = false;\n }\n } else {\n // TODO: shrug ani\n }\n }\n\n function closeConditional(): boolean {\n return (\n (!props.openOnHover || (props.openOnHover && !hovered.value)) &&\n active.value &&\n finish.value\n ); // TODO: && groupTopLevel.value;\n }\n\n const complementClickOption = reactive<ComplementClickBindingOptions>({\n handler: onClickComplementLayer,\n determine: closeConditional,\n include: () => [baseEl.value],\n });\n\n function onAfterEnter() {\n finish.value = true;\n }\n\n function onAfterLeave() {\n onAfterUpdate();\n finish.value = false;\n emit('afterLeave');\n }\n\n function onClickScrim() {\n if (props.closeClickScrim) {\n active.value = false;\n }\n }\n\n function onMouseenter(event: Event) {\n hovered.value = true;\n }\n\n function onMouseleave(event: Event) {\n hovered.value = false;\n }\n\n const computedStyle = computed(() => {\n return {\n zIndex: (props.zIndex ?? '2000').toString(),\n };\n });\n\n const computedClass = computed<Record<string, boolean>>(() => {\n const { classes } = props;\n const boundClasses = bindClasses(classes);\n return {\n ...boundClasses,\n 'y-layer--active': !!active.value,\n };\n });\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n };\n });\n\n expose({\n scrim$,\n base$,\n content$: computed(() => content$.value),\n baseEl,\n active,\n onAfterUpdate,\n updateCoordinate,\n hovered,\n finish,\n modal: computed(() => props.modal),\n getActiveLayers,\n isMe: (vnode: ComponentInternalInstance) => {\n return vnode === vm;\n },\n });\n\n useRender(() => {\n const slotBase = slots.base?.({\n active: active.value,\n props: mergeProps({\n ref: base$,\n class: {\n 'y-layer-base': true,\n 'y-layer-base--active': active.value,\n },\n }),\n });\n baseSlot.value = slotBase;\n return (\n <>\n {slotBase}\n <Teleport disabled={!layerGroup.value} to={layerGroup.value as any}>\n {rendered.value && (\n <div\n class={[\n {\n 'y-layer': true,\n 'y-layer--finish': finish.value,\n 'y-layer--contained': props.contained,\n ...computedClass.value,\n },\n themeClasses.value,\n ]}\n onMouseenter={onMouseenter}\n onMouseleave={onMouseleave}\n style={computedStyle.value}\n ref={ root$ }\n {...attrs}\n >\n <Transition name=\"fade\" appear>\n {active.value && props.scrim && (\n <div\n class=\"y-layer__scrim\"\n style={{ '--y-layer-scrim-opacity': props.scrimOpacity }}\n onClick={onClickScrim}\n ref=\"scrim$\"\n ></div>\n )}\n </Transition>\n <PolyTransition\n onAfterEnter={onAfterEnter}\n onAfterLeave={onAfterLeave}\n appear\n {...polyTransitionBindProps.value}\n >\n <div\n v-show={active.value}\n v-complement-click={{ ...complementClickOption }}\n class={{\n 'y-layer__content': true,\n ...computedContentClasses.value,\n }}\n style={[\n {\n ...dimensionStyles.value,\n ...coordinateStyles.value,\n ...props.contentStyles,\n },\n ]}\n {...contentEvents.value}\n ref={content$}\n >\n {slots.default?.({ active: active.value })}\n </div>\n </PolyTransition>\n </div>\n )}\n </Teleport>\n </>\n );\n });\n\n return {\n complementClickOption,\n layerGroup,\n active,\n finish,\n rendered,\n lazyValue,\n onAfterUpdate: onAfterUpdate as () => void,\n scrim$,\n content$,\n base$,\n baseEl,\n baseFromSlotEl,\n polyTransitionBindProps,\n coordinateStyles,\n layerGroupState,\n getActiveLayers,\n };\n },\n});\n\nexport type YLayer = InstanceType<typeof YLayer>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YLayer.mjs","names":["Teleport","Transition","computed","defineComponent","getCurrentInstance","mergeProps","reactive","ref","shallowRef","toRef","useModelDuplex","useRender","pressCoordinateProps","useCoordinate","pressDimensionPropsOptions","useDimension","useLayerGroup","pressThemePropsOptions","useLocalTheme","useLazy","PolyTransition","pressPolyTransitionPropsOptions","usePolyTransition","ComplementClick","bindClasses","propsFactory","pressBasePropsOptions","useBase","pressContentPropsOptions","useContent","pressScrollStrategyProps","useScrollStrategies","pressYLayerProps","modelValue","type","Boolean","scrim","scrimOpacity","Number","eager","classes","Array","String","Object","contentClasses","closeClickScrim","contentStyles","default","disabled","openOnHover","openDelay","closeDelay","zIndex","contained","YLayer","name","inheritAttrs","components","directives","props","modal","emits","value","mouseEvent","afterLeave","slots","setup","_ref","emit","expose","attrs","vm","scrim$","content$","root$","base","base$","baseEl","baseSlot","baseFromSlotEl","themeClasses","layerGroup","layerGroupState","getActiveLayers","polyTransitionBindProps","dimensionStyles","model","active","get","set","v","contentEvents","finish","hovered","lazyValue","onAfterUpdate","rendered","coordinateStyles","updateCoordinate","contentEl","root","onClickComplementLayer","target","closeConditional","complementClickOption","handler","determine","include","onAfterEnter","onAfterLeave","onClickScrim","onMouseenter","event","onMouseleave","computedStyle","toString","computedClass","boundClasses","computedContentClasses","isMe","vnode","slotBase","class","_createVNode","_Fragment","_mergeProps","_withDirectives","_vShow","_resolveDirective"],"sources":["../../../src/components/layer/YLayer.tsx"],"sourcesContent":["import type {\r\n CSSProperties,\r\n ComponentInternalInstance,\r\n PropType,\r\n SlotsType,\r\n} from 'vue';\r\nimport {\r\n Teleport,\r\n Transition,\r\n computed,\r\n defineComponent,\r\n getCurrentInstance,\r\n mergeProps,\r\n reactive,\r\n ref,\r\n shallowRef,\r\n toRef,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport {\r\n pressCoordinateProps,\r\n useCoordinate,\r\n} from '../../composables/coordinate';\r\nimport {\r\n pressDimensionPropsOptions,\r\n useDimension,\r\n} from '../../composables/dimension';\r\nimport { useLayerGroup } from '../../composables/layer-group';\r\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\r\nimport { useLazy } from '../../composables/timing';\r\nimport {\r\n PolyTransition,\r\n pressPolyTransitionPropsOptions,\r\n usePolyTransition,\r\n} from '../../composables/transition';\r\nimport {\r\n ComplementClick,\r\n ComplementClickBindingOptions,\r\n} from '../../directives/complement-click';\r\nimport { bindClasses, propsFactory } from '../../util/component';\r\nimport { pressBasePropsOptions, useBase } from './base';\r\nimport { pressContentPropsOptions, useContent } from './content';\r\nimport {\r\n pressScrollStrategyProps,\r\n useScrollStrategies,\r\n} from './scroll-strategies';\r\n\r\nimport './YLayer.scss';\r\n\r\nexport const pressYLayerProps = propsFactory(\r\n {\r\n modelValue: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n scrim: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n scrimOpacity: {\r\n type: Number as PropType<number>,\r\n },\r\n eager: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n classes: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n contentClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n closeClickScrim: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n contentStyles: {\r\n type: Object as PropType<CSSProperties>,\r\n default: () => {},\r\n },\r\n disabled: {\r\n type: Boolean as PropType<boolean>,\r\n default: false,\r\n },\r\n openOnHover: {\r\n type: Boolean as PropType<boolean>,\r\n default: false,\r\n },\r\n openDelay: {\r\n type: Number as PropType<number>,\r\n default: 200,\r\n },\r\n closeDelay: {\r\n type: Number as PropType<number>,\r\n default: 200,\r\n },\r\n zIndex: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 2000,\r\n },\r\n contained: Boolean,\r\n ...pressThemePropsOptions(),\r\n ...pressPolyTransitionPropsOptions(),\r\n ...pressBasePropsOptions(),\r\n ...pressContentPropsOptions(),\r\n ...pressCoordinateProps(),\r\n ...pressScrollStrategyProps(),\r\n ...pressDimensionPropsOptions(),\r\n },\r\n 'YLayer',\r\n);\r\n\r\nexport const YLayer = defineComponent({\r\n name: 'YLayer',\r\n inheritAttrs: false,\r\n components: {\r\n PolyTransition,\r\n },\r\n directives: {\r\n ComplementClick,\r\n },\r\n props: {\r\n modal: Boolean as PropType<boolean>,\r\n ...pressYLayerProps(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: boolean) => true,\r\n 'click:complement': (mouseEvent: MouseEvent) => true,\r\n afterLeave: () => true,\r\n },\r\n slots: Object as SlotsType<{\r\n base: any;\r\n default: any;\r\n }>,\r\n setup(props, { emit, expose, attrs, slots }) {\r\n const vm = getCurrentInstance();\r\n\r\n const scrim$ = ref<HTMLElement>();\r\n const content$ = ref<HTMLElement>();\r\n const root$ = ref<HTMLElement>();\r\n\r\n const { base, base$, baseEl, baseSlot, baseFromSlotEl } = useBase(props);\r\n\r\n const { themeClasses } = useLocalTheme(props);\r\n const { layerGroup, layerGroupState, getActiveLayers } = useLayerGroup();\r\n const { polyTransitionBindProps } = usePolyTransition(props);\r\n const { dimensionStyles } = useDimension(props);\r\n const model = useModelDuplex(props);\r\n\r\n const active = computed({\r\n get: (): boolean => {\r\n return !!model.value;\r\n },\r\n set: (v: boolean) => {\r\n if (!(v && props.disabled)) model.value = v;\r\n },\r\n });\r\n const { contentEvents } = useContent(props, active);\r\n const finish = shallowRef(false);\r\n const hovered = ref(false);\r\n\r\n const disabled = toRef(props, 'disabled');\r\n const { lazyValue, onAfterUpdate } = useLazy(toRef(props, 'eager'), active);\r\n const rendered = computed<boolean>(\r\n () => !disabled.value && (lazyValue.value || active.value),\r\n );\r\n\r\n const { coordinateStyles, updateCoordinate } = useCoordinate(props, {\r\n contentEl: content$,\r\n base,\r\n active,\r\n });\r\n useScrollStrategies(props, {\r\n root: root$,\r\n contentEl: content$,\r\n active,\r\n baseEl: base,\r\n updateCoordinate,\r\n });\r\n\r\n function onClickComplementLayer(mouseEvent: MouseEvent) {\r\n emit('click:complement', mouseEvent);\r\n if (!props.modal) {\r\n if (\r\n scrim$.value !== null &&\r\n scrim$.value === mouseEvent.target &&\r\n props.closeClickScrim\r\n ) {\r\n active.value = false;\r\n }\r\n } else {\r\n // TODO: shrug ani\r\n }\r\n }\r\n\r\n function closeConditional(): boolean {\r\n return (\r\n (!props.openOnHover || (props.openOnHover && !hovered.value)) &&\r\n active.value &&\r\n finish.value\r\n ); // TODO: && groupTopLevel.value;\r\n }\r\n\r\n const complementClickOption = reactive<ComplementClickBindingOptions>({\r\n handler: onClickComplementLayer,\r\n determine: closeConditional,\r\n include: () => [baseEl.value],\r\n });\r\n\r\n function onAfterEnter() {\r\n finish.value = true;\r\n }\r\n\r\n function onAfterLeave() {\r\n onAfterUpdate();\r\n finish.value = false;\r\n emit('afterLeave');\r\n }\r\n\r\n function onClickScrim() {\r\n if (props.closeClickScrim) {\r\n active.value = false;\r\n }\r\n }\r\n\r\n function onMouseenter(event: Event) {\r\n hovered.value = true;\r\n }\r\n\r\n function onMouseleave(event: Event) {\r\n hovered.value = false;\r\n }\r\n\r\n const computedStyle = computed(() => {\r\n return {\r\n zIndex: (props.zIndex ?? '2000').toString(),\r\n };\r\n });\r\n\r\n const computedClass = computed<Record<string, boolean>>(() => {\r\n const { classes } = props;\r\n const boundClasses = bindClasses(classes);\r\n return {\r\n ...boundClasses,\r\n 'y-layer--active': !!active.value,\r\n };\r\n });\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n return {\r\n ...boundClasses,\r\n };\r\n });\r\n\r\n expose({\r\n scrim$,\r\n base$,\r\n content$: computed(() => content$.value),\r\n baseEl,\r\n active,\r\n onAfterUpdate,\r\n updateCoordinate,\r\n hovered,\r\n finish,\r\n modal: computed(() => props.modal),\r\n getActiveLayers,\r\n isMe: (vnode: ComponentInternalInstance) => {\r\n return vnode === vm;\r\n },\r\n });\r\n\r\n useRender(() => {\r\n const slotBase = slots.base?.({\r\n active: active.value,\r\n props: mergeProps({\r\n ref: base$,\r\n class: {\r\n 'y-layer-base': true,\r\n 'y-layer-base--active': active.value,\r\n },\r\n }),\r\n });\r\n baseSlot.value = slotBase;\r\n return (\r\n <>\r\n {slotBase}\r\n <Teleport disabled={!layerGroup.value} to={layerGroup.value as any}>\r\n {rendered.value && (\r\n <div\r\n class={[\r\n {\r\n 'y-layer': true,\r\n 'y-layer--finish': finish.value,\r\n 'y-layer--contained': props.contained,\r\n ...computedClass.value,\r\n },\r\n themeClasses.value,\r\n ]}\r\n onMouseenter={onMouseenter}\r\n onMouseleave={onMouseleave}\r\n style={computedStyle.value}\r\n ref={ root$ }\r\n {...attrs}\r\n >\r\n <Transition name=\"fade\" appear>\r\n {active.value && props.scrim && (\r\n <div\r\n class=\"y-layer__scrim\"\r\n style={{ '--y-layer-scrim-opacity': props.scrimOpacity }}\r\n onClick={onClickScrim}\r\n ref=\"scrim$\"\r\n ></div>\r\n )}\r\n </Transition>\r\n <PolyTransition\r\n onAfterEnter={onAfterEnter}\r\n onAfterLeave={onAfterLeave}\r\n appear\r\n {...polyTransitionBindProps.value}\r\n >\r\n <div\r\n v-show={active.value}\r\n v-complement-click={{ ...complementClickOption }}\r\n class={{\r\n 'y-layer__content': true,\r\n ...computedContentClasses.value,\r\n }}\r\n style={[\r\n {\r\n ...dimensionStyles.value,\r\n ...coordinateStyles.value,\r\n ...props.contentStyles,\r\n },\r\n ]}\r\n {...contentEvents.value}\r\n ref={content$}\r\n >\r\n {slots.default?.({ active: active.value })}\r\n </div>\r\n </PolyTransition>\r\n </div>\r\n )}\r\n </Teleport>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n complementClickOption,\r\n layerGroup,\r\n active,\r\n finish,\r\n rendered,\r\n lazyValue,\r\n onAfterUpdate: onAfterUpdate as () => void,\r\n scrim$,\r\n content$,\r\n base$,\r\n baseEl,\r\n baseFromSlotEl,\r\n polyTransitionBindProps,\r\n coordinateStyles,\r\n layerGroupState,\r\n getActiveLayers,\r\n };\r\n },\r\n});\r\n\r\nexport type YLayer = InstanceType<typeof YLayer>;\r\n"],"mappings":";AAMA,SACEA,QAAQ,EACRC,UAAU,EACVC,QAAQ,EACRC,eAAe,EACfC,kBAAkB,EAClBC,UAAU,EACVC,QAAQ,EACRC,GAAG,EACHC,UAAU,EACVC,KAAK,QAEA,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,SAAS;AAAA,SAEhBC,oBAAoB,EACpBC,aAAa;AAAA,SAGbC,0BAA0B,EAC1BC,YAAY;AAAA,SAELC,aAAa;AAAA,SACbC,sBAAsB,EAAEC,aAAa;AAAA,SACrCC,OAAO;AAAA,SAEdC,cAAc,EACdC,+BAA+B,EAC/BC,iBAAiB;AAAA,SAGjBC,eAAe;AAAA,SAGRC,WAAW,EAAEC,YAAY;AAAA,SACzBC,qBAAqB,EAAEC,OAAO;AAAA,SAC9BC,wBAAwB,EAAEC,UAAU;AAAA,SAE3CC,wBAAwB,EACxBC,mBAAmB;AAGrB;AAEA,OAAO,MAAMC,gBAAgB,GAAGP,YAAY,CAC1C;EACEQ,UAAU,EAAE;IACVC,IAAI,EAAEC;EACR,CAAC;EACDC,KAAK,EAAE;IACLF,IAAI,EAAEC;EACR,CAAC;EACDE,YAAY,EAAE;IACZH,IAAI,EAAEI;EACR,CAAC;EACDC,KAAK,EAAE;IACLL,IAAI,EAAEC;EACR,CAAC;EACDK,OAAO,EAAE;IACPN,IAAI,EAAE,CAACO,KAAK,EAAEC,MAAM,EAAEC,MAAM;EAG9B,CAAC;EACDC,cAAc,EAAE;IACdV,IAAI,EAAE,CAACO,KAAK,EAAEC,MAAM,EAAEC,MAAM;EAG9B,CAAC;EACDE,eAAe,EAAE;IACfX,IAAI,EAAEC;EACR,CAAC;EACDW,aAAa,EAAE;IACbZ,IAAI,EAAES,MAAiC;IACvCI,OAAO,EAAEA,CAAA,KAAM,CAAC;EAClB,CAAC;EACDC,QAAQ,EAAE;IACRd,IAAI,EAAEC,OAA4B;IAClCY,OAAO,EAAE;EACX,CAAC;EACDE,WAAW,EAAE;IACXf,IAAI,EAAEC,OAA4B;IAClCY,OAAO,EAAE;EACX,CAAC;EACDG,SAAS,EAAE;IACThB,IAAI,EAAEI,MAA0B;IAChCS,OAAO,EAAE;EACX,CAAC;EACDI,UAAU,EAAE;IACVjB,IAAI,EAAEI,MAA0B;IAChCS,OAAO,EAAE;EACX,CAAC;EACDK,MAAM,EAAE;IACNlB,IAAI,EAAE,CAACI,MAAM,EAAEI,MAAM,CAA8B;IACnDK,OAAO,EAAE;EACX,CAAC;EACDM,SAAS,EAAElB,OAAO;EAClB,GAAGlB,sBAAsB,CAAC,CAAC;EAC3B,GAAGI,+BAA+B,CAAC,CAAC;EACpC,GAAGK,qBAAqB,CAAC,CAAC;EAC1B,GAAGE,wBAAwB,CAAC,CAAC;EAC7B,GAAGhB,oBAAoB,CAAC,CAAC;EACzB,GAAGkB,wBAAwB,CAAC,CAAC;EAC7B,GAAGhB,0BAA0B,CAAC;AAChC,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAMwC,MAAM,GAAGnD,eAAe,CAAC;EACpCoD,IAAI,EAAE,QAAQ;EACdC,YAAY,EAAE,KAAK;EACnBC,UAAU,EAAE;IACVrC;EACF,CAAC;EACDsC,UAAU,EAAE;IACVnC;EACF,CAAC;EACDoC,KAAK,EAAE;IACLC,KAAK,EAAEzB,OAA4B;IACnC,GAAGH,gBAAgB,CAAC;EACtB,CAAC;EACD6B,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAc,IAAK,IAAI;IAC7C,kBAAkB,EAAGC,UAAsB,IAAK,IAAI;IACpDC,UAAU,EAAEA,CAAA,KAAM;EACpB,CAAC;EACDC,KAAK,EAAEtB,MAGL;EACFuB,KAAKA,CAACP,KAAK,EAAAQ,IAAA,EAAkC;IAAA,IAAhC;MAAEC,IAAI;MAAEC,MAAM;MAAEC,KAAK;MAAEL;IAAM,CAAC,GAAAE,IAAA;IACzC,MAAMI,EAAE,GAAGnE,kBAAkB,CAAC,CAAC;IAE/B,MAAMoE,MAAM,GAAGjE,GAAG,CAAc,CAAC;IACjC,MAAMkE,QAAQ,GAAGlE,GAAG,CAAc,CAAC;IACnC,MAAMmE,KAAK,GAAGnE,GAAG,CAAc,CAAC;IAEhC,MAAM;MAAEoE,IAAI;MAAEC,KAAK;MAAEC,MAAM;MAAEC,QAAQ;MAAEC;IAAe,CAAC,GAAGpD,OAAO,CAACgC,KAAK,CAAC;IAExE,MAAM;MAAEqB;IAAa,CAAC,GAAG9D,aAAa,CAACyC,KAAK,CAAC;IAC7C,MAAM;MAAEsB,UAAU;MAAEC,eAAe;MAAEC;IAAgB,CAAC,GAAGnE,aAAa,CAAC,CAAC;IACxE,MAAM;MAAEoE;IAAwB,CAAC,GAAG9D,iBAAiB,CAACqC,KAAK,CAAC;IAC5D,MAAM;MAAE0B;IAAgB,CAAC,GAAGtE,YAAY,CAAC4C,KAAK,CAAC;IAC/C,MAAM2B,KAAK,GAAG5E,cAAc,CAACiD,KAAK,CAAC;IAEnC,MAAM4B,MAAM,GAAGrF,QAAQ,CAAC;MACtBsF,GAAG,EAAEA,CAAA,KAAe;QAClB,OAAO,CAAC,CAACF,KAAK,CAACxB,KAAK;MACtB,CAAC;MACD2B,GAAG,EAAGC,CAAU,IAAK;QACnB,IAAI,EAAEA,CAAC,IAAI/B,KAAK,CAACX,QAAQ,CAAC,EAAEsC,KAAK,CAACxB,KAAK,GAAG4B,CAAC;MAC7C;IACF,CAAC,CAAC;IACF,MAAM;MAAEC;IAAc,CAAC,GAAG9D,UAAU,CAAC8B,KAAK,EAAE4B,MAAM,CAAC;IACnD,MAAMK,MAAM,GAAGpF,UAAU,CAAC,KAAK,CAAC;IAChC,MAAMqF,OAAO,GAAGtF,GAAG,CAAC,KAAK,CAAC;IAE1B,MAAMyC,QAAQ,GAAGvC,KAAK,CAACkD,KAAK,EAAE,UAAU,CAAC;IACzC,MAAM;MAAEmC,SAAS;MAAEC;IAAc,CAAC,GAAG5E,OAAO,CAACV,KAAK,CAACkD,KAAK,EAAE,OAAO,CAAC,EAAE4B,MAAM,CAAC;IAC3E,MAAMS,QAAQ,GAAG9F,QAAQ,CACvB,MAAM,CAAC8C,QAAQ,CAACc,KAAK,KAAKgC,SAAS,CAAChC,KAAK,IAAIyB,MAAM,CAACzB,KAAK,CAC3D,CAAC;IAED,MAAM;MAAEmC,gBAAgB;MAAEC;IAAiB,CAAC,GAAGrF,aAAa,CAAC8C,KAAK,EAAE;MAClEwC,SAAS,EAAE1B,QAAQ;MACnBE,IAAI;MACJY;IACF,CAAC,CAAC;IACFxD,mBAAmB,CAAC4B,KAAK,EAAE;MACzByC,IAAI,EAAE1B,KAAK;MACXyB,SAAS,EAAE1B,QAAQ;MACnBc,MAAM;MACNV,MAAM,EAAEF,IAAI;MACZuB;IACF,CAAC,CAAC;IAEF,SAASG,sBAAsBA,CAACtC,UAAsB,EAAE;MACtDK,IAAI,CAAC,kBAAkB,EAAEL,UAAU,CAAC;MACpC,IAAI,CAACJ,KAAK,CAACC,KAAK,EAAE;QAChB,IACEY,MAAM,CAACV,KAAK,KAAK,IAAI,IACrBU,MAAM,CAACV,KAAK,KAAKC,UAAU,CAACuC,MAAM,IAClC3C,KAAK,CAACd,eAAe,EACrB;UACA0C,MAAM,CAACzB,KAAK,GAAG,KAAK;QACtB;MACF,CAAC,MAAM;QACL;MAAA;IAEJ;IAEA,SAASyC,gBAAgBA,CAAA,EAAY;MACnC,OACE,CAAC,CAAC5C,KAAK,CAACV,WAAW,IAAKU,KAAK,CAACV,WAAW,IAAI,CAAC4C,OAAO,CAAC/B,KAAM,KAC5DyB,MAAM,CAACzB,KAAK,IACZ8B,MAAM,CAAC9B,KAAK,CACZ,CAAC;IACL;;IAEA,MAAM0C,qBAAqB,GAAGlG,QAAQ,CAAgC;MACpEmG,OAAO,EAAEJ,sBAAsB;MAC/BK,SAAS,EAAEH,gBAAgB;MAC3BI,OAAO,EAAEA,CAAA,KAAM,CAAC9B,MAAM,CAACf,KAAK;IAC9B,CAAC,CAAC;IAEF,SAAS8C,YAAYA,CAAA,EAAG;MACtBhB,MAAM,CAAC9B,KAAK,GAAG,IAAI;IACrB;IAEA,SAAS+C,YAAYA,CAAA,EAAG;MACtBd,aAAa,CAAC,CAAC;MACfH,MAAM,CAAC9B,KAAK,GAAG,KAAK;MACpBM,IAAI,CAAC,YAAY,CAAC;IACpB;IAEA,SAAS0C,YAAYA,CAAA,EAAG;MACtB,IAAInD,KAAK,CAACd,eAAe,EAAE;QACzB0C,MAAM,CAACzB,KAAK,GAAG,KAAK;MACtB;IACF;IAEA,SAASiD,YAAYA,CAACC,KAAY,EAAE;MAClCnB,OAAO,CAAC/B,KAAK,GAAG,IAAI;IACtB;IAEA,SAASmD,YAAYA,CAACD,KAAY,EAAE;MAClCnB,OAAO,CAAC/B,KAAK,GAAG,KAAK;IACvB;IAEA,MAAMoD,aAAa,GAAGhH,QAAQ,CAAC,MAAM;MACnC,OAAO;QACLkD,MAAM,EAAE,CAACO,KAAK,CAACP,MAAM,IAAI,MAAM,EAAE+D,QAAQ,CAAC;MAC5C,CAAC;IACH,CAAC,CAAC;IAEF,MAAMC,aAAa,GAAGlH,QAAQ,CAA0B,MAAM;MAC5D,MAAM;QAAEsC;MAAQ,CAAC,GAAGmB,KAAK;MACzB,MAAM0D,YAAY,GAAG7F,WAAW,CAACgB,OAAO,CAAC;MACzC,OAAO;QACL,GAAG6E,YAAY;QACf,iBAAiB,EAAE,CAAC,CAAC9B,MAAM,CAACzB;MAC9B,CAAC;IACH,CAAC,CAAC;IAEF,MAAMwD,sBAAsB,GAAGpH,QAAQ,CAA0B,MAAM;MACrE,MAAMmH,YAAY,GAAG7F,WAAW,CAACmC,KAAK,CAACf,cAAc,CAAC;MACtD,OAAO;QACL,GAAGyE;MACL,CAAC;IACH,CAAC,CAAC;IAEFhD,MAAM,CAAC;MACLG,MAAM;MACNI,KAAK;MACLH,QAAQ,EAAEvE,QAAQ,CAAC,MAAMuE,QAAQ,CAACX,KAAK,CAAC;MACxCe,MAAM;MACNU,MAAM;MACNQ,aAAa;MACbG,gBAAgB;MAChBL,OAAO;MACPD,MAAM;MACNhC,KAAK,EAAE1D,QAAQ,CAAC,MAAMyD,KAAK,CAACC,KAAK,CAAC;MAClCuB,eAAe;MACfoC,IAAI,EAAGC,KAAgC,IAAK;QAC1C,OAAOA,KAAK,KAAKjD,EAAE;MACrB;IACF,CAAC,CAAC;IAEF5D,SAAS,CAAC,MAAM;MACd,MAAM8G,QAAQ,GAAGxD,KAAK,CAACU,IAAI,GAAG;QAC5BY,MAAM,EAAEA,MAAM,CAACzB,KAAK;QACpBH,KAAK,EAAEtD,UAAU,CAAC;UAChBE,GAAG,EAAEqE,KAAK;UACV8C,KAAK,EAAE;YACL,cAAc,EAAE,IAAI;YACpB,sBAAsB,EAAEnC,MAAM,CAACzB;UACjC;QACF,CAAC;MACH,CAAC,CAAC;MACFgB,QAAQ,CAAChB,KAAK,GAAG2D,QAAQ;MACzB,OAAAE,YAAA,CAAAC,SAAA,SAEKH,QAAQ,EAAAE,YAAA,CAAA3H,QAAA;QAAA,YACW,CAACiF,UAAU,CAACnB,KAAK;QAAA,MAAMmB,UAAU,CAACnB;MAAK;QAAAf,OAAA,EAAAA,CAAA,MACxDiD,QAAQ,CAAClC,KAAK,IAAA6D,YAAA,QAAAE,WAAA;UAAA,SAEJ,CACL;YACE,SAAS,EAAE,IAAI;YACf,iBAAiB,EAAEjC,MAAM,CAAC9B,KAAK;YAC/B,oBAAoB,EAAEH,KAAK,CAACN,SAAS;YACrC,GAAG+D,aAAa,CAACtD;UACnB,CAAC,EACDkB,YAAY,CAAClB,KAAK,CACnB;UAAA,gBACaiD,YAAY;UAAA,gBACZE,YAAY;UAAA,SACnBC,aAAa,CAACpD,KAAK;UAAA,OACpBY;QAAK,GACPJ,KAAK,IAAAqD,YAAA,CAAA1H,UAAA;UAAA;UAAA;QAAA;UAAA8C,OAAA,EAAAA,CAAA,MAGNwC,MAAM,CAACzB,KAAK,IAAIH,KAAK,CAACvB,KAAK,IAAAuF,YAAA;YAAA;YAAA,SAGjB;cAAE,yBAAyB,EAAEhE,KAAK,CAACtB;YAAa,CAAC;YAAA,WAC/CyE,YAAY;YAAA;UAAA,QAGxB;QAAA,IAAAa,YAAA,CAAAvG,cAAA,EAAAyG,WAAA;UAAA,gBAGajB,YAAY;UAAA,gBACZC,YAAY;UAAA;QAAA,GAEtBzB,uBAAuB,CAACtB,KAAK;UAAAf,OAAA,EAAAA,CAAA,MAAA+E,eAAA,CAAAH,YAAA,QAAAE,WAAA;YAAA,SAKxB;cACL,kBAAkB,EAAE,IAAI;cACxB,GAAGP,sBAAsB,CAACxD;YAC5B,CAAC;YAAA,SACM,CACL;cACE,GAAGuB,eAAe,CAACvB,KAAK;cACxB,GAAGmC,gBAAgB,CAACnC,KAAK;cACzB,GAAGH,KAAK,CAACb;YACX,CAAC;UACF,GACG6C,aAAa,CAAC7B,KAAK;YAAA,OAClBW;UAAQ,KAEZR,KAAK,CAAClB,OAAO,GAAG;YAAEwC,MAAM,EAAEA,MAAM,CAACzB;UAAM,CAAC,CAAC,MAAAiE,MAAA,EAhBlCxC,MAAM,CAACzB,KAAK,IAAAkE,iBAAA,sBACA;YAAE,GAAGxB;UAAsB,CAAC;QAAA,IAmBvD;MAAA;IAIT,CAAC,CAAC;IAEF,OAAO;MACLA,qBAAqB;MACrBvB,UAAU;MACVM,MAAM;MACNK,MAAM;MACNI,QAAQ;MACRF,SAAS;MACTC,aAAa,EAAEA,aAA2B;MAC1CvB,MAAM;MACNC,QAAQ;MACRG,KAAK;MACLC,MAAM;MACNE,cAAc;MACdK,uBAAuB;MACvBa,gBAAgB;MAChBf,eAAe;MACfC;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { computed, getCurrentInstance, ref, watchEffect } from 'vue';
2
- import { propsFactory } from "../../util/vue-component.mjs";
2
+ import { propsFactory } from "../../util/component/index.mjs";
3
3
  export const pressBasePropsOptions = propsFactory({
4
4
  base: [String, Object, Array]
5
5
  }, 'YLayer.base');
@@ -1 +1 @@
1
- {"version":3,"file":"base.mjs","names":["computed","getCurrentInstance","ref","watchEffect","propsFactory","pressBasePropsOptions","base","String","Object","Array","useBase","props","vm","base$","baseSlot","baseEl","baseFromSlotEl","el","value","nodeType","Node","ELEMENT_NODE","undefined","getBase","isArray","toEl","$el","flush","selector","ret","proxy","parentNode","parentEl","hasAttribute","document","querySelector"],"sources":["../../../src/components/layer/base.ts"],"sourcesContent":["import {\n ComponentInternalInstance,\n ComponentPublicInstance,\n PropType,\n computed,\n getCurrentInstance,\n ref,\n watchEffect,\n} from 'vue';\n\nimport { propsFactory } from '../../util/vue-component';\n\nexport type BaseType =\n | string\n | Element\n | ComponentPublicInstance\n | [x: number, y: number]\n | undefined;\n\nexport const pressBasePropsOptions = propsFactory(\n {\n base: [String, Object, Array] as PropType<BaseType>,\n },\n 'YLayer.base',\n);\n\ninterface BaseProps {\n base: BaseType;\n}\n\nexport function useBase(props: BaseProps) {\n const vm = getCurrentInstance()!;\n\n const base$ = ref();\n const baseSlot = ref();\n const baseEl = ref<HTMLElement>();\n\n const baseFromSlotEl = computed(() => {\n const el = baseSlot.value?.[0]?.el;\n if (el && el.nodeType === Node.ELEMENT_NODE) {\n return el;\n }\n return undefined;\n });\n\n const base = computed(() => {\n if (baseEl.value && !props.base) {\n return baseEl.value;\n }\n return getBase(props.base, vm);\n });\n\n watchEffect(() => {\n if (!base$.value) {\n if (!baseFromSlotEl.value && props.base && !Array.isArray(props.base)) {\n baseEl.value = base.value;\n return;\n }\n baseEl.value = baseFromSlotEl.value;\n return;\n }\n let toEl = base$.value;\n if (toEl.baseEl) {\n toEl = toEl.baseEl;\n }\n if (base$.value?.$el) {\n if (base$.value.$el.nodeType === Node.ELEMENT_NODE) {\n toEl = base$.value.$el;\n }\n }\n if (toEl?.nodeType !== Node.ELEMENT_NODE) {\n toEl = baseFromSlotEl.value;\n }\n baseEl.value = toEl;\n }, { flush: 'post' });\n\n return {\n base$,\n baseEl,\n baseSlot,\n base,\n baseFromSlotEl,\n };\n}\n\nfunction getBase(selector: BaseType, vm: ComponentInternalInstance) {\n if (!selector) return;\n\n let ret;\n\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode;\n let parentEl = el;\n while (el) {\n if (el?.hasAttribute('data-base-parent')) {\n parentEl = el;\n break;\n }\n el = el.parentNode;\n }\n ret = parentEl;\n }\n // Selector\n else if (typeof selector === 'string') {\n ret = document.querySelector(selector);\n }\n // Component\n else if ('$el' in selector) {\n ret = selector.$el;\n }\n // HTMLElement | Element | [x, y]\n else {\n ret = selector;\n }\n\n return ret;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"base.mjs","names":["computed","getCurrentInstance","ref","watchEffect","propsFactory","pressBasePropsOptions","base","String","Object","Array","useBase","props","vm","base$","baseSlot","baseEl","baseFromSlotEl","el","value","nodeType","Node","ELEMENT_NODE","undefined","getBase","isArray","toEl","$el","flush","selector","ret","proxy","parentNode","parentEl","hasAttribute","document","querySelector"],"sources":["../../../src/components/layer/base.ts"],"sourcesContent":["import {\r\n ComponentInternalInstance,\r\n ComponentPublicInstance,\r\n PropType,\r\n computed,\r\n getCurrentInstance,\r\n ref,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { propsFactory } from '../../util/component';\r\n\r\nexport type BaseType =\r\n | string\r\n | Element\r\n | ComponentPublicInstance\r\n | [x: number, y: number]\r\n | undefined;\r\n\r\nexport const pressBasePropsOptions = propsFactory(\r\n {\r\n base: [String, Object, Array] as PropType<BaseType>,\r\n },\r\n 'YLayer.base',\r\n);\r\n\r\ninterface BaseProps {\r\n base: BaseType;\r\n}\r\n\r\nexport function useBase(props: BaseProps) {\r\n const vm = getCurrentInstance()!;\r\n\r\n const base$ = ref();\r\n const baseSlot = ref();\r\n const baseEl = ref<HTMLElement>();\r\n\r\n const baseFromSlotEl = computed(() => {\r\n const el = baseSlot.value?.[0]?.el;\r\n if (el && el.nodeType === Node.ELEMENT_NODE) {\r\n return el;\r\n }\r\n return undefined;\r\n });\r\n\r\n const base = computed(() => {\r\n if (baseEl.value && !props.base) {\r\n return baseEl.value;\r\n }\r\n return getBase(props.base, vm);\r\n });\r\n\r\n watchEffect(() => {\r\n if (!base$.value) {\r\n if (!baseFromSlotEl.value && props.base && !Array.isArray(props.base)) {\r\n baseEl.value = base.value;\r\n return;\r\n }\r\n baseEl.value = baseFromSlotEl.value;\r\n return;\r\n }\r\n let toEl = base$.value;\r\n if (toEl.baseEl) {\r\n toEl = toEl.baseEl;\r\n }\r\n if (base$.value?.$el) {\r\n if (base$.value.$el.nodeType === Node.ELEMENT_NODE) {\r\n toEl = base$.value.$el;\r\n }\r\n }\r\n if (toEl?.nodeType !== Node.ELEMENT_NODE) {\r\n toEl = baseFromSlotEl.value;\r\n }\r\n baseEl.value = toEl;\r\n }, { flush: 'post' });\r\n\r\n return {\r\n base$,\r\n baseEl,\r\n baseSlot,\r\n base,\r\n baseFromSlotEl,\r\n };\r\n}\r\n\r\nfunction getBase(selector: BaseType, vm: ComponentInternalInstance) {\r\n if (!selector) return;\r\n\r\n let ret;\r\n\r\n if (selector === 'parent') {\r\n let el = vm?.proxy?.$el?.parentNode;\r\n let parentEl = el;\r\n while (el) {\r\n if (el?.hasAttribute('data-base-parent')) {\r\n parentEl = el;\r\n break;\r\n }\r\n el = el.parentNode;\r\n }\r\n ret = parentEl;\r\n }\r\n // Selector\r\n else if (typeof selector === 'string') {\r\n ret = document.querySelector(selector);\r\n }\r\n // Component\r\n else if ('$el' in selector) {\r\n ret = selector.$el;\r\n }\r\n // HTMLElement | Element | [x, y]\r\n else {\r\n ret = selector;\r\n }\r\n\r\n return ret;\r\n}\r\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { computed } from 'vue';
2
- import { propsFactory } from "../../util/vue-component.mjs";
2
+ import { propsFactory } from "../../util/component/index.mjs";
3
3
  export const pressContentPropsOptions = propsFactory({
4
4
  closeClickContent: {
5
5
  type: Boolean
@@ -1 +1 @@
1
- {"version":3,"file":"content.mjs","names":["computed","propsFactory","pressContentPropsOptions","closeClickContent","type","Boolean","useContent","props","active","contentEvents","events","onClick","e","value"],"sources":["../../../src/components/layer/content.ts"],"sourcesContent":["import { computed, type PropType, type Ref } from 'vue';\r\n\r\nimport { propsFactory } from '../../util/vue-component';\r\n\r\nexport const pressContentPropsOptions = propsFactory(\r\n {\r\n closeClickContent: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n },\r\n 'YLayer.content',\r\n);\r\n\r\ninterface ContentProps {\r\n closeClickContent: boolean | undefined;\r\n}\r\n\r\nexport function useContent(props: ContentProps, active: Ref<boolean>) {\r\n const contentEvents = computed(() => {\r\n const events: Record<string, EventListener> = {}\r\n\r\n if (props.closeClickContent) {\r\n events.onClick = (e: Event) => {\r\n active.value = false;\r\n }\r\n }\r\n\r\n return events;\r\n })\r\n\r\n return {\r\n contentEvents\r\n }\r\n}\r\n"],"mappings":"AAAA,SAASA,QAAQ,QAAiC,KAAK;AAAC,SAE/CC,YAAY;AAErB,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAClD;EACEE,iBAAiB,EAAE;IACjBC,IAAI,EAAEC;EACR;AACF,CAAC,EACD,gBACF,CAAC;AAMD,OAAO,SAASC,UAAUA,CAACC,KAAmB,EAAEC,MAAoB,EAAE;EACpE,MAAMC,aAAa,GAAGT,QAAQ,CAAC,MAAM;IACnC,MAAMU,MAAqC,GAAG,CAAC,CAAC;IAEhD,IAAIH,KAAK,CAACJ,iBAAiB,EAAE;MAC3BO,MAAM,CAACC,OAAO,GAAIC,CAAQ,IAAK;QAC7BJ,MAAM,CAACK,KAAK,GAAG,KAAK;MACtB,CAAC;IACH;IAEA,OAAOH,MAAM;EACf,CAAC,CAAC;EAEF,OAAO;IACLD;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"content.mjs","names":["computed","propsFactory","pressContentPropsOptions","closeClickContent","type","Boolean","useContent","props","active","contentEvents","events","onClick","e","value"],"sources":["../../../src/components/layer/content.ts"],"sourcesContent":["import { computed, type PropType, type Ref } from 'vue';\r\n\r\nimport { propsFactory } from '../../util/component';\r\n\r\nexport const pressContentPropsOptions = propsFactory(\r\n {\r\n closeClickContent: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n },\r\n 'YLayer.content',\r\n);\r\n\r\ninterface ContentProps {\r\n closeClickContent: boolean | undefined;\r\n}\r\n\r\nexport function useContent(props: ContentProps, active: Ref<boolean>) {\r\n const contentEvents = computed(() => {\r\n const events: Record<string, EventListener> = {}\r\n\r\n if (props.closeClickContent) {\r\n events.onClick = (e: Event) => {\r\n active.value = false;\r\n }\r\n }\r\n\r\n return events;\r\n })\r\n\r\n return {\r\n contentEvents\r\n }\r\n}\r\n"],"mappings":"AAAA,SAASA,QAAQ,QAAiC,KAAK;AAAC,SAE/CC,YAAY;AAErB,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAClD;EACEE,iBAAiB,EAAE;IACjBC,IAAI,EAAEC;EACR;AACF,CAAC,EACD,gBACF,CAAC;AAMD,OAAO,SAASC,UAAUA,CAACC,KAAmB,EAAEC,MAAoB,EAAE;EACpE,MAAMC,aAAa,GAAGT,QAAQ,CAAC,MAAM;IACnC,MAAMU,MAAqC,GAAG,CAAC,CAAC;IAEhD,IAAIH,KAAK,CAACJ,iBAAiB,EAAE;MAC3BO,MAAM,CAACC,OAAO,GAAIC,CAAQ,IAAK;QAC7BJ,MAAM,CAACK,KAAK,GAAG,KAAK;MACtB,CAAC;IACH;IAEA,OAAOH,MAAM;EACf,CAAC,CAAC;EAEF,OAAO;IACLD;EACF,CAAC;AACH"}
@@ -2,7 +2,7 @@ import { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue';
2
2
  import { FrameScheduler } from "../../util/frame-scheduler.mjs";
3
3
  import { getScrollParents, hasScrollbar } from "../../util/scroll.mjs";
4
4
  import { toStyleSizeValue } from "../../util/ui.mjs";
5
- import { propsFactory } from "../../util/vue-component.mjs";
5
+ import { propsFactory } from "../../util/component/index.mjs";
6
6
  const frameScheduler = new FrameScheduler();
7
7
  const scrollStrategies = {
8
8
  none: null,
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-strategies.mjs","names":["effectScope","nextTick","onScopeDispose","watchEffect","FrameScheduler","getScrollParents","hasScrollbar","toStyleSizeValue","propsFactory","frameScheduler","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","pressScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","active","value","run","onScroll","e","bindScroll","baseEl","contentEl","BLOCKER_LAYER_CLASS","BLOCKER_CLASS","BLOCKER_SCROLL_X_VAR","BLOCKER_SCROLL_Y_VAR","BLOCKER_SCROLL_OFFSET_VAR","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","removeProperty","remove","slow","raf","ric","update","requestNewFrame","start","performance","now","updateCoordinate","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/layer/scroll-strategies.ts"],"sourcesContent":["import type { EffectScope, PropType, Ref } from 'vue';\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue';\n\nimport { FrameScheduler } from '../../util/frame-scheduler';\nimport { getScrollParents, hasScrollbar } from '../../util/scroll';\nimport { toStyleSizeValue } from '../../util/ui';\nimport { propsFactory } from '../../util/vue-component';\n\nconst frameScheduler = new FrameScheduler();\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>;\n contentEl: Ref<HTMLElement | undefined>;\n baseEl: Ref<HTMLElement | undefined>;\n active: Ref<boolean>;\n updateCoordinate: Ref<((e: Event) => void) | undefined>;\n}\n\ntype ScrollStrategyFn = (\n data: ScrollStrategyData,\n props: StrategyProps,\n scope: EffectScope,\n) => void;\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n};\n\nexport interface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn;\n contained: boolean | undefined;\n}\n\nexport const pressScrollStrategyProps = propsFactory(\n {\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) =>\n typeof val === 'function' || val in scrollStrategies,\n },\n },\n 'YLayer__scroll-strategies',\n);\n\nexport function useScrollStrategies(\n props: StrategyProps,\n data: ScrollStrategyData,\n) {\n let scope: EffectScope | undefined;\n watchEffect(async () => {\n scope?.stop();\n\n if (!(data.active.value && props.scrollStrategy)) return;\n\n scope = effectScope();\n await nextTick();\n scope.active &&\n scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data, props, scope!);\n } else {\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!);\n }\n });\n });\n\n onScopeDispose(() => {\n scope?.stop();\n });\n}\n\nfunction closeScrollStrategy(data: ScrollStrategyData) {\n function onScroll(e: Event) {\n data.active.value = false;\n }\n\n bindScroll(data.baseEl.value ?? data.contentEl.value, onScroll);\n}\n\nconst BLOCKER_LAYER_CLASS = 'y-layer--scroll-blocked';\nconst BLOCKER_CLASS = 'y-layer-scroll-blocked';\nconst BLOCKER_SCROLL_X_VAR = '--y-body-scroll-x';\nconst BLOCKER_SCROLL_Y_VAR = '--y-body-scroll-y';\nconst BLOCKER_SCROLL_OFFSET_VAR = '--y-scrollbar-offset';\n\nfunction blockScrollStrategy(data: ScrollStrategyData, props: StrategyProps) {\n const offsetParent = data.root.value?.offsetParent;\n const scrollElements = [\n ...new Set([\n ...getScrollParents(\n data.baseEl.value,\n props.contained ? offsetParent : undefined,\n ),\n ...getScrollParents(\n data.contentEl.value,\n props.contained ? offsetParent : undefined,\n ),\n ]),\n ].filter((el) => !el.classList.contains(BLOCKER_CLASS));\n const scrollbarWidth =\n window.innerWidth - document.documentElement.offsetWidth;\n\n const scrollableParent = ((el) => hasScrollbar(el) && el)(\n offsetParent || document.documentElement,\n );\n if (scrollableParent) {\n data.root.value!.classList.add(BLOCKER_LAYER_CLASS);\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty(\n BLOCKER_SCROLL_X_VAR,\n toStyleSizeValue(-el.scrollLeft) ?? null,\n );\n el.style.setProperty(\n BLOCKER_SCROLL_Y_VAR,\n toStyleSizeValue(-el.scrollTop) ?? null,\n );\n el.style.setProperty(\n BLOCKER_SCROLL_OFFSET_VAR,\n toStyleSizeValue(scrollbarWidth) ?? null,\n );\n el.classList.add(BLOCKER_LAYER_CLASS);\n });\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue(BLOCKER_SCROLL_X_VAR));\n const y = parseFloat(el.style.getPropertyValue(BLOCKER_SCROLL_Y_VAR));\n\n el.style.removeProperty(BLOCKER_SCROLL_X_VAR);\n el.style.removeProperty(BLOCKER_SCROLL_Y_VAR);\n el.style.removeProperty(BLOCKER_SCROLL_OFFSET_VAR);\n el.classList.remove(BLOCKER_CLASS);\n\n el.scrollLeft = -x;\n el.scrollTop = -y;\n });\n if (scrollableParent) {\n data.root.value!.classList.remove(BLOCKER_LAYER_CLASS);\n }\n });\n}\n\nfunction repositionScrollStrategy(\n data: ScrollStrategyData,\n props: StrategyProps,\n scope: EffectScope,\n) {\n let slow = false;\n let raf = -1;\n let ric = -1;\n\n function update(e: Event) {\n frameScheduler.requestNewFrame(() => {\n const start = performance.now();\n data.updateCoordinate.value?.(e);\n const time = performance.now() - start;\n slow = time / (1000 / 60) > 2;\n });\n }\n\n ric = (\n typeof requestIdleCallback === 'undefined'\n ? (cb: Function) => cb()\n : requestIdleCallback\n )(() => {\n scope.run(() => {\n bindScroll(data.baseEl.value ?? data.contentEl.value, (e) => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e);\n });\n });\n } else {\n update(e);\n }\n });\n });\n });\n\n onScopeDispose(() => {\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);\n cancelAnimationFrame(raf);\n });\n}\n\n/** @private */\nfunction bindScroll(el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)];\n scrollElements.forEach((el) => {\n el.addEventListener('scroll', onScroll, { passive: true });\n });\n\n onScopeDispose(() => {\n scrollElements.forEach((el) => {\n el.removeEventListener('scroll', onScroll);\n });\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"scroll-strategies.mjs","names":["effectScope","nextTick","onScopeDispose","watchEffect","FrameScheduler","getScrollParents","hasScrollbar","toStyleSizeValue","propsFactory","frameScheduler","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","pressScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","active","value","run","onScroll","e","bindScroll","baseEl","contentEl","BLOCKER_LAYER_CLASS","BLOCKER_CLASS","BLOCKER_SCROLL_X_VAR","BLOCKER_SCROLL_Y_VAR","BLOCKER_SCROLL_OFFSET_VAR","offsetParent","root","scrollElements","Set","contained","undefined","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","removeProperty","remove","slow","raf","ric","update","requestNewFrame","start","performance","now","updateCoordinate","time","requestIdleCallback","cb","cancelAnimationFrame","requestAnimationFrame","cancelIdleCallback","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/layer/scroll-strategies.ts"],"sourcesContent":["import type { EffectScope, PropType, Ref } from 'vue';\r\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue';\r\n\r\nimport { FrameScheduler } from '../../util/frame-scheduler';\r\nimport { getScrollParents, hasScrollbar } from '../../util/scroll';\r\nimport { toStyleSizeValue } from '../../util/ui';\r\nimport { propsFactory } from '../../util/component';\r\n\r\nconst frameScheduler = new FrameScheduler();\r\n\r\nexport interface ScrollStrategyData {\r\n root: Ref<HTMLElement | undefined>;\r\n contentEl: Ref<HTMLElement | undefined>;\r\n baseEl: Ref<HTMLElement | undefined>;\r\n active: Ref<boolean>;\r\n updateCoordinate: Ref<((e: Event) => void) | undefined>;\r\n}\r\n\r\ntype ScrollStrategyFn = (\r\n data: ScrollStrategyData,\r\n props: StrategyProps,\r\n scope: EffectScope,\r\n) => void;\r\n\r\nconst scrollStrategies = {\r\n none: null,\r\n close: closeScrollStrategy,\r\n block: blockScrollStrategy,\r\n reposition: repositionScrollStrategy,\r\n};\r\n\r\nexport interface StrategyProps {\r\n scrollStrategy: keyof typeof scrollStrategies | ScrollStrategyFn;\r\n contained: boolean | undefined;\r\n}\r\n\r\nexport const pressScrollStrategyProps = propsFactory(\r\n {\r\n scrollStrategy: {\r\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\r\n default: 'block',\r\n validator: (val: any) =>\r\n typeof val === 'function' || val in scrollStrategies,\r\n },\r\n },\r\n 'YLayer__scroll-strategies',\r\n);\r\n\r\nexport function useScrollStrategies(\r\n props: StrategyProps,\r\n data: ScrollStrategyData,\r\n) {\r\n let scope: EffectScope | undefined;\r\n watchEffect(async () => {\r\n scope?.stop();\r\n\r\n if (!(data.active.value && props.scrollStrategy)) return;\r\n\r\n scope = effectScope();\r\n await nextTick();\r\n scope.active &&\r\n scope.run(() => {\r\n if (typeof props.scrollStrategy === 'function') {\r\n props.scrollStrategy(data, props, scope!);\r\n } else {\r\n scrollStrategies[props.scrollStrategy]?.(data, props, scope!);\r\n }\r\n });\r\n });\r\n\r\n onScopeDispose(() => {\r\n scope?.stop();\r\n });\r\n}\r\n\r\nfunction closeScrollStrategy(data: ScrollStrategyData) {\r\n function onScroll(e: Event) {\r\n data.active.value = false;\r\n }\r\n\r\n bindScroll(data.baseEl.value ?? data.contentEl.value, onScroll);\r\n}\r\n\r\nconst BLOCKER_LAYER_CLASS = 'y-layer--scroll-blocked';\r\nconst BLOCKER_CLASS = 'y-layer-scroll-blocked';\r\nconst BLOCKER_SCROLL_X_VAR = '--y-body-scroll-x';\r\nconst BLOCKER_SCROLL_Y_VAR = '--y-body-scroll-y';\r\nconst BLOCKER_SCROLL_OFFSET_VAR = '--y-scrollbar-offset';\r\n\r\nfunction blockScrollStrategy(data: ScrollStrategyData, props: StrategyProps) {\r\n const offsetParent = data.root.value?.offsetParent;\r\n const scrollElements = [\r\n ...new Set([\r\n ...getScrollParents(\r\n data.baseEl.value,\r\n props.contained ? offsetParent : undefined,\r\n ),\r\n ...getScrollParents(\r\n data.contentEl.value,\r\n props.contained ? offsetParent : undefined,\r\n ),\r\n ]),\r\n ].filter((el) => !el.classList.contains(BLOCKER_CLASS));\r\n const scrollbarWidth =\r\n window.innerWidth - document.documentElement.offsetWidth;\r\n\r\n const scrollableParent = ((el) => hasScrollbar(el) && el)(\r\n offsetParent || document.documentElement,\r\n );\r\n if (scrollableParent) {\r\n data.root.value!.classList.add(BLOCKER_LAYER_CLASS);\r\n }\r\n\r\n scrollElements.forEach((el, i) => {\r\n el.style.setProperty(\r\n BLOCKER_SCROLL_X_VAR,\r\n toStyleSizeValue(-el.scrollLeft) ?? null,\r\n );\r\n el.style.setProperty(\r\n BLOCKER_SCROLL_Y_VAR,\r\n toStyleSizeValue(-el.scrollTop) ?? null,\r\n );\r\n el.style.setProperty(\r\n BLOCKER_SCROLL_OFFSET_VAR,\r\n toStyleSizeValue(scrollbarWidth) ?? null,\r\n );\r\n el.classList.add(BLOCKER_LAYER_CLASS);\r\n });\r\n\r\n onScopeDispose(() => {\r\n scrollElements.forEach((el, i) => {\r\n const x = parseFloat(el.style.getPropertyValue(BLOCKER_SCROLL_X_VAR));\r\n const y = parseFloat(el.style.getPropertyValue(BLOCKER_SCROLL_Y_VAR));\r\n\r\n el.style.removeProperty(BLOCKER_SCROLL_X_VAR);\r\n el.style.removeProperty(BLOCKER_SCROLL_Y_VAR);\r\n el.style.removeProperty(BLOCKER_SCROLL_OFFSET_VAR);\r\n el.classList.remove(BLOCKER_CLASS);\r\n\r\n el.scrollLeft = -x;\r\n el.scrollTop = -y;\r\n });\r\n if (scrollableParent) {\r\n data.root.value!.classList.remove(BLOCKER_LAYER_CLASS);\r\n }\r\n });\r\n}\r\n\r\nfunction repositionScrollStrategy(\r\n data: ScrollStrategyData,\r\n props: StrategyProps,\r\n scope: EffectScope,\r\n) {\r\n let slow = false;\r\n let raf = -1;\r\n let ric = -1;\r\n\r\n function update(e: Event) {\r\n frameScheduler.requestNewFrame(() => {\r\n const start = performance.now();\r\n data.updateCoordinate.value?.(e);\r\n const time = performance.now() - start;\r\n slow = time / (1000 / 60) > 2;\r\n });\r\n }\r\n\r\n ric = (\r\n typeof requestIdleCallback === 'undefined'\r\n ? (cb: Function) => cb()\r\n : requestIdleCallback\r\n )(() => {\r\n scope.run(() => {\r\n bindScroll(data.baseEl.value ?? data.contentEl.value, (e) => {\r\n if (slow) {\r\n // If the position calculation is slow,\r\n // defer updates until scrolling is finished.\r\n // Browsers usually fire one scroll event per frame so\r\n // we just wait until we've got two frames without an event\r\n cancelAnimationFrame(raf);\r\n raf = requestAnimationFrame(() => {\r\n raf = requestAnimationFrame(() => {\r\n update(e);\r\n });\r\n });\r\n } else {\r\n update(e);\r\n }\r\n });\r\n });\r\n });\r\n\r\n onScopeDispose(() => {\r\n typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);\r\n cancelAnimationFrame(raf);\r\n });\r\n}\r\n\r\n/** @private */\r\nfunction bindScroll(el: HTMLElement | undefined, onScroll: (e: Event) => void) {\r\n const scrollElements = [document, ...getScrollParents(el)];\r\n scrollElements.forEach((el) => {\r\n el.addEventListener('scroll', onScroll, { passive: true });\r\n });\r\n\r\n onScopeDispose(() => {\r\n scrollElements.forEach((el) => {\r\n el.removeEventListener('scroll', onScroll);\r\n });\r\n });\r\n}\r\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
2
  import { defineComponent, ref, shallowRef } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
4
  import { pressThemePropsOptions, useLocalTheme } from "../../composables/theme/index.mjs";
5
- import { propsFactory } from "../../util/vue-component.mjs";
5
+ import { propsFactory } from "../../util/component/index.mjs";
6
6
  import "./YList.scss";
7
7
  export const pressYListPropsOptions = propsFactory({
8
8
  disabled: Boolean,
@@ -1 +1 @@
1
- {"version":3,"file":"YList.mjs","names":["defineComponent","ref","shallowRef","useRender","pressThemePropsOptions","useLocalTheme","propsFactory","pressYListPropsOptions","disabled","Boolean","YList","name","props","setup","_ref","slots","attrs","el$","themeClasses","focused","onFocus","event","value","relatedTarget","contains","focus","onFocusIn","onFocusOut","onKeydown","target","_createVNode","_mergeProps","tabindex","default"],"sources":["../../../src/components/list/YList.tsx"],"sourcesContent":["import { defineComponent, ref, shallowRef } from 'vue';\r\n\r\n\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\r\nimport { propsFactory } from '../../util/vue-component';\r\n\r\n\r\n\r\nimport './YList.scss';\r\n\r\n\r\nexport const pressYListPropsOptions = propsFactory(\r\n {\r\n disabled: Boolean,\r\n ...pressThemePropsOptions(),\r\n },\r\n 'YList',\r\n);\r\n\r\nexport const YList = defineComponent({\r\n name: 'YList',\r\n props: {\r\n ...pressYListPropsOptions(),\r\n },\r\n setup(props, { slots, attrs }) {\r\n const el$ = ref<HTMLElement>();\r\n\r\n const { themeClasses } = useLocalTheme(props);\r\n\r\n const focused = shallowRef(false);\r\n\r\n function onFocus(event: FocusEvent) {\r\n if (\r\n !focused.value &&\r\n !(\r\n event.relatedTarget &&\r\n el$.value?.contains(event.relatedTarget as Node)\r\n )\r\n ) {\r\n focus();\r\n }\r\n }\r\n\r\n function onFocusIn(event: FocusEvent) {\r\n focused.value = true;\r\n }\r\n\r\n function onFocusOut(event: FocusEvent) {\r\n focused.value = false;\r\n }\r\n\r\n function onKeydown(event: KeyboardEvent) {\r\n //\r\n }\r\n\r\n function focus(target?: string) {\r\n //\r\n }\r\n\r\n useRender(() => (\r\n <div\r\n ref={el$}\r\n class={['y-list', themeClasses.value]}\r\n role=\"listbox\"\r\n tabindex={\r\n (attrs.tabindex as number | string) ??\r\n (props.disabled || focused.value ? -1 : 0)\r\n }\r\n onFocus={onFocus}\r\n onFocusin={onFocusIn}\r\n onFocusout={onFocusOut}\r\n onKeydown={onKeydown}\r\n {...attrs}\r\n >\r\n {slots.default?.()}\r\n </div>\r\n ));\r\n },\r\n});\r\n\r\nexport type YList = InstanceType<typeof YList>;\r\n"],"mappings":";AAAA,SAASA,eAAe,EAAEC,GAAG,EAAEC,UAAU,QAAQ,KAAK;AAAC,SAI9CC,SAAS;AAAA,SACTC,sBAAsB,EAAEC,aAAa;AAAA,SACrCC,YAAY;AAIrB;AAGA,OAAO,MAAMC,sBAAsB,GAAGD,YAAY,CAChD;EACEE,QAAQ,EAAEC,OAAO;EACjB,GAAGL,sBAAsB,CAAC;AAC5B,CAAC,EACD,OACF,CAAC;AAED,OAAO,MAAMM,KAAK,GAAGV,eAAe,CAAC;EACnCW,IAAI,EAAE,OAAO;EACbC,KAAK,EAAE;IACL,GAAGL,sBAAsB,CAAC;EAC5B,CAAC;EACDM,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,GAAG,GAAGhB,GAAG,CAAc,CAAC;IAE9B,MAAM;MAAEiB;IAAa,CAAC,GAAGb,aAAa,CAACO,KAAK,CAAC;IAE7C,MAAMO,OAAO,GAAGjB,UAAU,CAAC,KAAK,CAAC;IAEjC,SAASkB,OAAOA,CAACC,KAAiB,EAAE;MAClC,IACE,CAACF,OAAO,CAACG,KAAK,IACd,EACED,KAAK,CAACE,aAAa,IACnBN,GAAG,CAACK,KAAK,EAAEE,QAAQ,CAACH,KAAK,CAACE,aAAqB,CAAC,CACjD,EACD;QACAE,KAAK,CAAC,CAAC;MACT;IACF;IAEA,SAASC,SAASA,CAACL,KAAiB,EAAE;MACpCF,OAAO,CAACG,KAAK,GAAG,IAAI;IACtB;IAEA,SAASK,UAAUA,CAACN,KAAiB,EAAE;MACrCF,OAAO,CAACG,KAAK,GAAG,KAAK;IACvB;IAEA,SAASM,SAASA,CAACP,KAAoB,EAAE;MACvC;IAAA;IAGF,SAASI,KAAKA,CAACI,MAAe,EAAE;MAC9B;IAAA;IAGF1B,SAAS,CAAC,MAAA2B,YAAA,QAAAC,WAAA;MAAA,OAEDd,GAAG;MAAA,SACD,CAAC,QAAQ,EAAEC,YAAY,CAACI,KAAK,CAAC;MAAA;MAAA,YAGlCN,KAAK,CAACgB,QAAQ,KACdpB,KAAK,CAACJ,QAAQ,IAAIW,OAAO,CAACG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;MAAA,WAEnCF,OAAO;MAAA,aACLM,SAAS;MAAA,cACRC,UAAU;MAAA,aACXC;IAAS,GAChBZ,KAAK,IAERD,KAAK,CAACkB,OAAO,GAAG,CAAC,EAErB,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YList.mjs","names":["defineComponent","ref","shallowRef","useRender","pressThemePropsOptions","useLocalTheme","propsFactory","pressYListPropsOptions","disabled","Boolean","YList","name","props","setup","_ref","slots","attrs","el$","themeClasses","focused","onFocus","event","value","relatedTarget","contains","focus","onFocusIn","onFocusOut","onKeydown","target","_createVNode","_mergeProps","tabindex","default"],"sources":["../../../src/components/list/YList.tsx"],"sourcesContent":["import { defineComponent, ref, shallowRef } from 'vue';\r\n\r\n\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\r\nimport { propsFactory } from '../../util/component';\r\n\r\n\r\n\r\nimport './YList.scss';\r\n\r\n\r\nexport const pressYListPropsOptions = propsFactory(\r\n {\r\n disabled: Boolean,\r\n ...pressThemePropsOptions(),\r\n },\r\n 'YList',\r\n);\r\n\r\nexport const YList = defineComponent({\r\n name: 'YList',\r\n props: {\r\n ...pressYListPropsOptions(),\r\n },\r\n setup(props, { slots, attrs }) {\r\n const el$ = ref<HTMLElement>();\r\n\r\n const { themeClasses } = useLocalTheme(props);\r\n\r\n const focused = shallowRef(false);\r\n\r\n function onFocus(event: FocusEvent) {\r\n if (\r\n !focused.value &&\r\n !(\r\n event.relatedTarget &&\r\n el$.value?.contains(event.relatedTarget as Node)\r\n )\r\n ) {\r\n focus();\r\n }\r\n }\r\n\r\n function onFocusIn(event: FocusEvent) {\r\n focused.value = true;\r\n }\r\n\r\n function onFocusOut(event: FocusEvent) {\r\n focused.value = false;\r\n }\r\n\r\n function onKeydown(event: KeyboardEvent) {\r\n //\r\n }\r\n\r\n function focus(target?: string) {\r\n //\r\n }\r\n\r\n useRender(() => (\r\n <div\r\n ref={el$}\r\n class={['y-list', themeClasses.value]}\r\n role=\"listbox\"\r\n tabindex={\r\n (attrs.tabindex as number | string) ??\r\n (props.disabled || focused.value ? -1 : 0)\r\n }\r\n onFocus={onFocus}\r\n onFocusin={onFocusIn}\r\n onFocusout={onFocusOut}\r\n onKeydown={onKeydown}\r\n {...attrs}\r\n >\r\n {slots.default?.()}\r\n </div>\r\n ));\r\n },\r\n});\r\n\r\nexport type YList = InstanceType<typeof YList>;\r\n"],"mappings":";AAAA,SAASA,eAAe,EAAEC,GAAG,EAAEC,UAAU,QAAQ,KAAK;AAAC,SAI9CC,SAAS;AAAA,SACTC,sBAAsB,EAAEC,aAAa;AAAA,SACrCC,YAAY;AAIrB;AAGA,OAAO,MAAMC,sBAAsB,GAAGD,YAAY,CAChD;EACEE,QAAQ,EAAEC,OAAO;EACjB,GAAGL,sBAAsB,CAAC;AAC5B,CAAC,EACD,OACF,CAAC;AAED,OAAO,MAAMM,KAAK,GAAGV,eAAe,CAAC;EACnCW,IAAI,EAAE,OAAO;EACbC,KAAK,EAAE;IACL,GAAGL,sBAAsB,CAAC;EAC5B,CAAC;EACDM,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,GAAG,GAAGhB,GAAG,CAAc,CAAC;IAE9B,MAAM;MAAEiB;IAAa,CAAC,GAAGb,aAAa,CAACO,KAAK,CAAC;IAE7C,MAAMO,OAAO,GAAGjB,UAAU,CAAC,KAAK,CAAC;IAEjC,SAASkB,OAAOA,CAACC,KAAiB,EAAE;MAClC,IACE,CAACF,OAAO,CAACG,KAAK,IACd,EACED,KAAK,CAACE,aAAa,IACnBN,GAAG,CAACK,KAAK,EAAEE,QAAQ,CAACH,KAAK,CAACE,aAAqB,CAAC,CACjD,EACD;QACAE,KAAK,CAAC,CAAC;MACT;IACF;IAEA,SAASC,SAASA,CAACL,KAAiB,EAAE;MACpCF,OAAO,CAACG,KAAK,GAAG,IAAI;IACtB;IAEA,SAASK,UAAUA,CAACN,KAAiB,EAAE;MACrCF,OAAO,CAACG,KAAK,GAAG,KAAK;IACvB;IAEA,SAASM,SAASA,CAACP,KAAoB,EAAE;MACvC;IAAA;IAGF,SAASI,KAAKA,CAACI,MAAe,EAAE;MAC9B;IAAA;IAGF1B,SAAS,CAAC,MAAA2B,YAAA,QAAAC,WAAA;MAAA,OAEDd,GAAG;MAAA,SACD,CAAC,QAAQ,EAAEC,YAAY,CAACI,KAAK,CAAC;MAAA;MAAA,YAGlCN,KAAK,CAACgB,QAAQ,KACdpB,KAAK,CAACJ,QAAQ,IAAIW,OAAO,CAACG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;MAAA,WAEnCF,OAAO;MAAA,aACLM,SAAS;MAAA,cACRC,UAAU;MAAA,aACXC;IAAS,GAChBZ,KAAK,IAERD,KAAK,CAACkB,OAAO,GAAG,CAAC,EAErB,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { createVNode as _createVNode } from "vue";
2
2
  import { computed, defineComponent } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
4
  import { pressThemePropsOptions, useLocalTheme } from "../../composables/theme/index.mjs";
5
- import { propsFactory } from "../../util/vue-component.mjs";
5
+ import { propsFactory } from "../../util/component/index.mjs";
6
6
  import "./YListItem.scss";
7
7
  export const pressYListItemProps = propsFactory({
8
8
  tag: {
@@ -1 +1 @@
1
- {"version":3,"file":"YListItem.mjs","names":["computed","defineComponent","useRender","pressThemePropsOptions","useLocalTheme","propsFactory","pressYListItemProps","tag","type","String","default","onClick","Function","disabled","Boolean","YListItem","name","props","emits","click","e","slots","Object","setup","_ref","emit","themeClasses","clickable","ElTag","_createVNode","value","leading","trailing"],"sources":["../../../src/components/list/YListItem.tsx"],"sourcesContent":["import { SlotsType, computed, defineComponent } from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\nimport { propsFactory } from '../../util/vue-component';\n\nimport './YListItem.scss';\n\nexport const pressYListItemProps = propsFactory(\n {\n tag: {\n type: String,\n default: 'div',\n },\n onClick: Function,\n disabled: Boolean,\n ...pressThemePropsOptions(),\n },\n 'YListItem',\n);\n\nexport const YListItem = defineComponent({\n name: 'YListItem',\n props: {\n ...pressYListItemProps(),\n },\n emits: {\n click: (e: MouseEvent) => true,\n },\n slots: Object as SlotsType<{\n default: any;\n leading: any;\n trailing: any;\n }>,\n setup(props, { slots, emit }) {\n const { themeClasses } = useLocalTheme(props);\n\n function onClick(e: MouseEvent) {\n emit('click', e);\n }\n\n const clickable = computed(() => {\n return !props.disabled && !!props.onClick;\n });\n\n useRender(() => {\n const ElTag = props.tag as keyof HTMLElementTagNameMap;\n return (\n <ElTag\n class={[\n 'y-list-item',\n {\n 'y-list-item--pointer': clickable.value,\n 'y-list-item--disabled': props.disabled,\n },\n themeClasses.value,\n ]}\n onClick={onClick}\n >\n {slots.leading && (\n <div class={'y-list-item__leading'}>{slots.leading()}</div>\n )}\n <div class={'y-list-item__content'}>{slots.default?.()}</div>\n {slots.trailing && (\n <div class={'y-list-item__trailing'}>{slots.trailing()}</div>\n )}\n </ElTag>\n );\n });\n },\n});\n\nexport type YListItem = InstanceType<typeof YListItem>;\n"],"mappings":";AAAA,SAAoBA,QAAQ,EAAEC,eAAe,QAAQ,KAAK;AAAC,SAElDC,SAAS;AAAA,SACTC,sBAAsB,EAAEC,aAAa;AAAA,SACrCC,YAAY;AAErB;AAEA,OAAO,MAAMC,mBAAmB,GAAGD,YAAY,CAC7C;EACEE,GAAG,EAAE;IACHC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,OAAO,EAAEC,QAAQ;EACjBC,QAAQ,EAAEC,OAAO;EACjB,GAAGX,sBAAsB,CAAC;AAC5B,CAAC,EACD,WACF,CAAC;AAED,OAAO,MAAMY,SAAS,GAAGd,eAAe,CAAC;EACvCe,IAAI,EAAE,WAAW;EACjBC,KAAK,EAAE;IACL,GAAGX,mBAAmB,CAAC;EACzB,CAAC;EACDY,KAAK,EAAE;IACLC,KAAK,EAAGC,CAAa,IAAK;EAC5B,CAAC;EACDC,KAAK,EAAEC,MAIL;EACFC,KAAKA,CAACN,KAAK,EAAAO,IAAA,EAAmB;IAAA,IAAjB;MAAEH,KAAK;MAAEI;IAAK,CAAC,GAAAD,IAAA;IAC1B,MAAM;MAAEE;IAAa,CAAC,GAAGtB,aAAa,CAACa,KAAK,CAAC;IAE7C,SAASN,OAAOA,CAACS,CAAa,EAAE;MAC9BK,IAAI,CAAC,OAAO,EAAEL,CAAC,CAAC;IAClB;IAEA,MAAMO,SAAS,GAAG3B,QAAQ,CAAC,MAAM;MAC/B,OAAO,CAACiB,KAAK,CAACJ,QAAQ,IAAI,CAAC,CAACI,KAAK,CAACN,OAAO;IAC3C,CAAC,CAAC;IAEFT,SAAS,CAAC,MAAM;MACd,MAAM0B,KAAK,GAAGX,KAAK,CAACV,GAAkC;MACtD,OAAAsB,YAAA,CAAAD,KAAA;QAAA,SAEW,CACL,aAAa,EACb;UACE,sBAAsB,EAAED,SAAS,CAACG,KAAK;UACvC,uBAAuB,EAAEb,KAAK,CAACJ;QACjC,CAAC,EACDa,YAAY,CAACI,KAAK,CACnB;QAAA,WACQnB;MAAO;QAAAD,OAAA,EAAAA,CAAA,MAEfW,KAAK,CAACU,OAAO,IAAAF,YAAA;UAAA,SACA;QAAsB,IAAGR,KAAK,CAACU,OAAO,CAAC,CAAC,EACrD,EAAAF,YAAA;UAAA,SACW;QAAsB,IAAGR,KAAK,CAACX,OAAO,GAAG,CAAC,IACrDW,KAAK,CAACW,QAAQ,IAAAH,YAAA;UAAA,SACD;QAAuB,IAAGR,KAAK,CAACW,QAAQ,CAAC,CAAC,EACvD;MAAA;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YListItem.mjs","names":["computed","defineComponent","useRender","pressThemePropsOptions","useLocalTheme","propsFactory","pressYListItemProps","tag","type","String","default","onClick","Function","disabled","Boolean","YListItem","name","props","emits","click","e","slots","Object","setup","_ref","emit","themeClasses","clickable","ElTag","_createVNode","value","leading","trailing"],"sources":["../../../src/components/list/YListItem.tsx"],"sourcesContent":["import { SlotsType, computed, defineComponent } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\r\nimport { propsFactory } from '../../util/component';\r\n\r\nimport './YListItem.scss';\r\n\r\nexport const pressYListItemProps = propsFactory(\r\n {\r\n tag: {\r\n type: String,\r\n default: 'div',\r\n },\r\n onClick: Function,\r\n disabled: Boolean,\r\n ...pressThemePropsOptions(),\r\n },\r\n 'YListItem',\r\n);\r\n\r\nexport const YListItem = defineComponent({\r\n name: 'YListItem',\r\n props: {\r\n ...pressYListItemProps(),\r\n },\r\n emits: {\r\n click: (e: MouseEvent) => true,\r\n },\r\n slots: Object as SlotsType<{\r\n default: any;\r\n leading: any;\r\n trailing: any;\r\n }>,\r\n setup(props, { slots, emit }) {\r\n const { themeClasses } = useLocalTheme(props);\r\n\r\n function onClick(e: MouseEvent) {\r\n emit('click', e);\r\n }\r\n\r\n const clickable = computed(() => {\r\n return !props.disabled && !!props.onClick;\r\n });\r\n\r\n useRender(() => {\r\n const ElTag = props.tag as keyof HTMLElementTagNameMap;\r\n return (\r\n <ElTag\r\n class={[\r\n 'y-list-item',\r\n {\r\n 'y-list-item--pointer': clickable.value,\r\n 'y-list-item--disabled': props.disabled,\r\n },\r\n themeClasses.value,\r\n ]}\r\n onClick={onClick}\r\n >\r\n {slots.leading && (\r\n <div class={'y-list-item__leading'}>{slots.leading()}</div>\r\n )}\r\n <div class={'y-list-item__content'}>{slots.default?.()}</div>\r\n {slots.trailing && (\r\n <div class={'y-list-item__trailing'}>{slots.trailing()}</div>\r\n )}\r\n </ElTag>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YListItem = InstanceType<typeof YListItem>;\r\n"],"mappings":";AAAA,SAAoBA,QAAQ,EAAEC,eAAe,QAAQ,KAAK;AAAC,SAElDC,SAAS;AAAA,SACTC,sBAAsB,EAAEC,aAAa;AAAA,SACrCC,YAAY;AAErB;AAEA,OAAO,MAAMC,mBAAmB,GAAGD,YAAY,CAC7C;EACEE,GAAG,EAAE;IACHC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,OAAO,EAAEC,QAAQ;EACjBC,QAAQ,EAAEC,OAAO;EACjB,GAAGX,sBAAsB,CAAC;AAC5B,CAAC,EACD,WACF,CAAC;AAED,OAAO,MAAMY,SAAS,GAAGd,eAAe,CAAC;EACvCe,IAAI,EAAE,WAAW;EACjBC,KAAK,EAAE;IACL,GAAGX,mBAAmB,CAAC;EACzB,CAAC;EACDY,KAAK,EAAE;IACLC,KAAK,EAAGC,CAAa,IAAK;EAC5B,CAAC;EACDC,KAAK,EAAEC,MAIL;EACFC,KAAKA,CAACN,KAAK,EAAAO,IAAA,EAAmB;IAAA,IAAjB;MAAEH,KAAK;MAAEI;IAAK,CAAC,GAAAD,IAAA;IAC1B,MAAM;MAAEE;IAAa,CAAC,GAAGtB,aAAa,CAACa,KAAK,CAAC;IAE7C,SAASN,OAAOA,CAACS,CAAa,EAAE;MAC9BK,IAAI,CAAC,OAAO,EAAEL,CAAC,CAAC;IAClB;IAEA,MAAMO,SAAS,GAAG3B,QAAQ,CAAC,MAAM;MAC/B,OAAO,CAACiB,KAAK,CAACJ,QAAQ,IAAI,CAAC,CAACI,KAAK,CAACN,OAAO;IAC3C,CAAC,CAAC;IAEFT,SAAS,CAAC,MAAM;MACd,MAAM0B,KAAK,GAAGX,KAAK,CAACV,GAAkC;MACtD,OAAAsB,YAAA,CAAAD,KAAA;QAAA,SAEW,CACL,aAAa,EACb;UACE,sBAAsB,EAAED,SAAS,CAACG,KAAK;UACvC,uBAAuB,EAAEb,KAAK,CAACJ;QACjC,CAAC,EACDa,YAAY,CAACI,KAAK,CACnB;QAAA,WACQnB;MAAO;QAAAD,OAAA,EAAAA,CAAA,MAEfW,KAAK,CAACU,OAAO,IAAAF,YAAA;UAAA,SACA;QAAsB,IAAGR,KAAK,CAACU,OAAO,CAAC,CAAC,EACrD,EAAAF,YAAA;UAAA,SACW;QAAsB,IAAGR,KAAK,CAACX,OAAO,GAAG,CAAC,IACrDW,KAAK,CAACW,QAAQ,IAAAH,YAAA;UAAA,SACD;QAAuB,IAAGR,KAAK,CAACW,QAAQ,CAAC,CAAC,EACvD;MAAA;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -5,7 +5,7 @@ import { useRender } from "../../composables/component.mjs";
5
5
  import { pressPolyTransitionPropsOptions } from "../../composables/transition.mjs";
6
6
  import { hasElementMouseEvent } from "../../util/dom.mjs";
7
7
  import { toKebabCase } from "../../util/string.mjs";
8
- import { bindClasses, chooseProps } from "../../util/vue-component.mjs";
8
+ import { bindClasses, chooseProps } from "../../util/component/index.mjs";
9
9
  import { YLayer, pressYLayerProps } from "../layer/index.mjs";
10
10
  import { useDelay } from "../layer/active-delay.mjs";
11
11
  import { useActiveStack } from "../layer/active-stack.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","ref","toRef","watch","useModelDuplex","useRender","pressPolyTransitionPropsOptions","hasElementMouseEvent","toKebabCase","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","scrollStrategy","preventCloseBubble","YMenu","name","props","transition","emits","slots","expose","setup","_ref","emit","layer$","classes","boundClasses","active","hovered","value","finish","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","disabled","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","immediate","computedContentClasses","contentClasses","_createVNode","_Fragment","_mergeProps","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { PropType, SlotsType } from 'vue';\r\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressPolyTransitionPropsOptions } from '../../composables/transition';\r\nimport { hasElementMouseEvent } from '../../util/dom';\r\nimport { toKebabCase } from '../../util/string';\r\nimport { bindClasses, chooseProps } from '../../util/vue-component';\r\nimport { YLayer, pressYLayerProps } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { useActiveStack } from '../layer/active-stack';\r\n\r\nimport './YMenu.scss';\r\n\r\nconst NAME = 'YMenu';\r\nconst CLASS_NAME = toKebabCase(NAME);\r\n\r\nexport const YMenuPropOptions = {\r\n menuClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n openOnClickBase: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n closeCondition: {\r\n type: [Boolean, Function],\r\n default: undefined,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation' as const,\r\n scrollStrategy: 'reposition' as const,\r\n }),\r\n preventCloseBubble: Boolean as PropType<boolean>,\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YMenu = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YMenuPropOptions,\r\n ...pressPolyTransitionPropsOptions({\r\n transition: 'fade'\r\n }),\r\n },\r\n emits: ['update:modelValue', 'afterLeave', 'hoverContent'],\r\n slots: Object as SlotsType<{\r\n default: any;\r\n base: any;\r\n }>,\r\n expose: ['layer$', 'baseEl'],\r\n setup(props, { slots, emit, expose }) {\r\n const layer$ = ref<typeof YLayer>();\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.menuClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-menu': true,\r\n };\r\n });\r\n\r\n const active = useModelDuplex(props);\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n const finish = computed(() => !!layer$.value?.finish);\r\n const { children, parent } = useActiveStack(\r\n layer$,\r\n active,\r\n toRef(props, 'preventCloseBubble'),\r\n );\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (\r\n !changeActive &&\r\n props.openOnHover &&\r\n !hovered.value &&\r\n children.value.length === 0\r\n ) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n emit('hoverContent', value);\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function onClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n if (!props.openOnClickBase) {\r\n return;\r\n }\r\n const currentActive = active.value;\r\n if (!props.disabled) {\r\n if (props.openOnHover && finish.value && active.value) {\r\n return;\r\n }\r\n active.value = !currentActive;\r\n }\r\n }\r\n\r\n function onComplementClick(e: Event) {\r\n if (props.closeCondition === false) {\r\n return;\r\n }\r\n if (typeof props.closeCondition === 'function') {\r\n if (props.closeCondition(e) === false) {\r\n active.value = false;\r\n return;\r\n }\r\n }\r\n if (active.value) {\r\n if ((!parent && children.value.length === 0) || parent) {\r\n active.value = false;\r\n }\r\n const parentContent = parent?.$el.value?.content$;\r\n const parentModal = parent?.$el.value?.modal;\r\n if (\r\n !(parentContent && !hasElementMouseEvent(e, parentContent)) &&\r\n !parentModal &&\r\n !props.preventCloseBubble\r\n ) {\r\n parent?.clear();\r\n }\r\n }\r\n }\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener('mouseenter', onMouseenter);\r\n el.addEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener('mouseenter', onMouseenter);\r\n el.removeEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n neo.addEventListener('click', onClick);\r\n } else if (old) {\r\n unbindHover(old);\r\n old.removeEventListener('click', onClick);\r\n }\r\n },\r\n {\r\n immediate: true,\r\n },\r\n );\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n return {\r\n ...boundClasses,\r\n };\r\n });\r\n\r\n const baseEl = computed(() => {\r\n return layer$.value?.baseEl;\r\n });\r\n\r\n expose({\r\n layer$,\r\n baseEl,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n ref={layer$}\r\n transition={props.transition}\r\n onClick:complement={onComplementClick}\r\n onAfterLeave={() => emit('afterLeave')}\r\n {...{\r\n ...chooseProps(props, YLayer.props),\r\n classes: classes.value,\r\n scrim: false,\r\n contentClasses: {\r\n 'y-menu__content': true,\r\n ...computedContentClasses.value,\r\n },\r\n }}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return <>{slots.default?.(...args) ?? ''}</>;\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n layer$,\r\n baseEl,\r\n classes,\r\n children,\r\n parent,\r\n active,\r\n hovered,\r\n };\r\n },\r\n});\r\n\r\nexport type YMenu = InstanceType<typeof YMenu>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","ref","toRef","watch","useModelDuplex","useRender","pressPolyTransitionPropsOptions","hasElementMouseEvent","toKebabCase","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","scrollStrategy","preventCloseBubble","YMenu","name","props","transition","emits","slots","expose","setup","_ref","emit","layer$","classes","boundClasses","active","hovered","value","finish","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","disabled","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","immediate","computedContentClasses","contentClasses","_createVNode","_Fragment","_mergeProps","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { PropType, SlotsType } from 'vue';\r\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressPolyTransitionPropsOptions } from '../../composables/transition';\r\nimport { hasElementMouseEvent } from '../../util/dom';\r\nimport { toKebabCase } from '../../util/string';\r\nimport { bindClasses, chooseProps } from '../../util/component';\r\nimport { YLayer, pressYLayerProps } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { useActiveStack } from '../layer/active-stack';\r\n\r\nimport './YMenu.scss';\r\n\r\nconst NAME = 'YMenu';\r\nconst CLASS_NAME = toKebabCase(NAME);\r\n\r\nexport const YMenuPropOptions = {\r\n menuClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n openOnClickBase: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n closeCondition: {\r\n type: [Boolean, Function],\r\n default: undefined,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation' as const,\r\n scrollStrategy: 'reposition' as const,\r\n }),\r\n preventCloseBubble: Boolean as PropType<boolean>,\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YMenu = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YMenuPropOptions,\r\n ...pressPolyTransitionPropsOptions({\r\n transition: 'fade'\r\n }),\r\n },\r\n emits: ['update:modelValue', 'afterLeave', 'hoverContent'],\r\n slots: Object as SlotsType<{\r\n default: any;\r\n base: any;\r\n }>,\r\n expose: ['layer$', 'baseEl'],\r\n setup(props, { slots, emit, expose }) {\r\n const layer$ = ref<typeof YLayer>();\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.menuClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-menu': true,\r\n };\r\n });\r\n\r\n const active = useModelDuplex(props);\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n const finish = computed(() => !!layer$.value?.finish);\r\n const { children, parent } = useActiveStack(\r\n layer$,\r\n active,\r\n toRef(props, 'preventCloseBubble'),\r\n );\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (\r\n !changeActive &&\r\n props.openOnHover &&\r\n !hovered.value &&\r\n children.value.length === 0\r\n ) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n emit('hoverContent', value);\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function onClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n if (!props.openOnClickBase) {\r\n return;\r\n }\r\n const currentActive = active.value;\r\n if (!props.disabled) {\r\n if (props.openOnHover && finish.value && active.value) {\r\n return;\r\n }\r\n active.value = !currentActive;\r\n }\r\n }\r\n\r\n function onComplementClick(e: Event) {\r\n if (props.closeCondition === false) {\r\n return;\r\n }\r\n if (typeof props.closeCondition === 'function') {\r\n if (props.closeCondition(e) === false) {\r\n active.value = false;\r\n return;\r\n }\r\n }\r\n if (active.value) {\r\n if ((!parent && children.value.length === 0) || parent) {\r\n active.value = false;\r\n }\r\n const parentContent = parent?.$el.value?.content$;\r\n const parentModal = parent?.$el.value?.modal;\r\n if (\r\n !(parentContent && !hasElementMouseEvent(e, parentContent)) &&\r\n !parentModal &&\r\n !props.preventCloseBubble\r\n ) {\r\n parent?.clear();\r\n }\r\n }\r\n }\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener('mouseenter', onMouseenter);\r\n el.addEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener('mouseenter', onMouseenter);\r\n el.removeEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n neo.addEventListener('click', onClick);\r\n } else if (old) {\r\n unbindHover(old);\r\n old.removeEventListener('click', onClick);\r\n }\r\n },\r\n {\r\n immediate: true,\r\n },\r\n );\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n return {\r\n ...boundClasses,\r\n };\r\n });\r\n\r\n const baseEl = computed(() => {\r\n return layer$.value?.baseEl;\r\n });\r\n\r\n expose({\r\n layer$,\r\n baseEl,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n ref={layer$}\r\n transition={props.transition}\r\n onClick:complement={onComplementClick}\r\n onAfterLeave={() => emit('afterLeave')}\r\n {...{\r\n ...chooseProps(props, YLayer.props),\r\n classes: classes.value,\r\n scrim: false,\r\n contentClasses: {\r\n 'y-menu__content': true,\r\n ...computedContentClasses.value,\r\n },\r\n }}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return <>{slots.default?.(...args) ?? ''}</>;\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n layer$,\r\n baseEl,\r\n classes,\r\n children,\r\n parent,\r\n active,\r\n hovered,\r\n };\r\n },\r\n});\r\n\r\nexport type YMenu = InstanceType<typeof YMenu>;\r\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { useRefs } from "../../composables/ref.mjs";
6
6
  import { useResizeObserver } from "../../composables/resize-observer.mjs";
7
7
  import { getRangeArr } from "../../util/common.mjs";
8
8
  import { toStyleSizeValue } from "../../util/ui.mjs";
9
- import { propsFactory } from "../../util/vue-component.mjs";
9
+ import { propsFactory } from "../../util/component/index.mjs";
10
10
  import { YButton } from "../button/index.mjs";
11
11
  import { YIconPageControl } from "../icons/YIconPageControl.mjs";
12
12
  import "./YPagination.scss";