yuyeon 0.3.3 → 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.
- package/dist/style.css +1 -1
- package/dist/yuyeon.js +2241 -2217
- package/dist/yuyeon.umd.cjs +3 -3
- package/lib/components/draggable/YDraggable.js.map +1 -1
- package/lib/components/draggable/index.js +2 -0
- package/lib/components/draggable/index.js.map +1 -0
- package/lib/components/field-input/YFieldInput.js +4 -2
- package/lib/components/field-input/YFieldInput.js.map +1 -1
- package/lib/components/input/YInput.scss +1 -1
- package/lib/components/radio/YRadio.js +58 -0
- package/lib/components/radio/YRadio.js.map +1 -0
- package/lib/components/radio/YRadio.scss +38 -0
- package/lib/components/radio/YRadioIcon.js +33 -0
- package/lib/components/radio/YRadioIcon.js.map +1 -0
- package/lib/components/radio/YRadioIcon.scss +44 -0
- package/lib/components/radio/index.js +3 -0
- package/lib/components/radio/index.js.map +1 -0
- package/lib/components/select/YSelect.js +0 -1
- package/lib/components/select/YSelect.js.map +1 -1
- package/lib/components/table/YDataTable.js +7 -4
- package/lib/components/table/YDataTable.js.map +1 -1
- package/lib/components/table/YDataTableControl.js +8 -6
- package/lib/components/table/YDataTableControl.js.map +1 -1
- package/lib/components/table/YDataTableControl.scss +10 -0
- package/lib/components/table/YDataTableServer.js +8 -5
- package/lib/components/table/YDataTableServer.js.map +1 -1
- package/lib/components/text-highlighter/YTextHighlighter.js +2 -1
- package/lib/components/text-highlighter/YTextHighlighter.js.map +1 -1
- package/lib/components/tree-view/YTreeViewNode.js +6 -2
- package/lib/components/tree-view/YTreeViewNode.js.map +1 -1
- package/lib/composables/style-color.js +1 -2
- package/lib/composables/style-color.js.map +1 -1
- package/lib/composables/theme/index.js +8 -1
- package/lib/composables/theme/index.js.map +1 -1
- package/lib/composables/validation.js +7 -4
- package/lib/composables/validation.js.map +1 -1
- package/lib/directives/index.js +3 -0
- package/lib/directives/index.js.map +1 -0
- package/lib/directives/plate-wave/index.js +2 -2
- package/lib/directives/plate-wave/index.js.map +1 -1
- package/lib/directives/theme-class/index.js +24 -0
- package/lib/directives/theme-class/index.js.map +1 -0
- package/lib/util/string.js +3 -0
- package/lib/util/string.js.map +1 -1
- package/package.json +9 -1
- package/types/components/badge/YBadge.d.ts +0 -3
- package/types/components/chip/YChip.d.ts +0 -3
- package/types/components/draggable/index.d.ts +1 -0
- package/types/components/field-input/YFieldInput.d.ts +6 -0
- package/types/components/radio/YRadio.d.ts +25 -0
- package/types/components/radio/YRadioIcon.d.ts +6 -0
- package/types/components/radio/index.d.ts +2 -0
- package/types/components/select/YSelect.d.ts +6 -0
- package/types/components/table/YDataTable.d.ts +3 -0
- package/types/components/table/YDataTableControl.d.ts +12 -0
- package/types/components/table/YDataTableServer.d.ts +20 -8
- package/types/composables/style-color.d.ts +0 -1
- package/types/composables/theme/index.d.ts +1 -0
- package/types/directives/index.d.ts +2 -0
- package/types/directives/plate-wave/index.d.ts +7 -1
- package/types/shims.d.ts +58 -52
- package/types/util/string.d.ts +1 -0
- /package/types/directives/{theme-class.d.ts → theme-class/index.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YDataTable.js","names":["Fragment","computed","provide","ref","toRef","pressDataTableExpandProps","provideExpand","createHeader","pressDataTableHeader","pressDataTableItemsProps","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","usePaginatedItems","YDataTableInjectionKey","pressDataTableSelectionProps","provideSelection","useSortedItems","createSorting","pressDataTableSortProps","provideSorting","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","toStyleSizeValue","YDataTableBody","pressYDataTableBodyProps","YDataTableControl","YDataTableHead","pressYDataTableHeadProps","YDataTableLayer","YTable","pressYTableProps","pressDataTableProps","width","String","Number","search","hideDefaultTbody","Boolean","YDataTable","name","props","emits","value","page","pageSize","sortBy","options","expanded","click:row","e","scroll","setup","_ref","slots","emit","TableBodyRef","multiSort","columns","headers","enableSelect","items","toggleSort","total","length","startIndex","endIndex","pageLength","setPageSize","setPage","sortedItems","paginatedItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","isExpanded","toggleExpand","resizeObservedRef","headObserveRef","contentRect","headRect","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend","append"],"sources":["../../../src/components/table/YDataTable.tsx"],"sourcesContent":["import { Fragment, type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport {\n pressDataTableExpandProps,\n provideExpand,\n} from '@/components/table/composables/expand';\nimport {\n createHeader,\n pressDataTableHeader,\n} from '@/components/table/composables/header';\nimport {\n pressDataTableItemsProps,\n useItems,\n} from '@/components/table/composables/items';\nimport { useOptions } from '@/components/table/composables/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n usePaginatedItems,\n} from '@/components/table/composables/pagination';\nimport { YDataTableInjectionKey } from '@/components/table/composables/provides';\nimport {\n pressDataTableSelectionProps,\n provideSelection,\n} from '@/components/table/composables/selection';\nimport { useSortedItems } from '@/components/table/composables/sorted-items';\nimport {\n createSorting,\n pressDataTableSortProps,\n provideSorting,\n} from '@/components/table/composables/sorting';\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YDataTableBody, pressYDataTableBodyProps } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead, pressYDataTableHeadProps } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable, pressYTableProps } from './YTable';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableProps = propsFactory(\n {\n ...pressYDataTableBodyProps(),\n width: [String, Number] as PropType<string | number>,\n search: String as PropType<string>,\n hideDefaultTbody: Boolean,\n ...pressDataTableHeader(),\n ...pressDataTableItemsProps(),\n ...pressDataTableSortProps(),\n ...pressDataTableSelectionProps(),\n ...pressDataTableExpandProps(),\n ...pressYDataTableHeadProps(),\n ...pressYTableProps(),\n },\n 'DataTable',\n);\n\nexport const YDataTable = defineComponent({\n name: 'YDataTable',\n props: {\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (expanded: any[]) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n scroll: (e: Event) => true,\n },\n setup(props, { slots, emit }) {\n const TableBodyRef = ref();\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const total = computed(() => items.value.length);\n const { startIndex, endIndex, pageLength, setPageSize, setPage } =\n providePagination({\n page,\n pageSize,\n total,\n });\n const { sortedItems } = useSortedItems(props, items, sortBy);\n const { paginatedItems } = usePaginatedItems({\n items: sortedItems,\n startIndex,\n endIndex,\n pageSize,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n const { isExpanded, toggleExpand } = provideExpand(props);\n\n const { resizeObservedRef: headObserveRef, contentRect: headRect } =\n useResizeObserver();\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // expand\n isExpanded,\n toggleExpand,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n // matrix\n items: paginatedItems.value,\n columns: columns.value,\n headers: headers.value,\n //\n TableBodyRef,\n };\n });\n\n provide(YDataTableInjectionKey, {\n toggleSort,\n sortBy,\n headRect,\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer\n v-slots={slots}\n slot-props={slotProps.value}\n ></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <Fragment>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n {!props.hideDefaultTbody && (\n <tbody>\n <YDataTableBody\n ref={TableBodyRef}\n v-slots={slots}\n {...yDataTableBodyProps}\n items={slotProps.value.items}\n ></YDataTableBody>\n </tbody>\n )}\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </Fragment>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n v-slots={{\n prepend: slots['control.prepend'],\n append: slots['control.append'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n\n return { paginatedItems };\n },\n});\n\nexport type YDataTable = InstanceType<typeof YDataTable>;\n"],"mappings":";AAAA,SAASA,QAAQ,EAAiBC,QAAQ,EAAEC,OAAO,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAG3EC,yBAAyB,EACzBC,aAAa;AAAA,SAGbC,YAAY,EACZC,oBAAoB;AAAA,SAGpBC,wBAAwB,EACxBC,QAAQ;AAAA,SAEDC,UAAU;AAAA,SAEjBC,gBAAgB,EAChBC,6BAA6B,EAC7BC,iBAAiB,EACjBC,iBAAiB;AAAA,SAEVC,sBAAsB;AAAA,SAE7BC,4BAA4B,EAC5BC,gBAAgB;AAAA,SAETC,cAAc;AAAA,SAErBC,aAAa,EACbC,uBAAuB,EACvBC,cAAc;AAAA,SAEPC,SAAS;AAAA,SACTC,iBAAiB;AAAA,SACjBC,WAAW,EAAEC,eAAe,EAAEC,YAAY;AAAA,SAC1CC,gBAAgB;AAAA,SAEhBC,cAAc,EAAEC,wBAAwB;AAAA,SACxCC,iBAAiB;AAAA,SACjBC,cAAc,EAAEC,wBAAwB;AAAA,SACxCC,eAAe;AAAA,SACfC,MAAM,EAAEC,gBAAgB;AAGjC,OAAO,MAAMC,mBAAmB,GAAGV,YAAY,CAC7C;EACE,GAAGG,wBAAwB,CAAC,CAAC;EAC7BQ,KAAK,EAAE,CAACC,MAAM,EAAEC,MAAM,CAA8B;EACpDC,MAAM,EAAEF,MAA0B;EAClCG,gBAAgB,EAAEC,OAAO;EACzB,GAAGnC,oBAAoB,CAAC,CAAC;EACzB,GAAGC,wBAAwB,CAAC,CAAC;EAC7B,GAAGY,uBAAuB,CAAC,CAAC;EAC5B,GAAGJ,4BAA4B,CAAC,CAAC;EACjC,GAAGZ,yBAAyB,CAAC,CAAC;EAC9B,GAAG4B,wBAAwB,CAAC,CAAC;EAC7B,GAAGG,gBAAgB,CAAC;AACtB,CAAC,EACD,WACF,CAAC;AAED,OAAO,MAAMQ,UAAU,GAAGlB,eAAe,CAAC;EACxCmB,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAE;IACL,GAAGjC,6BAA6B,CAAC,CAAC;IAClC,GAAGwB,mBAAmB,CAAC;EACzB,CAAC;EACDU,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAY,IAAK,IAAI;IAC3C,aAAa,EAAGC,IAAY,IAAK,IAAI;IACrC,iBAAiB,EAAGC,QAAgB,IAAK,IAAI;IAC7C,eAAe,EAAGC,MAAW,IAAK,IAAI;IACtC,gBAAgB,EAAGC,OAAY,IAAK,IAAI;IACxC,iBAAiB,EAAGC,QAAe,IAAK,IAAI;IAC5C,WAAW,EAAEC,CAACC,CAAQ,EAAEP,KAAmB,KAAK,IAAI;IACpDQ,MAAM,EAAGD,CAAQ,IAAK;EACxB,CAAC;EACDE,KAAKA,CAACX,KAAK,EAAAY,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC1B,MAAMG,YAAY,GAAG1D,GAAG,CAAC,CAAC;IAC1B,MAAM;MAAE8C,IAAI;MAAEC;IAAS,CAAC,GAAGtC,gBAAgB,CAACkC,KAAK,CAAC;IAClD,MAAM;MAAEK,MAAM;MAAEW;IAAU,CAAC,GAAG1C,aAAa,CAAC0B,KAAK,CAAC;IAClD,MAAM;MAAEiB,OAAO;MAAEC;IAAQ,CAAC,GAAGzD,YAAY,CAACuC,KAAK,EAAE;MAC/CmB,YAAY,EAAE7D,KAAK,CAAC0C,KAAK,EAAE,cAAc;IAC3C,CAAC,CAAC;IACF,MAAM;MAAEoB;IAAM,CAAC,GAAGxD,QAAQ,CAACoC,KAAK,EAAEiB,OAAO,CAAC;IAC1C,MAAM;MAAEI;IAAW,CAAC,GAAG7C,cAAc,CAAC;MAAE6B,MAAM;MAAEW,SAAS;MAAEb;IAAK,CAAC,CAAC;IAClE,MAAMmB,KAAK,GAAGnE,QAAQ,CAAC,MAAMiE,KAAK,CAAClB,KAAK,CAACqB,MAAM,CAAC;IAChD,MAAM;MAAEC,UAAU;MAAEC,QAAQ;MAAEC,UAAU;MAAEC,WAAW;MAAEC;IAAQ,CAAC,GAC9D5D,iBAAiB,CAAC;MAChBmC,IAAI;MACJC,QAAQ;MACRkB;IACF,CAAC,CAAC;IACJ,MAAM;MAAEO;IAAY,CAAC,GAAGxD,cAAc,CAAC2B,KAAK,EAAEoB,KAAK,EAAEf,MAAM,CAAC;IAC5D,MAAM;MAAEyB;IAAe,CAAC,GAAG7D,iBAAiB,CAAC;MAC3CmD,KAAK,EAAES,WAAW;MAClBL,UAAU;MACVC,QAAQ;MACRrB;IACF,CAAC,CAAC;IACF,MAAM;MACJ2B,UAAU;MACVC,MAAM;MACNC,SAAS;MACTC,YAAY;MACZC,YAAY;MACZC;IACF,CAAC,GAAGhE,gBAAgB,CAAC4B,KAAK,EAAE;MAAEqC,QAAQ,EAAEjB,KAAK;MAAEkB,SAAS,EAAElB;IAAM,CAAC,CAAC;IAClE,MAAM;MAAEmB,UAAU;MAAEC;IAAa,CAAC,GAAGhF,aAAa,CAACwC,KAAK,CAAC;IAEzD,MAAM;MAAEyC,iBAAiB,EAAEC,cAAc;MAAEC,WAAW,EAAEC;IAAS,CAAC,GAChElE,iBAAiB,CAAC,CAAC;IAErBb,UAAU,CACR;MACEsC,IAAI;MACJC,QAAQ;MACRT,MAAM,EAAErC,KAAK,CAAC0C,KAAK,EAAE,QAAQ,CAAC;MAC9BK;IACF,CAAC,EACDS,IACF,CAAC;IAED,MAAM+B,SAAS,GAAG1F,QAAQ,CAAsB,MAAM;MACpD,OAAO;QACL;QACAgD,IAAI,EAAEA,IAAI,CAACD,KAAK;QAChBE,QAAQ,EAAEA,QAAQ,CAACF,KAAK;QACxBwB,UAAU,EAAEA,UAAU,CAACxB,KAAK;QAC5ByB,WAAW;QACXC,OAAO;QACP;QACAvB,MAAM,EAAEA,MAAM,CAACH,KAAK;QACpBmB,UAAU;QACV;QACAkB,UAAU;QACVC,YAAY;QACZ;QACAL,YAAY,EAAEA,YAAY,CAACjC,KAAK;QAChCkC,WAAW,EAAEA,WAAW,CAAClC,KAAK;QAC9B6B,UAAU;QACVC,MAAM;QACNC,SAAS;QACTC,YAAY;QACZ;QACAd,KAAK,EAAEU,cAAc,CAAC5B,KAAK;QAC3Be,OAAO,EAAEA,OAAO,CAACf,KAAK;QACtBgB,OAAO,EAAEA,OAAO,CAAChB,KAAK;QACtB;QACAa;MACF,CAAC;IACH,CAAC,CAAC;IAEF3D,OAAO,CAACc,sBAAsB,EAAE;MAC9BmD,UAAU;MACVhB,MAAM;MACNuC;IACF,CAAC,CAAC;IAEFnE,SAAS,CAAC,MAAM;MACd,MAAMqE,mBAAmB,GAAGnE,WAAW,CAACqB,KAAK,EAAEd,cAAc,CAACc,KAAK,CAAC;MACpE,MAAM+C,mBAAmB,GAAGpE,WAAW,CAACqB,KAAK,EAAEjB,cAAc,CAACiB,KAAK,CAAC;MACpE,MAAMgD,WAAW,GAAGrE,WAAW,CAACqB,KAAK,EAAEX,MAAM,CAACW,KAAK,CAAC;MACpD,OAAAiD,YAAA,CAAA5D,MAAA,EAAA6D,WAAA;QAAA,SAEW,CACL,cAAc,EACd;UACE,uBAAuB,EACrB,CAAClD,KAAK,CAACmD,OAAO,IAAInD,KAAK,CAACoB,KAAK,CAACG,MAAM,GAAG,CAAC,IAAI,CAACvB,KAAK,CAACoD;QACvD,CAAC;MACF,GACGJ,WAAW;QAAA,SACR;UACL,uBAAuB,EAAElE,gBAAgB,CAAC8D,QAAQ,CAAC1C,KAAK,EAAEmD,MAAM;QAClE;MAAC;QAGCC,GAAG,EAAEA,CAAA,KAAMzC,KAAK,CAACyC,GAAG,GAAGT,SAAS,CAAC3C,KAAK,CAAC;QACvCqD,OAAO,EAAEA,CAAA,KACP1C,KAAK,CAAC0C,OAAO,GACX1C,KAAK,CAAC0C,OAAO,CAACV,SAAS,CAAC3C,KAAK,CAAC,GAAA+C,YAAA,CAAAO,SAAA,SAAAP,YAAA,CAAA7D,eAAA;UAAA,cAKdyD,SAAS,CAAC3C;QAAK,GADlBW,KAAK,GAInB;QACH4C,OAAO,EAAEA,CAAA,KACP5C,KAAK,CAAC4C,OAAO,GACX5C,KAAK,CAAC4C,OAAO,CAACZ,SAAS,CAAC3C,KAAK,CAAC,GAAA+C,YAAA,CAAAO,SAAA,SAAAP,YAAA;UAAA,OAGhBP;QAAc,IAAAO,YAAA,CAAA/D,cAAA,EAGlB4D,mBAAmB,EADdjC,KAAK,KAIjBA,KAAK,CAAC6C,KAAK,GAAGb,SAAS,CAAC3C,KAAK,CAAC,EAC9B,CAACF,KAAK,CAACJ,gBAAgB,IAAAqD,YAAA,iBAAAA,YAAA,CAAAlE,cAAA,EAAAmE,WAAA;UAAA,OAGbnC;QAAY,GAEbgC,mBAAmB;UAAA,SAChBF,SAAS,CAAC3C,KAAK,CAACkB;QAAK,IAFnBP,KAAK,GAKnB,EACAA,KAAK,CAAC8C,KAAK,GAAGd,SAAS,CAAC3C,KAAK,CAAC,EAC9BW,KAAK,CAAC+C,KAAK,GAAGf,SAAS,CAAC3C,KAAK,CAAC,EAElC;QACH2D,QAAQ,EAAEA,CAAA,KAAMhD,KAAK,CAACgD,QAAQ,GAAGhB,SAAS,CAAC3C,KAAK,CAAC;QACjD4D,MAAM,EAAEA,CAAA,KACNjD,KAAK,CAACiD,MAAM,GACVjD,KAAK,CAACiD,MAAM,CAACjB,SAAS,CAAC3C,KAAK,CAAC,GAAA+C,YAAA,CAAAhE,iBAAA,QAGlB;UACP8E,OAAO,EAAElD,KAAK,CAAC,iBAAiB,CAAC;UACjCmD,MAAM,EAAEnD,KAAK,CAAC,gBAAgB;QAChC,CAAC;MAEJ;IAIX,CAAC,CAAC;IAEF,OAAO;MAAEiB;IAAe,CAAC;EAC3B;AACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"YDataTable.js","names":["Fragment","computed","provide","ref","toRef","pressDataTableExpandProps","provideExpand","createHeader","pressDataTableHeader","pressDataTableItemsProps","useItems","useOptions","createPagination","providePagination","usePaginatedItems","YDataTableInjectionKey","pressDataTableSelectionProps","provideSelection","useSortedItems","createSorting","pressDataTableSortProps","provideSorting","useRender","useResizeObserver","omit","chooseProps","defineComponent","propsFactory","toStyleSizeValue","YDataTableBody","pressYDataTableBodyProps","YDataTableControl","pressYDataTableControlPropsOptions","YDataTableHead","pressYDataTableHeadProps","YDataTableLayer","YTable","pressYTableProps","pressDataTableProps","width","String","Number","search","hideDefaultTbody","Boolean","YDataTable","name","props","emits","value","page","pageSize","sortBy","options","expanded","click:row","e","scroll","setup","_ref","slots","emit","TableBodyRef","multiSort","columns","headers","enableSelect","items","toggleSort","total","length","startIndex","endIndex","pageLength","setPageSize","setPage","sortedItems","paginatedItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","isExpanded","toggleExpand","resizeObservedRef","headObserveRef","contentRect","headRect","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","paginationProps","prepend","append"],"sources":["../../../src/components/table/YDataTable.tsx"],"sourcesContent":["import { Fragment, type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport {\n pressDataTableExpandProps,\n provideExpand,\n} from '@/components/table/composables/expand';\nimport {\n createHeader,\n pressDataTableHeader,\n} from '@/components/table/composables/header';\nimport {\n pressDataTableItemsProps,\n useItems,\n} from '@/components/table/composables/items';\nimport { useOptions } from '@/components/table/composables/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n usePaginatedItems,\n} from '@/components/table/composables/pagination';\nimport { YDataTableInjectionKey } from '@/components/table/composables/provides';\nimport {\n pressDataTableSelectionProps,\n provideSelection,\n} from '@/components/table/composables/selection';\nimport { useSortedItems } from '@/components/table/composables/sorted-items';\nimport {\n createSorting,\n pressDataTableSortProps,\n provideSorting,\n} from '@/components/table/composables/sorting';\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { omit } from '@/util';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YDataTableBody, pressYDataTableBodyProps } from './YDataTableBody';\nimport {\n YDataTableControl,\n pressYDataTableControlPropsOptions,\n} from './YDataTableControl';\nimport { YDataTableHead, pressYDataTableHeadProps } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable, pressYTableProps } from './YTable';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableProps = propsFactory(\n {\n ...pressYDataTableBodyProps(),\n width: [String, Number] as PropType<string | number>,\n search: String as PropType<string>,\n hideDefaultTbody: Boolean,\n ...pressDataTableHeader(),\n ...pressDataTableItemsProps(),\n ...pressDataTableSortProps(),\n ...pressDataTableSelectionProps(),\n ...pressDataTableExpandProps(),\n ...pressYDataTableHeadProps(),\n ...pressYTableProps(),\n },\n 'DataTable',\n);\n\nexport const YDataTable = defineComponent({\n name: 'YDataTable',\n props: {\n ...omit(pressYDataTableControlPropsOptions(), [\n 'setPage',\n 'setPageSize',\n 'pageLength',\n ]),\n ...pressDataTableProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (expanded: any[]) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n scroll: (e: Event) => true,\n },\n setup(props, { slots, emit }) {\n const TableBodyRef = ref();\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const total = computed(() => items.value.length);\n const { startIndex, endIndex, pageLength, setPageSize, setPage } =\n providePagination({\n page,\n pageSize,\n total,\n });\n const { sortedItems } = useSortedItems(props, items, sortBy);\n const { paginatedItems } = usePaginatedItems({\n items: sortedItems,\n startIndex,\n endIndex,\n pageSize,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n const { isExpanded, toggleExpand } = provideExpand(props);\n\n const { resizeObservedRef: headObserveRef, contentRect: headRect } =\n useResizeObserver();\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // expand\n isExpanded,\n toggleExpand,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n // matrix\n items: paginatedItems.value,\n columns: columns.value,\n headers: headers.value,\n //\n TableBodyRef,\n };\n });\n\n provide(YDataTableInjectionKey, {\n toggleSort,\n sortBy,\n headRect,\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer\n v-slots={slots}\n slot-props={slotProps.value}\n ></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <Fragment>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n {!props.hideDefaultTbody && (\n <tbody>\n <YDataTableBody\n ref={TableBodyRef}\n v-slots={slots}\n {...yDataTableBodyProps}\n items={slotProps.value.items}\n ></YDataTableBody>\n </tbody>\n )}\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </Fragment>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n {...chooseProps(slotProps.value, YDataTableControl.props)}\n paginationProps={props.paginationProps}\n v-slots={{\n prepend: slots['control.prepend'],\n append: slots['control.append'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n\n return { paginatedItems };\n },\n});\n\nexport type YDataTable = InstanceType<typeof YDataTable>;\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
1
|
+
import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
2
|
+
import { pressDataTablePaginationProps } from "./composables/pagination.js";
|
|
2
3
|
import { useRender } from "../../composables/component.js";
|
|
3
4
|
import { propsFactory } from "../../util/index.js";
|
|
4
5
|
import { defineComponent } from "../../util/component/index.js";
|
|
@@ -6,12 +7,14 @@ import { YButton } from "../button/index.js";
|
|
|
6
7
|
import { YFieldInput } from "../field-input/index.js";
|
|
7
8
|
import { YIconExpand, YIconPageControl } from "../icons/index.js";
|
|
8
9
|
import { YPagination } from "../pagination/index.js";
|
|
9
|
-
import { pressDataTablePaginationProps } from "./composables/pagination.js";
|
|
10
10
|
import "./YDataTableControl.scss";
|
|
11
11
|
export const pressYDataTableControlPropsOptions = propsFactory({
|
|
12
12
|
pageLength: Number,
|
|
13
13
|
setPageSize: Function,
|
|
14
14
|
setPage: Function,
|
|
15
|
+
paginationProps: {
|
|
16
|
+
type: Object
|
|
17
|
+
},
|
|
15
18
|
...pressDataTablePaginationProps()
|
|
16
19
|
}, 'YDataTableControl');
|
|
17
20
|
export const YDataTableControl = defineComponent({
|
|
@@ -34,12 +37,11 @@ export const YDataTableControl = defineComponent({
|
|
|
34
37
|
"class": "y-data-table-control__start"
|
|
35
38
|
}, null), _createVNode("div", {
|
|
36
39
|
"class": "y-data-table-control__end"
|
|
37
|
-
}, [_createVNode(YPagination, {
|
|
40
|
+
}, [_createVNode(YPagination, _mergeProps(props.paginationProps, {
|
|
38
41
|
"model-value": props.page,
|
|
39
42
|
"onUpdate:modelValue": props.setPage,
|
|
40
|
-
"length": props.pageLength
|
|
41
|
-
|
|
42
|
-
}, null)])]), slots.append?.(props)]);
|
|
43
|
+
"length": props.pageLength
|
|
44
|
+
}), null)])]), slots.append?.(props)]);
|
|
43
45
|
});
|
|
44
46
|
}
|
|
45
47
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YDataTableControl.js","names":["useRender","propsFactory","defineComponent","YButton","YFieldInput","YIconExpand","YIconPageControl","YPagination","
|
|
1
|
+
{"version":3,"file":"YDataTableControl.js","names":["pressDataTablePaginationProps","useRender","propsFactory","defineComponent","YButton","YFieldInput","YIconExpand","YIconPageControl","YPagination","pressYDataTableControlPropsOptions","pageLength","Number","setPageSize","Function","setPage","paginationProps","type","Object","YDataTableControl","name","components","props","setup","_ref","slots","_createVNode","prepend","default","_Fragment","_mergeProps","page","append"],"sources":["../../../src/components/table/YDataTableControl.tsx"],"sourcesContent":["import { type PropType } from 'vue';\n\nimport { pressDataTablePaginationProps } from '@/components/table/composables/pagination';\nimport { useRender } from '@/composables/component';\nimport { propsFactory } from '@/util';\nimport { defineComponent } from '@/util/component';\n\nimport { YButton } from '../button';\nimport { YFieldInput } from '../field-input';\nimport { YIconExpand, YIconPageControl } from '../icons';\nimport { YPagination } from '../pagination';\n\nimport './YDataTableControl.scss';\n\nexport const pressYDataTableControlPropsOptions = propsFactory(\n {\n pageLength: Number as PropType<number>,\n setPageSize: Function as PropType<(pageSize: number) => void>,\n setPage: Function as PropType<(page: number) => void>,\n paginationProps: {\n type: Object,\n },\n ...pressDataTablePaginationProps(),\n },\n 'YDataTableControl',\n);\n\nexport const YDataTableControl = defineComponent({\n name: 'YDataTableControl',\n components: {\n YButton,\n YIconExpand,\n YFieldInput,\n YIconPageControl,\n },\n props: pressYDataTableControlPropsOptions(),\n setup(props, { slots }) {\n useRender(() => {\n return (\n <footer class={['y-data-table-control']}>\n {slots.prepend?.(props)}\n {slots.default ? (\n slots.default()\n ) : (\n <>\n <div class=\"y-data-table-control__start\"></div>\n <div class=\"y-data-table-control__end\">\n <YPagination\n {...props.paginationProps}\n model-value={props.page}\n onUpdate:modelValue={props.setPage}\n length={props.pageLength}\n ></YPagination>\n </div>\n </>\n )}\n {slots.append?.(props)}\n </footer>\n );\n });\n },\n});\n\nexport type YDataTableControl = InstanceType<typeof YDataTableControl>;\n"],"mappings":";SAESA,6BAA6B;AAAA,SAC7BC,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,eAAe;AAAA,SAEfC,OAAO;AAAA,SACPC,WAAW;AAAA,SACXC,WAAW,EAAEC,gBAAgB;AAAA,SAC7BC,WAAW;AAEpB;AAEA,OAAO,MAAMC,kCAAkC,GAAGP,YAAY,CAC5D;EACEQ,UAAU,EAAEC,MAA0B;EACtCC,WAAW,EAAEC,QAAgD;EAC7DC,OAAO,EAAED,QAA4C;EACrDE,eAAe,EAAE;IACfC,IAAI,EAAEC;EACR,CAAC;EACD,GAAGjB,6BAA6B,CAAC;AACnC,CAAC,EACD,mBACF,CAAC;AAED,OAAO,MAAMkB,iBAAiB,GAAGf,eAAe,CAAC;EAC/CgB,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVhB,OAAO;IACPE,WAAW;IACXD,WAAW;IACXE;EACF,CAAC;EACDc,KAAK,EAAEZ,kCAAkC,CAAC,CAAC;EAC3Ca,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBtB,SAAS,CAAC,MAAM;MACd,OAAAwB,YAAA;QAAA,SACiB,CAAC,sBAAsB;MAAC,IACpCD,KAAK,CAACE,OAAO,GAAGL,KAAK,CAAC,EACtBG,KAAK,CAACG,OAAO,GACZH,KAAK,CAACG,OAAO,CAAC,CAAC,GAAAF,YAAA,CAAAG,SAAA,SAAAH,YAAA;QAAA;MAAA,UAAAA,YAAA;QAAA;MAAA,IAAAA,YAAA,CAAAjB,WAAA,EAAAqB,WAAA,CAMLR,KAAK,CAACN,eAAe;QAAA,eACZM,KAAK,CAACS,IAAI;QAAA,uBACFT,KAAK,CAACP,OAAO;QAAA,UAC1BO,KAAK,CAACX;MAAU,aAI/B,EACAc,KAAK,CAACO,MAAM,GAAGV,KAAK,CAAC;IAG5B,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { mergeProps as _mergeProps, Fragment as _Fragment, createVNode as _createVNode, resolveDirective as _resolveDirective } from "vue";
|
|
2
|
-
import { computed, provide, ref, toRef
|
|
2
|
+
import { Fragment, computed, provide, ref, toRef } from 'vue';
|
|
3
3
|
import { provideExpand } from "./composables/expand.js";
|
|
4
4
|
import { YDataTableInjectionKey } from "./composables/provides.js";
|
|
5
5
|
import { useRender } from "../../composables/component.js";
|
|
6
6
|
import { useResizeObserver } from "../../composables/resize-observer.js";
|
|
7
|
+
import { omit } from "../../util/common.js";
|
|
7
8
|
import { chooseProps, defineComponent, propsFactory } from "../../util/component/index.js";
|
|
8
9
|
import { debounce } from "../../util/debounce.js";
|
|
9
10
|
import { toStyleSizeValue } from "../../util/ui.js";
|
|
10
11
|
import { pressDataTableProps } from "./YDataTable.js";
|
|
11
12
|
import { YDataTableBody } from "./YDataTableBody.js";
|
|
12
|
-
import { YDataTableControl } from "./YDataTableControl.js";
|
|
13
|
+
import { YDataTableControl, pressYDataTableControlPropsOptions } from "./YDataTableControl.js";
|
|
13
14
|
import { YDataTableHead } from "./YDataTableHead.js";
|
|
14
15
|
import { YDataTableLayer } from "./YDataTableLayer.js";
|
|
15
16
|
import { YTable } from "./YTable.js";
|
|
16
17
|
import { createHeader } from "./composables/header.js";
|
|
17
18
|
import { useItems } from "./composables/items.js";
|
|
18
19
|
import { useOptions } from "./composables/options.js";
|
|
19
|
-
import { createPagination,
|
|
20
|
+
import { createPagination, providePagination } from "./composables/pagination.js";
|
|
20
21
|
import { provideSelection } from "./composables/selection.js";
|
|
21
22
|
import { createSorting, provideSorting } from "./composables/sorting.js";
|
|
22
23
|
export const pressDataTableServerProps = propsFactory({
|
|
@@ -24,7 +25,7 @@ export const pressDataTableServerProps = propsFactory({
|
|
|
24
25
|
type: [Number, String],
|
|
25
26
|
required: true
|
|
26
27
|
},
|
|
27
|
-
...
|
|
28
|
+
...omit(pressYDataTableControlPropsOptions(), ['setPage', 'setPageSize', 'pageLength']),
|
|
28
29
|
...pressDataTableProps()
|
|
29
30
|
}, 'YDataTableServer');
|
|
30
31
|
export const YDataTableServer = defineComponent({
|
|
@@ -178,7 +179,9 @@ export const YDataTableServer = defineComponent({
|
|
|
178
179
|
"items": items.value
|
|
179
180
|
}), slots)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
|
|
180
181
|
trailing: () => slots.trailing?.(slotProps.value),
|
|
181
|
-
bottom: () => slots.bottom ? slots.bottom(slotProps.value) : _createVNode(YDataTableControl,
|
|
182
|
+
bottom: () => slots.bottom ? slots.bottom(slotProps.value) : _createVNode(YDataTableControl, _mergeProps(chooseProps(slotProps.value, YDataTableControl.props), {
|
|
183
|
+
"paginationProps": props.paginationProps
|
|
184
|
+
}), {
|
|
182
185
|
prepend: slots['control.prepend']
|
|
183
186
|
})
|
|
184
187
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YDataTableServer.js","names":["computed","provide","ref","toRef","Fragment","provideExpand","YDataTableInjectionKey","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","debounce","toStyleSizeValue","pressDataTableProps","YDataTableBody","YDataTableControl","YDataTableHead","YDataTableLayer","YTable","createHeader","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","provideSelection","createSorting","provideSorting","pressDataTableServerProps","total","type","Number","String","required","YDataTableServer","name","components","props","emits","value","page","pageSize","sortBy","options","expanded","click:row","e","setup","_ref","slots","emit","TableBodyRef","multiSort","parseInt","columns","headers","enableSelect","items","toggleSort","pageLength","setPageSize","setPage","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","isExpanded","toggleExpand","headRect","debounceMeasureHead","measureHead","resizeObservedRef","headObserveRef","entries","search","slotProps","contentRect","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","length","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend"],"sources":["../../../src/components/table/YDataTableServer.tsx"],"sourcesContent":["import { type PropType, computed, provide, ref, toRef, Fragment } from 'vue';\n\nimport { provideExpand } from '@/components/table/composables/expand';\nimport { YDataTableInjectionKey } from '@/components/table/composables/provides';\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { debounce } from '@/util/debounce';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { pressDataTableProps } from './YDataTable';\nimport { YDataTableBody } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable } from './YTable';\nimport { createHeader } from './composables/header';\nimport { useItems } from './composables/items';\nimport { useOptions } from './composables/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n} from './composables/pagination';\nimport { provideSelection } from './composables/selection';\nimport { createSorting, provideSorting } from './composables/sorting';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableServerProps = propsFactory(\n {\n total: {\n type: [Number, String] as PropType<number | string>,\n required: true,\n },\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\n },\n 'YDataTableServer',\n);\n\nexport const YDataTableServer = defineComponent({\n name: 'YDataTableServer',\n components: {\n YTable,\n YDataTableLayer,\n YDataTableHead,\n YDataTableBody,\n YDataTableControl,\n },\n props: {\n ...pressDataTableServerProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (expanded: any[]) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n },\n setup(props, { slots, emit }) {\n const TableBodyRef = ref();\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const total = computed(() => parseInt(props.total as string));\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const { pageLength, setPageSize, setPage } = providePagination({\n page,\n pageSize,\n total,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n const { isExpanded, toggleExpand } = provideExpand(props);\n\n const headRect = ref<DOMRectReadOnly>();\n const debounceMeasureHead = debounce(measureHead, 100);\n const { resizeObservedRef: headObserveRef } = useResizeObserver(\n (entries) => {\n debounceMeasureHead(entries);\n },\n );\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // expand\n isExpanded,\n toggleExpand,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n // matrix\n items: items.value,\n columns: columns.value,\n headers: headers.value,\n //\n TableBodyRef,\n };\n });\n\n function measureHead(entries: ResizeObserverEntry[]) {\n headRect.value = entries?.[0].contentRect;\n }\n\n provide(YDataTableInjectionKey, {\n toggleSort,\n sortBy,\n headRect,\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <Fragment>\n <YDataTableLayer\n v-slots={slots}\n slotProps={slotProps.value}\n ></YDataTableLayer>\n </Fragment>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <Fragment>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n <tbody>\n <YDataTableBody\n ref={TableBodyRef}\n v-slots={slots}\n {...yDataTableBodyProps}\n items={items.value}\n ></YDataTableBody>\n </tbody>\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </Fragment>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n v-slots={{\n prepend: slots['control.prepend'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n },\n});\n\nexport type YDataTableServer = InstanceType<typeof YDataTableServer>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YDataTableServer.js","names":["Fragment","computed","provide","ref","toRef","provideExpand","YDataTableInjectionKey","useRender","useResizeObserver","omit","chooseProps","defineComponent","propsFactory","debounce","toStyleSizeValue","pressDataTableProps","YDataTableBody","YDataTableControl","pressYDataTableControlPropsOptions","YDataTableHead","YDataTableLayer","YTable","createHeader","useItems","useOptions","createPagination","providePagination","provideSelection","createSorting","provideSorting","pressDataTableServerProps","total","type","Number","String","required","YDataTableServer","name","components","props","emits","value","page","pageSize","sortBy","options","expanded","click:row","e","setup","_ref","slots","emit","TableBodyRef","multiSort","parseInt","columns","headers","enableSelect","items","toggleSort","pageLength","setPageSize","setPage","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","isExpanded","toggleExpand","headRect","debounceMeasureHead","measureHead","resizeObservedRef","headObserveRef","entries","search","slotProps","contentRect","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","length","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","paginationProps","prepend"],"sources":["../../../src/components/table/YDataTableServer.tsx"],"sourcesContent":["import { Fragment, type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport { provideExpand } from '@/components/table/composables/expand';\nimport { YDataTableInjectionKey } from '@/components/table/composables/provides';\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { omit } from '@/util/common';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { debounce } from '@/util/debounce';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { pressDataTableProps } from './YDataTable';\nimport { YDataTableBody } from './YDataTableBody';\nimport {\n YDataTableControl,\n pressYDataTableControlPropsOptions,\n} from './YDataTableControl';\nimport { YDataTableHead } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable } from './YTable';\nimport { createHeader } from './composables/header';\nimport { useItems } from './composables/items';\nimport { useOptions } from './composables/options';\nimport { createPagination, providePagination } from './composables/pagination';\nimport { provideSelection } from './composables/selection';\nimport { createSorting, provideSorting } from './composables/sorting';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableServerProps = propsFactory(\n {\n total: {\n type: [Number, String] as PropType<number | string>,\n required: true,\n },\n ...omit(pressYDataTableControlPropsOptions(), [\n 'setPage',\n 'setPageSize',\n 'pageLength',\n ]),\n ...pressDataTableProps(),\n },\n 'YDataTableServer',\n);\n\nexport const YDataTableServer = defineComponent({\n name: 'YDataTableServer',\n components: {\n YTable,\n YDataTableLayer,\n YDataTableHead,\n YDataTableBody,\n YDataTableControl,\n },\n props: {\n ...pressDataTableServerProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (expanded: any[]) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n },\n setup(props, { slots, emit }) {\n const TableBodyRef = ref();\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const total = computed(() => parseInt(props.total as string));\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const { pageLength, setPageSize, setPage } = providePagination({\n page,\n pageSize,\n total,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n const { isExpanded, toggleExpand } = provideExpand(props);\n\n const headRect = ref<DOMRectReadOnly>();\n const debounceMeasureHead = debounce(measureHead, 100);\n const { resizeObservedRef: headObserveRef } = useResizeObserver(\n (entries) => {\n debounceMeasureHead(entries);\n },\n );\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // expand\n isExpanded,\n toggleExpand,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n // matrix\n items: items.value,\n columns: columns.value,\n headers: headers.value,\n //\n TableBodyRef,\n };\n });\n\n function measureHead(entries: ResizeObserverEntry[]) {\n headRect.value = entries?.[0].contentRect;\n }\n\n provide(YDataTableInjectionKey, {\n toggleSort,\n sortBy,\n headRect,\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <Fragment>\n <YDataTableLayer\n v-slots={slots}\n slotProps={slotProps.value}\n ></YDataTableLayer>\n </Fragment>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <Fragment>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n <tbody>\n <YDataTableBody\n ref={TableBodyRef}\n v-slots={slots}\n {...yDataTableBodyProps}\n items={items.value}\n ></YDataTableBody>\n </tbody>\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </Fragment>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n {...chooseProps(slotProps.value, YDataTableControl.props)}\n paginationProps={props.paginationProps}\n v-slots={{\n prepend: slots['control.prepend'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n },\n});\n\nexport type YDataTableServer = InstanceType<typeof YDataTableServer>;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { h } from 'vue';
|
|
2
2
|
import { defineComponent } from "../../util/component/index.js";
|
|
3
|
+
import { escapeRegExp } from "../../util/string.js";
|
|
3
4
|
import "./YTextHighlighter.scss";
|
|
4
5
|
export const YTextHighlighter = defineComponent({
|
|
5
6
|
name: 'YTextHighlighter',
|
|
@@ -26,7 +27,7 @@ export const YTextHighlighter = defineComponent({
|
|
|
26
27
|
if (keyword && text) {
|
|
27
28
|
const split = [];
|
|
28
29
|
let stack = text;
|
|
29
|
-
const keyExp = new RegExp(keyword, this.sensitive ? '' : 'i');
|
|
30
|
+
const keyExp = new RegExp(escapeRegExp(keyword), this.sensitive ? '' : 'i');
|
|
30
31
|
while (stack.length > 0) {
|
|
31
32
|
const index = stack.search(keyExp);
|
|
32
33
|
if (index < 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTextHighlighter.js","names":["h","defineComponent","YTextHighlighter","name","props","text","type","String","keyword","color","sensitive","Boolean","computed","splitText","split","stack","keyExp","RegExp","length","index","search","push","isKeyword","substring","methods","createItem","staticClass","createHighlightKeywordItem","class","style","backgroundColor","createSplitTexts","map","splitItem","render","children"],"sources":["../../../src/components/text-highlighter/YTextHighlighter.ts"],"sourcesContent":["import { type VNode, h } from 'vue';\
|
|
1
|
+
{"version":3,"file":"YTextHighlighter.js","names":["h","defineComponent","escapeRegExp","YTextHighlighter","name","props","text","type","String","keyword","color","sensitive","Boolean","computed","splitText","split","stack","keyExp","RegExp","length","index","search","push","isKeyword","substring","methods","createItem","staticClass","createHighlightKeywordItem","class","style","backgroundColor","createSplitTexts","map","splitItem","render","children"],"sources":["../../../src/components/text-highlighter/YTextHighlighter.ts"],"sourcesContent":["import { type VNode, h } from 'vue';\n\nimport { defineComponent } from '@/util/component';\nimport { escapeRegExp } from '@/util/string';\n\nimport './YTextHighlighter.scss';\n\nexport const YTextHighlighter = defineComponent({\n name: 'YTextHighlighter',\n props: {\n text: {\n type: String,\n },\n keyword: {\n type: String,\n },\n color: {\n type: String,\n },\n sensitive: {\n type: Boolean,\n },\n },\n computed: {\n splitText(): { text: string; isKeyword: boolean }[] {\n const { keyword, text } = this;\n if (keyword && text) {\n const split: { text: string; isKeyword: boolean }[] = [];\n let stack = text;\n const keyExp = new RegExp(\n escapeRegExp(keyword),\n this.sensitive ? '' : 'i',\n );\n while (stack.length > 0) {\n const index = stack.search(keyExp);\n if (index < 0) {\n split.push({ text: stack, isKeyword: false });\n stack = '';\n } else if (index < 1) {\n split.push({\n text: stack.substring(0, keyword.length),\n isKeyword: true,\n });\n stack = stack.substring(keyword.length, stack.length);\n } else {\n split.push({ text: stack.substring(0, index), isKeyword: false });\n split.push({\n text: stack.substring(index, index + keyword.length),\n isKeyword: true,\n });\n stack = stack.substring(index + keyword.length, stack.length);\n }\n }\n return split;\n }\n return [{ text: this.text || '', isKeyword: false }];\n },\n },\n methods: {\n createItem(text: string): VNode {\n return h(\n 'span',\n {\n staticClass: 'y-text-highlighter__item',\n },\n [text],\n );\n },\n createHighlightKeywordItem(text: string): VNode {\n return h(\n 'span',\n {\n staticClass: 'y-text-highlighter__item',\n class: 'y-text-highlighter__item--highlight',\n style: {\n backgroundColor: this.color,\n },\n },\n [text],\n );\n },\n createSplitTexts(): VNode[] {\n return this.splitText.map((splitItem) => {\n if (splitItem.isKeyword) {\n return this.createHighlightKeywordItem(splitItem.text);\n }\n return this.createItem(splitItem.text);\n });\n },\n },\n render(): VNode {\n const children = this.createSplitTexts();\n return h('span', { staticClass: 'y-text-highlighter' }, children);\n },\n});\n\nexport type YTextHighlighter = InstanceType<typeof YTextHighlighter>;\n"],"mappings":"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"}
|
|
@@ -85,7 +85,8 @@ export const YTreeViewNode = defineComponent({
|
|
|
85
85
|
const slotProps = computed(() => {
|
|
86
86
|
return {
|
|
87
87
|
level: props.level,
|
|
88
|
-
imLeaf: imLeaf.value
|
|
88
|
+
imLeaf: imLeaf.value,
|
|
89
|
+
toggleActive
|
|
89
90
|
};
|
|
90
91
|
});
|
|
91
92
|
const searchLoading = computed(() => {
|
|
@@ -96,12 +97,15 @@ export const YTreeViewNode = defineComponent({
|
|
|
96
97
|
return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));
|
|
97
98
|
});
|
|
98
99
|
});
|
|
99
|
-
function
|
|
100
|
+
function toggleActive(e) {
|
|
100
101
|
const to = !active.value;
|
|
101
102
|
active.value = to;
|
|
102
103
|
treeView.updateActive(myKey.value, to, e);
|
|
103
104
|
treeView.emitActive();
|
|
104
105
|
}
|
|
106
|
+
function onClick(e) {
|
|
107
|
+
toggleActive(e);
|
|
108
|
+
}
|
|
105
109
|
function onClickExpand(e) {
|
|
106
110
|
e.stopPropagation();
|
|
107
111
|
const to = !expanded.value;
|
|
@@ -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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style-color.js","names":["computed","colorRgb","isColorValue","styleColorPropsOptions","color","String","background","backgroundOpacity","type","Number","
|
|
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":"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,SAEZC,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,YAAY,GAAGhB,MAAM,CAACiB,UAAU,GAAI,IAAGjB,MAAM,CAACiB,UAAW,EAAC,GAAG,EAAE;IACrE,MAAMC,KAAK,GAAG,EAAE;IAChBA,KAAK,CAACC,IAAI,CACR,GAAGtC,QAAQ,CAAC,OAAO,EAAEC,YAAY,CAACgC,eAAe,CAACN,KAAK,EAAE,SAAS,CAAC,CACrE,CAAC;IACD,KAAK,MAAM,CAACY,QAAQ,EAAEC,SAAS,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACZ,cAAc,CAACH,KAAK,CAAC,EAAE;MACxE,MAAM;QAAEgB,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,IAAIzB,MAAM,CAACO,KAAK,KAAK,MAAM,EAAE;QAC3BU,KAAK,CAACC,IAAI,CACR,GAAGtC,QAAQ,CACR,iCAAgC+C,WAAY,GAAE,EAC/C/C,QAAQ,CACL,GAAEmC,YAAa,mCAAkCY,WAAY,WAAUR,QAAS,IAAG,EACpFtC,YAAY,CAAC6C,OAAO,EAAE,OAAO,CAC/B,CACF,CACF,CAAC;MACH,CAAC,MAAM;QACLT,KAAK,CAACC,IAAI,CACR,GAAGtC,QAAQ,CACR,GAAEmC,YAAa,uBAAsBY,WAAY,WAAUA,WAAY,WAAUR,QAAS,IAAG,EAC9FtC,YAAY,CAAC6C,OAAO,EAAE,OAAO,CAC/B,CACF,CAAC;MACH;MAEAT,KAAK,CAACC,IAAI,CACR,GAAGtC,QAAQ,CACR,GAAEmC,YAAa,cAAaI,QAAS,EAAC,EACvCtC,YAAY,CAAC6C,OAAO,EAAE,OAAO,CAC/B,CACF,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,EAAEvD,cAAc,CAAC;IAEtC,IAAIwD,OAAO,GAAGC,QAAQ,CAACC,cAAc,CACnC,sBAAsB,GACnB,GAAEnC,MAAM,CAACiB,UAAU,GAAG,IAAI,GAAGjB,MAAM,CAACiB,UAAU,GAAG,EAAG,EACzD,CAAC;IAEDzC,KAAK,CAACuC,MAAM,EAAEqB,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,GACH,sBAAsB,GACrB,GAAEzC,MAAM,CAACiB,UAAU,GAAG,IAAI,GAAGjB,MAAM,CAACiB,UAAU,GAAG,EAAG,EAAC;QACxD,IAAInB,OAAO,EAAE4C,QAAQ,EAAEJ,EAAE,CAACK,YAAY,CAAC,OAAO,EAAE7C,OAAO,CAAC4C,QAAQ,CAAC;QACjET,OAAO,GAAGK,EAAE;QACZJ,QAAQ,CAACU,IAAI,CAACC,WAAW,CAACZ,OAAO,CAAC;MACpC;MACA,IAAIA,OAAO,EAAE;QACXA,OAAO,CAACa,SAAS,GAAG/B,MAAM,CAACP,KAAK;MAClC;IACF;EACF;EAEA,SAASuC,SAASA,CAACC,MAAW,EAAE;IAC9B5C,iBAAiB,CAACI,KAAK,GAAGb,mBAAmB,CAAC,CAAC;IAC/C,IAAIS,iBAAiB,CAACI,KAAK,EAAE;MAC3B,MAAMyC,GAAG,GAAGzD,MAAM,CAACC,UAAU,CAAC,8BAA8B,CAAC;MAC7Da,eAAe,CAAC2C,GAAG,CAAC;MACpBA,GAAG,CAACC,gBAAgB,CAAC,QAAQ,EAAc5C,eAAe,CAAC;IAC7D;IACA9B,KAAK,CACHa,KAAK,EACJ8D,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;IACD7D,KAAK,CACHyB,MAAM,EACLkD,GAAG,IAAK;MACPH,MAAM,CAACM,IAAI,CAACX,YAAY,CACtB,mBAAmB,EACnBQ,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG1C,kBAAkB,CAACD,KAC/C,CAAC;IACH,CAAC,EACD;MAAE6B,SAAS,EAAE;IAAK,CACpB,CAAC;EACH;EAEA,SAASmB,IAAIA,CAACR,MAAW,EAAE;IACzBjD,eAAe,CAAC0D,GAAG,CAAC,MAAM;MACxBV,SAAS,CAACC,MAAM,CAAC;IACnB,CAAC,CAAC;EACJ;EAEA,MAAMU,YAAY,GAAG3F,QAAQ,CAAC,MAAO,YAAW2C,eAAe,CAACF,KAAM,EAAC,CAAC;EAExE,OAAO;IACLsB,OAAO;IACP0B,IAAI;IACJG,KAAK,EAAE5D,eAAe;IACtB6D,QAAQ,EAAE;MACRC,MAAM,EAAE;QACN5D,MAAM;QACNZ;MACF,CAAC;MACDa,MAAM;MACND,MAAM;MACNZ,KAAK;MACLqB,eAAe;MACfgD,YAAY;MACZ/C,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,SAASyD,aAAaA,CAACC,KAAyB,EAAE;EACvD9F,kBAAkB,CAAC,CAAC;EAEpB,MAAM+F,WAAW,GAAG9F,MAAM,CACxBe,gBAAgB,EAChB,IACF,CAAC;EAED,IAAI,CAAC+E,WAAW,EAAE,MAAM,IAAIC,KAAK,CAAC,kCAAkC,CAAC;EAErE,MAAM9D,OAAO,GAAG6D,WAAW,CAAClD,eAAe;EAE3C,MAAMJ,eAAe,GAAG3C,QAAQ,CAAS,MAAM;IAC7C,IAAIgG,KAAK,CAAC1E,KAAK,EAAE;MACf,MAAM6E,WAAW,GAAG3F,KAAK,CAACyF,WAAW,CAAC3E,KAAK,CAAC;MAC5C,QAAQ0E,KAAK,CAAC1E,KAAK;QACjB,KAAK,OAAO;UACV,OAAO6E,WAAW,GAAG,CAAC,CAAC,IAAI,OAAO;QACpC,KAAK,MAAM;UACT,OAAOA,WAAW,GAAG,CAAC,CAAC,IAAI,MAAM;QACnC;QACA;UACE,OAAOH,KAAK,CAAC1E,KAAK;MACtB;IACF;IACA,OAAOd,KAAK,CAACyF,WAAW,CAACtD,eAAe,CAAC;EAC3C,CAAC,CAAC;EAEF,MAAMgD,YAAY,GAAG3F,QAAQ,CAAC,MAAM;IAClC,OAAQ,YAAW2C,eAAe,CAACF,KAAM,EAAC;EAC5C,CAAC,CAAC;EAEF,MAAM2D,QAA6B,GAAG;IACpC,GAAGH,WAAW;IACdtD,eAAe;IACfgD;EACF,CAAC;EAEDvF,OAAO,CAACc,gBAAgB,EAAEkF,QAAQ,CAAC;EAEnC,OAAOA,QAAQ;AACjB;AAEA,OAAO,SAASC,QAAQA,CAAA,EAAG;EACzBnG,kBAAkB,CAAC,CAAC;EAEpB,MAAMoB,KAAK,GAAGnB,MAAM,CAA6Be,gBAAgB,EAAE,IAAI,CAAC;EAExE,IAAI,CAACI,KAAK,EAAE,MAAM,IAAI4E,KAAK,CAAC,2CAA2C,CAAC;EAExE,OAAO5E,KAAK;AACd"}
|
|
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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"}
|