yuyeon 0.0.42-rc1 → 0.0.42-rc11

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 (108) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +3296 -2973
  3. package/dist/yuyeon.umd.cjs +6 -6
  4. package/lib/components/date-picker/YDateCalendar.scss +82 -82
  5. package/lib/components/date-picker/YDatePickerControl.mjs.map +1 -1
  6. package/lib/components/divider/YDivider.mjs +4 -2
  7. package/lib/components/divider/YDivider.mjs.map +1 -1
  8. package/lib/components/dropdown/YDropdown.mjs +11 -5
  9. package/lib/components/dropdown/YDropdown.mjs.map +1 -1
  10. package/lib/components/dropdown/YDropdown.scss +3 -8
  11. package/lib/components/field-input/YFieldInput.mjs +22 -15
  12. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  13. package/lib/components/icon/YIcon.mjs +62 -0
  14. package/lib/components/icon/YIcon.mjs.map +1 -0
  15. package/lib/components/icon/YIcon.scss +18 -0
  16. package/lib/components/icon/index.mjs +2 -0
  17. package/lib/components/icon/index.mjs.map +1 -0
  18. package/lib/components/icon/poly.mjs +57 -0
  19. package/lib/components/icon/poly.mjs.map +1 -0
  20. package/lib/components/icons/index.mjs +14 -0
  21. package/lib/components/icons/index.mjs.map +1 -1
  22. package/lib/components/index.mjs +2 -1
  23. package/lib/components/index.mjs.map +1 -1
  24. package/lib/components/input/YInput.mjs +1 -0
  25. package/lib/components/input/YInput.mjs.map +1 -1
  26. package/lib/components/input/index.mjs.map +1 -1
  27. package/lib/components/layer/YLayer.mjs +2 -0
  28. package/lib/components/layer/YLayer.mjs.map +1 -1
  29. package/lib/components/layer/active-stack.mjs.map +1 -1
  30. package/lib/components/menu/YMenu.mjs +16 -4
  31. package/lib/components/menu/YMenu.mjs.map +1 -1
  32. package/lib/components/select/YSelect.mjs +9 -6
  33. package/lib/components/select/YSelect.mjs.map +1 -1
  34. package/lib/components/select/YSelect.scss +3 -8
  35. package/lib/components/switch/YSwitch.mjs +2 -0
  36. package/lib/components/switch/YSwitch.mjs.map +1 -1
  37. package/lib/components/tab/types.mjs.map +1 -1
  38. package/lib/components/textarea/YTextarea.mjs +159 -0
  39. package/lib/components/textarea/YTextarea.mjs.map +1 -0
  40. package/lib/components/textarea/YTextarea.scss +25 -0
  41. package/lib/components/textarea/index.mjs +2 -0
  42. package/lib/components/textarea/index.mjs.map +1 -0
  43. package/lib/components/tree-view/YTreeView.mjs.map +1 -1
  44. package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
  45. package/lib/composables/icon.mjs +141 -0
  46. package/lib/composables/icon.mjs.map +1 -1
  47. package/lib/composables/theme/index.mjs.map +1 -1
  48. package/lib/index.mjs +3 -0
  49. package/lib/index.mjs.map +1 -1
  50. package/lib/styles/util/_mixin.scss +34 -34
  51. package/lib/types/index.mjs.map +1 -1
  52. package/lib/util/date/adapters/yuyeon-date-adapter.mjs +1 -1
  53. package/lib/util/date/adapters/yuyeon-date-adapter.mjs.map +1 -1
  54. package/lib/util/date/built-in.mjs +6 -2
  55. package/lib/util/date/built-in.mjs.map +1 -1
  56. package/package.json +2 -2
  57. package/types/abstract/items.d.ts +4 -4
  58. package/types/components/button/YButton.d.ts +10 -10
  59. package/types/components/checkbox/YInputCheckbox.d.ts +2 -2
  60. package/types/components/date-picker/YDateCalendar.d.ts +1 -1
  61. package/types/components/dialog/YDialog.d.ts +3 -2
  62. package/types/components/dropdown/YDropdown.d.ts +34 -13
  63. package/types/components/field-input/YFieldInput.d.ts +29 -12
  64. package/types/components/form/YForm.d.ts +1 -1
  65. package/types/components/icon/YIcon.d.ts +81 -0
  66. package/types/components/icon/index.d.ts +1 -0
  67. package/types/components/icons/YIconCheckbox.d.ts +2 -2
  68. package/types/components/icons/YIconSort.d.ts +2 -2
  69. package/types/components/icons/index.d.ts +48 -0
  70. package/types/components/index.d.ts +2 -1
  71. package/types/components/input/YInput.d.ts +28 -11
  72. package/types/components/layer/YLayer.d.ts +23 -22
  73. package/types/components/layer/active-stack.d.ts +1 -2
  74. package/types/components/list/YList.d.ts +3 -3
  75. package/types/components/list/YListItem.d.ts +5 -5
  76. package/types/components/menu/YMenu.d.ts +13 -8
  77. package/types/components/pagination/YPagination.d.ts +5 -5
  78. package/types/components/progress-bar/YProgressBar.d.ts +1 -1
  79. package/types/components/select/YSelect.d.ts +80 -64
  80. package/types/components/switch/YSwitch.d.ts +1 -1
  81. package/types/components/tab/YTab.d.ts +15 -15
  82. package/types/components/tab/YTabs.d.ts +5 -5
  83. package/types/components/tab/types.d.ts +1 -0
  84. package/types/components/table/YDataTable.d.ts +18 -18
  85. package/types/components/table/YDataTableBody.d.ts +5 -5
  86. package/types/components/table/YDataTableControl.d.ts +2 -2
  87. package/types/components/table/YDataTableHead.d.ts +2 -2
  88. package/types/components/table/YDataTableServer.d.ts +21 -21
  89. package/types/components/table/YTable.d.ts +4 -4
  90. package/types/components/table/composibles/header.d.ts +1 -1
  91. package/types/components/table/composibles/items.d.ts +3 -3
  92. package/types/components/table/composibles/pagination.d.ts +2 -2
  93. package/types/components/table/composibles/selection.d.ts +2 -2
  94. package/types/components/table/composibles/sorting.d.ts +1 -1
  95. package/types/components/textarea/YTextarea.d.ts +737 -0
  96. package/types/components/textarea/index.d.ts +1 -0
  97. package/types/components/tooltip/YTooltip.d.ts +13 -12
  98. package/types/components/tree-view/YTreeView.d.ts +4 -4
  99. package/types/components/tree-view/YTreeViewNode.d.ts +9 -9
  100. package/types/composables/choice.d.ts +1 -1
  101. package/types/composables/coordinate/index.d.ts +6 -6
  102. package/types/composables/icon.d.ts +96 -0
  103. package/types/composables/list-items.d.ts +10 -10
  104. package/types/composables/theme/index.d.ts +5 -5
  105. package/types/globals.d.ts +12 -7
  106. package/types/shims.d.ts +88 -85
  107. package/types/types/index.d.ts +5 -0
  108. package/types/util/date/built-in.d.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"YTreeViewNode.mjs","names":["computed","defineComponent","h","inject","ref","pressItemsPropsOptions","useRender","getObjectValueByPath","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeClass","Array","activeSingleModifier","requiredActive","activeColor","type","default","enableSelect","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","setup","_ref","slots","expose","treeView","expanded","active","selected","immediate","onClick","e","to","value","updateActive","myKey","emitActive","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","children","itemChildren","imLeaf","length","classes","styles","contentText","itemText","slotProps","searchLoading","leaves","filter","leaf","isExcluded","map","key","indentSpacer","i","push","class","style","variation","checked","leading","text","keyword","trailing","disabled","role","undefined","created","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.ts"],"sourcesContent":["import {\n PropType,\n VNodeArrayChildren,\n computed,\n defineComponent,\n h,\n inject,\n ref,\n} from 'vue';\n\nimport { pressItemsPropsOptions } from '../../abstract/items';\nimport { useRender } from '../../composables/component';\nimport { getObjectValueByPath } from '../../util/common';\nimport { propsFactory } from '../../util/vue-component';\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 ...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 setup(props, { slots, expose }) {\n const treeView = inject<any>('tree-view');\n\n const expanded = ref(false);\n const active = ref(false);\n const selected = ref(false);\n const immediate = ref(false);\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 const children = computed(() => {\n return props.item?.[props.itemChildren as string] ?? [];\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 useRender(() => {\n const leaves = children.value\n .filter((leaf: any) => {\n return !treeView.isExcluded(\n getObjectValueByPath(leaf, props.itemKey),\n );\n })\n .map((item: any) => {\n return h(\n YTreeViewNode,\n {\n ...props,\n level: (props.level ?? 0) + 1,\n item,\n key: getObjectValueByPath(item, props.itemKey),\n },\n slots,\n );\n });\n const indentSpacer: VNodeArrayChildren = [];\n for (let i = 0; i < props.level; i += 1) {\n indentSpacer.push(\n h('div', { class: 'y-tree-view-node__indent-spacer' }),\n );\n }\n return h(\n 'div',\n {\n class: classes.value,\n style: styles.value,\n '.role': 'treeitem',\n 'data-level': props.level,\n },\n [\n h(\n 'div',\n {\n class: 'y-tree-view-node__container',\n onClick: (e: MouseEvent) =>\n props.enableActive ? onClick(e) : void 0,\n },\n [\n h(YPlate),\n h('div', { class: 'y-tree-view-node__indents' }, indentSpacer),\n /* EXPAND */\n !imLeaf.value && leaves.length > 0\n ? h(\n YButton,\n {\n class: 'y-tree-view-node__expand-icon',\n variation: 'icon',\n onClick: (e: MouseEvent) => onClickExpand(e),\n },\n () => [\n slots['expand-icon']\n ? slots['expand-icon']()\n : h(YIconExpand),\n ],\n )\n : h('i', { class: 'y-tree-view-node__no-expand-icon' }),\n props.enableSelect &&\n h(\n 'div',\n {\n class: ['y-tree-view-node__select'],\n onClick: (e: MouseEvent) => onClickSelect(e),\n },\n [h(YIconCheckbox, { checked: selected.value })],\n ),\n /* CONTENT */\n h('div', { class: 'y-tree-view-node__content' }, [\n slots.leading &&\n h(\n 'div',\n { class: 'y-tree-view-node__leading' },\n slots.leading(slotProps.value),\n ),\n h(\n 'div',\n { 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 ? h(YTextHighlighter, {\n text: contentText.value,\n keyword: props.search,\n })\n : contentText.value,\n ),\n slots.trailing &&\n h(\n 'div',\n { class: 'y-tree-view-node__trailing' },\n slots.trailing(),\n ),\n ]),\n ],\n ),\n /* CHILDREN */\n children.value.length > 0\n ? h(\n YExpandVTransition,\n { disabled: props.disableTransition },\n expanded.value\n ? () =>\n h(\n 'div',\n {\n class: { 'y-tree-view-node__leaves': true },\n role: 'tree',\n },\n leaves,\n )\n : undefined,\n )\n : undefined,\n ],\n );\n });\n\n const myKey = computed(() => {\n return getObjectValueByPath(props.item, props.itemKey);\n });\n\n expose({\n myKey,\n expanded,\n active,\n selected,\n immediate,\n });\n\n return {\n treeView,\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n },\n created() {\n this.treeView?.register?.(this.myKey, this);\n },\n});\n\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\n"],"mappings":"AAAA,SAGEA,QAAQ,EACRC,eAAe,EACfC,CAAC,EACDC,MAAM,EACNC,GAAG,QACE,KAAK;AAAC,SAEJC,sBAAsB;AAAA,SACtBC,SAAS;AAAA,SACTC,oBAAoB;AAAA,SACpBC,YAAY;AAAA,SACZC,OAAO;AAAA,SACPC,aAAa,EAAEC,WAAW;AAAA,SAC1BC,MAAM;AAAA,OACRC,gBAAgB;AAAA,SACdC,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;EACrB,GAAGd,sBAAsB,CAAC;IACxBwB,OAAO,EAAE;EACX,CAAC;AACH,CAAC,EACD,eACF,CAAC;AAED,OAAO,MAAMC,aAAa,GAAG7B,eAAe,CAAC;EAC3C8B,IAAI,EAAE,WAAW;EACjBC,UAAU,EAAE;IACVvB,OAAO;IACPE,WAAW;IACXC,MAAM;IACNF;EACF,CAAC;EACDuB,KAAK,EAAE;IACLC,IAAI,EAAE;MACJR,IAAI,EAAES;IACR,CAAC;IACDC,KAAK,EAAE;MACLV,IAAI,EAAEW,MAA0B;MAChCV,OAAO,EAAE;IACX,CAAC;IACD,GAAGZ,uBAAuB,CAAC;EAC7B,CAAC;EACDuB,KAAKA,CAACL,KAAK,EAAAM,IAAA,EAAqB;IAAA,IAAnB;MAAEC,KAAK;MAAEC;IAAO,CAAC,GAAAF,IAAA;IAC5B,MAAMG,QAAQ,GAAGvC,MAAM,CAAM,WAAW,CAAC;IAEzC,MAAMwC,QAAQ,GAAGvC,GAAG,CAAC,KAAK,CAAC;IAC3B,MAAMwC,MAAM,GAAGxC,GAAG,CAAC,KAAK,CAAC;IACzB,MAAMyC,QAAQ,GAAGzC,GAAG,CAAC,KAAK,CAAC;IAC3B,MAAM0C,SAAS,GAAG1C,GAAG,CAAC,KAAK,CAAC;IAE5B,SAAS2C,OAAOA,CAACC,CAAa,EAAE;MAC9B,MAAMC,EAAE,GAAG,CAACL,MAAM,CAACM,KAAK;MACxBN,MAAM,CAACM,KAAK,GAAGD,EAAE;MACjBP,QAAQ,CAACS,YAAY,CAACC,KAAK,CAACF,KAAK,EAAED,EAAE,EAAED,CAAC,CAAC;MACzCN,QAAQ,CAACW,UAAU,CAAC,CAAC;IACvB;IAEA,SAASC,aAAaA,CAACN,CAAa,EAAE;MACpCA,CAAC,CAACO,eAAe,CAAC,CAAC;MACnB,MAAMN,EAAE,GAAG,CAACN,QAAQ,CAACO,KAAK;MAC1BP,QAAQ,CAACO,KAAK,GAAGD,EAAE;MACnBP,QAAQ,CAACc,cAAc,CAACJ,KAAK,CAACF,KAAK,EAAED,EAAE,CAAC;MACxCP,QAAQ,CAACe,YAAY,CAAC,CAAC;IACzB;IAEA,SAASC,aAAaA,CAACV,CAAa,EAAE;MACpCA,CAAC,CAACO,eAAe,CAAC,CAAC;MACnB,MAAMN,EAAE,GAAG,CAACJ,QAAQ,CAACK,KAAK;MAC1BL,QAAQ,CAACK,KAAK,GAAGD,EAAE;MACnBP,QAAQ,CAACiB,cAAc,CAACP,KAAK,CAACF,KAAK,EAAED,EAAE,CAAC;MACxCP,QAAQ,CAACkB,YAAY,CAAC,CAAC;IACzB;IAEA,MAAMC,QAAQ,GAAG7D,QAAQ,CAAC,MAAM;MAC9B,OAAOiC,KAAK,CAACC,IAAI,GAAGD,KAAK,CAAC6B,YAAY,CAAW,IAAI,EAAE;IACzD,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAG/D,QAAQ,CAAC,MAAM6D,QAAQ,CAACX,KAAK,CAACc,MAAM,GAAG,CAAC,CAAC;IAExD,MAAMC,OAAO,GAAGjE,QAAQ,CAAC,MAAM;MAC7B,OAAO;QACL,kBAAkB,EAAE,IAAI;QACxB,wBAAwB,EAAE+D,MAAM,CAACb,KAAK;QACtC,4BAA4B,EAAEP,QAAQ,CAACO,KAAK;QAC5C,0BAA0B,EAAEN,MAAM,CAACM;MACrC,CAAC;IACH,CAAC,CAAC;IAEF,MAAMgB,MAAM,GAAGlE,QAAQ,CAAC,MAAM;MAC5B,OAAO;QACL,yBAAyB,EAAEiC,KAAK,CAACG;MACnC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM+B,WAAW,GAAGnE,QAAQ,CAAC,MAAM;MACjC,OAAOO,oBAAoB,CAAC0B,KAAK,CAACC,IAAI,EAAED,KAAK,CAACmC,QAAQ,CAAC,IAAI,EAAE;IAC/D,CAAC,CAAC;IAEF,MAAMC,SAAS,GAAGrE,QAAQ,CAAC,MAAM;MAC/B,OAAO;QACLoC,KAAK,EAAEH,KAAK,CAACG,KAAK;QAClB2B,MAAM,EAAEA,MAAM,CAACb;MACjB,CAAC;IACH,CAAC,CAAC;IAEF,MAAMoB,aAAa,GAAGtE,QAAQ,CAAC,MAAM;MACnC,OAAO0C,QAAQ,CAAC4B,aAAa,CAACpB,KAAK;IACrC,CAAC,CAAC;IAEF5C,SAAS,CAAC,MAAM;MACd,MAAMiE,MAAM,GAAGV,QAAQ,CAACX,KAAK,CAC1BsB,MAAM,CAAEC,IAAS,IAAK;QACrB,OAAO,CAAC/B,QAAQ,CAACgC,UAAU,CACzBnE,oBAAoB,CAACkE,IAAI,EAAExC,KAAK,CAACJ,OAAO,CAC1C,CAAC;MACH,CAAC,CAAC,CACD8C,GAAG,CAAEzC,IAAS,IAAK;QAClB,OAAOhC,CAAC,CACN4B,aAAa,EACb;UACE,GAAGG,KAAK;UACRG,KAAK,EAAE,CAACH,KAAK,CAACG,KAAK,IAAI,CAAC,IAAI,CAAC;UAC7BF,IAAI;UACJ0C,GAAG,EAAErE,oBAAoB,CAAC2B,IAAI,EAAED,KAAK,CAACJ,OAAO;QAC/C,CAAC,EACDW,KACF,CAAC;MACH,CAAC,CAAC;MACJ,MAAMqC,YAAgC,GAAG,EAAE;MAC3C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG7C,KAAK,CAACG,KAAK,EAAE0C,CAAC,IAAI,CAAC,EAAE;QACvCD,YAAY,CAACE,IAAI,CACf7E,CAAC,CAAC,KAAK,EAAE;UAAE8E,KAAK,EAAE;QAAkC,CAAC,CACvD,CAAC;MACH;MACA,OAAO9E,CAAC,CACN,KAAK,EACL;QACE8E,KAAK,EAAEf,OAAO,CAACf,KAAK;QACpB+B,KAAK,EAAEf,MAAM,CAAChB,KAAK;QACnB,OAAO,EAAE,UAAU;QACnB,YAAY,EAAEjB,KAAK,CAACG;MACtB,CAAC,EACD,CACElC,CAAC,CACC,KAAK,EACL;QACE8E,KAAK,EAAE,6BAA6B;QACpCjC,OAAO,EAAGC,CAAa,IACrBf,KAAK,CAACb,YAAY,GAAG2B,OAAO,CAACC,CAAC,CAAC,GAAG,KAAK;MAC3C,CAAC,EACD,CACE9C,CAAC,CAACU,MAAM,CAAC,EACTV,CAAC,CAAC,KAAK,EAAE;QAAE8E,KAAK,EAAE;MAA4B,CAAC,EAAEH,YAAY,CAAC,EAC9D;MACA,CAACd,MAAM,CAACb,KAAK,IAAIqB,MAAM,CAACP,MAAM,GAAG,CAAC,GAC9B9D,CAAC,CACCO,OAAO,EACP;QACEuE,KAAK,EAAE,+BAA+B;QACtCE,SAAS,EAAE,MAAM;QACjBnC,OAAO,EAAGC,CAAa,IAAKM,aAAa,CAACN,CAAC;MAC7C,CAAC,EACD,MAAM,CACJR,KAAK,CAAC,aAAa,CAAC,GAChBA,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GACtBtC,CAAC,CAACS,WAAW,CAAC,CAEtB,CAAC,GACDT,CAAC,CAAC,GAAG,EAAE;QAAE8E,KAAK,EAAE;MAAmC,CAAC,CAAC,EACzD/C,KAAK,CAACL,YAAY,IAChB1B,CAAC,CACC,KAAK,EACL;QACE8E,KAAK,EAAE,CAAC,0BAA0B,CAAC;QACnCjC,OAAO,EAAGC,CAAa,IAAKU,aAAa,CAACV,CAAC;MAC7C,CAAC,EACD,CAAC9C,CAAC,CAACQ,aAAa,EAAE;QAAEyE,OAAO,EAAEtC,QAAQ,CAACK;MAAM,CAAC,CAAC,CAChD,CAAC,EACH;MACAhD,CAAC,CAAC,KAAK,EAAE;QAAE8E,KAAK,EAAE;MAA4B,CAAC,EAAE,CAC/CxC,KAAK,CAAC4C,OAAO,IACXlF,CAAC,CACC,KAAK,EACL;QAAE8E,KAAK,EAAE;MAA4B,CAAC,EACtCxC,KAAK,CAAC4C,OAAO,CAACf,SAAS,CAACnB,KAAK,CAC/B,CAAC,EACHhD,CAAC,CACC,KAAK,EACL;QAAE8E,KAAK,EAAE;MAAyB,CAAC,EACnCxC,KAAK,CAACb,OAAO,GACTa,KAAK,CAACb,OAAO,GAAG;QACd0D,IAAI,EAAElB,WAAW,CAACjB,KAAK;QACvBhB,IAAI,EAAED,KAAK,CAACC,IAAI;QAChB,GAAGmC,SAAS,CAACnB;MACf,CAAC,CAAC,GACFjB,KAAK,CAACjB,MAAM,IAAI,CAACsD,aAAa,CAACpB,KAAK,GACpChD,CAAC,CAACW,gBAAgB,EAAE;QAClBwE,IAAI,EAAElB,WAAW,CAACjB,KAAK;QACvBoC,OAAO,EAAErD,KAAK,CAACjB;MACjB,CAAC,CAAC,GACFmD,WAAW,CAACjB,KAClB,CAAC,EACDV,KAAK,CAAC+C,QAAQ,IACZrF,CAAC,CACC,KAAK,EACL;QAAE8E,KAAK,EAAE;MAA6B,CAAC,EACvCxC,KAAK,CAAC+C,QAAQ,CAAC,CACjB,CAAC,CACJ,CAAC,CAEN,CAAC,EACD;MACA1B,QAAQ,CAACX,KAAK,CAACc,MAAM,GAAG,CAAC,GACrB9D,CAAC,CACCY,kBAAkB,EAClB;QAAE0E,QAAQ,EAAEvD,KAAK,CAACf;MAAkB,CAAC,EACrCyB,QAAQ,CAACO,KAAK,GACV,MACEhD,CAAC,CACC,KAAK,EACL;QACE8E,KAAK,EAAE;UAAE,0BAA0B,EAAE;QAAK,CAAC;QAC3CS,IAAI,EAAE;MACR,CAAC,EACDlB,MACF,CAAC,GACHmB,SACN,CAAC,GACDA,SAAS,CAEjB,CAAC;IACH,CAAC,CAAC;IAEF,MAAMtC,KAAK,GAAGpD,QAAQ,CAAC,MAAM;MAC3B,OAAOO,oBAAoB,CAAC0B,KAAK,CAACC,IAAI,EAAED,KAAK,CAACJ,OAAO,CAAC;IACxD,CAAC,CAAC;IAEFY,MAAM,CAAC;MACLW,KAAK;MACLT,QAAQ;MACRC,MAAM;MACNC,QAAQ;MACRC;IACF,CAAC,CAAC;IAEF,OAAO;MACLJ,QAAQ;MACRU,KAAK;MACLT,QAAQ;MACRC,MAAM;MACNC,QAAQ;MACRC;IACF,CAAC;EACH,CAAC;EACD6C,OAAOA,CAAA,EAAG;IACR,IAAI,CAACjD,QAAQ,EAAEkD,QAAQ,GAAG,IAAI,CAACxC,KAAK,EAAE,IAAI,CAAC;EAC7C;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YTreeViewNode.mjs","names":["computed","defineComponent","h","inject","ref","pressItemsPropsOptions","useRender","getObjectValueByPath","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeClass","Array","activeSingleModifier","requiredActive","activeColor","type","default","enableSelect","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","setup","_ref","slots","expose","treeView","expanded","active","selected","immediate","onClick","e","to","value","updateActive","myKey","emitActive","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","children","itemChildren","imLeaf","length","classes","styles","contentText","itemText","slotProps","searchLoading","leaves","filter","leaf","isExcluded","map","key","indentSpacer","i","push","class","style","variation","checked","leading","text","keyword","trailing","disabled","role","undefined","created","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.ts"],"sourcesContent":["import {\r\n PropType,\r\n VNodeArrayChildren,\r\n computed,\r\n defineComponent,\r\n h,\r\n inject,\r\n ref,\r\n} from 'vue';\r\n\r\nimport { pressItemsPropsOptions } from '../../abstract/items';\r\nimport { useRender } from '../../composables/component';\r\nimport { getObjectValueByPath } from '../../util/common';\r\nimport { propsFactory } from '../../util/vue-component';\r\nimport { YButton } from '../button';\r\nimport { YIconCheckbox, YIconExpand } from '../icons';\r\nimport { YPlate } from '../plate';\r\nimport YTextHighlighter from '../text-highlighter/YTextHighlighter';\r\nimport { YExpandVTransition } from '../transitions';\r\n\r\nexport const pressYTreeViewNodeProps = propsFactory(\r\n {\r\n search: String,\r\n disableTransition: Boolean,\r\n enableActive: Boolean,\r\n activeClass: [String, Array],\r\n activeSingleModifier: String,\r\n requiredActive: Boolean,\r\n activeColor: {\r\n type: String,\r\n default: 'primary',\r\n },\r\n enableSelect: Boolean,\r\n ...pressItemsPropsOptions({\r\n itemKey: 'id',\r\n }),\r\n },\r\n 'YTreeViewNode',\r\n);\r\n\r\nexport const YTreeViewNode = defineComponent({\r\n name: 'YTreeNode',\r\n components: {\r\n YButton,\r\n YIconExpand,\r\n YPlate,\r\n YIconCheckbox,\r\n },\r\n props: {\r\n item: {\r\n type: Object as PropType<any>,\r\n },\r\n level: {\r\n type: Number as PropType<number>,\r\n default: 0,\r\n },\r\n ...pressYTreeViewNodeProps(),\r\n },\r\n setup(props, { slots, expose }) {\r\n const treeView = inject<any>('tree-view');\r\n\r\n const expanded = ref(false);\r\n const active = ref(false);\r\n const selected = ref(false);\r\n const immediate = ref(false);\r\n\r\n function onClick(e: MouseEvent) {\r\n const to = !active.value;\r\n active.value = to;\r\n treeView.updateActive(myKey.value, to, e);\r\n treeView.emitActive();\r\n }\r\n\r\n function onClickExpand(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !expanded.value;\r\n expanded.value = to;\r\n treeView.updateExpanded(myKey.value, to);\r\n treeView.emitExpanded();\r\n }\r\n\r\n function onClickSelect(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !selected.value;\r\n selected.value = to;\r\n treeView.updateSelected(myKey.value, to);\r\n treeView.emitSelected();\r\n }\r\n\r\n const children = computed(() => {\r\n return props.item?.[props.itemChildren as string] ?? [];\r\n });\r\n\r\n const imLeaf = computed(() => children.value.length < 1);\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view-node': true,\r\n 'y-tree-view-node--leaf': imLeaf.value,\r\n 'y-tree-view-node--expanded': expanded.value,\r\n 'y-tree-view-node--active': active.value,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n return {\r\n '--tree-view-node--level': props.level,\r\n };\r\n });\r\n\r\n const contentText = computed(() => {\r\n return getObjectValueByPath(props.item, props.itemText) ?? '';\r\n });\r\n\r\n const slotProps = computed(() => {\r\n return {\r\n level: props.level,\r\n imLeaf: imLeaf.value,\r\n };\r\n });\r\n\r\n const searchLoading = computed(() => {\r\n return treeView.searchLoading.value;\r\n });\r\n\r\n useRender(() => {\r\n const leaves = children.value\r\n .filter((leaf: any) => {\r\n return !treeView.isExcluded(\r\n getObjectValueByPath(leaf, props.itemKey),\r\n );\r\n })\r\n .map((item: any) => {\r\n return h(\r\n YTreeViewNode,\r\n {\r\n ...props,\r\n level: (props.level ?? 0) + 1,\r\n item,\r\n key: getObjectValueByPath(item, props.itemKey),\r\n },\r\n slots,\r\n );\r\n });\r\n const indentSpacer: VNodeArrayChildren = [];\r\n for (let i = 0; i < props.level; i += 1) {\r\n indentSpacer.push(\r\n h('div', { class: 'y-tree-view-node__indent-spacer' }),\r\n );\r\n }\r\n return h(\r\n 'div',\r\n {\r\n class: classes.value,\r\n style: styles.value,\r\n '.role': 'treeitem',\r\n 'data-level': props.level,\r\n },\r\n [\r\n h(\r\n 'div',\r\n {\r\n class: 'y-tree-view-node__container',\r\n onClick: (e: MouseEvent) =>\r\n props.enableActive ? onClick(e) : void 0,\r\n },\r\n [\r\n h(YPlate),\r\n h('div', { class: 'y-tree-view-node__indents' }, indentSpacer),\r\n /* EXPAND */\r\n !imLeaf.value && leaves.length > 0\r\n ? h(\r\n YButton,\r\n {\r\n class: 'y-tree-view-node__expand-icon',\r\n variation: 'icon',\r\n onClick: (e: MouseEvent) => onClickExpand(e),\r\n },\r\n () => [\r\n slots['expand-icon']\r\n ? slots['expand-icon']()\r\n : h(YIconExpand),\r\n ],\r\n )\r\n : h('i', { class: 'y-tree-view-node__no-expand-icon' }),\r\n props.enableSelect &&\r\n h(\r\n 'div',\r\n {\r\n class: ['y-tree-view-node__select'],\r\n onClick: (e: MouseEvent) => onClickSelect(e),\r\n },\r\n [h(YIconCheckbox, { checked: selected.value })],\r\n ),\r\n /* CONTENT */\r\n h('div', { class: 'y-tree-view-node__content' }, [\r\n slots.leading &&\r\n h(\r\n 'div',\r\n { class: 'y-tree-view-node__leading' },\r\n slots.leading(slotProps.value),\r\n ),\r\n h(\r\n 'div',\r\n { class: 'y-tree-view-node__text' },\r\n slots.default\r\n ? slots.default?.({\r\n text: contentText.value,\r\n item: props.item,\r\n ...slotProps.value,\r\n })\r\n : props.search && !searchLoading.value\r\n ? h(YTextHighlighter, {\r\n text: contentText.value,\r\n keyword: props.search,\r\n })\r\n : contentText.value,\r\n ),\r\n slots.trailing &&\r\n h(\r\n 'div',\r\n { class: 'y-tree-view-node__trailing' },\r\n slots.trailing(),\r\n ),\r\n ]),\r\n ],\r\n ),\r\n /* CHILDREN */\r\n children.value.length > 0\r\n ? h(\r\n YExpandVTransition,\r\n { disabled: props.disableTransition },\r\n expanded.value\r\n ? () =>\r\n h(\r\n 'div',\r\n {\r\n class: { 'y-tree-view-node__leaves': true },\r\n role: 'tree',\r\n },\r\n leaves,\r\n )\r\n : undefined,\r\n )\r\n : undefined,\r\n ],\r\n );\r\n });\r\n\r\n const myKey = computed(() => {\r\n return getObjectValueByPath(props.item, props.itemKey);\r\n });\r\n\r\n expose({\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n immediate,\r\n });\r\n\r\n return {\r\n treeView,\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n immediate,\r\n };\r\n },\r\n created() {\r\n this.treeView?.register?.(this.myKey, this);\r\n },\r\n});\r\n\r\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\r\n"],"mappings":"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"}
