yuyeon 0.3.2-rc.9 → 0.3.4-beta.9

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 (127) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +3414 -3201
  3. package/dist/yuyeon.umd.cjs +3 -3
  4. package/lib/components/draggable/YDraggable.js.map +1 -1
  5. package/lib/components/draggable/index.js +2 -0
  6. package/lib/components/draggable/index.js.map +1 -0
  7. package/lib/components/field-input/YFieldInput.js +4 -2
  8. package/lib/components/field-input/YFieldInput.js.map +1 -1
  9. package/lib/components/input/YInput.scss +1 -1
  10. package/lib/components/radio/YRadio.js +58 -0
  11. package/lib/components/radio/YRadio.js.map +1 -0
  12. package/lib/components/radio/YRadio.scss +38 -0
  13. package/lib/components/radio/YRadioIcon.js +33 -0
  14. package/lib/components/radio/YRadioIcon.js.map +1 -0
  15. package/lib/components/radio/YRadioIcon.scss +44 -0
  16. package/lib/components/radio/index.js +3 -0
  17. package/lib/components/radio/index.js.map +1 -0
  18. package/lib/components/select/YSelect.js +0 -1
  19. package/lib/components/select/YSelect.js.map +1 -1
  20. package/lib/components/table/YDataTable.js +26 -13
  21. package/lib/components/table/YDataTable.js.map +1 -1
  22. package/lib/components/table/YDataTableBody.js +14 -18
  23. package/lib/components/table/YDataTableBody.js.map +1 -1
  24. package/lib/components/table/YDataTableControl.js +8 -6
  25. package/lib/components/table/YDataTableControl.js.map +1 -1
  26. package/lib/components/table/YDataTableControl.scss +10 -0
  27. package/lib/components/table/YDataTableLayerRow.js +87 -0
  28. package/lib/components/table/YDataTableLayerRow.js.map +1 -0
  29. package/lib/components/table/YDataTableLayerRow.vue +7 -6
  30. package/lib/components/table/YDataTableLayerRows.js +60 -0
  31. package/lib/components/table/YDataTableLayerRows.js.map +1 -0
  32. package/lib/components/table/YDataTableLayerRows.scss +14 -0
  33. package/lib/components/table/YDataTableRow.js +13 -5
  34. package/lib/components/table/YDataTableRow.js.map +1 -1
  35. package/lib/components/table/YDataTableRows.scss +14 -0
  36. package/lib/components/table/YDataTableServer.js +20 -8
  37. package/lib/components/table/YDataTableServer.js.map +1 -1
  38. package/lib/components/table/composables/expand.js +49 -0
  39. package/lib/components/table/composables/expand.js.map +1 -0
  40. package/lib/components/table/composables/items.js +8 -2
  41. package/lib/components/table/composables/items.js.map +1 -1
  42. package/lib/components/table/index.js +2 -0
  43. package/lib/components/table/index.js.map +1 -1
  44. package/lib/components/table/types/item.js.map +1 -1
  45. package/lib/components/text-highlighter/YTextHighlighter.js +2 -1
  46. package/lib/components/text-highlighter/YTextHighlighter.js.map +1 -1
  47. package/lib/components/tree-view/YTreeViewNode.js +6 -2
  48. package/lib/components/tree-view/YTreeViewNode.js.map +1 -1
  49. package/lib/composables/style-color.js +1 -2
  50. package/lib/composables/style-color.js.map +1 -1
  51. package/lib/composables/theme/index.js +8 -1
  52. package/lib/composables/theme/index.js.map +1 -1
  53. package/lib/composables/validation.js +7 -4
  54. package/lib/composables/validation.js.map +1 -1
  55. package/lib/directives/index.js +3 -0
  56. package/lib/directives/index.js.map +1 -0
  57. package/lib/directives/plate-wave/index.js +2 -2
  58. package/lib/directives/plate-wave/index.js.map +1 -1
  59. package/lib/directives/theme-class/index.js +24 -0
  60. package/lib/directives/theme-class/index.js.map +1 -0
  61. package/lib/util/string.js +3 -0
  62. package/lib/util/string.js.map +1 -1
  63. package/package.json +13 -2
  64. package/types/abstract/items.d.ts +4 -4
  65. package/types/components/badge/YBadge.d.ts +4 -7
  66. package/types/components/button/YButton.d.ts +8 -8
  67. package/types/components/chip/YChip.d.ts +1 -4
  68. package/types/components/date-picker/YDateCalendar.d.ts +1 -1
  69. package/types/components/date-picker/YDatePicker.d.ts +1 -1
  70. package/types/components/date-picker/YDatePickerControl.d.ts +5 -5
  71. package/types/components/dialog/YDialog.d.ts +58 -58
  72. package/types/components/draggable/index.d.ts +1 -0
  73. package/types/components/dropdown/YDropdown.d.ts +55 -55
  74. package/types/components/field-input/YFieldInput.d.ts +19 -13
  75. package/types/components/hover/YHover.d.ts +3 -3
  76. package/types/components/icon/YIcon.d.ts +2 -2
  77. package/types/components/img/YImg.d.ts +5 -5
  78. package/types/components/input/YInput.d.ts +9 -9
  79. package/types/components/ip-field/YIpv4Field.d.ts +1 -1
  80. package/types/components/layer/YLayer.d.ts +26 -26
  81. package/types/components/layer/content.d.ts +1 -1
  82. package/types/components/layer/scroll-strategies.d.ts +1 -1
  83. package/types/components/list/YListItem.d.ts +1 -1
  84. package/types/components/menu/YMenu.d.ts +9 -9
  85. package/types/components/pagination/YPagination.d.ts +5 -5
  86. package/types/components/radio/YRadio.d.ts +25 -0
  87. package/types/components/radio/YRadioIcon.d.ts +6 -0
  88. package/types/components/radio/index.d.ts +2 -0
  89. package/types/components/select/YSelect.d.ts +68 -62
  90. package/types/components/snackbar/YSnackbar.d.ts +33 -33
  91. package/types/components/switch/YSwitch.d.ts +10 -10
  92. package/types/components/tab/YTab.d.ts +12 -12
  93. package/types/components/tab/YTabs.d.ts +4 -4
  94. package/types/components/table/YDataTable.d.ts +40 -15
  95. package/types/components/table/YDataTableBody.d.ts +3 -5
  96. package/types/components/table/YDataTableControl.d.ts +14 -2
  97. package/types/components/table/YDataTableHead.d.ts +2 -2
  98. package/types/components/table/YDataTableLayerRow.d.ts +22 -0
  99. package/types/components/table/YDataTableLayerRows.d.ts +9 -0
  100. package/types/components/table/YDataTableServer.d.ts +60 -26
  101. package/types/components/table/YTable.d.ts +4 -4
  102. package/types/components/table/composables/expand.d.ts +42 -0
  103. package/types/components/table/composables/header.d.ts +1 -1
  104. package/types/components/table/composables/items.d.ts +3 -3
  105. package/types/components/table/composables/pagination.d.ts +2 -2
  106. package/types/components/table/composables/selection.d.ts +3 -3
  107. package/types/components/table/composables/sorting.d.ts +1 -1
  108. package/types/components/table/index.d.ts +2 -0
  109. package/types/components/table/types/item.d.ts +1 -0
  110. package/types/components/textarea/YTextarea.d.ts +18 -18
  111. package/types/components/tooltip/YTooltip.d.ts +46 -46
  112. package/types/components/tree-view/YTreeView.d.ts +4 -4
  113. package/types/components/tree-view/YTreeViewNode.d.ts +8 -8
  114. package/types/composables/choice.d.ts +1 -1
  115. package/types/composables/coordinate/index.d.ts +8 -8
  116. package/types/composables/form.d.ts +2 -2
  117. package/types/composables/icon.d.ts +2 -2
  118. package/types/composables/list-items.d.ts +10 -10
  119. package/types/composables/style-color.d.ts +0 -1
  120. package/types/composables/theme/index.d.ts +1 -0
  121. package/types/composables/transition.d.ts +1 -1
  122. package/types/composables/validation.d.ts +3 -3
  123. package/types/directives/index.d.ts +2 -0
  124. package/types/directives/plate-wave/index.d.ts +7 -1
  125. package/types/shims.d.ts +64 -56
  126. package/types/util/string.d.ts +1 -0
  127. /package/types/directives/{theme-class.d.ts → theme-class/index.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"YTreeViewNode.js","names":["computed","getCurrentInstance","mergeProps","onBeforeMount","ref","resolveComponent","pressItemsPropsOptions","useTreeView","useRender","getObjectValueByPath","defineComponent","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeClass","Array","activeSingleModifier","requiredActive","activeColor","type","default","enableSelect","onMouseenterContainer","Function","onMouseleaveContainer","onMousemoveContainer","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","slots","setup","_ref","expose","YTreeNode","vm","treeView","container$","expanded","active","selected","immediate","children","itemChildren","slice","imLeaf","value","length","classes","styles","contentText","itemText","slotProps","searchLoading","leaves","filter","leaf","isExcluded","onClick","e","to","updateActive","myKey","emitActive","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","indentSpacer","i","push","_createVNode","leading","text","trailing","map","_mergeProps","_len","arguments","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","nodeState","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.tsx"],"sourcesContent":["import {\n type PropType,\n type SlotsType,\n type VNodeArrayChildren,\n computed,\n getCurrentInstance,\n mergeProps,\n onBeforeMount,\n ref,\n resolveComponent,\n} from 'vue';\n\nimport { pressItemsPropsOptions } from '@/abstract/items';\nimport { useTreeView } from '@/components/tree-view/tree-view';\nimport { useRender } from '@/composables/component';\nimport { getObjectValueByPath } from '@/util/common';\nimport { defineComponent } from '@/util/component';\nimport { propsFactory } from '@/util/component';\n\nimport { YButton } from '../button';\nimport { YIconCheckbox, YIconExpand } from '../icons';\nimport { YPlate } from '../plate';\nimport { YTextHighlighter } from '../text-highlighter/YTextHighlighter';\nimport { YExpandVTransition } from '../transitions';\n\nexport const pressYTreeViewNodeProps = propsFactory(\n {\n search: String,\n disableTransition: Boolean,\n enableActive: Boolean,\n activeClass: [String, Array],\n activeSingleModifier: String,\n requiredActive: Boolean,\n activeColor: {\n type: String,\n default: 'primary',\n },\n enableSelect: Boolean,\n onMouseenterContainer: Function,\n onMouseleaveContainer: Function,\n onMousemoveContainer: Function,\n ...pressItemsPropsOptions({\n itemKey: 'id',\n }),\n },\n 'YTreeViewNode',\n);\n\nexport const YTreeViewNode = defineComponent({\n name: 'YTreeNode',\n components: {\n YButton,\n YIconExpand,\n YPlate,\n YIconCheckbox,\n },\n props: {\n item: {\n type: Object as PropType<any>,\n },\n level: {\n type: Number as PropType<number>,\n default: 0,\n },\n ...pressYTreeViewNodeProps(),\n },\n slots: Object as SlotsType<{\n default: any;\n 'expand-icon': any;\n leading: any;\n trailing: any;\n }>,\n setup(props, { slots, expose }) {\n const YTreeNode = resolveComponent('YTreeViewNode', true) as any;\n const vm = getCurrentInstance();\n const treeView = useTreeView();\n const container$ = ref<HTMLElement>();\n\n const expanded = ref(false);\n const active = ref(false);\n const selected = ref(false);\n const immediate = ref(false);\n\n const children = computed(() => {\n return (\n getObjectValueByPath(props.item, props.itemChildren as string) ?? []\n ).slice();\n });\n\n const imLeaf = computed(() => children.value.length < 1);\n\n const classes = computed(() => {\n return {\n 'y-tree-view-node': true,\n 'y-tree-view-node--leaf': imLeaf.value,\n 'y-tree-view-node--expanded': expanded.value,\n 'y-tree-view-node--active': active.value,\n };\n });\n\n const styles = computed(() => {\n return {\n '--tree-view-node--level': props.level,\n };\n });\n\n const contentText = computed(() => {\n return getObjectValueByPath(props.item, props.itemText) ?? '';\n });\n\n const slotProps = computed(() => {\n return {\n level: props.level,\n imLeaf: imLeaf.value,\n };\n });\n\n const searchLoading = computed(() => {\n return treeView.searchLoading.value;\n });\n\n const leaves = computed(() => {\n return children.value.filter((leaf: any) => {\n return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n function onClick(e: MouseEvent) {\n const to = !active.value;\n active.value = to;\n treeView.updateActive(myKey.value, to, e);\n treeView.emitActive();\n }\n\n function onClickExpand(e: MouseEvent) {\n e.stopPropagation();\n const to = !expanded.value;\n expanded.value = to;\n treeView.updateExpanded(myKey.value, to);\n treeView.emitExpanded();\n }\n\n function onClickSelect(e: MouseEvent) {\n e.stopPropagation();\n const to = !selected.value;\n selected.value = to;\n treeView.updateSelected(myKey.value, to);\n treeView.emitSelected();\n }\n\n function onMouseenterContainer(e: MouseEvent) {\n props.onMouseenterContainer?.(e, {\n ...slotProps.value,\n item: props.item,\n });\n }\n\n function onMouseleaveContainer(e: MouseEvent) {\n props.onMouseleaveContainer?.(e, {\n ...slotProps.value,\n item: props.item,\n });\n }\n\n function onMousemoveContainer(e: MouseEvent) {\n props.onMousemoveContainer?.(e, { ...slotProps.value, item: props.item });\n }\n\n useRender(() => {\n const indentSpacer: VNodeArrayChildren = [];\n for (let i = 0; i < props.level; i += 1) {\n indentSpacer.push(\n <div class={'y-tree-view-node__indent-spacer'}></div>,\n );\n }\n\n return (\n <div\n class={classes.value}\n style={styles.value}\n role=\"treeitem\"\n data-level={props.level}\n >\n <div\n ref={container$}\n class={'y-tree-view-node__container'}\n onClick={(e: MouseEvent) =>\n props.enableActive ? onClick(e) : void 0\n }\n onMouseenter={props.onMouseenterContainer && onMouseenterContainer}\n onMouseleave={props.onMouseleaveContainer && onMouseleaveContainer}\n onMousemove={props.onMousemoveContainer && onMousemoveContainer}\n >\n <YPlate />\n <div class={'y-tree-view-node__indents'}>{indentSpacer}</div>\n {/* EXPAND */}\n {!imLeaf.value && leaves.value.length > 0 ? (\n <YButton\n class={'y-tree-view-node__expand-icon'}\n variation={'icon'}\n onClick={onClickExpand}\n >\n {slots['expand-icon'] ? (\n slots['expand-icon']()\n ) : (\n <YIconExpand></YIconExpand>\n )}\n </YButton>\n ) : (\n <i class={'y-tree-view-node__no-expand-icon'}></i>\n )}\n {/* SELECT */}\n {props.enableSelect && (\n <div class={'y-tree-view-node__select'} onClick={onClickSelect}>\n <YIconCheckbox checked={selected.value}></YIconCheckbox>\n </div>\n )}\n {/* CONTENT */}\n <div class={'y-tree-view-node__content'}>\n {slots.leading && (\n <div class={'y-tree-view-node__leading'}>\n {slots.leading(slotProps.value)}\n </div>\n )}\n <div class={'y-tree-view-node__text'}>\n {slots.default ? (\n slots.default?.({\n text: contentText.value,\n item: props.item,\n ...slotProps.value,\n })\n ) : props.search && !searchLoading.value ? (\n <YTextHighlighter\n text={contentText.value}\n keyword={props.search}\n ></YTextHighlighter>\n ) : (\n contentText.value\n )}\n </div>\n {slots.trailing && (\n <div class={'y-tree-view-node__trailing'}>\n {slots.trailing(slotProps.value)}\n </div>\n )}\n </div>\n </div>\n {/* CHILDREN */}\n {children.value.length > 0 && (\n <YExpandVTransition disabled={props.disableTransition}>\n {expanded.value && (\n <div class={['y-tree-view-node__leaves']} role=\"tree\">\n {leaves.value.map((item: any) => {\n return (\n <YTreeNode\n {...mergeProps(props)}\n key={getObjectValueByPath(item, props.itemKey)}\n level={(props.level ?? 0) + 1}\n item={item}\n >\n {{\n default:\n slots.default &&\n ((...args: any[]) => slots.default?.(...args)),\n 'expand-icon':\n slots['expand-icon'] &&\n ((...args: any[]) =>\n slots['expand-icon']?.(...args)),\n leading:\n slots.leading &&\n ((...args: any[]) => slots.leading?.(...args)),\n trailing:\n slots.trailing &&\n ((...args: any[]) => slots.trailing?.(...args)),\n }}\n </YTreeNode>\n );\n })}\n </div>\n )}\n </YExpandVTransition>\n )}\n </div>\n );\n });\n\n const myKey = computed(() => {\n return getObjectValueByPath(props.item, props.itemKey);\n });\n\n const nodeState = {\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n\n expose(nodeState);\n\n onBeforeMount(() => {\n treeView?.register?.(myKey.value, nodeState);\n });\n\n return {\n treeView,\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n },\n});\n\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YTreeViewNode.js","names":["computed","getCurrentInstance","mergeProps","onBeforeMount","ref","resolveComponent","pressItemsPropsOptions","useTreeView","useRender","getObjectValueByPath","defineComponent","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeClass","Array","activeSingleModifier","requiredActive","activeColor","type","default","enableSelect","onMouseenterContainer","Function","onMouseleaveContainer","onMousemoveContainer","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","slots","setup","_ref","expose","YTreeNode","vm","treeView","container$","expanded","active","selected","immediate","children","itemChildren","slice","imLeaf","value","length","classes","styles","contentText","itemText","slotProps","toggleActive","searchLoading","leaves","filter","leaf","isExcluded","e","to","updateActive","myKey","emitActive","onClick","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","indentSpacer","i","push","_createVNode","leading","text","trailing","map","_mergeProps","_len","arguments","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","nodeState","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.tsx"],"sourcesContent":["import {\n type PropType,\n type SlotsType,\n type VNodeArrayChildren,\n computed,\n getCurrentInstance,\n mergeProps,\n onBeforeMount,\n ref,\n resolveComponent,\n} from 'vue';\n\nimport { pressItemsPropsOptions } from '@/abstract/items';\nimport { useTreeView } from '@/components/tree-view/tree-view';\nimport { useRender } from '@/composables/component';\nimport { getObjectValueByPath } from '@/util/common';\nimport { defineComponent } from '@/util/component';\nimport { propsFactory } from '@/util/component';\n\nimport { YButton } from '../button';\nimport { YIconCheckbox, YIconExpand } from '../icons';\nimport { YPlate } from '../plate';\nimport { YTextHighlighter } from '../text-highlighter/YTextHighlighter';\nimport { YExpandVTransition } from '../transitions';\n\nexport const pressYTreeViewNodeProps = propsFactory(\n {\n search: String,\n disableTransition: Boolean,\n enableActive: Boolean,\n activeClass: [String, Array],\n activeSingleModifier: String,\n requiredActive: Boolean,\n activeColor: {\n type: String,\n default: 'primary',\n },\n enableSelect: Boolean,\n onMouseenterContainer: Function,\n onMouseleaveContainer: Function,\n onMousemoveContainer: Function,\n ...pressItemsPropsOptions({\n itemKey: 'id',\n }),\n },\n 'YTreeViewNode',\n);\n\nexport const YTreeViewNode = defineComponent({\n name: 'YTreeNode',\n components: {\n YButton,\n YIconExpand,\n YPlate,\n YIconCheckbox,\n },\n props: {\n item: {\n type: Object as PropType<any>,\n },\n level: {\n type: Number as PropType<number>,\n default: 0,\n },\n ...pressYTreeViewNodeProps(),\n },\n slots: Object as SlotsType<{\n default: any;\n 'expand-icon': any;\n leading: any;\n trailing: any;\n }>,\n setup(props, { slots, expose }) {\n const YTreeNode = resolveComponent('YTreeViewNode', true) as any;\n const vm = getCurrentInstance();\n const treeView = useTreeView();\n const container$ = ref<HTMLElement>();\n\n const expanded = ref(false);\n const active = ref(false);\n const selected = ref(false);\n const immediate = ref(false);\n\n const children = computed(() => {\n return (\n getObjectValueByPath(props.item, props.itemChildren as string) ?? []\n ).slice();\n });\n\n const imLeaf = computed(() => children.value.length < 1);\n\n const classes = computed(() => {\n return {\n 'y-tree-view-node': true,\n 'y-tree-view-node--leaf': imLeaf.value,\n 'y-tree-view-node--expanded': expanded.value,\n 'y-tree-view-node--active': active.value,\n };\n });\n\n const styles = computed(() => {\n return {\n '--tree-view-node--level': props.level,\n };\n });\n\n const contentText = computed(() => {\n return getObjectValueByPath(props.item, props.itemText) ?? '';\n });\n\n const slotProps = computed(() => {\n return {\n level: props.level,\n imLeaf: imLeaf.value,\n toggleActive,\n };\n });\n\n const searchLoading = computed(() => {\n return treeView.searchLoading.value;\n });\n\n const leaves = computed(() => {\n return children.value.filter((leaf: any) => {\n return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n function toggleActive(e?: MouseEvent) {\n const to = !active.value;\n active.value = to;\n treeView.updateActive(myKey.value, to, e);\n treeView.emitActive();\n }\n\n function onClick(e: MouseEvent) {\n toggleActive(e);\n }\n\n function onClickExpand(e: MouseEvent) {\n e.stopPropagation();\n const to = !expanded.value;\n expanded.value = to;\n treeView.updateExpanded(myKey.value, to);\n treeView.emitExpanded();\n }\n\n function onClickSelect(e: MouseEvent) {\n e.stopPropagation();\n const to = !selected.value;\n selected.value = to;\n treeView.updateSelected(myKey.value, to);\n treeView.emitSelected();\n }\n\n function onMouseenterContainer(e: MouseEvent) {\n props.onMouseenterContainer?.(e, {\n ...slotProps.value,\n item: props.item,\n });\n }\n\n function onMouseleaveContainer(e: MouseEvent) {\n props.onMouseleaveContainer?.(e, {\n ...slotProps.value,\n item: props.item,\n });\n }\n\n function onMousemoveContainer(e: MouseEvent) {\n props.onMousemoveContainer?.(e, { ...slotProps.value, item: props.item });\n }\n\n useRender(() => {\n const indentSpacer: VNodeArrayChildren = [];\n for (let i = 0; i < props.level; i += 1) {\n indentSpacer.push(\n <div class={'y-tree-view-node__indent-spacer'}></div>,\n );\n }\n\n return (\n <div\n class={classes.value}\n style={styles.value}\n role=\"treeitem\"\n data-level={props.level}\n >\n <div\n ref={container$}\n class={'y-tree-view-node__container'}\n onClick={(e: MouseEvent) =>\n props.enableActive ? onClick(e) : void 0\n }\n onMouseenter={props.onMouseenterContainer && onMouseenterContainer}\n onMouseleave={props.onMouseleaveContainer && onMouseleaveContainer}\n onMousemove={props.onMousemoveContainer && onMousemoveContainer}\n >\n <YPlate />\n <div class={'y-tree-view-node__indents'}>{indentSpacer}</div>\n {/* EXPAND */}\n {!imLeaf.value && leaves.value.length > 0 ? (\n <YButton\n class={'y-tree-view-node__expand-icon'}\n variation={'icon'}\n onClick={onClickExpand}\n >\n {slots['expand-icon'] ? (\n slots['expand-icon']()\n ) : (\n <YIconExpand></YIconExpand>\n )}\n </YButton>\n ) : (\n <i class={'y-tree-view-node__no-expand-icon'}></i>\n )}\n {/* SELECT */}\n {props.enableSelect && (\n <div class={'y-tree-view-node__select'} onClick={onClickSelect}>\n <YIconCheckbox checked={selected.value}></YIconCheckbox>\n </div>\n )}\n {/* CONTENT */}\n <div class={'y-tree-view-node__content'}>\n {slots.leading && (\n <div class={'y-tree-view-node__leading'}>\n {slots.leading(slotProps.value)}\n </div>\n )}\n <div class={'y-tree-view-node__text'}>\n {slots.default ? (\n slots.default?.({\n text: contentText.value,\n item: props.item,\n ...slotProps.value,\n })\n ) : props.search && !searchLoading.value ? (\n <YTextHighlighter\n text={contentText.value}\n keyword={props.search}\n ></YTextHighlighter>\n ) : (\n contentText.value\n )}\n </div>\n {slots.trailing && (\n <div class={'y-tree-view-node__trailing'}>\n {slots.trailing(slotProps.value)}\n </div>\n )}\n </div>\n </div>\n {/* CHILDREN */}\n {children.value.length > 0 && (\n <YExpandVTransition disabled={props.disableTransition}>\n {expanded.value && (\n <div class={['y-tree-view-node__leaves']} role=\"tree\">\n {leaves.value.map((item: any) => {\n return (\n <YTreeNode\n {...mergeProps(props)}\n key={getObjectValueByPath(item, props.itemKey)}\n level={(props.level ?? 0) + 1}\n item={item}\n >\n {{\n default:\n slots.default &&\n ((...args: any[]) => slots.default?.(...args)),\n 'expand-icon':\n slots['expand-icon'] &&\n ((...args: any[]) =>\n slots['expand-icon']?.(...args)),\n leading:\n slots.leading &&\n ((...args: any[]) => slots.leading?.(...args)),\n trailing:\n slots.trailing &&\n ((...args: any[]) => slots.trailing?.(...args)),\n }}\n </YTreeNode>\n );\n })}\n </div>\n )}\n </YExpandVTransition>\n )}\n </div>\n );\n });\n\n const myKey = computed(() => {\n return getObjectValueByPath(props.item, props.itemKey);\n });\n\n const nodeState = {\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n\n expose(nodeState);\n\n onBeforeMount(() => {\n treeView?.register?.(myKey.value, nodeState);\n });\n\n return {\n treeView,\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n },\n});\n\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\n"],"mappings":";AAAA,SAIEA,QAAQ,EACRC,kBAAkB,EAClBC,UAAU,EACVC,aAAa,EACbC,GAAG,EACHC,gBAAgB,QACX,KAAK;AAAC,SAEJC,sBAAsB;AAAA,SACtBC,WAAW;AAAA,SACXC,SAAS;AAAA,SACTC,oBAAoB;AAAA,SACpBC,eAAe;AAAA,SACfC,YAAY;AAAA,SAEZC,OAAO;AAAA,SACPC,aAAa,EAAEC,WAAW;AAAA,SAC1BC,MAAM;AAAA,SACNC,gBAAgB;AAAA,SAChBC,kBAAkB;AAE3B,OAAO,MAAMC,uBAAuB,GAAGP,YAAY,CACjD;EACEQ,MAAM,EAAEC,MAAM;EACdC,iBAAiB,EAAEC,OAAO;EAC1BC,YAAY,EAAED,OAAO;EACrBE,WAAW,EAAE,CAACJ,MAAM,EAAEK,KAAK,CAAC;EAC5BC,oBAAoB,EAAEN,MAAM;EAC5BO,cAAc,EAAEL,OAAO;EACvBM,WAAW,EAAE;IACXC,IAAI,EAAET,MAAM;IACZU,OAAO,EAAE;EACX,CAAC;EACDC,YAAY,EAAET,OAAO;EACrBU,qBAAqB,EAAEC,QAAQ;EAC/BC,qBAAqB,EAAED,QAAQ;EAC/BE,oBAAoB,EAAEF,QAAQ;EAC9B,GAAG3B,sBAAsB,CAAC;IACxB8B,OAAO,EAAE;EACX,CAAC;AACH,CAAC,EACD,eACF,CAAC;AAED,OAAO,MAAMC,aAAa,GAAG3B,eAAe,CAAC;EAC3C4B,IAAI,EAAE,WAAW;EACjBC,UAAU,EAAE;IACV3B,OAAO;IACPE,WAAW;IACXC,MAAM;IACNF;EACF,CAAC;EACD2B,KAAK,EAAE;IACLC,IAAI,EAAE;MACJZ,IAAI,EAAEa;IACR,CAAC;IACDC,KAAK,EAAE;MACLd,IAAI,EAAEe,MAA0B;MAChCd,OAAO,EAAE;IACX,CAAC;IACD,GAAGZ,uBAAuB,CAAC;EAC7B,CAAC;EACD2B,KAAK,EAAEH,MAKL;EACFI,KAAKA,CAACN,KAAK,EAAAO,IAAA,EAAqB;IAAA,IAAnB;MAAEF,KAAK;MAAEG;IAAO,CAAC,GAAAD,IAAA;IAC5B,MAAME,SAAS,GAAG5C,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAQ;IAChE,MAAM6C,EAAE,GAAGjD,kBAAkB,CAAC,CAAC;IAC/B,MAAMkD,QAAQ,GAAG5C,WAAW,CAAC,CAAC;IAC9B,MAAM6C,UAAU,GAAGhD,GAAG,CAAc,CAAC;IAErC,MAAMiD,QAAQ,GAAGjD,GAAG,CAAC,KAAK,CAAC;IAC3B,MAAMkD,MAAM,GAAGlD,GAAG,CAAC,KAAK,CAAC;IACzB,MAAMmD,QAAQ,GAAGnD,GAAG,CAAC,KAAK,CAAC;IAC3B,MAAMoD,SAAS,GAAGpD,GAAG,CAAC,KAAK,CAAC;IAE5B,MAAMqD,QAAQ,GAAGzD,QAAQ,CAAC,MAAM;MAC9B,OAAO,CACLS,oBAAoB,CAAC+B,KAAK,CAACC,IAAI,EAAED,KAAK,CAACkB,YAAsB,CAAC,IAAI,EAAE,EACpEC,KAAK,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAG5D,QAAQ,CAAC,MAAMyD,QAAQ,CAACI,KAAK,CAACC,MAAM,GAAG,CAAC,CAAC;IAExD,MAAMC,OAAO,GAAG/D,QAAQ,CAAC,MAAM;MAC7B,OAAO;QACL,kBAAkB,EAAE,IAAI;QACxB,wBAAwB,EAAE4D,MAAM,CAACC,KAAK;QACtC,4BAA4B,EAAER,QAAQ,CAACQ,KAAK;QAC5C,0BAA0B,EAAEP,MAAM,CAACO;MACrC,CAAC;IACH,CAAC,CAAC;IAEF,MAAMG,MAAM,GAAGhE,QAAQ,CAAC,MAAM;MAC5B,OAAO;QACL,yBAAyB,EAAEwC,KAAK,CAACG;MACnC,CAAC;IACH,CAAC,CAAC;IAEF,MAAMsB,WAAW,GAAGjE,QAAQ,CAAC,MAAM;MACjC,OAAOS,oBAAoB,CAAC+B,KAAK,CAACC,IAAI,EAAED,KAAK,CAAC0B,QAAQ,CAAC,IAAI,EAAE;IAC/D,CAAC,CAAC;IAEF,MAAMC,SAAS,GAAGnE,QAAQ,CAAC,MAAM;MAC/B,OAAO;QACL2C,KAAK,EAAEH,KAAK,CAACG,KAAK;QAClBiB,MAAM,EAAEA,MAAM,CAACC,KAAK;QACpBO;MACF,CAAC;IACH,CAAC,CAAC;IAEF,MAAMC,aAAa,GAAGrE,QAAQ,CAAC,MAAM;MACnC,OAAOmD,QAAQ,CAACkB,aAAa,CAACR,KAAK;IACrC,CAAC,CAAC;IAEF,MAAMS,MAAM,GAAGtE,QAAQ,CAAC,MAAM;MAC5B,OAAOyD,QAAQ,CAACI,KAAK,CAACU,MAAM,CAAEC,IAAS,IAAK;QAC1C,OAAO,CAACrB,QAAQ,CAACsB,UAAU,CAAChE,oBAAoB,CAAC+D,IAAI,EAAEhC,KAAK,CAACJ,OAAO,CAAC,CAAC;MACxE,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,SAASgC,YAAYA,CAACM,CAAc,EAAE;MACpC,MAAMC,EAAE,GAAG,CAACrB,MAAM,CAACO,KAAK;MACxBP,MAAM,CAACO,KAAK,GAAGc,EAAE;MACjBxB,QAAQ,CAACyB,YAAY,CAACC,KAAK,CAAChB,KAAK,EAAEc,EAAE,EAAED,CAAC,CAAC;MACzCvB,QAAQ,CAAC2B,UAAU,CAAC,CAAC;IACvB;IAEA,SAASC,OAAOA,CAACL,CAAa,EAAE;MAC9BN,YAAY,CAACM,CAAC,CAAC;IACjB;IAEA,SAASM,aAAaA,CAACN,CAAa,EAAE;MACpCA,CAAC,CAACO,eAAe,CAAC,CAAC;MACnB,MAAMN,EAAE,GAAG,CAACtB,QAAQ,CAACQ,KAAK;MAC1BR,QAAQ,CAACQ,KAAK,GAAGc,EAAE;MACnBxB,QAAQ,CAAC+B,cAAc,CAACL,KAAK,CAAChB,KAAK,EAAEc,EAAE,CAAC;MACxCxB,QAAQ,CAACgC,YAAY,CAAC,CAAC;IACzB;IAEA,SAASC,aAAaA,CAACV,CAAa,EAAE;MACpCA,CAAC,CAACO,eAAe,CAAC,CAAC;MACnB,MAAMN,EAAE,GAAG,CAACpB,QAAQ,CAACM,KAAK;MAC1BN,QAAQ,CAACM,KAAK,GAAGc,EAAE;MACnBxB,QAAQ,CAACkC,cAAc,CAACR,KAAK,CAAChB,KAAK,EAAEc,EAAE,CAAC;MACxCxB,QAAQ,CAACmC,YAAY,CAAC,CAAC;IACzB;IAEA,SAAStD,qBAAqBA,CAAC0C,CAAa,EAAE;MAC5ClC,KAAK,CAACR,qBAAqB,GAAG0C,CAAC,EAAE;QAC/B,GAAGP,SAAS,CAACN,KAAK;QAClBpB,IAAI,EAAED,KAAK,CAACC;MACd,CAAC,CAAC;IACJ;IAEA,SAASP,qBAAqBA,CAACwC,CAAa,EAAE;MAC5ClC,KAAK,CAACN,qBAAqB,GAAGwC,CAAC,EAAE;QAC/B,GAAGP,SAAS,CAACN,KAAK;QAClBpB,IAAI,EAAED,KAAK,CAACC;MACd,CAAC,CAAC;IACJ;IAEA,SAASN,oBAAoBA,CAACuC,CAAa,EAAE;MAC3ClC,KAAK,CAACL,oBAAoB,GAAGuC,CAAC,EAAE;QAAE,GAAGP,SAAS,CAACN,KAAK;QAAEpB,IAAI,EAAED,KAAK,CAACC;MAAK,CAAC,CAAC;IAC3E;IAEAjC,SAAS,CAAC,MAAM;MACd,MAAM+E,YAAgC,GAAG,EAAE;MAC3C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhD,KAAK,CAACG,KAAK,EAAE6C,CAAC,IAAI,CAAC,EAAE;QACvCD,YAAY,CAACE,IAAI,CAAAC,YAAA;UAAA,SACH;QAAiC,QAC/C,CAAC;MACH;MAEA,OAAAA,YAAA;QAAA,SAEW3B,OAAO,CAACF,KAAK;QAAA,SACbG,MAAM,CAACH,KAAK;QAAA;QAAA,cAEPrB,KAAK,CAACG;MAAK,IAAA+C,YAAA;QAAA,OAGhBtC,UAAU;QAAA,SACR,6BAA6B;QAAA,WAC1BsB,CAAa,IACrBlC,KAAK,CAACjB,YAAY,GAAGwD,OAAO,CAACL,CAAC,CAAC,GAAG,KAAK,CAAC;QAAA,gBAE5BlC,KAAK,CAACR,qBAAqB,IAAIA,qBAAqB;QAAA,gBACpDQ,KAAK,CAACN,qBAAqB,IAAIA,qBAAqB;QAAA,eACrDM,KAAK,CAACL,oBAAoB,IAAIA;MAAoB,IAAAuD,YAAA,CAAA3E,MAAA,eAAA2E,YAAA;QAAA,SAGnD;MAA2B,IAAGH,YAAY,IAErD,CAAC3B,MAAM,CAACC,KAAK,IAAIS,MAAM,CAACT,KAAK,CAACC,MAAM,GAAG,CAAC,GAAA4B,YAAA,CAAA9E,OAAA;QAAA,SAE9B,+BAA+B;QAAA,aAC3B,MAAM;QAAA,WACRoE;MAAa;QAAAlD,OAAA,EAAAA,CAAA,MAErBe,KAAK,CAAC,aAAa,CAAC,GACnBA,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAA6C,YAAA,CAAA5E,WAAA,aAGvB;MAAA,KAAA4E,YAAA;QAAA,SAGO;MAAkC,QAC7C,EAEAlD,KAAK,CAACT,YAAY,IAAA2D,YAAA;QAAA,SACL,0BAA0B;QAAA,WAAWN;MAAa,IAAAM,YAAA,CAAA7E,aAAA;QAAA,WACpC0C,QAAQ,CAACM;MAAK,UAEzC,EAAA6B,YAAA;QAAA,SAEW;MAA2B,IACpC7C,KAAK,CAAC8C,OAAO,IAAAD,YAAA;QAAA,SACA;MAA2B,IACpC7C,KAAK,CAAC8C,OAAO,CAACxB,SAAS,CAACN,KAAK,CAAC,EAElC,EAAA6B,YAAA;QAAA,SACW;MAAwB,IACjC7C,KAAK,CAACf,OAAO,GACZe,KAAK,CAACf,OAAO,GAAG;QACd8D,IAAI,EAAE3B,WAAW,CAACJ,KAAK;QACvBpB,IAAI,EAAED,KAAK,CAACC,IAAI;QAChB,GAAG0B,SAAS,CAACN;MACf,CAAC,CAAC,GACArB,KAAK,CAACrB,MAAM,IAAI,CAACkD,aAAa,CAACR,KAAK,GAAA6B,YAAA,CAAA1E,gBAAA;QAAA,QAE9BiD,WAAW,CAACJ,KAAK;QAAA,WACdrB,KAAK,CAACrB;MAAM,WAGvB8C,WAAW,CAACJ,KACb,IAEFhB,KAAK,CAACgD,QAAQ,IAAAH,YAAA;QAAA,SACD;MAA4B,IACrC7C,KAAK,CAACgD,QAAQ,CAAC1B,SAAS,CAACN,KAAK,CAAC,EAEnC,MAIJJ,QAAQ,CAACI,KAAK,CAACC,MAAM,GAAG,CAAC,IAAA4B,YAAA,CAAAzE,kBAAA;QAAA,YACMuB,KAAK,CAACnB;MAAiB;QAAAS,OAAA,EAAAA,CAAA,MAClDuB,QAAQ,CAACQ,KAAK,IAAA6B,YAAA;UAAA,SACD,CAAC,0BAA0B,CAAC;UAAA;QAAA,IACrCpB,MAAM,CAACT,KAAK,CAACiC,GAAG,CAAErD,IAAS,IAAK;UAC/B,OAAAiD,YAAA,CAAAzC,SAAA,EAAA8C,WAAA,CAEQ7F,UAAU,CAACsC,KAAK,CAAC;YAAA,OAChB/B,oBAAoB,CAACgC,IAAI,EAAED,KAAK,CAACJ,OAAO,CAAC;YAAA,SACvC,CAACI,KAAK,CAACG,KAAK,IAAI,CAAC,IAAI,CAAC;YAAA,QACvBF;UAAI;YAGRX,OAAO,EACLe,KAAK,CAACf,OAAO,IACZ;cAAA,SAAAkE,IAAA,GAAAC,SAAA,CAAAnC,MAAA,EAAIoC,IAAI,OAAAzE,KAAA,CAAAuE,IAAA,GAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;gBAAJD,IAAI,CAAAC,IAAA,IAAAF,SAAA,CAAAE,IAAA;cAAA;cAAA,OAAYtD,KAAK,CAACf,OAAO,GAAG,GAAGoE,IAAI,CAAC;YAAA,CAAC;YAChD,aAAa,EACXrD,KAAK,CAAC,aAAa,CAAC,IACnB;cAAA,SAAAuD,KAAA,GAAAH,SAAA,CAAAnC,MAAA,EAAIoC,IAAI,OAAAzE,KAAA,CAAA2E,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;gBAAJH,IAAI,CAAAG,KAAA,IAAAJ,SAAA,CAAAI,KAAA;cAAA;cAAA,OACPxD,KAAK,CAAC,aAAa,CAAC,GAAG,GAAGqD,IAAI,CAAC;YAAA,CAAC;YACpCP,OAAO,EACL9C,KAAK,CAAC8C,OAAO,IACZ;cAAA,SAAAW,KAAA,GAAAL,SAAA,CAAAnC,MAAA,EAAIoC,IAAI,OAAAzE,KAAA,CAAA6E,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;gBAAJL,IAAI,CAAAK,KAAA,IAAAN,SAAA,CAAAM,KAAA;cAAA;cAAA,OAAY1D,KAAK,CAAC8C,OAAO,GAAG,GAAGO,IAAI,CAAC;YAAA,CAAC;YAChDL,QAAQ,EACNhD,KAAK,CAACgD,QAAQ,IACb;cAAA,SAAAW,KAAA,GAAAP,SAAA,CAAAnC,MAAA,EAAIoC,IAAI,OAAAzE,KAAA,CAAA+E,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;gBAAJP,IAAI,CAAAO,KAAA,IAAAR,SAAA,CAAAQ,KAAA;cAAA;cAAA,OAAY5D,KAAK,CAACgD,QAAQ,GAAG,GAAGK,IAAI,CAAC;YAAA;UAAC;QAIzD,CAAC,CAAC,EAEL;MAAA,EAEJ;IAGP,CAAC,CAAC;IAEF,MAAMrB,KAAK,GAAG7E,QAAQ,CAAC,MAAM;MAC3B,OAAOS,oBAAoB,CAAC+B,KAAK,CAACC,IAAI,EAAED,KAAK,CAACJ,OAAO,CAAC;IACxD,CAAC,CAAC;IAEF,MAAMsE,SAAS,GAAG;MAChB7B,KAAK;MACLxB,QAAQ;MACRC,MAAM;MACNC,QAAQ;MACRC;IACF,CAAC;IAEDR,MAAM,CAAC0D,SAAS,CAAC;IAEjBvG,aAAa,CAAC,MAAM;MAClBgD,QAAQ,EAAEwD,QAAQ,GAAG9B,KAAK,CAAChB,KAAK,EAAE6C,SAAS,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO;MACLvD,QAAQ;MACR0B,KAAK;MACLxB,QAAQ;MACRC,MAAM;MACNC,QAAQ;MACRC;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
@@ -4,8 +4,7 @@ export const styleColorPropsOptions = {
4
4
  color: String,
5
5
  background: String,
6
6
  backgroundOpacity: {
7
- type: Number,
8
- default: 1
7
+ type: Number
9
8
  }
10
9
  };
11
10
  export function useStyleColor(props, name) {
@@ -1 +1 @@
1
- {"version":3,"file":"style-color.js","names":["computed","colorRgb","isColorValue","styleColorPropsOptions","color","String","background","backgroundOpacity","type","Number","default","useStyleColor","props","name","colorVars","startsWith"],"sources":["../../src/composables/style-color.ts"],"sourcesContent":["import { ExtractPropTypes, computed } from 'vue';\n\nimport { colorRgb, isColorValue } from '@/util';\n\nexport const styleColorPropsOptions = {\n color: String,\n background: String,\n backgroundOpacity: {\n type: Number,\n default: 1,\n },\n};\n\nexport function useStyleColor(\n props: ExtractPropTypes<typeof styleColorPropsOptions>,\n name: string,\n) {\n const colorVars = computed(() => {\n let { color, background } = props;\n if (!background) background = color;\n\n if (color && !isColorValue(color)) {\n color = `var(--y-theme-${color})`;\n }\n\n if (background) {\n if (isColorValue(background)) {\n background = `rgba(${colorRgb(background)}, ${props.backgroundOpacity})`;\n } else if (!background.startsWith('var(')) {\n background = `rgba(${`var(--y-theme-${background}-rgb)`}, ${props.backgroundOpacity})`;\n }\n }\n\n return {\n [`--y-${name}__color`]: color,\n [`--y-${name}__background`]: background,\n };\n });\n\n return {\n colorVars,\n };\n}\n"],"mappings":"AAAA,SAA2BA,QAAQ,QAAQ,KAAK;AAAC,SAExCC,QAAQ,EAAEC,YAAY;AAE/B,OAAO,MAAMC,sBAAsB,GAAG;EACpCC,KAAK,EAAEC,MAAM;EACbC,UAAU,EAAED,MAAM;EAClBE,iBAAiB,EAAE;IACjBC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX;AACF,CAAC;AAED,OAAO,SAASC,aAAaA,CAC3BC,KAAsD,EACtDC,IAAY,EACZ;EACA,MAAMC,SAAS,GAAGd,QAAQ,CAAC,MAAM;IAC/B,IAAI;MAAEI,KAAK;MAAEE;IAAW,CAAC,GAAGM,KAAK;IACjC,IAAI,CAACN,UAAU,EAAEA,UAAU,GAAGF,KAAK;IAEnC,IAAIA,KAAK,IAAI,CAACF,YAAY,CAACE,KAAK,CAAC,EAAE;MACjCA,KAAK,GAAI,iBAAgBA,KAAM,GAAE;IACnC;IAEA,IAAIE,UAAU,EAAE;MACd,IAAIJ,YAAY,CAACI,UAAU,CAAC,EAAE;QAC5BA,UAAU,GAAI,QAAOL,QAAQ,CAACK,UAAU,CAAE,KAAIM,KAAK,CAACL,iBAAkB,GAAE;MAC1E,CAAC,MAAM,IAAI,CAACD,UAAU,CAACS,UAAU,CAAC,MAAM,CAAC,EAAE;QACzCT,UAAU,GAAI,QAAQ,iBAAgBA,UAAW,OAAO,KAAIM,KAAK,CAACL,iBAAkB,GAAE;MACxF;IACF;IAEA,OAAO;MACL,CAAE,OAAMM,IAAK,SAAQ,GAAGT,KAAK;MAC7B,CAAE,OAAMS,IAAK,cAAa,GAAGP;IAC/B,CAAC;EACH,CAAC,CAAC;EAEF,OAAO;IACLQ;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"style-color.js","names":["computed","colorRgb","isColorValue","styleColorPropsOptions","color","String","background","backgroundOpacity","type","Number","useStyleColor","props","name","colorVars","startsWith"],"sources":["../../src/composables/style-color.ts"],"sourcesContent":["import { ExtractPropTypes, computed } from 'vue';\n\nimport { colorRgb, isColorValue } from '@/util';\n\nexport const styleColorPropsOptions = {\n color: String,\n background: String,\n backgroundOpacity: {\n type: Number,\n },\n};\n\nexport function useStyleColor(\n props: ExtractPropTypes<typeof styleColorPropsOptions>,\n name: string,\n) {\n const colorVars = computed(() => {\n let { color, background } = props;\n if (!background) background = color;\n\n if (color && !isColorValue(color)) {\n color = `var(--y-theme-${color})`;\n }\n\n if (background) {\n if (isColorValue(background)) {\n background = `rgba(${colorRgb(background)}, ${props.backgroundOpacity})`;\n } else if (!background.startsWith('var(')) {\n background = `rgba(${`var(--y-theme-${background}-rgb)`}, ${props.backgroundOpacity})`;\n }\n }\n\n return {\n [`--y-${name}__color`]: color,\n [`--y-${name}__background`]: background,\n };\n });\n\n return {\n colorVars,\n };\n}\n"],"mappings":"AAAA,SAA2BA,QAAQ,QAAQ,KAAK;AAAC,SAExCC,QAAQ,EAAEC,YAAY;AAE/B,OAAO,MAAMC,sBAAsB,GAAG;EACpCC,KAAK,EAAEC,MAAM;EACbC,UAAU,EAAED,MAAM;EAClBE,iBAAiB,EAAE;IACjBC,IAAI,EAAEC;EACR;AACF,CAAC;AAED,OAAO,SAASC,aAAaA,CAC3BC,KAAsD,EACtDC,IAAY,EACZ;EACA,MAAMC,SAAS,GAAGb,QAAQ,CAAC,MAAM;IAC/B,IAAI;MAAEI,KAAK;MAAEE;IAAW,CAAC,GAAGK,KAAK;IACjC,IAAI,CAACL,UAAU,EAAEA,UAAU,GAAGF,KAAK;IAEnC,IAAIA,KAAK,IAAI,CAACF,YAAY,CAACE,KAAK,CAAC,EAAE;MACjCA,KAAK,GAAI,iBAAgBA,KAAM,GAAE;IACnC;IAEA,IAAIE,UAAU,EAAE;MACd,IAAIJ,YAAY,CAACI,UAAU,CAAC,EAAE;QAC5BA,UAAU,GAAI,QAAOL,QAAQ,CAACK,UAAU,CAAE,KAAIK,KAAK,CAACJ,iBAAkB,GAAE;MAC1E,CAAC,MAAM,IAAI,CAACD,UAAU,CAACQ,UAAU,CAAC,MAAM,CAAC,EAAE;QACzCR,UAAU,GAAI,QAAQ,iBAAgBA,UAAW,OAAO,KAAIK,KAAK,CAACJ,iBAAkB,GAAE;MACxF;IACF;IAEA,OAAO;MACL,CAAE,OAAMK,IAAK,SAAQ,GAAGR,KAAK;MAC7B,CAAE,OAAMQ,IAAK,cAAa,GAAGN;IAC/B,CAAC;EACH,CAAC,CAAC;EAEF,OAAO;IACLO;EACF,CAAC;AACH"}
@@ -1,5 +1,5 @@
1
1
  import { computed, effectScope, getCurrentInstance, inject, provide, reactive, readonly, ref, unref, watch } from 'vue';
2
- import bindThemeClass from "../../directives/theme-class.js";
2
+ import bindThemeClass from "../../directives/theme-class/index.js";
3
3
  import { propsFactory } from "../../util/component/props.js";
4
4
  import { createPalette, createThemes } from "./factory.js";
5
5
  import { cssClass, cssVariables } from "./helper.js";
@@ -53,6 +53,12 @@ export function createThemeModule(options) {
53
53
  const computedThemes = computed(() => {
54
54
  return createThemes(themes.value);
55
55
  });
56
+ const currentThemeColors = computed(() => {
57
+ const themeKey = currentThemeKey.value;
58
+ const theme = computedThemes.value[themeKey];
59
+ if (!theme?.colors) return {};
60
+ return theme.colors;
61
+ });
56
62
  const styles = computed(() => {
57
63
  const separationId = config.separation ? `#${config.separation}` : '';
58
64
  const lines = [];
@@ -139,6 +145,7 @@ export function createThemeModule(options) {
139
145
  scheme,
140
146
  theme,
141
147
  currentThemeKey,
148
+ currentThemeColors,
142
149
  themeClasses,
143
150
  computedThemes,
144
151
  computedPalette,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["computed","effectScope","getCurrentInstance","inject","provide","reactive","readonly","ref","unref","watch","bindThemeClass","propsFactory","createPalette","createThemes","cssClass","cssVariables","configureOptions","Y_THEME_PREFIX","YUYEON_THEME_KEY","Symbol","for","pressThemePropsOptions","theme","String","isDarkMode","window","matchMedia","matches","isSupportAutoScheme","media","createThemeModule","options","appMountedScope","config","scheme","themes","palette","supportedAutoMode","preferColorScheme","darkModeWatcher","mediaQueryList","value","currentColorScheme","currentThemeKey","computedThemes","Array","isArray","computedPalette","styles","separationId","separation","lines","push","themeKey","themeDefs","Object","entries","colors","variables","isDark","records","themeScheme","join","install","app","directive","styleEl","document","getElementById","updateStyleEl","immediate","el","createElement","type","id","cspNonce","setAttribute","head","appendChild","innerHTML","bindTheme","yuyeon","mql","addEventListener","neo","lightTheme","darkTheme","root","dataset","init","run","themeClasses","scope","instance","global","useLocalTheme","props","themeModule","Error","moduleTheme","newTheme","useTheme"],"sources":["../../../src/composables/theme/index.ts"],"sourcesContent":["import type { App, ComputedRef, PropType, Ref } from 'vue';\r\nimport {\r\n computed,\r\n effectScope,\r\n getCurrentInstance,\r\n inject,\r\n provide,\r\n reactive,\r\n readonly,\r\n ref,\r\n unref,\r\n watch,\r\n} from 'vue';\r\n\r\nimport bindThemeClass from '@/directives/theme-class';\r\nimport { propsFactory } from '@/util/component/props';\r\n\r\nimport { createPalette, createThemes } from './factory';\r\nimport { cssClass, cssVariables } from './helper';\r\nimport { ThemeScheme, configureOptions } from './setting';\r\nimport type { ThemeOptions } from './types';\r\n\r\nexport type { ThemeOptions };\r\n\r\nexport const Y_THEME_PREFIX = 'y-theme';\r\n\r\nexport interface ThemeModuleInstance {\r\n scheme: Ref<keyof typeof ThemeScheme | 'auto'>;\r\n theme: Ref<[string, string?]>;\r\n // theme values(schemes) for colors & variables\r\n readonly themes: any;\r\n readonly global: {\r\n // currentThemeKeys: [lightThemeKey, darkThemeKey]\r\n // If used manually, fix the scheme to 'light' and have a [lightThemeKey] value.\r\n // Use the appropriate default theme scheme if it does not match the themeKey\r\n scheme: Ref<keyof typeof ThemeScheme | 'auto'>;\r\n theme: Ref<[string, string?]>;\r\n };\r\n /* computed */\r\n readonly currentThemeKey: Readonly<ComputedRef<string>>;\r\n readonly themeClasses: Readonly<ComputedRef<string | undefined>>;\r\n readonly computedThemes: Readonly<ComputedRef<any>>;\r\n readonly computedPalette: Readonly<ComputedRef<any>>;\r\n /* */\r\n readonly supportedAutoMode: Readonly<Ref<boolean>>;\r\n readonly preferColorScheme: Readonly<Ref<'light' | 'dark'>>;\r\n}\r\n\r\nexport const YUYEON_THEME_KEY = Symbol.for('yuyeon.theme');\r\n\r\nexport const pressThemePropsOptions = propsFactory(\r\n {\r\n theme: String as PropType<string>,\r\n },\r\n 'theme',\r\n);\r\n\r\nexport function isDarkMode() {\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n}\r\n\r\nexport function isSupportAutoScheme() {\r\n return window.matchMedia('(prefers-color-scheme)').media !== 'not all';\r\n}\r\n\r\nexport function createThemeModule(options: ThemeOptions) {\r\n const appMountedScope = effectScope();\r\n const config = reactive(configureOptions(options));\r\n const scheme = ref<string>(config.scheme);\r\n const theme = ref<[string, string]>(config.theme);\r\n const themes = ref(config.themes);\r\n const palette = ref(config.palette);\r\n const supportedAutoMode = ref(true);\r\n const preferColorScheme = ref('');\r\n\r\n function darkModeWatcher(\r\n mediaQueryList: MediaQueryListEvent | MediaQueryList,\r\n ) {\r\n preferColorScheme.value = mediaQueryList.matches ? 'dark' : 'light';\r\n }\r\n\r\n const currentColorScheme = computed<'light' | 'dark'>(() => {\r\n if (scheme.value === 'auto') {\r\n return preferColorScheme.value as 'light' | 'dark';\r\n }\r\n if (scheme.value === 'dark') {\r\n return 'dark';\r\n }\r\n return 'light';\r\n });\r\n\r\n const currentThemeKey = computed(() => {\r\n if (typeof theme.value === 'string') {\r\n if (theme.value in computedThemes) {\r\n return theme.value;\r\n }\r\n }\r\n if (Array.isArray(theme.value)) {\r\n return currentColorScheme.value === 'dark'\r\n ? theme.value?.[1] ?? 'dark'\r\n : theme.value?.[0] ?? 'light';\r\n }\r\n return currentColorScheme.value;\r\n });\r\n\r\n const computedPalette = computed(() => {\r\n return createPalette(palette.value);\r\n });\r\n\r\n const computedThemes = computed(() => {\r\n return createThemes(themes.value);\r\n });\r\n\r\n const styles = computed(() => {\r\n const separationId = config.separation ? `#${config.separation}` : '';\r\n const lines = [];\r\n lines.push(\r\n ...cssClass(':root', cssVariables(computedPalette.value, 'palette')),\r\n );\r\n for (const [themeKey, themeDefs] of Object.entries(computedThemes.value)) {\r\n const { colors, variables, isDark } = themeDefs;\r\n const records: Record<string, string> = {\r\n ...colors,\r\n ...variables,\r\n };\r\n // if (currentThemeKey.value === themeKey) {\r\n // lines.push(...cssClass(':root', cssVariables(records, 'theme')));\r\n // }\r\n const themeScheme = isDark ? 'dark' : 'light';\r\n if (scheme.value === 'auto') {\r\n lines.push(\r\n ...cssClass(\r\n `@media (prefers-color-scheme: ${themeScheme})`,\r\n cssClass(\r\n `${separationId}[data-theme-scheme='auto'][data-${themeScheme}-theme='${themeKey}']`,\r\n cssVariables(records, 'theme'),\r\n ),\r\n ),\r\n );\r\n } else {\r\n lines.push(\r\n ...cssClass(\r\n `${separationId}[data-theme-scheme='${themeScheme}'][data-${themeScheme}-theme='${themeKey}']`,\r\n cssVariables(records, 'theme'),\r\n ),\r\n );\r\n }\r\n\r\n lines.push(\r\n ...cssClass(\r\n `${separationId} .y-theme--${themeKey}`,\r\n cssVariables(records, 'theme'),\r\n ),\r\n );\r\n }\r\n return lines.join('');\r\n });\r\n\r\n function install(app: App) {\r\n app.directive('theme', bindThemeClass);\r\n\r\n let styleEl = document.getElementById(\r\n 'yuyeon-theme-palette' +\r\n `${config.separation ? '__' + config.separation : ''}`,\r\n );\r\n\r\n watch(styles, updateStyleEl, { immediate: true });\r\n\r\n function updateStyleEl() {\r\n if (typeof document !== 'undefined' && !styleEl) {\r\n const el = document.createElement('style');\r\n el.type = 'text/css';\r\n el.id =\r\n 'yuyeon-theme-palette' +\r\n `${config.separation ? '__' + config.separation : ''}`;\r\n if (options?.cspNonce) el.setAttribute('nonce', options.cspNonce);\r\n styleEl = el;\r\n document.head.appendChild(styleEl);\r\n }\r\n if (styleEl) {\r\n styleEl.innerHTML = styles.value;\r\n }\r\n }\r\n }\r\n\r\n function bindTheme(yuyeon: any) {\r\n supportedAutoMode.value = isSupportAutoScheme();\r\n if (supportedAutoMode.value) {\r\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\r\n darkModeWatcher(mql);\r\n mql.addEventListener('change' as 'change', darkModeWatcher);\r\n }\r\n watch(\r\n theme,\r\n (neo) => {\r\n const [lightTheme, darkTheme] = neo;\r\n yuyeon.root.dataset.lightTheme = lightTheme;\r\n yuyeon.root.dataset.darkTheme = darkTheme;\r\n },\r\n { immediate: true },\r\n );\r\n watch(\r\n scheme,\r\n (neo) => {\r\n yuyeon.root.setAttribute(\r\n 'data-theme-scheme',\r\n neo === 'auto' ? 'auto' : currentColorScheme.value,\r\n );\r\n },\r\n { immediate: true },\r\n );\r\n }\r\n\r\n function init(yuyeon: any) {\r\n appMountedScope.run(() => {\r\n bindTheme(yuyeon);\r\n });\r\n }\r\n\r\n const themeClasses = computed(() => `y-theme--${currentThemeKey.value}`);\r\n\r\n return {\r\n install,\r\n init,\r\n scope: appMountedScope,\r\n instance: {\r\n global: {\r\n scheme,\r\n theme,\r\n },\r\n themes,\r\n scheme,\r\n theme,\r\n currentThemeKey,\r\n themeClasses,\r\n computedThemes,\r\n computedPalette,\r\n supportedAutoMode: readonly(supportedAutoMode),\r\n preferColorScheme: readonly(preferColorScheme),\r\n },\r\n };\r\n}\r\n\r\nexport function useLocalTheme(props: { theme?: string }) {\r\n getCurrentInstance();\r\n\r\n const themeModule = inject<ThemeModuleInstance | null>(\r\n YUYEON_THEME_KEY,\r\n null,\r\n );\r\n\r\n if (!themeModule) throw new Error('Not found provided \"ThemeModule\"');\r\n\r\n const palette = themeModule.computedPalette;\r\n\r\n const currentThemeKey = computed<string>(() => {\r\n if (props.theme) {\r\n const moduleTheme = unref(themeModule.theme);\r\n switch (props.theme) {\r\n case 'light':\r\n return moduleTheme?.[0] ?? 'light';\r\n case 'dark':\r\n return moduleTheme?.[1] ?? 'dark';\r\n // TODO: props.theme(themeKey) validation in themes\r\n default:\r\n return props.theme;\r\n }\r\n }\r\n return unref(themeModule.currentThemeKey);\r\n });\r\n\r\n const themeClasses = computed(() => {\r\n return `y-theme--${currentThemeKey.value}`;\r\n });\r\n\r\n const newTheme: ThemeModuleInstance = {\r\n ...themeModule,\r\n currentThemeKey,\r\n themeClasses,\r\n };\r\n\r\n provide(YUYEON_THEME_KEY, newTheme);\r\n\r\n return newTheme;\r\n}\r\n\r\nexport function useTheme() {\r\n getCurrentInstance();\r\n\r\n const theme = inject<ThemeModuleInstance | null>(YUYEON_THEME_KEY, null);\r\n\r\n if (!theme) throw new Error('【yuyeon】 Not found provided \"ThemeModule\"');\r\n\r\n return theme;\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["computed","effectScope","getCurrentInstance","inject","provide","reactive","readonly","ref","unref","watch","bindThemeClass","propsFactory","createPalette","createThemes","cssClass","cssVariables","configureOptions","Y_THEME_PREFIX","YUYEON_THEME_KEY","Symbol","for","pressThemePropsOptions","theme","String","isDarkMode","window","matchMedia","matches","isSupportAutoScheme","media","createThemeModule","options","appMountedScope","config","scheme","themes","palette","supportedAutoMode","preferColorScheme","darkModeWatcher","mediaQueryList","value","currentColorScheme","currentThemeKey","computedThemes","Array","isArray","computedPalette","currentThemeColors","themeKey","colors","styles","separationId","separation","lines","push","themeDefs","Object","entries","variables","isDark","records","themeScheme","join","install","app","directive","styleEl","document","getElementById","updateStyleEl","immediate","el","createElement","type","id","cspNonce","setAttribute","head","appendChild","innerHTML","bindTheme","yuyeon","mql","addEventListener","neo","lightTheme","darkTheme","root","dataset","init","run","themeClasses","scope","instance","global","useLocalTheme","props","themeModule","Error","moduleTheme","newTheme","useTheme"],"sources":["../../../src/composables/theme/index.ts"],"sourcesContent":["import type { App, ComputedRef, PropType, Ref } from 'vue';\r\nimport {\r\n computed,\r\n effectScope,\r\n getCurrentInstance,\r\n inject,\r\n provide,\r\n reactive,\r\n readonly,\r\n ref,\r\n unref,\r\n watch,\r\n} from 'vue';\r\n\r\nimport bindThemeClass from '@/directives/theme-class';\r\nimport { propsFactory } from '@/util/component/props';\r\n\r\nimport { createPalette, createThemes } from './factory';\r\nimport { cssClass, cssVariables } from './helper';\r\nimport { ThemeScheme, configureOptions } from './setting';\r\nimport type { ThemeOptions } from './types';\r\n\r\nexport type { ThemeOptions };\r\n\r\nexport const Y_THEME_PREFIX = 'y-theme';\r\n\r\nexport interface ThemeModuleInstance {\r\n scheme: Ref<keyof typeof ThemeScheme | 'auto'>;\r\n theme: Ref<[string, string?]>;\r\n // theme values(schemes) for colors & variables\r\n readonly themes: any;\r\n readonly global: {\r\n // currentThemeKeys: [lightThemeKey, darkThemeKey]\r\n // If used manually, fix the scheme to 'light' and have a [lightThemeKey] value.\r\n // Use the appropriate default theme scheme if it does not match the themeKey\r\n scheme: Ref<keyof typeof ThemeScheme | 'auto'>;\r\n theme: Ref<[string, string?]>;\r\n };\r\n /* computed */\r\n readonly currentThemeKey: Readonly<ComputedRef<string>>;\r\n readonly themeClasses: Readonly<ComputedRef<string | undefined>>;\r\n readonly computedThemes: Readonly<ComputedRef<any>>;\r\n readonly computedPalette: Readonly<ComputedRef<any>>;\r\n /* */\r\n readonly supportedAutoMode: Readonly<Ref<boolean>>;\r\n readonly preferColorScheme: Readonly<Ref<'light' | 'dark'>>;\r\n}\r\n\r\nexport const YUYEON_THEME_KEY = Symbol.for('yuyeon.theme');\r\n\r\nexport const pressThemePropsOptions = propsFactory(\r\n {\r\n theme: String as PropType<string>,\r\n },\r\n 'theme',\r\n);\r\n\r\nexport function isDarkMode() {\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n}\r\n\r\nexport function isSupportAutoScheme() {\r\n return window.matchMedia('(prefers-color-scheme)').media !== 'not all';\r\n}\r\n\r\nexport function createThemeModule(options: ThemeOptions) {\r\n const appMountedScope = effectScope();\r\n const config = reactive(configureOptions(options));\r\n const scheme = ref<string>(config.scheme);\r\n const theme = ref<[string, string]>(config.theme);\r\n const themes = ref(config.themes);\r\n const palette = ref(config.palette);\r\n const supportedAutoMode = ref(true);\r\n const preferColorScheme = ref('');\r\n\r\n function darkModeWatcher(\r\n mediaQueryList: MediaQueryListEvent | MediaQueryList,\r\n ) {\r\n preferColorScheme.value = mediaQueryList.matches ? 'dark' : 'light';\r\n }\r\n\r\n const currentColorScheme = computed<'light' | 'dark'>(() => {\r\n if (scheme.value === 'auto') {\r\n return preferColorScheme.value as 'light' | 'dark';\r\n }\r\n if (scheme.value === 'dark') {\r\n return 'dark';\r\n }\r\n return 'light';\r\n });\r\n\r\n const currentThemeKey = computed(() => {\r\n if (typeof theme.value === 'string') {\r\n if (theme.value in computedThemes) {\r\n return theme.value;\r\n }\r\n }\r\n if (Array.isArray(theme.value)) {\r\n return currentColorScheme.value === 'dark'\r\n ? theme.value?.[1] ?? 'dark'\r\n : theme.value?.[0] ?? 'light';\r\n }\r\n return currentColorScheme.value;\r\n });\r\n\r\n const computedPalette = computed(() => {\r\n return createPalette(palette.value);\r\n });\r\n\r\n const computedThemes = computed(() => {\r\n return createThemes(themes.value);\r\n });\r\n\r\n const currentThemeColors = computed(() => {\r\n const themeKey = currentThemeKey.value;\r\n const theme = computedThemes.value[themeKey];\r\n if (!theme?.colors) return {};\r\n return theme.colors;\r\n });\r\n\r\n const styles = computed(() => {\r\n const separationId = config.separation ? `#${config.separation}` : '';\r\n const lines = [];\r\n lines.push(\r\n ...cssClass(':root', cssVariables(computedPalette.value, 'palette')),\r\n );\r\n for (const [themeKey, themeDefs] of Object.entries(computedThemes.value)) {\r\n const { colors, variables, isDark } = themeDefs;\r\n const records: Record<string, string> = {\r\n ...colors,\r\n ...variables,\r\n };\r\n // if (currentThemeKey.value === themeKey) {\r\n // lines.push(...cssClass(':root', cssVariables(records, 'theme')));\r\n // }\r\n const themeScheme = isDark ? 'dark' : 'light';\r\n if (scheme.value === 'auto') {\r\n lines.push(\r\n ...cssClass(\r\n `@media (prefers-color-scheme: ${themeScheme})`,\r\n cssClass(\r\n `${separationId}[data-theme-scheme='auto'][data-${themeScheme}-theme='${themeKey}']`,\r\n cssVariables(records, 'theme'),\r\n ),\r\n ),\r\n );\r\n } else {\r\n lines.push(\r\n ...cssClass(\r\n `${separationId}[data-theme-scheme='${themeScheme}'][data-${themeScheme}-theme='${themeKey}']`,\r\n cssVariables(records, 'theme'),\r\n ),\r\n );\r\n }\r\n\r\n lines.push(\r\n ...cssClass(\r\n `${separationId} .y-theme--${themeKey}`,\r\n cssVariables(records, 'theme'),\r\n ),\r\n );\r\n }\r\n return lines.join('');\r\n });\r\n\r\n function install(app: App) {\r\n app.directive('theme', bindThemeClass);\r\n\r\n let styleEl = document.getElementById(\r\n 'yuyeon-theme-palette' +\r\n `${config.separation ? '__' + config.separation : ''}`,\r\n );\r\n\r\n watch(styles, updateStyleEl, { immediate: true });\r\n\r\n function updateStyleEl() {\r\n if (typeof document !== 'undefined' && !styleEl) {\r\n const el = document.createElement('style');\r\n el.type = 'text/css';\r\n el.id =\r\n 'yuyeon-theme-palette' +\r\n `${config.separation ? '__' + config.separation : ''}`;\r\n if (options?.cspNonce) el.setAttribute('nonce', options.cspNonce);\r\n styleEl = el;\r\n document.head.appendChild(styleEl);\r\n }\r\n if (styleEl) {\r\n styleEl.innerHTML = styles.value;\r\n }\r\n }\r\n }\r\n\r\n function bindTheme(yuyeon: any) {\r\n supportedAutoMode.value = isSupportAutoScheme();\r\n if (supportedAutoMode.value) {\r\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\r\n darkModeWatcher(mql);\r\n mql.addEventListener('change' as 'change', darkModeWatcher);\r\n }\r\n watch(\r\n theme,\r\n (neo) => {\r\n const [lightTheme, darkTheme] = neo;\r\n yuyeon.root.dataset.lightTheme = lightTheme;\r\n yuyeon.root.dataset.darkTheme = darkTheme;\r\n },\r\n { immediate: true },\r\n );\r\n watch(\r\n scheme,\r\n (neo) => {\r\n yuyeon.root.setAttribute(\r\n 'data-theme-scheme',\r\n neo === 'auto' ? 'auto' : currentColorScheme.value,\r\n );\r\n },\r\n { immediate: true },\r\n );\r\n }\r\n\r\n function init(yuyeon: any) {\r\n appMountedScope.run(() => {\r\n bindTheme(yuyeon);\r\n });\r\n }\r\n\r\n const themeClasses = computed(() => `y-theme--${currentThemeKey.value}`);\r\n\r\n return {\r\n install,\r\n init,\r\n scope: appMountedScope,\r\n instance: {\r\n global: {\r\n scheme,\r\n theme,\r\n },\r\n themes,\r\n scheme,\r\n theme,\r\n currentThemeKey,\r\n currentThemeColors,\r\n themeClasses,\r\n computedThemes,\r\n computedPalette,\r\n supportedAutoMode: readonly(supportedAutoMode),\r\n preferColorScheme: readonly(preferColorScheme),\r\n },\r\n };\r\n}\r\n\r\nexport function useLocalTheme(props: { theme?: string }) {\r\n getCurrentInstance();\r\n\r\n const themeModule = inject<ThemeModuleInstance | null>(\r\n YUYEON_THEME_KEY,\r\n null,\r\n );\r\n\r\n if (!themeModule) throw new Error('Not found provided \"ThemeModule\"');\r\n\r\n const palette = themeModule.computedPalette;\r\n\r\n const currentThemeKey = computed<string>(() => {\r\n if (props.theme) {\r\n const moduleTheme = unref(themeModule.theme);\r\n switch (props.theme) {\r\n case 'light':\r\n return moduleTheme?.[0] ?? 'light';\r\n case 'dark':\r\n return moduleTheme?.[1] ?? 'dark';\r\n // TODO: props.theme(themeKey) validation in themes\r\n default:\r\n return props.theme;\r\n }\r\n }\r\n return unref(themeModule.currentThemeKey);\r\n });\r\n\r\n const themeClasses = computed(() => {\r\n return `y-theme--${currentThemeKey.value}`;\r\n });\r\n\r\n const newTheme: ThemeModuleInstance = {\r\n ...themeModule,\r\n currentThemeKey,\r\n themeClasses,\r\n };\r\n\r\n provide(YUYEON_THEME_KEY, newTheme);\r\n\r\n return newTheme;\r\n}\r\n\r\nexport function useTheme() {\r\n getCurrentInstance();\r\n\r\n const theme = inject<ThemeModuleInstance | null>(YUYEON_THEME_KEY, null);\r\n\r\n if (!theme) throw new Error('【yuyeon】 Not found provided \"ThemeModule\"');\r\n\r\n return theme;\r\n}\r\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { computed, getCurrentInstance, onBeforeMount, ref, watch } from 'vue';
1
+ import { computed, getCurrentInstance, onBeforeMount, onBeforeUnmount, ref, watch } from 'vue';
2
2
  import { getUid, propsFactory } from "../util/component/index.js";
3
3
  import { useModelDuplex } from "./communication.js";
4
4
  import { useForm } from "./form.js";
@@ -44,9 +44,9 @@ export function useValidation(props, name) {
44
44
  });
45
45
  const errorResult = ref();
46
46
  const errors = ref([]);
47
- const isReadonly = computed(() => props.readonly ?? form?.isReadonly.value);
48
- const isDisabled = computed(() => props.disabled ?? form?.isDisabled.value);
49
- const isLoading = computed(() => props.loading ?? form?.isLoading.value);
47
+ const isReadonly = computed(() => props.readonly || form?.isReadonly.value);
48
+ const isDisabled = computed(() => props.disabled || form?.isDisabled.value);
49
+ const isLoading = computed(() => props.loading || form?.isLoading.value);
50
50
  const isError = computed(() => {
51
51
  return props.status === 'error' || errors.value.length > 0;
52
52
  });
@@ -101,6 +101,9 @@ export function useValidation(props, name) {
101
101
  resetError();
102
102
  }
103
103
  }
104
+ onBeforeUnmount(() => {
105
+ form?.unregister?.(cid.value);
106
+ });
104
107
  onBeforeMount(() => {
105
108
  form?.register({
106
109
  id: cid.value,
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","names":["computed","getCurrentInstance","onBeforeMount","ref","watch","getUid","propsFactory","useModelDuplex","useForm","useToggleScope","pressValidationPropsOptions","readonly","Boolean","disabled","status","type","String","validator","value","includes","helperText","validators","Array","validateOn","validationValue","maxErrors","Number","default","useValidation","props","name","uid","arguments","length","undefined","cid","model","validationModel","vm","form","validating","onSet","Set","split","blur","has","input","lazy","submit","errorResult","errors","isReadonly","isDisabled","isLoading","loading","isError","isSuccess","invokeValidators","focused","unwatch","val","results","isArray","handler","result","console","warn","push","resetError","resetValidation","register","id","vnode","validate"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["import {\r\n type PropType,\r\n computed,\r\n getCurrentInstance,\r\n onBeforeMount,\r\n ref,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { getUid, propsFactory } from '@/util/component';\r\n\r\nimport { useModelDuplex } from './communication';\r\nimport { useForm } from './form';\r\nimport { useToggleScope } from './scope';\r\n\r\nexport interface ValidationProps {\r\n validateOn: 'input' | 'blur' | 'lazy' | 'submit' | string;\r\n}\r\n\r\nexport const pressValidationPropsOptions = propsFactory(\r\n {\r\n readonly: Boolean as PropType<boolean>,\r\n disabled: Boolean as PropType<boolean>,\r\n status: {\r\n type: String as PropType<'success' | 'warning' | 'error' | undefined>,\r\n validator(value: string) {\r\n return ['success', 'warning', 'error'].includes(value);\r\n },\r\n },\r\n helperText: String,\r\n validators: Array as PropType<((v: any) => boolean | string)[] | string[]>,\r\n validateOn: {\r\n type: String as PropType<ValidationProps['validateOn']>,\r\n },\r\n validationValue: null,\r\n maxErrors: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 1,\r\n },\r\n },\r\n 'validation',\r\n);\r\n\r\nexport function useValidation(props: any, name: string, uid = getUid()) {\r\n const cid = computed(() => props.name ?? uid);\r\n const model = useModelDuplex(props, 'modelValue');\r\n const validationModel = computed(() =>\r\n props.validationValue === undefined ? model.value : props.validationValue,\r\n );\r\n const vm = getCurrentInstance()!;\r\n const form = useForm();\r\n const validating = ref(false);\r\n const validateOn = computed(() => {\r\n let value = props.validateOn || 'input';\r\n if (value === 'lazy') value = 'input,lazy';\r\n const onSet = new Set(value?.split(',') ?? []);\r\n\r\n return {\r\n blur: onSet.has('blur') || onSet.has('input'),\r\n input: onSet.has('input'),\r\n lazy: onSet.has('lazy'),\r\n submit: onSet.has('submit'),\r\n };\r\n });\r\n\r\n const errorResult = ref();\r\n const errors = ref<any[]>([]);\r\n\r\n const isReadonly = computed(() => props.readonly ?? form?.isReadonly.value);\r\n\r\n const isDisabled = computed(() => props.disabled ?? form?.isDisabled.value);\r\n\r\n const isLoading = computed(() => props.loading ?? form?.isLoading.value);\r\n\r\n const isError = computed(() => {\r\n return props.status === 'error' || errors.value.length > 0;\r\n });\r\n\r\n const isSuccess = computed(() => {\r\n return !isError.value && props.status === 'success';\r\n });\r\n\r\n useToggleScope(\r\n () => validateOn.value.input,\r\n () => {\r\n watch(validationModel, () => {\r\n if (validationModel.value != null) {\r\n invokeValidators();\r\n } else if (props.focused) {\r\n const unwatch = watch(\r\n () => props.focused,\r\n (val) => {\r\n if (!val) invokeValidators();\r\n\r\n unwatch();\r\n },\r\n );\r\n }\r\n });\r\n },\r\n );\r\n\r\n async function invokeValidators() {\r\n const results: any[] = [];\r\n validating.value = true;\r\n\r\n if (Array.isArray(props.validators)) {\r\n for (const validator of props.validators) {\r\n if (results.length >= +(props.maxErrors ?? 1)) {\r\n break;\r\n }\r\n\r\n const handler =\r\n typeof validator === 'function' ? validator : () => validator;\r\n const result = await handler(validationModel.value);\r\n\r\n if (result === true) {\r\n continue;\r\n }\r\n\r\n if (result !== false && typeof result !== 'string') {\r\n console.warn('Wrong validator return type');\r\n continue;\r\n }\r\n results.push(result || '');\r\n }\r\n }\r\n validating.value = false;\r\n errors.value = results;\r\n errorResult.value = results?.[0];\r\n\r\n return results;\r\n }\r\n\r\n function resetError() {\r\n errors.value = [];\r\n errorResult.value = undefined;\r\n }\r\n\r\n async function resetValidation() {\r\n if (!validateOn.value.lazy) {\r\n await invokeValidators();\r\n } else {\r\n resetError();\r\n }\r\n }\r\n\r\n onBeforeMount(() => {\r\n form?.register({\r\n id: cid.value,\r\n vnode: vm.vnode,\r\n resetValidation,\r\n validate: invokeValidators,\r\n });\r\n });\r\n\r\n return {\r\n invokeValidators,\r\n resetError,\r\n validating,\r\n validateOn,\r\n errorResult,\r\n errors,\r\n isReadonly,\r\n isDisabled,\r\n isLoading,\r\n isError,\r\n isSuccess,\r\n };\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","names":["computed","getCurrentInstance","onBeforeMount","onBeforeUnmount","ref","watch","getUid","propsFactory","useModelDuplex","useForm","useToggleScope","pressValidationPropsOptions","readonly","Boolean","disabled","status","type","String","validator","value","includes","helperText","validators","Array","validateOn","validationValue","maxErrors","Number","default","useValidation","props","name","uid","arguments","length","undefined","cid","model","validationModel","vm","form","validating","onSet","Set","split","blur","has","input","lazy","submit","errorResult","errors","isReadonly","isDisabled","isLoading","loading","isError","isSuccess","invokeValidators","focused","unwatch","val","results","isArray","handler","result","console","warn","push","resetError","resetValidation","unregister","register","id","vnode","validate"],"sources":["../../src/composables/validation.ts"],"sourcesContent":["import {\n type PropType,\n computed,\n getCurrentInstance,\n onBeforeMount,\n onBeforeUnmount,\n ref,\n watch,\n} from 'vue';\n\nimport { getUid, propsFactory } from '@/util/component';\n\nimport { useModelDuplex } from './communication';\nimport { useForm } from './form';\nimport { useToggleScope } from './scope';\n\nexport interface ValidationProps {\n validateOn: 'input' | 'blur' | 'lazy' | 'submit' | string;\n}\n\nexport const pressValidationPropsOptions = propsFactory(\n {\n readonly: Boolean as PropType<boolean>,\n disabled: Boolean as PropType<boolean>,\n status: {\n type: String as PropType<'success' | 'warning' | 'error' | undefined>,\n validator(value: string) {\n return ['success', 'warning', 'error'].includes(value);\n },\n },\n helperText: String,\n validators: Array as PropType<((v: any) => boolean | string)[] | string[]>,\n validateOn: {\n type: String as PropType<ValidationProps['validateOn']>,\n },\n validationValue: null,\n maxErrors: {\n type: [Number, String] as PropType<number | string>,\n default: 1,\n },\n },\n 'validation',\n);\n\nexport function useValidation(props: any, name: string, uid = getUid()) {\n const cid = computed(() => props.name ?? uid);\n const model = useModelDuplex(props, 'modelValue');\n const validationModel = computed(() =>\n props.validationValue === undefined ? model.value : props.validationValue,\n );\n const vm = getCurrentInstance()!;\n const form = useForm();\n const validating = ref(false);\n const validateOn = computed(() => {\n let value = props.validateOn || 'input';\n if (value === 'lazy') value = 'input,lazy';\n const onSet = new Set(value?.split(',') ?? []);\n\n return {\n blur: onSet.has('blur') || onSet.has('input'),\n input: onSet.has('input'),\n lazy: onSet.has('lazy'),\n submit: onSet.has('submit'),\n };\n });\n\n const errorResult = ref();\n const errors = ref<any[]>([]);\n\n const isReadonly = computed(() => props.readonly || form?.isReadonly.value);\n\n const isDisabled = computed(() => props.disabled || form?.isDisabled.value);\n\n const isLoading = computed(() => props.loading || form?.isLoading.value);\n\n const isError = computed(() => {\n return props.status === 'error' || errors.value.length > 0;\n });\n\n const isSuccess = computed(() => {\n return !isError.value && props.status === 'success';\n });\n\n useToggleScope(\n () => validateOn.value.input,\n () => {\n watch(validationModel, () => {\n if (validationModel.value != null) {\n invokeValidators();\n } else if (props.focused) {\n const unwatch = watch(\n () => props.focused,\n (val) => {\n if (!val) invokeValidators();\n\n unwatch();\n },\n );\n }\n });\n },\n );\n\n async function invokeValidators() {\n const results: any[] = [];\n validating.value = true;\n\n if (Array.isArray(props.validators)) {\n for (const validator of props.validators) {\n if (results.length >= +(props.maxErrors ?? 1)) {\n break;\n }\n\n const handler =\n typeof validator === 'function' ? validator : () => validator;\n const result = await handler(validationModel.value);\n\n if (result === true) {\n continue;\n }\n\n if (result !== false && typeof result !== 'string') {\n console.warn('Wrong validator return type');\n continue;\n }\n results.push(result || '');\n }\n }\n validating.value = false;\n errors.value = results;\n errorResult.value = results?.[0];\n\n return results;\n }\n\n function resetError() {\n errors.value = [];\n errorResult.value = undefined;\n }\n\n async function resetValidation() {\n if (!validateOn.value.lazy) {\n await invokeValidators();\n } else {\n resetError();\n }\n }\n\n onBeforeUnmount(() => {\n form?.unregister?.(cid.value);\n });\n\n onBeforeMount(() => {\n form?.register({\n id: cid.value,\n vnode: vm.vnode,\n resetValidation,\n validate: invokeValidators,\n });\n });\n\n return {\n invokeValidators,\n resetError,\n validating,\n validateOn,\n errorResult,\n errors,\n isReadonly,\n isDisabled,\n isLoading,\n isError,\n isSuccess,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./complement-click/index.js";
2
+ export * from "./plate-wave/index.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/directives/index.ts"],"sourcesContent":["export * from './complement-click';\nexport * from './plate-wave';\n\n"],"mappings":""}
@@ -25,8 +25,8 @@ function hideAnimation(el) {
25
25
  }, delay + 300);
26
26
  }
27
27
 
28
- /*
29
- * Event
28
+ /*
29
+ * Event
30
30
  * */
31
31
 
32
32
  let keyboardEventFlag = false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["CLASS_NAME","showAnimation","el","animation","document","createElement","className","appendChild","dataset","activated","String","performance","now","hideAnimation","animations","getElementsByClassName","length","isHiding","diff","Number","delay","Math","max","setTimeout","removeChild","keyboardEventFlag","spawn","event","currentTarget","clean","stop","keyboardSpawn","key","keyboardClean","destroyListeners","removeEventListener","attachWave","binding","init","arguments","undefined","value","modifiers","enabled","addEventListener","PlateWave","mounted","updated","oldValue","unmount"],"sources":["../../../src/directives/plate-wave/index.ts"],"sourcesContent":["import type { DirectiveBinding } from 'vue';\r\n\r\nimport './plate-wave.scss';\r\n\r\nexport interface PlateWaveBinding\r\n extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\r\n value?: boolean;\r\n modifiers: { stop?: boolean };\r\n}\r\n\r\nconst CLASS_NAME = 'y-plate-wave__animation';\r\n\r\nfunction showAnimation(el: HTMLElement | null) {\r\n if (!el) return;\r\n const animation = document.createElement('span');\r\n animation.className = CLASS_NAME;\r\n el.appendChild(animation);\r\n animation.dataset.activated = String(performance.now());\r\n}\r\n\r\nfunction hideAnimation(el: HTMLElement | null) {\r\n if (!el) {\r\n return;\r\n }\r\n const animations = el.getElementsByClassName(CLASS_NAME);\r\n if (animations.length === 0) return;\r\n const animation = animations[animations.length - 1] as HTMLElement;\r\n if (animation.dataset.isHiding) return;\r\n animation.dataset.isHiding = 'true';\r\n const diff = performance.now() - Number(animation.dataset.activated);\r\n const delay = Math.max(250 - diff, 0);\r\n setTimeout(() => {\r\n if (animation) {\r\n el.removeChild(animation);\r\n }\r\n }, delay + 300);\r\n}\r\n\r\n/*\r\n * Event\r\n * */\r\n\r\nlet keyboardEventFlag = false;\r\n\r\nfunction spawn(event: Event) {\r\n showAnimation(event.currentTarget as HTMLElement);\r\n}\r\n\r\nfunction clean(event: Event) {\r\n hideAnimation(event.currentTarget as HTMLElement);\r\n}\r\n\r\nfunction stop(event: Event) {\r\n //\r\n}\r\n\r\nfunction keyboardSpawn(event: KeyboardEvent) {\r\n if (!keyboardEventFlag && (event.key === 'Enter' || event.key === 'Space')) {\r\n keyboardEventFlag = true;\r\n showAnimation(event.currentTarget as HTMLElement);\r\n }\r\n}\r\n\r\nfunction keyboardClean(event: KeyboardEvent) {\r\n keyboardEventFlag = false;\r\n hideAnimation(event.currentTarget as HTMLElement);\r\n}\r\n\r\nfunction destroyListeners(el: HTMLElement) {\r\n el.removeEventListener('mousedown', spawn);\r\n el.removeEventListener('mouseup', clean);\r\n el.removeEventListener('mouseleave', clean);\r\n el.removeEventListener('keydown', keyboardSpawn);\r\n el.removeEventListener('keyup', keyboardClean);\r\n}\r\n\r\nfunction attachWave(el: HTMLElement, binding: PlateWaveBinding, init = false) {\r\n const { value, modifiers } = binding;\r\n let enabled = value ?? true;\r\n if (typeof value === 'boolean') {\r\n enabled = value;\r\n }\r\n if (!enabled) hideAnimation(el);\r\n\r\n if (enabled && init) {\r\n if (modifiers.stop) {\r\n el.addEventListener('mousedown', stop);\r\n return;\r\n }\r\n\r\n el.addEventListener('mousedown', spawn);\r\n el.addEventListener('mouseup', clean);\r\n el.addEventListener('mouseleave', clean);\r\n el.addEventListener('keydown', keyboardSpawn);\r\n el.addEventListener('keyup', keyboardClean);\r\n el.addEventListener('blur', clean);\r\n } else if (!enabled && !init) {\r\n destroyListeners(el);\r\n }\r\n}\r\n\r\nexport const PlateWave = {\r\n mounted(el: HTMLElement, binding: PlateWaveBinding) {\r\n attachWave(el, binding, true);\r\n },\r\n updated(el: HTMLElement, binding: PlateWaveBinding) {\r\n if (binding.value === binding.oldValue) {\r\n return;\r\n }\r\n attachWave(el, binding);\r\n },\r\n unmount(el: HTMLElement) {\r\n destroyListeners(el);\r\n },\r\n};\r\n\r\nexport default PlateWave;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["CLASS_NAME","showAnimation","el","animation","document","createElement","className","appendChild","dataset","activated","String","performance","now","hideAnimation","animations","getElementsByClassName","length","isHiding","diff","Number","delay","Math","max","setTimeout","removeChild","keyboardEventFlag","spawn","event","currentTarget","clean","stop","keyboardSpawn","key","keyboardClean","destroyListeners","removeEventListener","attachWave","binding","init","arguments","undefined","value","modifiers","enabled","addEventListener","PlateWave","mounted","updated","oldValue","unmount"],"sources":["../../../src/directives/plate-wave/index.ts"],"sourcesContent":["import type { Directive, DirectiveBinding } from 'vue';\n\nimport './plate-wave.scss';\n\nexport interface PlateWaveBinding\n extends Omit<DirectiveBinding, 'modifiers' | 'value'> {\n value?: boolean;\n modifiers: { stop?: boolean };\n}\n\nconst CLASS_NAME = 'y-plate-wave__animation';\n\nfunction showAnimation(el: HTMLElement | null) {\n if (!el) return;\n const animation = document.createElement('span');\n animation.className = CLASS_NAME;\n el.appendChild(animation);\n animation.dataset.activated = String(performance.now());\n}\n\nfunction hideAnimation(el: HTMLElement | null) {\n if (!el) {\n return;\n }\n const animations = el.getElementsByClassName(CLASS_NAME);\n if (animations.length === 0) return;\n const animation = animations[animations.length - 1] as HTMLElement;\n if (animation.dataset.isHiding) return;\n animation.dataset.isHiding = 'true';\n const diff = performance.now() - Number(animation.dataset.activated);\n const delay = Math.max(250 - diff, 0);\n setTimeout(() => {\n if (animation) {\n el.removeChild(animation);\n }\n }, delay + 300);\n}\n\n/*\n * Event\n * */\n\nlet keyboardEventFlag = false;\n\nfunction spawn(event: Event) {\n showAnimation(event.currentTarget as HTMLElement);\n}\n\nfunction clean(event: Event) {\n hideAnimation(event.currentTarget as HTMLElement);\n}\n\nfunction stop(event: Event) {\n //\n}\n\nfunction keyboardSpawn(event: KeyboardEvent) {\n if (!keyboardEventFlag && (event.key === 'Enter' || event.key === 'Space')) {\n keyboardEventFlag = true;\n showAnimation(event.currentTarget as HTMLElement);\n }\n}\n\nfunction keyboardClean(event: KeyboardEvent) {\n keyboardEventFlag = false;\n hideAnimation(event.currentTarget as HTMLElement);\n}\n\nfunction destroyListeners(el: HTMLElement) {\n el.removeEventListener('mousedown', spawn);\n el.removeEventListener('mouseup', clean);\n el.removeEventListener('mouseleave', clean);\n el.removeEventListener('keydown', keyboardSpawn);\n el.removeEventListener('keyup', keyboardClean);\n}\n\nfunction attachWave(el: HTMLElement, binding: PlateWaveBinding, init = false) {\n const { value, modifiers } = binding;\n let enabled = value ?? true;\n if (typeof value === 'boolean') {\n enabled = value;\n }\n if (!enabled) hideAnimation(el);\n\n if (enabled && init) {\n if (modifiers.stop) {\n el.addEventListener('mousedown', stop);\n return;\n }\n\n el.addEventListener('mousedown', spawn);\n el.addEventListener('mouseup', clean);\n el.addEventListener('mouseleave', clean);\n el.addEventListener('keydown', keyboardSpawn);\n el.addEventListener('keyup', keyboardClean);\n el.addEventListener('blur', clean);\n } else if (!enabled && !init) {\n destroyListeners(el);\n }\n}\n\nexport const PlateWave = {\n mounted(el: HTMLElement, binding: PlateWaveBinding) {\n attachWave(el, binding, true);\n },\n updated(el: HTMLElement, binding: PlateWaveBinding) {\n if (binding.value === binding.oldValue) {\n return;\n }\n attachWave(el, binding);\n },\n unmount(el: HTMLElement) {\n destroyListeners(el);\n },\n};\n\nexport type PlateWaveDirective = Directive<HTMLElement, PlateWaveBinding>;\n\ndeclare module 'vue' {\n export interface ComponentCustomProperties {\n vPlateWave: PlateWaveDirective;\n }\n}\n\nexport default PlateWave;\n"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { unref, watchEffect } from 'vue';
2
+ const bindThemeClass = (el, binding, vnode) => {
3
+ function bindingClass(themeClass) {
4
+ el.classList.forEach(classToken => {
5
+ if (classToken.startsWith('y-theme--') && classToken !== themeClass) {
6
+ el.classList.remove(classToken);
7
+ }
8
+ });
9
+ el.classList.add(themeClass);
10
+ }
11
+ watchEffect(() => {
12
+ const theme = binding.instance?.$yuyeon?.theme ?? vnode?.ctx?.root.appContext.config.globalProperties?.$yuyeon?.theme;
13
+ const themeName = binding.value ?? unref(theme.currentThemeKey) ?? '';
14
+ if (!themeName) {
15
+ return;
16
+ }
17
+ const themeClass = `y-theme--${themeName}`;
18
+ bindingClass(themeClass);
19
+ }, {
20
+ flush: 'post'
21
+ });
22
+ };
23
+ export default bindThemeClass;
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["unref","watchEffect","bindThemeClass","el","binding","vnode","bindingClass","themeClass","classList","forEach","classToken","startsWith","remove","add","theme","instance","$yuyeon","ctx","root","appContext","config","globalProperties","themeName","value","currentThemeKey","flush"],"sources":["../../../src/directives/theme-class/index.ts"],"sourcesContent":["import { FunctionDirective, unref, watchEffect } from 'vue';\n\nconst bindThemeClass: FunctionDirective = (el, binding, vnode) => {\n function bindingClass(themeClass: string) {\n el.classList.forEach((classToken: string) => {\n if (classToken.startsWith('y-theme--') && classToken !== themeClass) {\n el.classList.remove(classToken);\n }\n });\n el.classList.add(themeClass);\n }\n\n watchEffect(\n () => {\n const theme =\n (binding.instance as any)?.$yuyeon?.theme ??\n (vnode as any)?.ctx?.root.appContext.config.globalProperties?.$yuyeon\n ?.theme;\n const themeName = binding.value ?? unref(theme.currentThemeKey) ?? '';\n if (!themeName) {\n return;\n }\n const themeClass = `y-theme--${themeName}`;\n bindingClass(themeClass);\n },\n { flush: 'post' },\n );\n};\n\nexport default bindThemeClass;\n"],"mappings":"AAAA,SAA4BA,KAAK,EAAEC,WAAW,QAAQ,KAAK;AAE3D,MAAMC,cAAiC,GAAGA,CAACC,EAAE,EAAEC,OAAO,EAAEC,KAAK,KAAK;EAChE,SAASC,YAAYA,CAACC,UAAkB,EAAE;IACxCJ,EAAE,CAACK,SAAS,CAACC,OAAO,CAAEC,UAAkB,IAAK;MAC3C,IAAIA,UAAU,CAACC,UAAU,CAAC,WAAW,CAAC,IAAID,UAAU,KAAKH,UAAU,EAAE;QACnEJ,EAAE,CAACK,SAAS,CAACI,MAAM,CAACF,UAAU,CAAC;MACjC;IACF,CAAC,CAAC;IACFP,EAAE,CAACK,SAAS,CAACK,GAAG,CAACN,UAAU,CAAC;EAC9B;EAEAN,WAAW,CACT,MAAM;IACJ,MAAMa,KAAK,GACRV,OAAO,CAACW,QAAQ,EAAUC,OAAO,EAAEF,KAAK,IACxCT,KAAK,EAAUY,GAAG,EAAEC,IAAI,CAACC,UAAU,CAACC,MAAM,CAACC,gBAAgB,EAAEL,OAAO,EACjEF,KAAK;IACX,MAAMQ,SAAS,GAAGlB,OAAO,CAACmB,KAAK,IAAIvB,KAAK,CAACc,KAAK,CAACU,eAAe,CAAC,IAAI,EAAE;IACrE,IAAI,CAACF,SAAS,EAAE;MACd;IACF;IACA,MAAMf,UAAU,GAAI,YAAWe,SAAU,EAAC;IAC1ChB,YAAY,CAACC,UAAU,CAAC;EAC1B,CAAC,EACD;IAAEkB,KAAK,EAAE;EAAO,CAClB,CAAC;AACH,CAAC;AAED,eAAevB,cAAc"}
@@ -66,4 +66,7 @@ export function simpleBraceParse(input) {
66
66
  });
67
67
  return results;
68
68
  }
69
+ export function escapeRegExp(str) {
70
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
71
+ }
69
72
  //# sourceMappingURL=string.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.js","names":["camelToPascal","str","charAt","toUpperCase","slice","toKebabCase","from","arguments","length","undefined","res","index","char","charCode","charCodeAt","toLowerCase","kebabToCamel","randomCharOne","Math","floor","random","simpleBraceParse","input","pattern","results","match","pointer","exec","variable","start","end","lastIndex","prevText","substring","push","type","content","trim"],"sources":["../../src/util/string.ts"],"sourcesContent":["export function camelToPascal(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function toKebabCase(str: string, from: 'camel' | 'pascal' = 'camel') {\n let res = '';\n for (let index = 0; index < str.length; index += 1) {\n const char = str[index];\n const charCode = char.charCodeAt(0);\n if (charCode >= 65 && charCode <= 90) {\n res += `${\n index === 0 && from === 'camel' ? '' : '-'\n }${char.toLowerCase()}`;\n } else {\n res += char;\n }\n }\n return res;\n}\n\nexport function kebabToCamel(str: string) {\n let res = '';\n let index = 0;\n while (index < str.length) {\n const char = str[index];\n if (char === '-') {\n index += 1;\n res += str[index].toUpperCase();\n } else {\n res += char;\n }\n index += 1;\n }\n return res;\n}\n\nexport function randomCharOne(str: string) {\n if (str) {\n return str.charAt(Math.floor(Math.random() * str.length));\n }\n return '';\n}\n\nexport function simpleBraceParse(input: string) {\n const pattern = /\\{([^{}]+)\\}/g;\n const results = [];\n let match;\n let pointer = 0;\n\n while ((match = pattern.exec(input)) !== null) {\n const variable = match[1];\n const start = match.index;\n const end = pattern.lastIndex;\n if (start > 0) {\n const prevText = input.substring(pointer, start);\n results.push({\n type: 'text',\n content: prevText,\n });\n }\n if (variable.trim()) {\n results.push({\n type: 'variable',\n content: variable.trim(),\n });\n }\n\n pointer = end;\n }\n\n results.push({\n type: 'text',\n content: input.substring(pointer, input.length),\n });\n\n return results;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"string.js","names":["camelToPascal","str","charAt","toUpperCase","slice","toKebabCase","from","arguments","length","undefined","res","index","char","charCode","charCodeAt","toLowerCase","kebabToCamel","randomCharOne","Math","floor","random","simpleBraceParse","input","pattern","results","match","pointer","exec","variable","start","end","lastIndex","prevText","substring","push","type","content","trim","escapeRegExp","replace"],"sources":["../../src/util/string.ts"],"sourcesContent":["export function camelToPascal(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function toKebabCase(str: string, from: 'camel' | 'pascal' = 'camel') {\n let res = '';\n for (let index = 0; index < str.length; index += 1) {\n const char = str[index];\n const charCode = char.charCodeAt(0);\n if (charCode >= 65 && charCode <= 90) {\n res += `${\n index === 0 && from === 'camel' ? '' : '-'\n }${char.toLowerCase()}`;\n } else {\n res += char;\n }\n }\n return res;\n}\n\nexport function kebabToCamel(str: string) {\n let res = '';\n let index = 0;\n while (index < str.length) {\n const char = str[index];\n if (char === '-') {\n index += 1;\n res += str[index].toUpperCase();\n } else {\n res += char;\n }\n index += 1;\n }\n return res;\n}\n\nexport function randomCharOne(str: string) {\n if (str) {\n return str.charAt(Math.floor(Math.random() * str.length));\n }\n return '';\n}\n\nexport function simpleBraceParse(input: string) {\n const pattern = /\\{([^{}]+)\\}/g;\n const results = [];\n let match;\n let pointer = 0;\n\n while ((match = pattern.exec(input)) !== null) {\n const variable = match[1];\n const start = match.index;\n const end = pattern.lastIndex;\n if (start > 0) {\n const prevText = input.substring(pointer, start);\n results.push({\n type: 'text',\n content: prevText,\n });\n }\n if (variable.trim()) {\n results.push({\n type: 'variable',\n content: variable.trim(),\n });\n }\n\n pointer = end;\n }\n\n results.push({\n type: 'text',\n content: input.substring(pointer, input.length),\n });\n\n return results;\n}\n\nexport function escapeRegExp(str: string) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuyeon",
3
- "version": "0.3.2-rc.9",
3
+ "version": "0.3.4-beta.9",
4
4
  "keywords": [
5
5
  "UI Library",
6
6
  "Vue"
@@ -35,7 +35,18 @@
35
35
  "types": "./types/components/index.d.ts",
36
36
  "module": "./lib/components/index.js"
37
37
  },
38
- "./components/*": "./lib/components/*/index.js",
38
+ "./components/*": {
39
+ "module": "./lib/components/*/*.js",
40
+ "types": "./types/components/*/*.d.ts"
41
+ },
42
+ "./directives": {
43
+ "types": "./types/directives/index.d.ts",
44
+ "module": "./lib/directives/index.js"
45
+ },
46
+ "./directives/*": {
47
+ "module": "./lib/directives/*/*.js",
48
+ "types": "./types/directives/*/*.d.ts"
49
+ },
39
50
  "./composables": {
40
51
  "types": "./types/composables/index.d.ts",
41
52
  "module": "./lib/composables/index.js",
@@ -12,7 +12,7 @@ export declare const pressItemsPropsOptions: <Defaults extends {
12
12
  } : Omit<{
13
13
  type: PropType<any[]>;
14
14
  default: () => never[];
15
- }, "default" | "type"> & {
15
+ }, "type" | "default"> & {
16
16
  type: PropType<unknown extends Defaults["items"] ? any[] : any[] | Defaults["items"]>;
17
17
  default: unknown extends Defaults["items"] ? any[] : any[] | Defaults["items"];
18
18
  };
@@ -22,7 +22,7 @@ export declare const pressItemsPropsOptions: <Defaults extends {
22
22
  } : Omit<{
23
23
  type: PropType<string>;
24
24
  default: string;
25
- }, "default" | "type"> & {
25
+ }, "type" | "default"> & {
26
26
  type: PropType<unknown extends Defaults["itemKey"] ? string : string | Defaults["itemKey"]>;
27
27
  default: unknown extends Defaults["itemKey"] ? string : string | Defaults["itemKey"];
28
28
  };
@@ -32,7 +32,7 @@ export declare const pressItemsPropsOptions: <Defaults extends {
32
32
  } : Omit<{
33
33
  type: PropType<string>;
34
34
  default: string;
35
- }, "default" | "type"> & {
35
+ }, "type" | "default"> & {
36
36
  type: PropType<unknown extends Defaults["itemText"] ? string : string | Defaults["itemText"]>;
37
37
  default: unknown extends Defaults["itemText"] ? string : string | Defaults["itemText"];
38
38
  };
@@ -42,7 +42,7 @@ export declare const pressItemsPropsOptions: <Defaults extends {
42
42
  } : Omit<{
43
43
  type: PropType<string | boolean>;
44
44
  default: string;
45
- }, "default" | "type"> & {
45
+ }, "type" | "default"> & {
46
46
  type: PropType<unknown extends Defaults["itemChildren"] ? string | boolean : NonNullable<string | boolean> | Defaults["itemChildren"]>;
47
47
  default: unknown extends Defaults["itemChildren"] ? string | boolean : NonNullable<string | boolean> | Defaults["itemChildren"];
48
48
  };
@@ -27,11 +27,9 @@ export declare const pressYBadgePropsOptions: <Defaults extends {
27
27
  };
28
28
  backgroundOpacity: unknown extends Defaults["backgroundOpacity"] ? {
29
29
  type: NumberConstructor;
30
- default: number;
31
30
  } : Omit<{
32
31
  type: NumberConstructor;
33
- default: number;
34
- }, "default" | "type"> & {
32
+ }, "type" | "default"> & {
35
33
  type: PropType<unknown extends Defaults["backgroundOpacity"] ? number : number | Defaults["backgroundOpacity"]>;
36
34
  default: unknown extends Defaults["backgroundOpacity"] ? number : number | Defaults["backgroundOpacity"];
37
35
  };
@@ -41,7 +39,7 @@ export declare const pressYBadgePropsOptions: <Defaults extends {
41
39
  } : Omit<{
42
40
  type: PropType<string>;
43
41
  default: string;
44
- }, "default" | "type"> & {
42
+ }, "type" | "default"> & {
45
43
  type: PropType<unknown extends Defaults["tag"] ? string : string | Defaults["tag"]>;
46
44
  default: unknown extends Defaults["tag"] ? string : string | Defaults["tag"];
47
45
  };
@@ -75,7 +73,7 @@ export declare const pressYBadgePropsOptions: <Defaults extends {
75
73
  } : Omit<{
76
74
  type: StringConstructor;
77
75
  default: string;
78
- }, "default" | "type"> & {
76
+ }, "type" | "default"> & {
79
77
  type: PropType<unknown extends Defaults["label"] ? string : string | Defaults["label"]>;
80
78
  default: unknown extends Defaults["label"] ? string : string | Defaults["label"];
81
79
  };
@@ -93,7 +91,7 @@ export declare const pressYBadgePropsOptions: <Defaults extends {
93
91
  } : Omit<{
94
92
  type: StringConstructor;
95
93
  default: string;
96
- }, "default" | "type"> & {
94
+ }, "type" | "default"> & {
97
95
  type: PropType<unknown extends Defaults["transition"] ? string : string | Defaults["transition"]>;
98
96
  default: unknown extends Defaults["transition"] ? string : string | Defaults["transition"];
99
97
  };
@@ -103,7 +101,6 @@ export declare const YBadge: import('vue').DefineComponent<{
103
101
  background: StringConstructor;
104
102
  backgroundOpacity: {
105
103
  type: NumberConstructor;
106
- default: number;
107
104
  };
108
105
  tag: {
109
106
  type: PropType<string>;