@@ -1,2 +1,143 @@
1
+ import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
+ import { computed, defineComponent, inject, mergeProps, unref } from 'vue';
3
+ import { builtSet } from "../components/index.mjs";
4
+ import { mergeDeep, propsFactory } from "../util/index.mjs";
1
5
  export const IconPropOption = [String, Function, Object, Array];
6
+ export const IconValue = [String, Object, Array, Function];
7
+ export const pressIconPropsOptions = propsFactory({
8
+ icon: {
9
+ type: IconValue
10
+ },
11
+ tag: {
12
+ type: String,
13
+ required: true
14
+ }
15
+ }, 'icon');
16
+ export const YComponentIcon = defineComponent({
17
+ name: 'YComponentIcon',
18
+ props: pressIconPropsOptions(),
19
+ setup(props, _ref) {
20
+ let {
21
+ slots
22
+ } = _ref;
23
+ return () => {
24
+ const icon = props.icon;
25
+ let Icon = () => _createVNode(_Fragment, null, null);
26
+ let iconProps = {};
27
+ if (icon instanceof Object) {
28
+ Icon = icon;
29
+ if ('component' in icon) {
30
+ Icon = icon.component;
31
+ iconProps = icon?.props;
32
+ }
33
+ }
34
+ return _createVNode(props.tag, null, {
35
+ default: () => [props.icon ? _createVNode(Icon, mergeProps(iconProps), null) : slots.default?.()]
36
+ });
37
+ };
38
+ }
39
+ });
40
+ export const YSvgIcon = defineComponent({
41
+ name: 'YSvgIcon',
42
+ inheritAttrs: false,
43
+ props: pressIconPropsOptions(),
44
+ setup(props, _ref2) {
45
+ let {
46
+ attrs
47
+ } = _ref2;
48
+ return () => {
49
+ return _createVNode(props.tag, attrs, {
50
+ default: () => [_createVNode("svg", {
51
+ "class": "y-icon__svg",
52
+ "xmlns": "http://www.w3.org/2000/svg",
53
+ "viewBox": "0 0 24 24",
54
+ "role": "img",
55
+ "aria-hidden": "true"
56
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? _createVNode("path", {
57
+ "d": path[0],
58
+ "fill-opacity": path[1]
59
+ }, null) : _createVNode("path", {
60
+ "d": path
61
+ }, null)) : _createVNode("path", {
62
+ "d": props.icon
63
+ }, null)])]
64
+ });
65
+ };
66
+ }
67
+ });
68
+ export const YUYEON_ICON_KEY = Symbol.for('yuyeon.icon');
69
+ export function createIconModule(options) {
70
+ return mergeDeep({
71
+ defaultSet: 'built',
72
+ sets: {
73
+ svg: {
74
+ component: YSvgIcon
75
+ }
76
+ },
77
+ aliases: {
78
+ ...builtSet
79
+ }
80
+ }, options);
81
+ }
82
+ export function useIcon(iconProp) {
83
+ const iconModule = inject(YUYEON_ICON_KEY);
84
+ if (!iconModule) throw new Error('Not found provided "IconModule"');
85
+ const iconData = computed(() => {
86
+ const iconMeta = unref(iconProp);
87
+ if (!iconMeta) return {
88
+ component: YComponentIcon
89
+ };
90
+ let icon = iconMeta;
91
+ if (typeof icon === 'object' && 'alias' in icon && typeof icon.alias === 'string') {
92
+ icon = icon.alias;
93
+ }
94
+ if (typeof icon === 'string') {
95
+ icon = icon.trim();
96
+ if (icon.startsWith('$')) {
97
+ icon = iconModule.aliases?.[icon.slice(1)];
98
+ }
99
+ }
100
+ if (!icon) throw new Error(`Could not find aliased icon "${iconMeta}"`);
101
+ if (Array.isArray(icon)) {
102
+ return {
103
+ component: YSvgIcon,
104
+ icon
105
+ };
106
+ } else if (typeof icon !== 'string') {
107
+ const iconValue = unref(iconProp);
108
+ console.log(iconValue);
109
+ if (iconValue && typeof iconValue === 'object' && 'iconProps' in iconValue) {
110
+ icon = {
111
+ component: 'component' in icon ? icon.component : icon,
112
+ props: 'props' in icon ? mergeDeep(icon.props, iconValue?.iconProps ?? {}) : iconValue.iconProps
113
+ };
114
+ }
115
+ return {
116
+ component: YComponentIcon,
117
+ icon
118
+ };
119
+ }
120
+ const iconSetName = Object.keys(iconModule.sets).find(setName => typeof icon === 'string' && icon.startsWith(`${setName}:`));
121
+ const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;
122
+ const iconSet = iconModule.sets[iconSetName ?? iconModule.defaultSet];
123
+ if (!iconSet?.component && typeof icon === 'string') {
124
+ const text = new DOMParser().parseFromString(icon, 'text/xml');
125
+ const svgNode = text.querySelector('svg');
126
+ if (svgNode) {
127
+ return {
128
+ component: () => {
129
+ template: svgNode;
130
+ }
131
+ };
132
+ }
133
+ }
134
+ return {
135
+ icon: iconName,
136
+ component: iconSet.component
137
+ };
138
+ });
139
+ return {
140
+ iconData
141
+ };
142
+ }
2
143
  //# sourceMappingURL=icon.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon.mjs","names":["IconPropOption","String","Function","Object","Array"],"sources":["../../src/composables/icon.ts"],"sourcesContent":["\r\nimport type { Component, PropType } from \"vue\";\r\n\r\nexport type IconValue = string | (string | [path: string, opacity: number])[] | Component;\r\n\r\nexport const IconPropOption = [String, Function, Object, Array] as PropType<IconValue>;\r\n\r\ntype IconProps = {\r\n tag: string;\r\n icon?: IconValue,\r\n disabled?: Boolean,\r\n}\r\n\r\ntype IconComponent = Component<IconProps>;\r\n"],"mappings":"AAKA,OAAO,MAAMA,cAAc,GAAG,CAACC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,CAAwB"}
1
+ {"version":3,"file":"icon.mjs","names":["computed","defineComponent","inject","mergeProps","unref","builtSet","mergeDeep","propsFactory","IconPropOption","String","Function","Object","Array","IconValue","pressIconPropsOptions","icon","type","tag","required","YComponentIcon","name","props","setup","_ref","slots","Icon","_createVNode","_Fragment","iconProps","component","default","YSvgIcon","inheritAttrs","_ref2","attrs","isArray","map","path","YUYEON_ICON_KEY","Symbol","for","createIconModule","options","defaultSet","sets","svg","aliases","useIcon","iconProp","iconModule","Error","iconData","iconMeta","alias","trim","startsWith","slice","iconValue","console","log","iconSetName","keys","find","setName","iconName","length","iconSet","text","DOMParser","parseFromString","svgNode","querySelector","template"],"sources":["../../src/composables/icon.tsx"],"sourcesContent":["import { HTMLAttributes } from '@vue/runtime-dom';\nimport type { Component, InjectionKey, PropType, Ref } from 'vue';\nimport { computed, defineComponent, inject, mergeProps, unref } from 'vue';\n\nimport { builtSet } from '../components';\nimport { JSXComponent } from '../types';\nimport { mergeDeep, propsFactory } from '../util';\n\ntype IconComponent = JSXComponent<IconProps>;\n\nexport type IconValue =\n | string\n | (string | [path: string, opacity: number])[]\n | IconComponent\n | { component: JSXComponent; props?: any }\n | { alias: string; iconProps?: any };\n\nexport const IconPropOption = [\n String,\n Function,\n Object,\n Array,\n] as PropType<IconValue>;\n\ntype IconProps = {\n tag: string;\n icon?: IconValue;\n disabled?: Boolean;\n};\n\nexport interface IconSet {\n component: IconComponent;\n}\n\nexport const IconValue = [\n String,\n Object,\n Array,\n Function,\n] as PropType<IconValue>;\n\nexport type IconModuleOptions = {\n defaultSet?: string;\n sets?: Record<string, IconSet>;\n aliases?: Partial<Record<string, any>>;\n};\n\nexport const pressIconPropsOptions = propsFactory(\n {\n icon: {\n type: IconValue,\n },\n tag: {\n type: String,\n required: true,\n },\n },\n 'icon',\n);\n\nexport const YComponentIcon = defineComponent({\n name: 'YComponentIcon',\n props: pressIconPropsOptions(),\n setup(props, { slots }) {\n return () => {\n const icon = props.icon as unknown;\n let Icon: JSXComponent = () => <></>;\n let iconProps: any = {};\n if (icon instanceof Object) {\n Icon = icon as JSXComponent;\n if ('component' in icon) {\n Icon = icon.component as JSXComponent;\n iconProps = (icon as any)?.props;\n }\n }\n return (\n <props.tag>\n {props.icon ? <Icon {...mergeProps(iconProps)} /> : slots.default?.()}\n </props.tag>\n );\n };\n },\n});\nexport type YComponentIcon = InstanceType<typeof YComponentIcon>;\n\nexport const YSvgIcon = defineComponent({\n name: 'YSvgIcon',\n inheritAttrs: false,\n props: pressIconPropsOptions(),\n setup(props, { attrs }) {\n return () => {\n return (\n <props.tag {...attrs}>\n <svg\n class=\"y-icon__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n role=\"img\"\n aria-hidden=\"true\"\n >\n {Array.isArray(props.icon) ? (\n props.icon.map((path) =>\n Array.isArray(path) ? (\n <path d={path[0] as string} fill-opacity={path[1]}></path>\n ) : (\n <path d={path as string}></path>\n ),\n )\n ) : (\n <path d={props.icon as string}></path>\n )}\n </svg>\n </props.tag>\n );\n };\n },\n});\nexport type YSvgIcon = InstanceType<typeof YSvgIcon>;\n\nexport const YUYEON_ICON_KEY: InjectionKey<Required<IconModuleOptions>> =\n Symbol.for('yuyeon.icon');\n\nexport function createIconModule(options?: IconModuleOptions) {\n return mergeDeep(\n {\n defaultSet: 'built',\n sets: {\n svg: {\n component: YSvgIcon,\n },\n },\n aliases: {\n ...builtSet,\n },\n },\n options,\n );\n}\n\ntype IconInstance = {\n component: IconComponent;\n icon?: IconValue;\n};\n\nexport function useIcon(iconProp: Ref<IconValue | undefined>) {\n const iconModule = inject(YUYEON_ICON_KEY);\n\n if (!iconModule) throw new Error('Not found provided \"IconModule\"');\n\n const iconData = computed<IconInstance>(() => {\n const iconMeta = unref(iconProp);\n\n if (!iconMeta) return { component: YComponentIcon };\n\n let icon: IconValue | undefined = iconMeta;\n\n if (\n typeof icon === 'object' &&\n 'alias' in icon &&\n typeof icon.alias === 'string'\n ) {\n icon = icon.alias;\n }\n\n if (typeof icon === 'string') {\n icon = icon.trim();\n\n if (icon.startsWith('$')) {\n icon = iconModule.aliases?.[icon.slice(1)];\n }\n }\n\n if (!icon) throw new Error(`Could not find aliased icon \"${iconMeta}\"`);\n\n if (Array.isArray(icon)) {\n return {\n component: YSvgIcon,\n icon,\n };\n } else if (typeof icon !== 'string') {\n const iconValue = unref(iconProp);\n console.log(iconValue);\n if (\n iconValue &&\n typeof iconValue === 'object' &&\n 'iconProps' in iconValue\n ) {\n icon = {\n component:\n 'component' in icon ? icon.component : (icon as JSXComponent),\n props:\n 'props' in icon\n ? mergeDeep(icon.props, iconValue?.iconProps ?? {})\n : iconValue.iconProps,\n };\n }\n\n return {\n component: YComponentIcon,\n icon,\n };\n }\n\n const iconSetName = Object.keys(iconModule.sets).find(\n (setName) => typeof icon === 'string' && icon.startsWith(`${setName}:`),\n );\n\n const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;\n const iconSet = iconModule.sets[iconSetName ?? iconModule.defaultSet];\n\n if (!iconSet?.component && typeof icon === 'string') {\n const text = new DOMParser().parseFromString(icon, 'text/xml');\n const svgNode = text.querySelector('svg');\n if (svgNode) {\n return {\n component: () => { template: svgNode }\n }\n }\n }\n\n return {\n icon: iconName,\n component: iconSet.component,\n };\n });\n\n return {\n iconData,\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","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","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","newTheme","useTheme"],"sources":["../../../src/composables/theme/index.ts"],"sourcesContent":["import type { App, ComputedRef, Ref } from 'vue';\nimport {\n computed,\n effectScope,\n getCurrentInstance,\n inject,\n provide,\n reactive,\n readonly,\n ref,\n unref,\n watch,\n} from 'vue';\n\nimport bindThemeClass from '../../directives/theme-class';\nimport { propsFactory } from '../../util/vue-component';\nimport { createPalette, createThemes } from './factory';\nimport { cssClass, cssVariables } from './helper';\nimport { ThemeScheme, configureOptions } from './setting';\nimport type { ThemeOptions } from './types';\n\nexport type { ThemeOptions };\n\nexport const Y_THEME_PREFIX = 'y-theme';\n\nexport interface ThemeModuleInstance {\n scheme: keyof typeof ThemeScheme | 'auto';\n theme: Ref<[string, string?]>;\n // theme values(schemes) for colors & variables\n readonly themes: any;\n readonly global: {\n // currentThemeKeys: [lightThemeKey, darkThemeKey]\n // If used manually, fix the scheme to 'light' and have a [lightThemeKey] value.\n // Use the appropriate default theme scheme if it does not match the themeKey\n scheme: keyof typeof ThemeScheme | 'auto';\n theme: Ref<[string, string?]>;\n };\n /* computed */\n readonly currentThemeKey: Readonly<ComputedRef<string>>;\n readonly themeClasses: Readonly<ComputedRef<string | undefined>>;\n readonly computedThemes: Readonly<ComputedRef<any>>;\n readonly computedPalette: Readonly<ComputedRef<any>>;\n /* */\n readonly supportedAutoMode: Readonly<Ref<boolean>>;\n readonly preferColorScheme: Readonly<Ref<'light' | 'dark'>>;\n}\n\nexport const YUYEON_THEME_KEY = Symbol.for('yuyeon.theme');\n\nexport const pressThemePropsOptions = propsFactory(\n {\n theme: String,\n },\n 'theme',\n);\n\nexport function isDarkMode() {\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n}\n\nexport function isSupportAutoScheme() {\n return window.matchMedia('(prefers-color-scheme)').media !== 'not all';\n}\n\nexport function createThemeModule(options: ThemeOptions) {\n const appMountedScope = effectScope();\n const config = reactive(configureOptions(options));\n const scheme = ref<string>(config.scheme);\n const theme = ref<[string, string]>(config.theme);\n const themes = ref(config.themes);\n const palette = ref(config.palette);\n const supportedAutoMode = ref(true);\n const preferColorScheme = ref('');\n\n function darkModeWatcher(\n mediaQueryList: MediaQueryListEvent | MediaQueryList,\n ) {\n preferColorScheme.value = mediaQueryList.matches ? 'dark' : 'light';\n }\n\n const currentColorScheme = computed<'light' | 'dark'>(() => {\n if (scheme.value === 'auto') {\n return preferColorScheme.value as 'light' | 'dark';\n }\n if (scheme.value === 'dark') {\n return 'dark';\n }\n return 'light';\n });\n\n const currentThemeKey = computed(() => {\n if (typeof theme.value === 'string') {\n if (theme.value in computedThemes) {\n return theme.value;\n }\n }\n if (Array.isArray(theme.value)) {\n return currentColorScheme.value === 'dark'\n ? theme.value?.[1] ?? 'dark'\n : theme.value?.[0] ?? 'light';\n }\n return currentColorScheme.value;\n });\n\n const computedPalette = computed(() => {\n return createPalette(palette.value);\n });\n\n const computedThemes = computed(() => {\n return createThemes(themes.value);\n });\n\n const styles = computed(() => {\n const lines = [];\n lines.push(\n ...cssClass(':root', cssVariables(computedPalette.value, 'palette')),\n );\n for (const [themeKey, themeDefs] of Object.entries(computedThemes.value)) {\n const { colors, variables, isDark } = themeDefs;\n const records: Record<string, string> = {\n ...colors,\n ...variables,\n };\n // if (currentThemeKey.value === themeKey) {\n // lines.push(...cssClass(':root', cssVariables(records, 'theme')));\n // }\n const themeScheme = isDark ? 'dark' : 'light';\n if (scheme.value === 'auto') {\n lines.push(\n ...cssClass(\n `@media (prefers-color-scheme: ${themeScheme})`,\n cssClass(\n `[data-theme-scheme='auto'][data-${themeScheme}-theme='${themeKey}']`,\n cssVariables(records, 'theme'),\n ),\n ),\n );\n } else {\n lines.push(\n ...cssClass(\n `[data-theme-scheme='${themeScheme}'][data-${themeScheme}-theme='${themeKey}']`,\n cssVariables(records, 'theme'),\n ),\n );\n }\n\n lines.push(\n ...cssClass(`.y-theme--${themeKey}`, cssVariables(records, 'theme')),\n );\n }\n return lines.join('');\n });\n\n function install(app: App) {\n app.directive('theme', bindThemeClass);\n\n let styleEl = document.getElementById('yuyeon-theme-palette');\n\n watch(styles, updateStyleEl, { immediate: true });\n\n function updateStyleEl() {\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style');\n el.type = 'text/css';\n el.id = 'yuyeon-theme-palette';\n if (options?.cspNonce) el.setAttribute('nonce', options.cspNonce);\n styleEl = el;\n document.head.appendChild(styleEl);\n }\n if (styleEl) {\n styleEl.innerHTML = styles.value;\n }\n }\n }\n\n function bindTheme(yuyeon: any) {\n supportedAutoMode.value = isSupportAutoScheme();\n if (supportedAutoMode.value) {\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n darkModeWatcher(mql);\n mql.addEventListener('change' as 'change', darkModeWatcher);\n }\n watch(\n theme,\n (neo) => {\n const [lightTheme, darkTheme] = neo;\n yuyeon.root.dataset.lightTheme = lightTheme;\n yuyeon.root.dataset.darkTheme = darkTheme;\n },\n { immediate: true },\n );\n watch(\n scheme,\n (neo) => {\n yuyeon.root.setAttribute(\n 'data-theme-scheme',\n neo === 'auto' ? 'auto' : currentColorScheme.value,\n );\n },\n { immediate: true },\n );\n }\n\n function init(yuyeon: any) {\n appMountedScope.run(() => {\n bindTheme(yuyeon);\n });\n }\n\n const themeClasses = computed(() => `y-theme--${currentThemeKey.value}`);\n\n return {\n install,\n init,\n scope: appMountedScope,\n instance: {\n global: {\n scheme,\n theme,\n },\n themes,\n scheme,\n theme,\n currentThemeKey,\n themeClasses,\n computedThemes,\n computedPalette,\n supportedAutoMode: readonly(supportedAutoMode),\n preferColorScheme: readonly(preferColorScheme),\n },\n };\n}\n\nexport function useLocalTheme(props: { theme?: string }) {\n getCurrentInstance();\n\n const themeModule = inject<ThemeModuleInstance | null>(\n YUYEON_THEME_KEY,\n null,\n );\n\n if (!themeModule) throw new Error('Not found provided \"ThemeModule\"');\n\n const palette = themeModule.computedPalette;\n\n const currentThemeKey = computed<string>(() => {\n if (props.theme) {\n switch (props.theme) {\n case 'light':\n return themeModule.theme.value?.[0] ?? 'light';\n case 'dark':\n return themeModule.theme.value?.[1] ?? 'dark';\n // TODO: props.theme(themeKey) validation in themes\n default:\n return props.theme;\n }\n }\n return unref(themeModule.currentThemeKey);\n });\n\n const themeClasses = computed(() => `y-theme--${currentThemeKey.value}`);\n\n const newTheme: ThemeModuleInstance = {\n ...themeModule,\n currentThemeKey,\n themeClasses,\n };\n\n provide(YUYEON_THEME_KEY, newTheme);\n\n return newTheme;\n}\n\nexport function useTheme() {\n getCurrentInstance();\n\n const theme = inject<ThemeModuleInstance | null>(YUYEON_THEME_KEY, null);\n\n if (!theme) throw new Error('Not found provided \"ThemeModule\"');\n\n return theme;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","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","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","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/vue-component';\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 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 `[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 `[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(`.y-theme--${themeKey}`, cssVariables(records, 'theme')),\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('yuyeon-theme-palette');\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 = 'yuyeon-theme-palette';\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 switch (props.theme) {\r\n case 'light':\r\n return themeModule.theme.value?.[0] ?? 'light';\r\n case 'dark':\r\n return themeModule.theme.value?.[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(() => `y-theme--${currentThemeKey.value}`);\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('Not found provided \"ThemeModule\"');\r\n\r\n return theme;\r\n}\r\n"],"mappings":"AACA,SACEA,QAAQ,EACRC,WAAW,EACXC,kBAAkB,EAClBC,MAAM,EACNC,OAAO,EACPC,QAAQ,EACRC,QAAQ,EACRC,GAAG,EACHC,KAAK,EACLC,KAAK,QACA,KAAK;AAAC,OAENC,cAAc;AAAA,SACZC,YAAY;AAAA,SACZC,aAAa,EAAEC,YAAY;AAAA,SAC3BC,QAAQ,EAAEC,YAAY;AAAA,SACTC,gBAAgB;AAKtC,OAAO,MAAMC,cAAc,GAAG,SAAS;AAwBvC,OAAO,MAAMC,gBAAgB,GAAGC,MAAM,CAACC,GAAG,CAAC,cAAc,CAAC;AAE1D,OAAO,MAAMC,sBAAsB,GAAGV,YAAY,CAChD;EACEW,KAAK,EAAEC;AACT,CAAC,EACD,OACF,CAAC;AAED,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3B,OAAOC,MAAM,CAACC,UAAU,CAAC,8BAA8B,CAAC,CAACC,OAAO;AAClE;AAEA,OAAO,SAASC,mBAAmBA,CAAA,EAAG;EACpC,OAAOH,MAAM,CAACC,UAAU,CAAC,wBAAwB,CAAC,CAACG,KAAK,KAAK,SAAS;AACxE;AAEA,OAAO,SAASC,iBAAiBA,CAACC,OAAqB,EAAE;EACvD,MAAMC,eAAe,GAAG/B,WAAW,CAAC,CAAC;EACrC,MAAMgC,MAAM,GAAG5B,QAAQ,CAACW,gBAAgB,CAACe,OAAO,CAAC,CAAC;EAClD,MAAMG,MAAM,GAAG3B,GAAG,CAAS0B,MAAM,CAACC,MAAM,CAAC;EACzC,MAAMZ,KAAK,GAAGf,GAAG,CAAmB0B,MAAM,CAACX,KAAK,CAAC;EACjD,MAAMa,MAAM,GAAG5B,GAAG,CAAC0B,MAAM,CAACE,MAAM,CAAC;EACjC,MAAMC,OAAO,GAAG7B,GAAG,CAAC0B,MAAM,CAACG,OAAO,CAAC;EACnC,MAAMC,iBAAiB,GAAG9B,GAAG,CAAC,IAAI,CAAC;EACnC,MAAM+B,iBAAiB,GAAG/B,GAAG,CAAC,EAAE,CAAC;EAEjC,SAASgC,eAAeA,CACtBC,cAAoD,EACpD;IACAF,iBAAiB,CAACG,KAAK,GAAGD,cAAc,CAACb,OAAO,GAAG,MAAM,GAAG,OAAO;EACrE;EAEA,MAAMe,kBAAkB,GAAG1C,QAAQ,CAAmB,MAAM;IAC1D,IAAIkC,MAAM,CAACO,KAAK,KAAK,MAAM,EAAE;MAC3B,OAAOH,iBAAiB,CAACG,KAAK;IAChC;IACA,IAAIP,MAAM,CAACO,KAAK,KAAK,MAAM,EAAE;MAC3B,OAAO,MAAM;IACf;IACA,OAAO,OAAO;EAChB,CAAC,CAAC;EAEF,MAAME,eAAe,GAAG3C,QAAQ,CAAC,MAAM;IACrC,IAAI,OAAOsB,KAAK,CAACmB,KAAK,KAAK,QAAQ,EAAE;MACnC,IAAInB,KAAK,CAACmB,KAAK,IAAIG,cAAc,EAAE;QACjC,OAAOtB,KAAK,CAACmB,KAAK;MACpB;IACF;IACA,IAAII,KAAK,CAACC,OAAO,CAACxB,KAAK,CAACmB,KAAK,CAAC,EAAE;MAC9B,OAAOC,kBAAkB,CAACD,KAAK,KAAK,MAAM,GACtCnB,KAAK,CAACmB,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,GAC1BnB,KAAK,CAACmB,KAAK,GAAG,CAAC,CAAC,IAAI,OAAO;IACjC;IACA,OAAOC,kBAAkB,CAACD,KAAK;EACjC,CAAC,CAAC;EAEF,MAAMM,eAAe,GAAG/C,QAAQ,CAAC,MAAM;IACrC,OAAOY,aAAa,CAACwB,OAAO,CAACK,KAAK,CAAC;EACrC,CAAC,CAAC;EAEF,MAAMG,cAAc,GAAG5C,QAAQ,CAAC,MAAM;IACpC,OAAOa,YAAY,CAACsB,MAAM,CAACM,KAAK,CAAC;EACnC,CAAC,CAAC;EAEF,MAAMO,MAAM,GAAGhD,QAAQ,CAAC,MAAM;IAC5B,MAAMiD,KAAK,GAAG,EAAE;IAChBA,KAAK,CAACC,IAAI,CACR,GAAGpC,QAAQ,CAAC,OAAO,EAAEC,YAAY,CAACgC,eAAe,CAACN,KAAK,EAAE,SAAS,CAAC,CACrE,CAAC;IACD,KAAK,MAAM,CAACU,QAAQ,EAAEC,SAAS,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACV,cAAc,CAACH,KAAK,CAAC,EAAE;MACxE,MAAM;QAAEc,MAAM;QAAEC,SAAS;QAAEC;MAAO,CAAC,GAAGL,SAAS;MAC/C,MAAMM,OAA+B,GAAG;QACtC,GAAGH,MAAM;QACT,GAAGC;MACL,CAAC;MACD;MACA;MACA;MACA,MAAMG,WAAW,GAAGF,MAAM,GAAG,MAAM,GAAG,OAAO;MAC7C,IAAIvB,MAAM,CAACO,KAAK,KAAK,MAAM,EAAE;QAC3BQ,KAAK,CAACC,IAAI,CACR,GAAGpC,QAAQ,CACR,iCAAgC6C,WAAY,GAAE,EAC/C7C,QAAQ,CACL,mCAAkC6C,WAAY,WAAUR,QAAS,IAAG,EACrEpC,YAAY,CAAC2C,OAAO,EAAE,OAAO,CAC/B,CACF,CACF,CAAC;MACH,CAAC,MAAM;QACLT,KAAK,CAACC,IAAI,CACR,GAAGpC,QAAQ,CACR,uBAAsB6C,WAAY,WAAUA,WAAY,WAAUR,QAAS,IAAG,EAC/EpC,YAAY,CAAC2C,OAAO,EAAE,OAAO,CAC/B,CACF,CAAC;MACH;MAEAT,KAAK,CAACC,IAAI,CACR,GAAGpC,QAAQ,CAAE,aAAYqC,QAAS,EAAC,EAAEpC,YAAY,CAAC2C,OAAO,EAAE,OAAO,CAAC,CACrE,CAAC;IACH;IACA,OAAOT,KAAK,CAACW,IAAI,CAAC,EAAE,CAAC;EACvB,CAAC,CAAC;EAEF,SAASC,OAAOA,CAACC,GAAQ,EAAE;IACzBA,GAAG,CAACC,SAAS,CAAC,OAAO,EAAErD,cAAc,CAAC;IAEtC,IAAIsD,OAAO,GAAGC,QAAQ,CAACC,cAAc,CAAC,sBAAsB,CAAC;IAE7DzD,KAAK,CAACuC,MAAM,EAAEmB,aAAa,EAAE;MAAEC,SAAS,EAAE;IAAK,CAAC,CAAC;IAEjD,SAASD,aAAaA,CAAA,EAAG;MACvB,IAAI,OAAOF,QAAQ,KAAK,WAAW,IAAI,CAACD,OAAO,EAAE;QAC/C,MAAMK,EAAE,GAAGJ,QAAQ,CAACK,aAAa,CAAC,OAAO,CAAC;QAC1CD,EAAE,CAACE,IAAI,GAAG,UAAU;QACpBF,EAAE,CAACG,EAAE,GAAG,sBAAsB;QAC9B,IAAIzC,OAAO,EAAE0C,QAAQ,EAAEJ,EAAE,CAACK,YAAY,CAAC,OAAO,EAAE3C,OAAO,CAAC0C,QAAQ,CAAC;QACjET,OAAO,GAAGK,EAAE;QACZJ,QAAQ,CAACU,IAAI,CAACC,WAAW,CAACZ,OAAO,CAAC;MACpC;MACA,IAAIA,OAAO,EAAE;QACXA,OAAO,CAACa,SAAS,GAAG7B,MAAM,CAACP,KAAK;MAClC;IACF;EACF;EAEA,SAASqC,SAASA,CAACC,MAAW,EAAE;IAC9B1C,iBAAiB,CAACI,KAAK,GAAGb,mBAAmB,CAAC,CAAC;IAC/C,IAAIS,iBAAiB,CAACI,KAAK,EAAE;MAC3B,MAAMuC,GAAG,GAAGvD,MAAM,CAACC,UAAU,CAAC,8BAA8B,CAAC;MAC7Da,eAAe,CAACyC,GAAG,CAAC;MACpBA,GAAG,CAACC,gBAAgB,CAAC,QAAQ,EAAc1C,eAAe,CAAC;IAC7D;IACA9B,KAAK,CACHa,KAAK,EACJ4D,GAAG,IAAK;MACP,MAAM,CAACC,UAAU,EAAEC,SAAS,CAAC,GAAGF,GAAG;MACnCH,MAAM,CAACM,IAAI,CAACC,OAAO,CAACH,UAAU,GAAGA,UAAU;MAC3CJ,MAAM,CAACM,IAAI,CAACC,OAAO,CAACF,SAAS,GAAGA,SAAS;IAC3C,CAAC,EACD;MAAEhB,SAAS,EAAE;IAAK,CACpB,CAAC;IACD3D,KAAK,CACHyB,MAAM,EACLgD,GAAG,IAAK;MACPH,MAAM,CAACM,IAAI,CAACX,YAAY,CACtB,mBAAmB,EACnBQ,GAAG,KAAK,MAAM,GAAG,MAAM,GAAGxC,kBAAkB,CAACD,KAC/C,CAAC;IACH,CAAC,EACD;MAAE2B,SAAS,EAAE;IAAK,CACpB,CAAC;EACH;EAEA,SAASmB,IAAIA,CAACR,MAAW,EAAE;IACzB/C,eAAe,CAACwD,GAAG,CAAC,MAAM;MACxBV,SAAS,CAACC,MAAM,CAAC;IACnB,CAAC,CAAC;EACJ;EAEA,MAAMU,YAAY,GAAGzF,QAAQ,CAAC,MAAO,YAAW2C,eAAe,CAACF,KAAM,EAAC,CAAC;EAExE,OAAO;IACLoB,OAAO;IACP0B,IAAI;IACJG,KAAK,EAAE1D,eAAe;IACtB2D,QAAQ,EAAE;MACRC,MAAM,EAAE;QACN1D,MAAM;QACNZ;MACF,CAAC;MACDa,MAAM;MACND,MAAM;MACNZ,KAAK;MACLqB,eAAe;MACf8C,YAAY;MACZ7C,cAAc;MACdG,eAAe;MACfV,iBAAiB,EAAE/B,QAAQ,CAAC+B,iBAAiB,CAAC;MAC9CC,iBAAiB,EAAEhC,QAAQ,CAACgC,iBAAiB;IAC/C;EACF,CAAC;AACH;AAEA,OAAO,SAASuD,aAAaA,CAACC,KAAyB,EAAE;EACvD5F,kBAAkB,CAAC,CAAC;EAEpB,MAAM6F,WAAW,GAAG5F,MAAM,CACxBe,gBAAgB,EAChB,IACF,CAAC;EAED,IAAI,CAAC6E,WAAW,EAAE,MAAM,IAAIC,KAAK,CAAC,kCAAkC,CAAC;EAErE,MAAM5D,OAAO,GAAG2D,WAAW,CAAChD,eAAe;EAE3C,MAAMJ,eAAe,GAAG3C,QAAQ,CAAS,MAAM;IAC7C,IAAI8F,KAAK,CAACxE,KAAK,EAAE;MACf,QAAQwE,KAAK,CAACxE,KAAK;QACjB,KAAK,OAAO;UACV,OAAOyE,WAAW,CAACzE,KAAK,CAACmB,KAAK,GAAG,CAAC,CAAC,IAAI,OAAO;QAChD,KAAK,MAAM;UACT,OAAOsD,WAAW,CAACzE,KAAK,CAACmB,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM;QAC/C;QACA;UACE,OAAOqD,KAAK,CAACxE,KAAK;MACtB;IACF;IACA,OAAOd,KAAK,CAACuF,WAAW,CAACpD,eAAe,CAAC;EAC3C,CAAC,CAAC;EAEF,MAAM8C,YAAY,GAAGzF,QAAQ,CAAC,MAAO,YAAW2C,eAAe,CAACF,KAAM,EAAC,CAAC;EAExE,MAAMwD,QAA6B,GAAG;IACpC,GAAGF,WAAW;IACdpD,eAAe;IACf8C;EACF,CAAC;EAEDrF,OAAO,CAACc,gBAAgB,EAAE+E,QAAQ,CAAC;EAEnC,OAAOA,QAAQ;AACjB;AAEA,OAAO,SAASC,QAAQA,CAAA,EAAG;EACzBhG,kBAAkB,CAAC,CAAC;EAEpB,MAAMoB,KAAK,GAAGnB,MAAM,CAA6Be,gBAAgB,EAAE,IAAI,CAAC;EAExE,IAAI,CAACI,KAAK,EAAE,MAAM,IAAI0E,KAAK,CAAC,kCAAkC,CAAC;EAE/D,OAAO1E,KAAK;AACd"}
package/lib/index.mjs CHANGED
@@ -7,6 +7,7 @@ import { YUYEON_THEME_KEY, createThemeModule, useTheme } from "./composables/the
7
7
  import PlateWave from "./directives/plate-wave/index.mjs";
8
8
  import { YUYEON_LOGO } from "./etc/index.mjs"; //
9
9
  import "./styles/base.scss";
10
+ import { createIconModule, YUYEON_ICON_KEY } from "./composables/icon.mjs";
10
11
  const defaultOptions = {
11
12
  credit: true
12
13
  };
@@ -15,6 +16,7 @@ export function init() {
15
16
  const themeModule = createThemeModule(options?.theme);
16
17
  const i18nModule = createI18nModule(options?.i18n);
17
18
  const dateModule = createDateModule(options?.date, i18nModule.localeModule);
19
+ const iconModule = createIconModule(options?.icon);
18
20
  const install = app => {
19
21
  themeModule.install(app);
20
22
  const yuyeon = reactive({
@@ -33,6 +35,7 @@ export function init() {
33
35
  });
34
36
  app.directive('plate-wave', PlateWave);
35
37
  app.provide(YUYEON_THEME_KEY, themeModule.instance);
38
+ app.provide(YUYEON_ICON_KEY, iconModule);
36
39
  app.provide(YUYEON_I18N_KEY, {
37
40
  ...i18nModule.localeModule,
38
41
  ...i18nModule.rtlModule
package/lib/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["nextTick","reactive","components","YUYEON_DATE_KEY","YUYEON_DATE_OPTIONS_KEY","createDateModule","createI18nModule","YUYEON_I18N_KEY","YUYEON_THEME_KEY","createThemeModule","useTheme","PlateWave","YUYEON_LOGO","defaultOptions","credit","init","options","arguments","length","undefined","themeModule","theme","i18nModule","i18n","dateModule","date","localeModule","install","app","yuyeon","root","instance","rtlModule","Object","keys","forEach","componentName","comp","component","directive","provide","config","globalProperties","$yuyeon","_instance","_container","Error","$el","classList","add","setAttribute","console","log","unmount","scope","stop"],"sources":["../src/index.ts"],"sourcesContent":["import { Component, ComponentInternalInstance } from '@vue/runtime-core';\r\nimport type { App } from 'vue';\r\nimport { nextTick, reactive } from 'vue';\r\n\r\nimport * as components from './components';\r\nimport {\r\n YUYEON_DATE_KEY,\r\n YUYEON_DATE_OPTIONS_KEY,\r\n createDateModule,\r\n} from './composables/date';\r\nimport { createI18nModule } from './composables/i18n';\r\nimport { YUYEON_I18N_KEY } from './composables/i18n/share';\r\nimport {\r\n YUYEON_THEME_KEY,\r\n createThemeModule,\r\n useTheme,\r\n} from './composables/theme';\r\nimport PlateWave from './directives/plate-wave';\r\nimport { YUYEON_LOGO } from './etc';\r\n\r\n//\r\nimport './styles/base.scss';\r\n\r\nconst defaultOptions = {\r\n credit: true,\r\n};\r\n\r\ndeclare module 'vue' {\r\n interface ComponentCustomProperties {\r\n $yuyeon: any;\r\n }\r\n}\r\n\r\nexport function init(options: any = defaultOptions) {\r\n const themeModule = createThemeModule(options?.theme);\r\n const i18nModule = createI18nModule(options?.i18n);\r\n const dateModule = createDateModule(options?.date, i18nModule.localeModule);\r\n\r\n const install = (app: App): any => {\r\n themeModule.install(app);\r\n\r\n const yuyeon = reactive({\r\n app: null as ComponentInternalInstance | null,\r\n root: null as HTMLElement | null,\r\n theme: themeModule.instance,\r\n i18n: {\r\n ...i18nModule.localeModule,\r\n ...i18nModule.rtlModule,\r\n },\r\n date: dateModule,\r\n });\r\n\r\n Object.keys(components).forEach((componentName) => {\r\n const comp = components[componentName as keyof typeof components];\r\n app.component(componentName, comp as Component);\r\n });\r\n\r\n app.directive('plate-wave', PlateWave);\r\n\r\n app.provide(YUYEON_THEME_KEY, themeModule.instance);\r\n app.provide(YUYEON_I18N_KEY, {\r\n ...i18nModule.localeModule,\r\n ...i18nModule.rtlModule,\r\n });\r\n app.provide(YUYEON_DATE_OPTIONS_KEY, dateModule.options);\r\n app.provide(YUYEON_DATE_KEY, dateModule.instance);\r\n\r\n app.config.globalProperties.$yuyeon = yuyeon;\r\n\r\n nextTick(() => {\r\n yuyeon.app = app._instance as any;\r\n yuyeon.root = app._container;\r\n if (!yuyeon.root) {\r\n throw new Error(`yuyeon: Can't found instance`);\r\n }\r\n const $el = yuyeon.root;\r\n $el.classList.add('y-root');\r\n $el.setAttribute('data-y-root', '');\r\n themeModule.init(yuyeon);\r\n });\r\n if (options?.credit) {\r\n console.log(YUYEON_LOGO);\r\n }\r\n const { unmount } = app;\r\n app.unmount = () => {\r\n unmount();\r\n themeModule.scope.stop();\r\n app.unmount = unmount;\r\n };\r\n };\r\n\r\n return {\r\n install,\r\n };\r\n}\r\n\r\nexport { useTheme };\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["nextTick","reactive","components","YUYEON_DATE_KEY","YUYEON_DATE_OPTIONS_KEY","createDateModule","createI18nModule","YUYEON_I18N_KEY","YUYEON_THEME_KEY","createThemeModule","useTheme","PlateWave","YUYEON_LOGO","createIconModule","YUYEON_ICON_KEY","defaultOptions","credit","init","options","arguments","length","undefined","themeModule","theme","i18nModule","i18n","dateModule","date","localeModule","iconModule","icon","install","app","yuyeon","root","instance","rtlModule","Object","keys","forEach","componentName","comp","component","directive","provide","config","globalProperties","$yuyeon","_instance","_container","Error","$el","classList","add","setAttribute","console","log","unmount","scope","stop"],"sources":["../src/index.ts"],"sourcesContent":["import { Component, ComponentInternalInstance } from '@vue/runtime-core';\r\nimport type { App } from 'vue';\r\nimport { nextTick, reactive } from 'vue';\r\n\r\nimport * as components from './components';\r\nimport {\r\n YUYEON_DATE_KEY,\r\n YUYEON_DATE_OPTIONS_KEY,\r\n createDateModule,\r\n} from './composables/date';\r\nimport { createI18nModule } from './composables/i18n';\r\nimport { YUYEON_I18N_KEY } from './composables/i18n/share';\r\nimport {\r\n YUYEON_THEME_KEY,\r\n createThemeModule,\r\n useTheme,\r\n} from './composables/theme';\r\nimport PlateWave from './directives/plate-wave';\r\nimport { YUYEON_LOGO } from './etc';\r\n\r\n//\r\nimport './styles/base.scss';\r\nimport {createIconModule, YUYEON_ICON_KEY} from \"./composables/icon\";\r\n\r\nconst defaultOptions = {\r\n credit: true,\r\n};\r\n\r\ndeclare module 'vue' {\r\n interface ComponentCustomProperties {\r\n $yuyeon: any;\r\n }\r\n}\r\n\r\nexport function init(options: any = defaultOptions) {\r\n const themeModule = createThemeModule(options?.theme);\r\n const i18nModule = createI18nModule(options?.i18n);\r\n const dateModule = createDateModule(options?.date, i18nModule.localeModule);\r\n const iconModule = createIconModule(options?.icon);\r\n const install = (app: App): any => {\r\n themeModule.install(app);\r\n\r\n const yuyeon = reactive({\r\n app: null as ComponentInternalInstance | null,\r\n root: null as HTMLElement | null,\r\n theme: themeModule.instance,\r\n i18n: {\r\n ...i18nModule.localeModule,\r\n ...i18nModule.rtlModule,\r\n },\r\n date: dateModule,\r\n });\r\n\r\n Object.keys(components).forEach((componentName) => {\r\n const comp = components[componentName as keyof typeof components];\r\n app.component(componentName, comp as Component);\r\n });\r\n\r\n app.directive('plate-wave', PlateWave);\r\n\r\n app.provide(YUYEON_THEME_KEY, themeModule.instance);\r\n app.provide(YUYEON_ICON_KEY, iconModule);\r\n app.provide(YUYEON_I18N_KEY, {\r\n ...i18nModule.localeModule,\r\n ...i18nModule.rtlModule,\r\n });\r\n app.provide(YUYEON_DATE_OPTIONS_KEY, dateModule.options);\r\n app.provide(YUYEON_DATE_KEY, dateModule.instance);\r\n\r\n app.config.globalProperties.$yuyeon = yuyeon;\r\n\r\n nextTick(() => {\r\n yuyeon.app = app._instance as any;\r\n yuyeon.root = app._container;\r\n if (!yuyeon.root) {\r\n throw new Error(`yuyeon: Can't found instance`);\r\n }\r\n const $el = yuyeon.root;\r\n $el.classList.add('y-root');\r\n $el.setAttribute('data-y-root', '');\r\n themeModule.init(yuyeon);\r\n });\r\n if (options?.credit) {\r\n console.log(YUYEON_LOGO);\r\n }\r\n const { unmount } = app;\r\n app.unmount = () => {\r\n unmount();\r\n themeModule.scope.stop();\r\n app.unmount = unmount;\r\n };\r\n };\r\n\r\n return {\r\n install,\r\n };\r\n}\r\n\r\nexport { useTheme };\r\n"],"mappings":"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"}
@@ -1,34 +1,34 @@
1
- @use 'sass:map';
2
-
3
- $border-radius: (
4
- 'top': (
5
- 'top-left',
6
- 'top-right',
7
- ),
8
- 'bottom': (
9
- 'bottom-left',
10
- 'bottom-right',
11
- ),
12
- 'left': (
13
- 'top-left',
14
- 'bottom-left',
15
- ),
16
- 'right': (
17
- 'top-right',
18
- 'bottom-right',
19
- ),
20
- );
21
-
22
- @mixin borderRadius($round, $side) {
23
- @if ($side == null) {
24
- border-radius: $round;
25
- }
26
-
27
- @if (map.has-key($border-radius, $side)) {
28
- $props: map.get($border-radius, $side);
29
- @each $prop in $props {
30
- @debug $prop;
31
- border-#{$prop}-radius: $round;
32
- }
33
- }
34
- }
1
+ @use 'sass:map';
2
+
3
+ $border-radius: (
4
+ 'top': (
5
+ 'top-left',
6
+ 'top-right',
7
+ ),
8
+ 'bottom': (
9
+ 'bottom-left',
10
+ 'bottom-right',
11
+ ),
12
+ 'left': (
13
+ 'top-left',
14
+ 'bottom-left',
15
+ ),
16
+ 'right': (
17
+ 'top-right',
18
+ 'bottom-right',
19
+ ),
20
+ );
21
+
22
+ @mixin borderRadius($round, $side) {
23
+ @if ($side == null) {
24
+ border-radius: $round;
25
+ }
26
+
27
+ @if (map.has-key($border-radius, $side)) {
28
+ $props: map.get($border-radius, $side);
29
+ @each $prop in $props {
30
+ @debug $prop;
31
+ border-#{$prop}-radius: $round;
32
+ }
33
+ }
34
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/types/index.ts"],"sourcesContent":["export type CandidateKey = string | number;\r\n"],"mappings":""}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/types/index.ts"],"sourcesContent":["import { HTMLAttributes } from '@vue/runtime-dom';\nimport type { ComponentPublicInstance, FunctionalComponent } from 'vue';\n\nexport type CandidateKey = string | number;\nexport type JSXComponent<Props = any> =\n | FunctionalComponent<Props | Props & HTMLAttributes>\n | { new (): ComponentPublicInstance<Props | Props & HTMLAttributes> };\n"],"mappings":""}
@@ -90,7 +90,7 @@ export class YuyeonDateAdapter {
90
90
  return DateUtil.startOfYear(date);
91
91
  }
92
92
  toISO(date) {
93
- return DateUtil.toISO(date);
93
+ return DateUtil.toISO(this, date);
94
94
  }
95
95
  toJsDate(date) {
96
96
  return date;
@@ -1 +1 @@
1
- {"version":3,"file":"yuyeon-date-adapter.mjs","names":["DateUtil","YuyeonDateAdapter","constructor","options","_defineProperty","locale","formats","getWeekArray","date","startOfMonth","endOfMonth","addDays","amount","addMonths","value","endOfDay","endOfYear","format","formatString","getDiff","comparing","unit","getYear","getMonth","getDay","getNextMonth","getWeekdays","isAfter","isBefore","isEqual","isSameDay","isSameMonth","isValid","isWithinRange","range","parseISO","setMonth","month","setYear","year","startOfDay","startOfYear","toISO","toJsDate"],"sources":["../../../../src/util/date/adapters/yuyeon-date-adapter.ts"],"sourcesContent":["import { DateUtil } from '../built-in';\r\nimport { DateAdapter, DateFormatOptions } from '../types';\r\n\r\nexport class YuyeonDateAdapter implements DateAdapter<Date> {\r\n public locale = 'ko-kr';\r\n\r\n public formats?: Record<string, DateFormatOptions>;\r\n\r\n constructor(options: {\r\n locale: string;\r\n formats?: Record<string, DateFormatOptions>;\r\n }) {\r\n this.locale = options.locale;\r\n this.formats = options.formats;\r\n }\r\n\r\n public getWeekArray(date: Date) {\r\n return DateUtil.getWeekArray(date, this.locale);\r\n }\r\n\r\n public startOfMonth(date: Date) {\r\n return DateUtil.startOfMonth(date);\r\n }\r\n\r\n public endOfMonth(date: Date) {\r\n return DateUtil.endOfMonth(date);\r\n }\r\n\r\n public addDays(date: Date, amount: number): Date {\r\n return DateUtil.addDays(date, amount);\r\n }\r\n\r\n public addMonths(date: Date, amount: number): Date {\r\n return DateUtil.addMonths(date, amount);\r\n }\r\n\r\n public date(value?: any): Date | null {\r\n return DateUtil.date(value);\r\n }\r\n\r\n public endOfDay(date: Date): Date {\r\n return DateUtil.endOfDay(date);\r\n }\r\n\r\n public endOfYear(date: Date): Date {\r\n return DateUtil.endOfYear(date);\r\n }\r\n\r\n public format(date: Date, formatString: string): string {\r\n return DateUtil.format(date, formatString, this.locale, this.formats);\r\n }\r\n\r\n public getDiff(date: Date, comparing: string | Date, unit?: string): number {\r\n return DateUtil.getDiff(date, comparing, unit);\r\n }\r\n\r\n public getYear(date: Date): number {\r\n return DateUtil.getYear(date);\r\n }\r\n\r\n public getMonth(date: Date): number {\r\n return DateUtil.getMonth(date);\r\n }\r\n\r\n public getDay(date: Date): number {\r\n return DateUtil.getDay(date);\r\n }\r\n\r\n public getNextMonth(date: Date): Date {\r\n return DateUtil.getNextMonth(date);\r\n }\r\n\r\n public getWeekdays(): string[] {\r\n return DateUtil.getWeekdays(this.locale);\r\n }\r\n\r\n public isAfter(date: Date, comparing: Date): boolean {\r\n return DateUtil.isAfter(date, comparing);\r\n }\r\n\r\n public isBefore(date: Date, comparing: Date): boolean {\r\n return DateUtil.isBefore(date, comparing);\r\n }\r\n\r\n public isEqual(date: Date, comparing: Date): boolean {\r\n return DateUtil.isEqual(date, comparing);\r\n }\r\n\r\n public isSameDay(date: Date, comparing: Date): boolean {\r\n return DateUtil.isSameDay(date, comparing);\r\n }\r\n\r\n public isSameMonth(date: Date, comparing: Date): boolean {\r\n return DateUtil.isSameMonth(date, comparing);\r\n }\r\n\r\n public isValid(date: any): boolean {\r\n return DateUtil.isValid(date);\r\n }\r\n\r\n public isWithinRange(date: Date, range: [Date, Date]): boolean {\r\n return DateUtil.isWithinRange(date, range);\r\n }\r\n\r\n public parseISO(date: string): Date {\r\n return DateUtil.parseISO(date);\r\n }\r\n\r\n public setMonth(date: Date, month: number): Date {\r\n return DateUtil.setMonth(date, month);\r\n }\r\n\r\n public setYear(date: Date, year: number): Date {\r\n return DateUtil.setYear(date, year);\r\n }\r\n\r\n public startOfDay(date: Date): Date {\r\n return DateUtil.startOfDay(date);\r\n }\r\n\r\n public startOfYear(date: Date): Date {\r\n return DateUtil.startOfYear(date);\r\n }\r\n\r\n public toISO(date: Date): string {\r\n return DateUtil.toISO(date);\r\n }\r\n\r\n public toJsDate(date: Date): Date {\r\n return date;\r\n }\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"yuyeon-date-adapter.mjs","names":["DateUtil","YuyeonDateAdapter","constructor","options","_defineProperty","locale","formats","getWeekArray","date","startOfMonth","endOfMonth","addDays","amount","addMonths","value","endOfDay","endOfYear","format","formatString","getDiff","comparing","unit","getYear","getMonth","getDay","getNextMonth","getWeekdays","isAfter","isBefore","isEqual","isSameDay","isSameMonth","isValid","isWithinRange","range","parseISO","setMonth","month","setYear","year","startOfDay","startOfYear","toISO","toJsDate"],"sources":["../../../../src/util/date/adapters/yuyeon-date-adapter.ts"],"sourcesContent":["import { DateUtil } from '../built-in';\r\nimport { DateAdapter, DateFormatOptions } from '../types';\r\n\r\nexport class YuyeonDateAdapter implements DateAdapter<Date> {\r\n public locale = 'ko-kr';\r\n\r\n public formats?: Record<string, DateFormatOptions>;\r\n\r\n constructor(options: {\r\n locale: string;\r\n formats?: Record<string, DateFormatOptions>;\r\n }) {\r\n this.locale = options.locale;\r\n this.formats = options.formats;\r\n }\r\n\r\n public getWeekArray(date: Date) {\r\n return DateUtil.getWeekArray(date, this.locale);\r\n }\r\n\r\n public startOfMonth(date: Date) {\r\n return DateUtil.startOfMonth(date);\r\n }\r\n\r\n public endOfMonth(date: Date) {\r\n return DateUtil.endOfMonth(date);\r\n }\r\n\r\n public addDays(date: Date, amount: number): Date {\r\n return DateUtil.addDays(date, amount);\r\n }\r\n\r\n public addMonths(date: Date, amount: number): Date {\r\n return DateUtil.addMonths(date, amount);\r\n }\r\n\r\n public date(value?: any): Date | null {\r\n return DateUtil.date(value);\r\n }\r\n\r\n public endOfDay(date: Date): Date {\r\n return DateUtil.endOfDay(date);\r\n }\r\n\r\n public endOfYear(date: Date): Date {\r\n return DateUtil.endOfYear(date);\r\n }\r\n\r\n public format(date: Date, formatString: string): string {\r\n return DateUtil.format(date, formatString, this.locale, this.formats);\r\n }\r\n\r\n public getDiff(date: Date, comparing: string | Date, unit?: string): number {\r\n return DateUtil.getDiff(date, comparing, unit);\r\n }\r\n\r\n public getYear(date: Date): number {\r\n return DateUtil.getYear(date);\r\n }\r\n\r\n public getMonth(date: Date): number {\r\n return DateUtil.getMonth(date);\r\n }\r\n\r\n public getDay(date: Date): number {\r\n return DateUtil.getDay(date);\r\n }\r\n\r\n public getNextMonth(date: Date): Date {\r\n return DateUtil.getNextMonth(date);\r\n }\r\n\r\n public getWeekdays(): string[] {\r\n return DateUtil.getWeekdays(this.locale);\r\n }\r\n\r\n public isAfter(date: Date, comparing: Date): boolean {\r\n return DateUtil.isAfter(date, comparing);\r\n }\r\n\r\n public isBefore(date: Date, comparing: Date): boolean {\r\n return DateUtil.isBefore(date, comparing);\r\n }\r\n\r\n public isEqual(date: Date, comparing: Date): boolean {\r\n return DateUtil.isEqual(date, comparing);\r\n }\r\n\r\n public isSameDay(date: Date, comparing: Date): boolean {\r\n return DateUtil.isSameDay(date, comparing);\r\n }\r\n\r\n public isSameMonth(date: Date, comparing: Date): boolean {\r\n return DateUtil.isSameMonth(date, comparing);\r\n }\r\n\r\n public isValid(date: any): boolean {\r\n return DateUtil.isValid(date);\r\n }\r\n\r\n public isWithinRange(date: Date, range: [Date, Date]): boolean {\r\n return DateUtil.isWithinRange(date, range);\r\n }\r\n\r\n public parseISO(date: string): Date {\r\n return DateUtil.parseISO(date);\r\n }\r\n\r\n public setMonth(date: Date, month: number): Date {\r\n return DateUtil.setMonth(date, month);\r\n }\r\n\r\n public setYear(date: Date, year: number): Date {\r\n return DateUtil.setYear(date, year);\r\n }\r\n\r\n public startOfDay(date: Date): Date {\r\n return DateUtil.startOfDay(date);\r\n }\r\n\r\n public startOfYear(date: Date): Date {\r\n return DateUtil.startOfYear(date);\r\n }\r\n\r\n public toISO(date: Date): string {\r\n return DateUtil.toISO(this, date);\r\n }\r\n\r\n public toJsDate(date: Date): Date {\r\n return date;\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -256,8 +256,12 @@ export class DateUtil {
256
256
  const [year, month, day] = value.split('-').map(Number);
257
257
  return new Date(year, month - 1, day);
258
258
  }
259
- static toISO(date) {
260
- return date.toISOString().substring(0, 10);
259
+ static toISO(adapter, value) {
260
+ const date = adapter.toJsDate(value);
261
+ const year = date.getFullYear();
262
+ const month = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : `${date.getMonth() + 1}`;
263
+ const day = date.getDate() < 10 ? `0${date.getDate()}` : `${date.getDate()}`;
264
+ return `${year}-${month}-${day}`;
261
265
  }
262
266
  static getWeekArray(date, locale) {
263
267
  const weeks = [];