yuyeon 0.3.6-beta.1 → 0.3.6-beta.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"items.js","names":["computed","ref","getPropertyFromItem","propsFactory","pressDataTableItemsProps","items","type","Array","default","itemKey","String","Function","itemSelectable","returnItem","Boolean","updateItem","props","item","index","columns","rowRef","key","value","selectable","itemColumns","reduce","acc","column","_bindRowRef","el","raw","updateItems","map","useItems"],"sources":["../../../../src/components/table/composables/items.ts"],"sourcesContent":["import { computed, type PropType, type Ref, ref } from 'vue';\r\n\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { DataTableItem, InternalDataTableHeader } from '../types';\r\n\r\nexport type DataTableItemsProps = {\r\n items: any[];\r\n itemKey: any;\r\n itemSelectable: any;\r\n returnItem: boolean;\r\n};\r\n\r\nexport const pressDataTableItemsProps = propsFactory(\r\n {\r\n items: {\r\n type: Array as PropType<DataTableItemsProps['items']>,\r\n default: () => [],\r\n },\r\n itemKey: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: 'id',\r\n },\r\n itemSelectable: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: null,\r\n },\r\n returnItem: Boolean,\r\n },\r\n 'YDataTable--items',\r\n);\r\n\r\nexport function updateItem(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n item: any,\r\n index: number,\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem {\r\n const rowRef = ref<any | null>(null);\r\n const key = getPropertyFromItem(item, props.itemKey);\r\n const value = props.returnItem ? item : key;\r\n let selectable;\r\n if (typeof props.itemSelectable === 'function') {\r\n selectable = !!props.itemSelectable(item);\r\n } else {\r\n selectable = getPropertyFromItem(item, props.itemSelectable, true);\r\n }\r\n\r\n const itemColumns = columns.reduce(\r\n (acc, column) => {\r\n acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);\r\n return acc;\r\n },\r\n {} as Record<string, unknown>,\r\n );\r\n\r\n function _bindRowRef(el: any | null) {\r\n rowRef.value = el;\r\n }\r\n\r\n return {\r\n index,\r\n key,\r\n value,\r\n selectable,\r\n columns: itemColumns,\r\n raw: item,\r\n rowRef,\r\n _bindRowRef,\r\n };\r\n}\r\n\r\nexport function updateItems(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n items: DataTableItemsProps['items'],\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem[] {\r\n return items.map((item, index) => updateItem(props, item, index, columns));\r\n}\r\n\r\nexport function useItems(\r\n props: DataTableItemsProps,\r\n columns: Ref<InternalDataTableHeader[]>,\r\n) {\r\n const items = computed(() => {\r\n return updateItems(props, props.items, columns.value);\r\n });\r\n return { items };\r\n}\r\n"],"mappings":"AAAA,SAASA,QAAQ,EAA2BC,GAAG,QAAQ,KAAK;AAAC,SAEpDC,mBAAmB;AAAA,SACnBC,YAAY;AAWrB,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAClD;EACEE,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA+C;IACrDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE;IACPH,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDI,cAAc,EAAE;IACdN,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAEC;AACd,CAAC,EACD,mBACF,CAAC;AAED,OAAO,SAASC,UAAUA,CACxBC,KAAyC,EACzCC,IAAS,EACTC,KAAa,EACbC,OAAkC,EACnB;EACf,MAAMC,MAAM,GAAGnB,GAAG,CAAa,IAAI,CAAC;EACpC,MAAMoB,GAAG,GAAGnB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACP,OAAO,CAAC;EACpD,MAAMa,KAAK,GAAGN,KAAK,CAACH,UAAU,GAAGI,IAAI,GAAGI,GAAG;EAC3C,IAAIE,UAAU;EACd,IAAI,OAAOP,KAAK,CAACJ,cAAc,KAAK,UAAU,EAAE;IAC9CW,UAAU,GAAG,CAAC,CAACP,KAAK,CAACJ,cAAc,CAACK,IAAI,CAAC;EAC3C,CAAC,MAAM;IACLM,UAAU,GAAGrB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACpE;EAEA,MAAMY,WAAW,GAAGL,OAAO,CAACM,MAAM,CAChC,CAACC,GAAG,EAAEC,MAAM,KAAK;IACfD,GAAG,CAACC,MAAM,CAACN,GAAG,CAAC,GAAGnB,mBAAmB,CAACe,IAAI,EAAEU,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACN,GAAG,CAAC;IACvE,OAAOK,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;EAED,SAASE,WAAWA,CAACC,EAAc,EAAE;IACnCT,MAAM,CAACE,KAAK,GAAGO,EAAE;EACnB;EAEA,OAAO;IACLX,KAAK;IACLG,GAAG;IACHC,KAAK;IACLC,UAAU;IACVJ,OAAO,EAAEK,WAAW;IACpBM,GAAG,EAAEb,IAAI;IACTG,MAAM;IACNQ;EACF,CAAC;AACH;AAEA,OAAO,SAASG,WAAWA,CACzBf,KAAyC,EACzCX,KAAmC,EACnCc,OAAkC,EACjB;EACjB,OAAOd,KAAK,CAAC2B,GAAG,CAAC,CAACf,IAAI,EAAEC,KAAK,KAAKH,UAAU,CAACC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;AAC5E;AAEA,OAAO,SAASc,QAAQA,CACtBjB,KAA0B,EAC1BG,OAAuC,EACvC;EACA,MAAMd,KAAK,GAAGL,QAAQ,CAAC,MAAM;IAC3B,OAAO+B,WAAW,CAACf,KAAK,EAAEA,KAAK,CAACX,KAAK,EAAEc,OAAO,CAACG,KAAK,CAAC;EACvD,CAAC,CAAC;EACF,OAAO;IAAEjB;EAAM,CAAC;AAClB","ignoreList":[]}
1
+ {"version":3,"file":"items.js","names":["computed","ref","getPropertyFromItem","propsFactory","pressDataTableItemsProps","items","type","Array","default","itemKey","String","Function","itemSelectable","returnItem","Boolean","updateItem","props","item","index","columns","rowRef","key","value","selectable","itemColumns","reduce","acc","column","_bindRowRef","el","raw","updateItems","map","useItems"],"sources":["../../../../src/components/table/composables/items.ts"],"sourcesContent":["import { computed, type PropType, type Ref, ref } from 'vue';\r\n\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { DataTableItem, InternalDataTableHeader } from '../types';\r\n\r\nexport type DataTableItemsProps = {\r\n items: any[];\r\n itemKey: any;\r\n itemSelectable: any;\r\n returnItem: boolean;\r\n};\r\n\r\nexport const pressDataTableItemsProps = propsFactory(\r\n {\r\n items: {\r\n type: Array as PropType<DataTableItemsProps['items']>,\r\n default: () => [],\r\n },\r\n itemKey: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: 'id',\r\n },\r\n itemSelectable: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: null,\r\n },\r\n returnItem: Boolean,\r\n },\r\n 'YDataTable--items',\r\n);\r\n\r\nexport function updateItem(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n item: any,\r\n index: number,\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem {\r\n const rowRef = ref<any | null>(null);\r\n const key = getPropertyFromItem(item, props.itemKey);\r\n const value = props.returnItem ? item : key;\r\n let selectable: boolean;\r\n if (typeof props.itemSelectable === 'function') {\r\n selectable = !!props.itemSelectable(item);\r\n } else {\r\n selectable = getPropertyFromItem(item, props.itemSelectable, true);\r\n }\r\n\r\n const itemColumns = columns.reduce(\r\n (acc, column) => {\r\n acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);\r\n return acc;\r\n },\r\n {} as Record<string, unknown>,\r\n );\r\n\r\n function _bindRowRef(el: any | null) {\r\n rowRef.value = el;\r\n }\r\n\r\n return {\r\n index,\r\n key,\r\n value,\r\n selectable,\r\n columns: itemColumns,\r\n raw: item,\r\n rowRef,\r\n _bindRowRef,\r\n };\r\n}\r\n\r\nexport function updateItems(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n items: DataTableItemsProps['items'],\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem[] {\r\n return items.map((item, index) => updateItem(props, item, index, columns));\r\n}\r\n\r\nexport function useItems(\r\n props: DataTableItemsProps,\r\n columns: Ref<InternalDataTableHeader[]>,\r\n) {\r\n const items = computed(() => {\r\n return updateItems(props, props.items, columns.value);\r\n });\r\n return { items };\r\n}\r\n"],"mappings":"AAAA,SAASA,QAAQ,EAA2BC,GAAG,QAAQ,KAAK;AAAC,SAEpDC,mBAAmB;AAAA,SACnBC,YAAY;AAWrB,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAClD;EACEE,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA+C;IACrDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE;IACPH,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDI,cAAc,EAAE;IACdN,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAEC;AACd,CAAC,EACD,mBACF,CAAC;AAED,OAAO,SAASC,UAAUA,CACxBC,KAAyC,EACzCC,IAAS,EACTC,KAAa,EACbC,OAAkC,EACnB;EACf,MAAMC,MAAM,GAAGnB,GAAG,CAAa,IAAI,CAAC;EACpC,MAAMoB,GAAG,GAAGnB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACP,OAAO,CAAC;EACpD,MAAMa,KAAK,GAAGN,KAAK,CAACH,UAAU,GAAGI,IAAI,GAAGI,GAAG;EAC3C,IAAIE,UAAmB;EACvB,IAAI,OAAOP,KAAK,CAACJ,cAAc,KAAK,UAAU,EAAE;IAC9CW,UAAU,GAAG,CAAC,CAACP,KAAK,CAACJ,cAAc,CAACK,IAAI,CAAC;EAC3C,CAAC,MAAM;IACLM,UAAU,GAAGrB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACpE;EAEA,MAAMY,WAAW,GAAGL,OAAO,CAACM,MAAM,CAChC,CAACC,GAAG,EAAEC,MAAM,KAAK;IACfD,GAAG,CAACC,MAAM,CAACN,GAAG,CAAC,GAAGnB,mBAAmB,CAACe,IAAI,EAAEU,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACN,GAAG,CAAC;IACvE,OAAOK,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;EAED,SAASE,WAAWA,CAACC,EAAc,EAAE;IACnCT,MAAM,CAACE,KAAK,GAAGO,EAAE;EACnB;EAEA,OAAO;IACLX,KAAK;IACLG,GAAG;IACHC,KAAK;IACLC,UAAU;IACVJ,OAAO,EAAEK,WAAW;IACpBM,GAAG,EAAEb,IAAI;IACTG,MAAM;IACNQ;EACF,CAAC;AACH;AAEA,OAAO,SAASG,WAAWA,CACzBf,KAAyC,EACzCX,KAAmC,EACnCc,OAAkC,EACjB;EACjB,OAAOd,KAAK,CAAC2B,GAAG,CAAC,CAACf,IAAI,EAAEC,KAAK,KAAKH,UAAU,CAACC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;AAC5E;AAEA,OAAO,SAASc,QAAQA,CACtBjB,KAA0B,EAC1BG,OAAuC,EACvC;EACA,MAAMd,KAAK,GAAGL,QAAQ,CAAC,MAAM;IAC3B,OAAO+B,WAAW,CAACf,KAAK,EAAEA,KAAK,CAACX,KAAK,EAAEc,OAAO,CAACG,KAAK,CAAC;EACvD,CAAC,CAAC;EACF,OAAO;IAAEjB;EAAM,CAAC;AAClB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"selection.js","names":["computed","inject","provide","useModelDuplex","wrapInArray","deepEqual","getPropertyFromItem","propsFactory","pressDataTableSelectionProps","enableSelect","Boolean","selectStrategy","type","String","Object","default","modelValue","Array","itemComparator","Function","singleSelectStrategy","showSelectAll","allSelected","select","_ref","items","value","Set","selectAll","_ref2","selected","pageSelectStrategy","_ref3","pageItems","_ref4","item","add","delete","_ref5","allSelectStrategy","_ref6","allItems","_ref7","_ref8","Y_DATA_TABLE_SELECTION_KEY","Symbol","for","provideSelection","props","_ref9","v","map","find","itemKey","key","values","allSelectables","filter","selectable","pageSelectables","isSelected","every","has","isSomeSelected","some","toggleSelect","selectables","someSelected","data","useSelection","Error","description"],"sources":["../../../../src/components/table/composables/selection.ts"],"sourcesContent":["import {\n type InjectionKey,\n type PropType,\n type Ref,\n computed,\n inject,\n provide,\n} from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { wrapInArray } from '@/util/array';\nimport { deepEqual, getPropertyFromItem } from '@/util/common';\nimport { propsFactory } from '@/util/component';\n\nimport { DataTableProvideSelectionData } from '../types';\nimport { DataTableItemsProps } from './items';\n\nexport interface SelectableItem {\n key: string;\n value: any;\n selectable: boolean;\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean;\n allSelected: (data: {\n allItems: SelectableItem[];\n pageItems: SelectableItem[];\n }) => SelectableItem[];\n select: (data: {\n items: SelectableItem[];\n value: boolean;\n selected: Set<unknown>;\n }) => Set<unknown>;\n selectAll: (data: {\n value: boolean;\n allItems: SelectableItem[];\n pageItems: SelectableItem[];\n selected: Set<unknown>;\n }) => Set<unknown>;\n}\n\nexport const pressDataTableSelectionProps = propsFactory(\n {\n enableSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType<readonly any[]>,\n default: () => [],\n },\n itemComparator: {\n type: [Function, String] as PropType<typeof deepEqual | string>,\n default: () => deepEqual,\n },\n },\n 'YDataTable--selection',\n);\n\ntype DataTableSelectionProps = Pick<DataTableItemsProps, 'itemKey'> & {\n modelValue: readonly any[];\n selectStrategy: 'single' | 'page' | 'all';\n 'onUpdate:modelValue': ((value: any[]) => void) | undefined;\n itemComparator: ((a: any, b: any) => boolean) | string;\n};\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items, value }) => {\n return new Set(value ? [items[0]?.value] : []);\n },\n selectAll: ({ selected }) => selected,\n};\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ pageItems }) => pageItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value);\n else selected.delete(item.value);\n }\n\n return selected;\n },\n selectAll: ({ value, pageItems, selected }) =>\n pageSelectStrategy.select({ items: pageItems, value, selected }),\n};\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value);\n else selected.delete(item.value);\n }\n\n return selected;\n },\n selectAll: ({ value, allItems, selected }) =>\n allSelectStrategy.select({ items: allItems, value, selected }),\n};\n\nexport const Y_DATA_TABLE_SELECTION_KEY: InjectionKey<\n ReturnType<typeof provideSelection>\n> = Symbol.for('yuyeon.data-table.selection');\n\nexport function provideSelection(\n props: DataTableSelectionProps,\n {\n allItems,\n pageItems,\n }: { allItems: Ref<SelectableItem[]>; pageItems: Ref<SelectableItem[]> },\n) {\n const selected = useModelDuplex(\n props,\n 'modelValue',\n props.modelValue,\n (v) => {\n return new Set(\n wrapInArray(v).map((v) => {\n return (\n allItems.value.find((item) => {\n const { itemComparator } = props;\n if (typeof itemComparator === 'function') {\n itemComparator(v, item.value);\n }\n return getPropertyFromItem(v, props.itemKey) === item.key;\n })?.value ?? v\n );\n }),\n );\n },\n (v) => {\n return [...v.values()];\n },\n );\n\n const allSelectables = computed(() =>\n allItems.value.filter((item) => item.selectable),\n );\n\n const pageSelectables = computed(() =>\n pageItems.value.filter((item) => item.selectable),\n );\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') {\n return props.selectStrategy;\n }\n switch (props.selectStrategy) {\n case 'single':\n return singleSelectStrategy;\n case 'all':\n return allSelectStrategy;\n case 'page':\n default:\n return pageSelectStrategy;\n }\n });\n\n function isSelected(items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every((item) => selected.value.has(item.value));\n }\n\n function isSomeSelected(items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some((item) => selected.value.has(item.value));\n }\n\n function select(items: SelectableItem[], value: boolean) {\n selected.value = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n });\n }\n\n function toggleSelect(item: SelectableItem) {\n select([item], !isSelected([item]));\n }\n\n function selectAll(value: boolean) {\n selected.value = selectStrategy.value.selectAll({\n value,\n allItems: allSelectables.value,\n pageItems: pageSelectables.value,\n selected: new Set(selected.value),\n });\n }\n\n const selectables = computed(() => {\n return selectStrategy.value.allSelected({\n allItems: allSelectables.value,\n pageItems: pageSelectables.value,\n });\n });\n\n const someSelected = computed(() => {\n return isSomeSelected(pageSelectables.value);\n });\n\n const allSelected = computed(() => {\n return isSelected(selectables.value);\n });\n\n const data: DataTableProvideSelectionData = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll: selectStrategy.value.showSelectAll,\n selectables,\n };\n\n provide(Y_DATA_TABLE_SELECTION_KEY, data);\n\n return data;\n}\n\nexport function useSelection() {\n const data = inject(Y_DATA_TABLE_SELECTION_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_SELECTION_KEY.description}`);\n }\n\n return data;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"selection.js","names":["computed","inject","provide","useModelDuplex","wrapInArray","deepEqual","getPropertyFromItem","propsFactory","pressDataTableSelectionProps","enableSelect","Boolean","selectStrategy","type","String","Object","default","modelValue","Array","itemComparator","Function","singleSelectStrategy","showSelectAll","allSelected","select","_ref","items","value","Set","selectAll","_ref2","selected","pageSelectStrategy","_ref3","pageItems","_ref4","item","add","delete","_ref5","allSelectStrategy","_ref6","allItems","_ref7","_ref8","Y_DATA_TABLE_SELECTION_KEY","Symbol","for","provideSelection","props","_ref9","v","map","find","itemKey","key","values","allSelectables","filter","selectable","pageSelectables","isSelected","every","has","isSomeSelected","some","toggleSelect","selectables","someSelected","data","useSelection","Error","description"],"sources":["../../../../src/components/table/composables/selection.ts"],"sourcesContent":["import {\n computed,\n type InjectionKey,\n inject,\n type PropType,\n provide,\n type Ref,\n} from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { wrapInArray } from '@/util/array';\nimport { deepEqual, getPropertyFromItem } from '@/util/common';\nimport { propsFactory } from '@/util/component';\n\nimport type { DataTableProvideSelectionData } from '../types';\nimport type { DataTableItemsProps } from './items';\n\nexport interface SelectableItem {\n key: string;\n value: any;\n selectable: boolean;\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean;\n allSelected: (data: {\n allItems: SelectableItem[];\n pageItems: SelectableItem[];\n }) => SelectableItem[];\n select: (data: {\n items: SelectableItem[];\n value: boolean;\n selected: Set<unknown>;\n }) => Set<unknown>;\n selectAll: (data: {\n value: boolean;\n allItems: SelectableItem[];\n pageItems: SelectableItem[];\n selected: Set<unknown>;\n }) => Set<unknown>;\n}\n\nexport const pressDataTableSelectionProps = propsFactory(\n {\n enableSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType<readonly any[]>,\n default: () => [],\n },\n itemComparator: {\n type: [Function, String] as PropType<typeof deepEqual | string>,\n default: () => deepEqual,\n },\n },\n 'YDataTable--selection',\n);\n\ntype DataTableSelectionProps = Pick<DataTableItemsProps, 'itemKey'> & {\n modelValue: readonly any[];\n selectStrategy: 'single' | 'page' | 'all';\n 'onUpdate:modelValue': ((value: any[]) => void) | undefined;\n itemComparator: ((a: any, b: any) => boolean) | string;\n};\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items, value }) => {\n return new Set(value ? [items[0]?.value] : []);\n },\n selectAll: ({ selected }) => selected,\n};\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ pageItems }) => pageItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value);\n else selected.delete(item.value);\n }\n\n return selected;\n },\n selectAll: ({ value, pageItems, selected }) =>\n pageSelectStrategy.select({ items: pageItems, value, selected }),\n};\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value);\n else selected.delete(item.value);\n }\n\n return selected;\n },\n selectAll: ({ value, allItems, selected }) =>\n allSelectStrategy.select({ items: allItems, value, selected }),\n};\n\nexport const Y_DATA_TABLE_SELECTION_KEY: InjectionKey<\n ReturnType<typeof provideSelection>\n> = Symbol.for('yuyeon.data-table.selection');\n\nexport function provideSelection(\n props: DataTableSelectionProps,\n {\n allItems,\n pageItems,\n }: { allItems: Ref<SelectableItem[]>; pageItems: Ref<SelectableItem[]> },\n) {\n const selected = useModelDuplex(\n props,\n 'modelValue',\n props.modelValue,\n (v) => {\n return new Set(\n wrapInArray(v).map((v) => {\n return (\n allItems.value.find((item) => {\n const { itemComparator } = props;\n if (typeof itemComparator === 'function') {\n itemComparator(v, item.value);\n }\n return getPropertyFromItem(v, props.itemKey) === item.key;\n })?.value ?? v\n );\n }),\n );\n },\n (v) => {\n return [...v.values()];\n },\n );\n\n const allSelectables = computed(() =>\n allItems.value.filter((item) => item.selectable),\n );\n\n const pageSelectables = computed(() =>\n pageItems.value.filter((item) => item.selectable),\n );\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') {\n return props.selectStrategy;\n }\n switch (props.selectStrategy) {\n case 'single':\n return singleSelectStrategy;\n case 'all':\n return allSelectStrategy;\n case 'page':\n default:\n return pageSelectStrategy;\n }\n });\n\n function isSelected(items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every((item) => selected.value.has(item.value));\n }\n\n function isSomeSelected(items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some((item) => selected.value.has(item.value));\n }\n\n function select(items: SelectableItem[], value: boolean) {\n selected.value = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n });\n }\n\n function toggleSelect(item: SelectableItem) {\n select([item], !isSelected([item]));\n }\n\n function selectAll(value: boolean) {\n selected.value = selectStrategy.value.selectAll({\n value,\n allItems: allSelectables.value,\n pageItems: pageSelectables.value,\n selected: new Set(selected.value),\n });\n }\n\n const selectables = computed(() => {\n return selectStrategy.value.allSelected({\n allItems: allSelectables.value,\n pageItems: pageSelectables.value,\n });\n });\n\n const someSelected = computed(() => {\n return isSomeSelected(pageSelectables.value);\n });\n\n const allSelected = computed(() => {\n return isSelected(selectables.value);\n });\n\n const data: DataTableProvideSelectionData = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll: selectStrategy.value.showSelectAll,\n selectables,\n };\n\n provide(Y_DATA_TABLE_SELECTION_KEY, data);\n\n return data;\n}\n\nexport function useSelection() {\n const data = inject(Y_DATA_TABLE_SELECTION_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_SELECTION_KEY.description}`);\n }\n\n return data;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { computed, defineComponent, onMounted, ref, shallowRef, watch, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps, createTextVNode as _createTextVNode } from "vue";
1
+ import { computed, defineComponent, onMounted, ref, shallowRef, watch, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps, createTextVNode as _createTextVNode } from 'vue';
2
2
  import { provideTreeView } from "./tree-view.js";
3
3
  import { useRender } from "../../composables/component.js";
4
4
  import { differenceBetween } from "../../util/array.js";
@@ -12,7 +12,7 @@ import { pressYTreeViewNodeProps, YTreeViewNode } from "./YTreeViewNode.js";
12
12
  import "./YTreeView.scss";
13
13
  const treeViewNodeProps = pressYTreeViewNodeProps();
14
14
  export const YTreeView = defineComponent({
15
- name: "YTreeView",
15
+ name: 'YTreeView',
16
16
  props: {
17
17
  expanded: {
18
18
  type: [Array],
@@ -37,7 +37,7 @@ export const YTreeView = defineComponent({
37
37
  },
38
38
  ...treeViewNodeProps
39
39
  },
40
- emits: ["update:expanded", "update:active", "update:selected"],
40
+ emits: ['update:expanded', 'update:active', 'update:selected'],
41
41
  setup(props, _ref) {
42
42
  let {
43
43
  slots,
@@ -65,7 +65,7 @@ export const YTreeView = defineComponent({
65
65
  isExcluded
66
66
  } = provideTreeView(props);
67
67
  function excludeItem(items) {
68
- let search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
68
+ let search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
69
69
  let filter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : filterTreeItem;
70
70
  const excluded = new Set();
71
71
  if (!search) {
@@ -81,7 +81,7 @@ export const YTreeView = defineComponent({
81
81
  return;
82
82
  }
83
83
  for (const item of items) {
84
- filterTreeItems(filter, item, search ?? "", props.itemKey, props.itemText, props.itemChildren, excluded);
84
+ filterTreeItems(filter, item, search ?? '', props.itemKey, props.itemText, props.itemChildren, excluded);
85
85
  }
86
86
  excludedSet.value = excluded;
87
87
  searchLoading.value = false;
@@ -205,7 +205,7 @@ export const YTreeView = defineComponent({
205
205
  filterItemsFn.value(neo, props.search, props.filter);
206
206
  }, {
207
207
  deep: true,
208
- flush: "sync"
208
+ flush: 'sync'
209
209
  });
210
210
 
211
211
  // Provide & Issue
@@ -218,7 +218,7 @@ export const YTreeView = defineComponent({
218
218
  });
219
219
  const classes = computed(() => {
220
220
  return {
221
- "y-tree-view": true
221
+ 'y-tree-view': true
222
222
  };
223
223
  });
224
224
  const styles = computed(() => {
@@ -270,7 +270,7 @@ export const YTreeView = defineComponent({
270
270
  }), slots);
271
271
  }) : _createVNode("div", {
272
272
  "class": "y-tree-view__no-data"
273
- }, [slots["no-data"] ? slots["no-data"]() : _createVNode("span", null, [_createTextVNode("No Data")])])])]);
273
+ }, [slots['no-data'] ? slots['no-data']() : _createVNode("span", null, [_createTextVNode("No Data")])])])]);
274
274
  });
275
275
  return {
276
276
  nodes,
@@ -1 +1 @@
1
- {"version":3,"file":"YTreeView.js","names":["computed","defineComponent","onMounted","ref","shallowRef","watch","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","createTextVNode","_createTextVNode","provideTreeView","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","chooseProps","debounce","YProgressBar","filterTreeItem","filterTreeItems","getKeys","pressYTreeViewNodeProps","YTreeViewNode","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","onlyEventActiveStrategy","selected","returnItem","defaultExpand","String","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","expose","filterItemsFn","excludeItem","expandedCache","nodes","expandedSet","selectedSet","activeSet","searchLoading","excludedSet","issueVnodeState","updateExpanded","updateActive","updateSelected","emitExpanded","emitActive","emitSelected","isExcluded","items","search","arguments","length","undefined","excluded","Set","value","diff","forEach","key","item","itemKey","itemText","itemChildren","expand","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","Object","hasOwn","existNode","vnode","includes","indeterminate","node","childKeys","map","child","add","neo","deep","until","entries","_ref2","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","keys","nodeKey","neoKeys","k","oldSelected","oldActive","clear","flush","renderLeaves","slice","leaf","classes","styles","color","activeColor","activeValue","selectedValue"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n onMounted,\n type PropType,\n type Ref,\n ref,\n shallowRef,\n watch,\n} from \"vue\";\n\nimport { provideTreeView } from \"@/components/tree-view/tree-view\";\nimport { useRender } from \"@/composables/component\";\nimport type { CandidateKey } from \"@/types\";\nimport { differenceBetween } from \"@/util/array\";\nimport { isColorValue } from \"@/util/color\";\nimport { deepEqual, getObjectValueByPath } from \"@/util/common\";\nimport { chooseProps } from \"@/util/component\";\nimport { debounce } from \"@/util/debounce\";\n\nimport { YProgressBar } from \"../progress-bar\";\nimport type { NodeState, TreeviewFilterFn } from \"./types\";\nimport { filterTreeItem, filterTreeItems, getKeys } from \"./util\";\nimport { pressYTreeViewNodeProps, YTreeViewNode } from \"./YTreeViewNode\";\n\nimport \"./YTreeView.scss\";\n\nconst treeViewNodeProps = pressYTreeViewNodeProps();\n\nexport const YTreeView = defineComponent({\n name: \"YTreeView\",\n props: {\n expanded: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n active: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n multipleActive: Boolean,\n onlyEventActiveStrategy: Boolean,\n selected: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n returnItem: Boolean,\n defaultExpand: [Boolean, String, Number],\n filter: Function as PropType<TreeviewFilterFn>,\n searchDebounceWait: {\n type: Number as PropType<number>,\n default: 700,\n },\n ...treeViewNodeProps,\n },\n emits: [\"update:expanded\", \"update:active\", \"update:selected\"],\n setup(props, { slots, expose }) {\n const filterItemsFn = shallowRef(\n debounce(excludeItem, props.searchDebounceWait),\n );\n const expandedCache = ref<CandidateKey[]>([]);\n\n const {\n nodes,\n expanded,\n active,\n selected,\n expandedSet,\n selectedSet,\n activeSet,\n searchLoading,\n excludedSet,\n issueVnodeState,\n updateExpanded,\n updateActive,\n updateSelected,\n emitExpanded,\n emitActive,\n emitSelected,\n isExcluded,\n } = provideTreeView(props);\n\n function excludeItem(items: any[], search = \"\", filter = filterTreeItem) {\n const excluded = new Set<CandidateKey>();\n if (!search) {\n searchLoading.value = false;\n excludedSet.value = excluded;\n const diff = differenceBetween(expandedCache.value, [\n ...expandedSet.value,\n ]);\n diff.forEach((key) => {\n updateExpanded(key, false);\n });\n expandedCache.value.forEach((key) => {\n updateExpanded(key, true);\n });\n return;\n }\n for (const item of items) {\n filterTreeItems(\n filter,\n item,\n search ?? \"\",\n props.itemKey,\n props.itemText,\n props.itemChildren as string,\n excluded,\n );\n }\n excludedSet.value = excluded;\n searchLoading.value = false;\n expand();\n }\n\n watch(\n () => props.search,\n () => {\n searchLoading.value = true;\n filterItemsFn.value(props.items, props.search, props.filter);\n },\n );\n\n // Util Methods\n function getNodeKey(itemOrKey: any) {\n return props.returnItem\n ? getObjectValueByPath(itemOrKey, props.itemKey)\n : itemOrKey;\n }\n\n // State Methods\n function updateNodes(\n items: any[],\n parentKey: CandidateKey | null = null,\n level = 0,\n ) {\n for (const item of items) {\n const key = getObjectValueByPath(item, props.itemKey);\n const children =\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\n const exist = Object.hasOwn(nodes.value, key);\n const existNode = exist\n ? nodes.value[key]\n : {\n vnode: null,\n selected: selected.value?.includes(key) ?? false,\n indeterminate: false,\n active: active.value?.includes(key) ?? false,\n expanded: expanded.value?.includes(key) ?? false,\n };\n const node: NodeState = {\n vnode: existNode.vnode,\n item,\n level,\n parentKey,\n childKeys: children.map((child: any) =>\n getObjectValueByPath(child, props.itemKey),\n ),\n expanded: children.length > 0 && existNode.expanded,\n active: existNode.active,\n indeterminate: existNode.indeterminate,\n selected: existNode.selected,\n };\n\n updateNodes(children, key, level + 1);\n\n nodes.value[key] = node;\n if (nodes.value[key].expanded) {\n expandedSet.value.add(key);\n }\n if (nodes.value[key].selected) {\n selectedSet.value.add(key);\n }\n if (nodes.value[key].active) {\n activeSet.value.add(key);\n }\n issueVnodeState(key);\n }\n }\n\n watch(\n expandedSet,\n (neo) => {\n if (!props.search) {\n expandedCache.value = [...neo];\n }\n },\n { deep: true },\n );\n\n function expand(until: boolean | string | number = true) {\n Object.entries(nodes.value).forEach(([key, node]) => {\n if (until === true || Number(until) >= node.level) {\n updateExpanded(key, true);\n }\n });\n emitExpanded();\n return expandedSet.value;\n }\n\n function stateWatcher(\n value: any[],\n stateSet: Ref<Set<CandidateKey>>,\n updater: (key: CandidateKey, to: boolean) => void,\n emitter: () => void,\n ) {\n const valuesOfKey = props.returnItem\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\n : value;\n const old = [...stateSet.value];\n if (deepEqual(old, valuesOfKey)) {\n return;\n }\n old.forEach((key) => {\n updater(key, false)\n });\n valuesOfKey.forEach((key) => {\n updater(key, true)\n });\n emitter();\n }\n\n watch(expanded, (neo) => {\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\n });\n\n watch(active, (neo) => {\n stateWatcher(neo, activeSet, updateActive, emitActive);\n });\n\n watch(selected, (neo) => {\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\n });\n\n watch(\n () => props.items,\n (neo: any[]) => {\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\n );\n const neoKeys = getKeys(\n neo,\n props.itemKey,\n props.itemChildren as string,\n );\n const diff = differenceBetween(oldKeys, neoKeys);\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\n return;\n }\n diff.forEach((k) => {\n delete nodes.value[k]\n });\n\n // init\n const oldSelected = [...selectedSet.value];\n const oldActive = [...activeSet.value];\n selectedSet.value.clear();\n expandedSet.value.clear();\n activeSet.value.clear();\n updateNodes(neo);\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\n emitSelected();\n }\n if (!deepEqual(oldActive, [...activeSet.value])) {\n emitActive();\n }\n filterItemsFn.value(neo, props.search, props.filter);\n },\n { deep: true, flush: \"sync\" },\n );\n\n // Provide & Issue\n\n updateNodes(props.items);\n\n const renderLeaves = computed(() => {\n return props.items.slice().filter((leaf) => {\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n const classes = computed(() => {\n return {\n \"y-tree-view\": true,\n };\n });\n\n const styles = computed(() => {\n let color = props.activeColor;\n if (props.activeColor && !isColorValue(props.activeColor)) {\n color = `var(--y-theme-${props.activeColor})`;\n }\n return {\n [`--y-tree-view__active-color`]: color,\n };\n });\n\n onMounted(() => {\n if (props.search) {\n searchLoading.value = true;\n excludeItem(props.items, props.search, props.filter);\n }\n\n if (props.defaultExpand != null && props.defaultExpand !== false) {\n expandedCache.value = [...expand(props.defaultExpand)];\n } else {\n expanded.value.forEach((v: any) => {\n updateExpanded(getNodeKey(v), true)\n });\n emitExpanded();\n }\n\n for (const activeValue of props.active.map(getNodeKey)) {\n updateActive(activeValue, true);\n }\n\n for (const selectedValue of props.selected.map(getNodeKey)) {\n updateSelected(selectedValue, true);\n }\n });\n\n expose({\n expand,\n });\n\n useRender(() => {\n return (\n <>\n <div class={classes.value} style={styles.value} role=\"tree\">\n {searchLoading.value && <YProgressBar indeterminate />}\n {renderLeaves.value.length > 0 ? (\n renderLeaves.value.slice().map((leaf) => {\n return (\n <YTreeViewNode\n v-slots={slots}\n key={getObjectValueByPath(leaf, props.itemKey)}\n {...{\n ...chooseProps(props, treeViewNodeProps),\n item: leaf,\n level: 0,\n }}\n ></YTreeViewNode>\n );\n })\n ) : (\n <div class=\"y-tree-view__no-data\">\n {slots[\"no-data\"] ? slots[\"no-data\"]() : <span>No Data</span>}\n </div>\n )}\n </div>\n </>\n );\n });\n\n return {\n nodes,\n expandedSet,\n selectedSet,\n activeSet,\n excludedSet,\n searchLoading,\n expandedCache,\n renderLeaves,\n };\n },\n});\n\nexport type YTreeView = InstanceType<typeof YTreeView>;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"YTreeView.js","names":["computed","defineComponent","onMounted","ref","shallowRef","watch","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","createTextVNode","_createTextVNode","provideTreeView","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","chooseProps","debounce","YProgressBar","filterTreeItem","filterTreeItems","getKeys","pressYTreeViewNodeProps","YTreeViewNode","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","onlyEventActiveStrategy","selected","returnItem","defaultExpand","String","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","expose","filterItemsFn","excludeItem","expandedCache","nodes","expandedSet","selectedSet","activeSet","searchLoading","excludedSet","issueVnodeState","updateExpanded","updateActive","updateSelected","emitExpanded","emitActive","emitSelected","isExcluded","items","search","arguments","length","undefined","excluded","Set","value","diff","forEach","key","item","itemKey","itemText","itemChildren","expand","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","Object","hasOwn","existNode","vnode","includes","indeterminate","node","childKeys","map","child","add","neo","deep","until","entries","_ref2","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","keys","nodeKey","neoKeys","k","oldSelected","oldActive","clear","flush","renderLeaves","slice","leaf","classes","styles","color","activeColor","activeValue","selectedValue"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, type PropType, type Ref, ref, shallowRef, watch } from 'vue';\n\nimport { provideTreeView } from '@/components/tree-view/tree-view';\nimport { useRender } from '@/composables/component';\nimport type { CandidateKey } from '@/types';\nimport { differenceBetween } from '@/util/array';\nimport { isColorValue } from '@/util/color';\nimport { deepEqual, getObjectValueByPath } from '@/util/common';\nimport { chooseProps } from '@/util/component';\nimport { debounce } from '@/util/debounce';\n\nimport { YProgressBar } from '../progress-bar';\nimport type { NodeState, TreeviewFilterFn } from './types';\nimport { filterTreeItem, filterTreeItems, getKeys } from './util';\nimport { pressYTreeViewNodeProps, YTreeViewNode } from './YTreeViewNode';\n\nimport './YTreeView.scss';\n\nconst treeViewNodeProps = pressYTreeViewNodeProps();\n\nexport const YTreeView = defineComponent({\n name: 'YTreeView',\n props: {\n expanded: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n active: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n multipleActive: Boolean,\n onlyEventActiveStrategy: Boolean,\n selected: {\n type: [Array] as PropType<CandidateKey[]>,\n default: () => [],\n },\n returnItem: Boolean,\n defaultExpand: [Boolean, String, Number],\n filter: Function as PropType<TreeviewFilterFn>,\n searchDebounceWait: {\n type: Number as PropType<number>,\n default: 700,\n },\n ...treeViewNodeProps,\n },\n emits: ['update:expanded', 'update:active', 'update:selected'],\n setup(props, { slots, expose }) {\n const filterItemsFn = shallowRef(\n debounce(excludeItem, props.searchDebounceWait),\n );\n const expandedCache = ref<CandidateKey[]>([]);\n\n const {\n nodes,\n expanded,\n active,\n selected,\n expandedSet,\n selectedSet,\n activeSet,\n searchLoading,\n excludedSet,\n issueVnodeState,\n updateExpanded,\n updateActive,\n updateSelected,\n emitExpanded,\n emitActive,\n emitSelected,\n isExcluded,\n } = provideTreeView(props);\n\n function excludeItem(items: any[], search = '', filter = filterTreeItem) {\n const excluded = new Set<CandidateKey>();\n if (!search) {\n searchLoading.value = false;\n excludedSet.value = excluded;\n const diff = differenceBetween(expandedCache.value, [\n ...expandedSet.value,\n ]);\n diff.forEach((key) => {\n updateExpanded(key, false);\n });\n expandedCache.value.forEach((key) => {\n updateExpanded(key, true);\n });\n return;\n }\n for (const item of items) {\n filterTreeItems(\n filter,\n item,\n search ?? '',\n props.itemKey,\n props.itemText,\n props.itemChildren as string,\n excluded,\n );\n }\n excludedSet.value = excluded;\n searchLoading.value = false;\n expand();\n }\n\n watch(\n () => props.search,\n () => {\n searchLoading.value = true;\n filterItemsFn.value(props.items, props.search, props.filter);\n },\n );\n\n // Util Methods\n function getNodeKey(itemOrKey: any) {\n return props.returnItem\n ? getObjectValueByPath(itemOrKey, props.itemKey)\n : itemOrKey;\n }\n\n // State Methods\n function updateNodes(\n items: any[],\n parentKey: CandidateKey | null = null,\n level = 0,\n ) {\n for (const item of items) {\n const key = getObjectValueByPath(item, props.itemKey);\n const children =\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\n const exist = Object.hasOwn(nodes.value, key);\n const existNode = exist\n ? nodes.value[key]\n : {\n vnode: null,\n selected: selected.value?.includes(key) ?? false,\n indeterminate: false,\n active: active.value?.includes(key) ?? false,\n expanded: expanded.value?.includes(key) ?? false,\n };\n const node: NodeState = {\n vnode: existNode.vnode,\n item,\n level,\n parentKey,\n childKeys: children.map((child: any) =>\n getObjectValueByPath(child, props.itemKey),\n ),\n expanded: children.length > 0 && existNode.expanded,\n active: existNode.active,\n indeterminate: existNode.indeterminate,\n selected: existNode.selected,\n };\n\n updateNodes(children, key, level + 1);\n\n nodes.value[key] = node;\n if (nodes.value[key].expanded) {\n expandedSet.value.add(key);\n }\n if (nodes.value[key].selected) {\n selectedSet.value.add(key);\n }\n if (nodes.value[key].active) {\n activeSet.value.add(key);\n }\n issueVnodeState(key);\n }\n }\n\n watch(\n expandedSet,\n (neo) => {\n if (!props.search) {\n expandedCache.value = [...neo];\n }\n },\n { deep: true },\n );\n\n function expand(until: boolean | string | number = true) {\n Object.entries(nodes.value).forEach(([key, node]) => {\n if (until === true || Number(until) >= node.level) {\n updateExpanded(key, true);\n }\n });\n emitExpanded();\n return expandedSet.value;\n }\n\n function stateWatcher(\n value: any[],\n stateSet: Ref<Set<CandidateKey>>,\n updater: (key: CandidateKey, to: boolean) => void,\n emitter: () => void,\n ) {\n const valuesOfKey = props.returnItem\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\n : value;\n const old = [...stateSet.value];\n if (deepEqual(old, valuesOfKey)) {\n return;\n }\n old.forEach((key) => {\n updater(key, false);\n });\n valuesOfKey.forEach((key) => {\n updater(key, true);\n });\n emitter();\n }\n\n watch(expanded, (neo) => {\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\n });\n\n watch(active, (neo) => {\n stateWatcher(neo, activeSet, updateActive, emitActive);\n });\n\n watch(selected, (neo) => {\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\n });\n\n watch(\n () => props.items,\n (neo: any[]) => {\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\n );\n const neoKeys = getKeys(\n neo,\n props.itemKey,\n props.itemChildren as string,\n );\n const diff = differenceBetween(oldKeys, neoKeys);\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\n return;\n }\n diff.forEach((k) => {\n delete nodes.value[k];\n });\n\n // init\n const oldSelected = [...selectedSet.value];\n const oldActive = [...activeSet.value];\n selectedSet.value.clear();\n expandedSet.value.clear();\n activeSet.value.clear();\n updateNodes(neo);\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\n emitSelected();\n }\n if (!deepEqual(oldActive, [...activeSet.value])) {\n emitActive();\n }\n filterItemsFn.value(neo, props.search, props.filter);\n },\n { deep: true, flush: 'sync' },\n );\n\n // Provide & Issue\n\n updateNodes(props.items);\n\n const renderLeaves = computed(() => {\n return props.items.slice().filter((leaf) => {\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n const classes = computed(() => {\n return {\n 'y-tree-view': true,\n };\n });\n\n const styles = computed(() => {\n let color = props.activeColor;\n if (props.activeColor && !isColorValue(props.activeColor)) {\n color = `var(--y-theme-${props.activeColor})`;\n }\n return {\n [`--y-tree-view__active-color`]: color,\n };\n });\n\n onMounted(() => {\n if (props.search) {\n searchLoading.value = true;\n excludeItem(props.items, props.search, props.filter);\n }\n\n if (props.defaultExpand != null && props.defaultExpand !== false) {\n expandedCache.value = [...expand(props.defaultExpand)];\n } else {\n expanded.value.forEach((v: any) => {\n updateExpanded(getNodeKey(v), true);\n });\n emitExpanded();\n }\n\n for (const activeValue of props.active.map(getNodeKey)) {\n updateActive(activeValue, true);\n }\n\n for (const selectedValue of props.selected.map(getNodeKey)) {\n updateSelected(selectedValue, true);\n }\n });\n\n expose({\n expand,\n });\n\n useRender(() => {\n return (\n <>\n <div class={classes.value} style={styles.value} role=\"tree\">\n {searchLoading.value && <YProgressBar indeterminate />}\n {renderLeaves.value.length > 0 ? (\n renderLeaves.value.slice().map((leaf) => {\n return (\n <YTreeViewNode\n v-slots={slots}\n key={getObjectValueByPath(leaf, props.itemKey)}\n {...{\n ...chooseProps(props, treeViewNodeProps),\n item: leaf,\n level: 0,\n }}\n ></YTreeViewNode>\n );\n })\n ) : (\n <div class=\"y-tree-view__no-data\">\n {slots['no-data'] ? slots['no-data']() : <span>No Data</span>}\n </div>\n )}\n </div>\n </>\n );\n });\n\n return {\n nodes,\n expandedSet,\n selectedSet,\n activeSet,\n excludedSet,\n searchLoading,\n expandedCache,\n renderLeaves,\n };\n },\n});\n\nexport type YTreeView = InstanceType<typeof YTreeView>;\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,eAAe,EAAEC,SAAS,EAA2BC,GAAG,EAAEC,UAAU,EAAEC,KAAK,EAAAC,QAAA,IAAAC,SAAA,EAAAC,WAAA,IAAAC,YAAA,EAAAC,UAAA,IAAAC,WAAA,EAAAC,eAAA,IAAAC,gBAAA,QAAQ,KAAK;AAAC,SAEnGC,eAAe;AAAA,SACfC,SAAS;AAAA,SAETC,iBAAiB;AAAA,SACjBC,YAAY;AAAA,SACZC,SAAS,EAAEC,oBAAoB;AAAA,SAC/BC,WAAW;AAAA,SACXC,QAAQ;AAAA,SAERC,YAAY;AAAA,SAEZC,cAAc,EAAEC,eAAe,EAAEC,OAAO;AAAA,SACxCC,uBAAuB,EAAEC,aAAa;AAE/C;AAEA,MAAMC,iBAAiB,GAAGF,uBAAuB,CAAC,CAAC;AAEnD,OAAO,MAAMG,SAAS,GAAG5B,eAAe,CAAC;EACvC6B,IAAI,EAAE,WAAW;EACjBC,KAAK,EAAE;IACLC,QAAQ,EAAE;MACRC,IAAI,EAAE,CAACC,KAAK,CAA6B;MACzCC,OAAO,EAAEA,CAAA,KAAM;IACjB,CAAC;IACDC,MAAM,EAAE;MACNH,IAAI,EAAE,CAACC,KAAK,CAA6B;MACzCC,OAAO,EAAEA,CAAA,KAAM;IACjB,CAAC;IACDE,cAAc,EAAEC,OAAO;IACvBC,uBAAuB,EAAED,OAAO;IAChCE,QAAQ,EAAE;MACRP,IAAI,EAAE,CAACC,KAAK,CAA6B;MACzCC,OAAO,EAAEA,CAAA,KAAM;IACjB,CAAC;IACDM,UAAU,EAAEH,OAAO;IACnBI,aAAa,EAAE,CAACJ,OAAO,EAAEK,MAAM,EAAEC,MAAM,CAAC;IACxCC,MAAM,EAAEC,QAAsC;IAC9CC,kBAAkB,EAAE;MAClBd,IAAI,EAAEW,MAA0B;MAChCT,OAAO,EAAE;IACX,CAAC;IACD,GAAGP;EACL,CAAC;EACDoB,KAAK,EAAE,CAAC,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,CAAC;EAC9DC,KAAKA,CAAClB,KAAK,EAAAmB,IAAA,EAAqB;IAAA,IAAnB;MAAEC,KAAK;MAAEC;IAAO,CAAC,GAAAF,IAAA;IAC5B,MAAMG,aAAa,GAAGjD,UAAU,CAC9BiB,QAAQ,CAACiC,WAAW,EAAEvB,KAAK,CAACgB,kBAAkB,CAChD,CAAC;IACD,MAAMQ,aAAa,GAAGpD,GAAG,CAAiB,EAAE,CAAC;IAE7C,MAAM;MACJqD,KAAK;MACLxB,QAAQ;MACRI,MAAM;MACNI,QAAQ;MACRiB,WAAW;MACXC,WAAW;MACXC,SAAS;MACTC,aAAa;MACbC,WAAW;MACXC,eAAe;MACfC,cAAc;MACdC,YAAY;MACZC,cAAc;MACdC,YAAY;MACZC,UAAU;MACVC,YAAY;MACZC;IACF,CAAC,GAAGvD,eAAe,CAACiB,KAAK,CAAC;IAE1B,SAASuB,WAAWA,CAACgB,KAAY,EAAwC;MAAA,IAAtCC,MAAM,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;MAAA,IAAE3B,MAAM,GAAA2B,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGjD,cAAc;MACrE,MAAMoD,QAAQ,GAAG,IAAIC,GAAG,CAAe,CAAC;MACxC,IAAI,CAACL,MAAM,EAAE;QACXX,aAAa,CAACiB,KAAK,GAAG,KAAK;QAC3BhB,WAAW,CAACgB,KAAK,GAAGF,QAAQ;QAC5B,MAAMG,IAAI,GAAG9D,iBAAiB,CAACuC,aAAa,CAACsB,KAAK,EAAE,CAClD,GAAGpB,WAAW,CAACoB,KAAK,CACrB,CAAC;QACFC,IAAI,CAACC,OAAO,CAAEC,GAAG,IAAK;UACpBjB,cAAc,CAACiB,GAAG,EAAE,KAAK,CAAC;QAC5B,CAAC,CAAC;QACFzB,aAAa,CAACsB,KAAK,CAACE,OAAO,CAAEC,GAAG,IAAK;UACnCjB,cAAc,CAACiB,GAAG,EAAE,IAAI,CAAC;QAC3B,CAAC,CAAC;QACF;MACF;MACA,KAAK,MAAMC,IAAI,IAAIX,KAAK,EAAE;QACxB9C,eAAe,CACbqB,MAAM,EACNoC,IAAI,EACJV,MAAM,IAAI,EAAE,EACZxC,KAAK,CAACmD,OAAO,EACbnD,KAAK,CAACoD,QAAQ,EACdpD,KAAK,CAACqD,YAAY,EAClBT,QACF,CAAC;MACH;MACAd,WAAW,CAACgB,KAAK,GAAGF,QAAQ;MAC5Bf,aAAa,CAACiB,KAAK,GAAG,KAAK;MAC3BQ,MAAM,CAAC,CAAC;IACV;IAEAhF,KAAK,CACH,MAAM0B,KAAK,CAACwC,MAAM,EAClB,MAAM;MACJX,aAAa,CAACiB,KAAK,GAAG,IAAI;MAC1BxB,aAAa,CAACwB,KAAK,CAAC9C,KAAK,CAACuC,KAAK,EAAEvC,KAAK,CAACwC,MAAM,EAAExC,KAAK,CAACc,MAAM,CAAC;IAC9D,CACF,CAAC;;IAED;IACA,SAASyC,UAAUA,CAACC,SAAc,EAAE;MAClC,OAAOxD,KAAK,CAACU,UAAU,GACnBtB,oBAAoB,CAACoE,SAAS,EAAExD,KAAK,CAACmD,OAAO,CAAC,GAC9CK,SAAS;IACf;;IAEA;IACA,SAASC,WAAWA,CAClBlB,KAAY,EAGZ;MAAA,IAFAmB,SAA8B,GAAAjB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MAAA,IACrCkB,KAAK,GAAAlB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;MAET,KAAK,MAAMS,IAAI,IAAIX,KAAK,EAAE;QACxB,MAAMU,GAAG,GAAG7D,oBAAoB,CAAC8D,IAAI,EAAElD,KAAK,CAACmD,OAAO,CAAC;QACrD,MAAMS,QAAQ,GACZxE,oBAAoB,CAAC8D,IAAI,EAAElD,KAAK,CAACqD,YAAsB,CAAC,IAAI,EAAE;QAChE,MAAMQ,KAAK,GAAGC,MAAM,CAACC,MAAM,CAACtC,KAAK,CAACqB,KAAK,EAAEG,GAAG,CAAC;QAC7C,MAAMe,SAAS,GAAGH,KAAK,GACnBpC,KAAK,CAACqB,KAAK,CAACG,GAAG,CAAC,GAChB;UACEgB,KAAK,EAAE,IAAI;UACXxD,QAAQ,EAAEA,QAAQ,CAACqC,KAAK,EAAEoB,QAAQ,CAACjB,GAAG,CAAC,IAAI,KAAK;UAChDkB,aAAa,EAAE,KAAK;UACpB9D,MAAM,EAAEA,MAAM,CAACyC,KAAK,EAAEoB,QAAQ,CAACjB,GAAG,CAAC,IAAI,KAAK;UAC5ChD,QAAQ,EAAEA,QAAQ,CAAC6C,KAAK,EAAEoB,QAAQ,CAACjB,GAAG,CAAC,IAAI;QAC7C,CAAC;QACL,MAAMmB,IAAe,GAAG;UACtBH,KAAK,EAAED,SAAS,CAACC,KAAK;UACtBf,IAAI;UACJS,KAAK;UACLD,SAAS;UACTW,SAAS,EAAET,QAAQ,CAACU,GAAG,CAAEC,KAAU,IACjCnF,oBAAoB,CAACmF,KAAK,EAAEvE,KAAK,CAACmD,OAAO,CAC3C,CAAC;UACDlD,QAAQ,EAAE2D,QAAQ,CAAClB,MAAM,GAAG,CAAC,IAAIsB,SAAS,CAAC/D,QAAQ;UACnDI,MAAM,EAAE2D,SAAS,CAAC3D,MAAM;UACxB8D,aAAa,EAAEH,SAAS,CAACG,aAAa;UACtC1D,QAAQ,EAAEuD,SAAS,CAACvD;QACtB,CAAC;QAEDgD,WAAW,CAACG,QAAQ,EAAEX,GAAG,EAAEU,KAAK,GAAG,CAAC,CAAC;QAErClC,KAAK,CAACqB,KAAK,CAACG,GAAG,CAAC,GAAGmB,IAAI;QACvB,IAAI3C,KAAK,CAACqB,KAAK,CAACG,GAAG,CAAC,CAAChD,QAAQ,EAAE;UAC7ByB,WAAW,CAACoB,KAAK,CAAC0B,GAAG,CAACvB,GAAG,CAAC;QAC5B;QACA,IAAIxB,KAAK,CAACqB,KAAK,CAACG,GAAG,CAAC,CAACxC,QAAQ,EAAE;UAC7BkB,WAAW,CAACmB,KAAK,CAAC0B,GAAG,CAACvB,GAAG,CAAC;QAC5B;QACA,IAAIxB,KAAK,CAACqB,KAAK,CAACG,GAAG,CAAC,CAAC5C,MAAM,EAAE;UAC3BuB,SAAS,CAACkB,KAAK,CAAC0B,GAAG,CAACvB,GAAG,CAAC;QAC1B;QACAlB,eAAe,CAACkB,GAAG,CAAC;MACtB;IACF;IAEA3E,KAAK,CACHoD,WAAW,EACV+C,GAAG,IAAK;MACP,IAAI,CAACzE,KAAK,CAACwC,MAAM,EAAE;QACjBhB,aAAa,CAACsB,KAAK,GAAG,CAAC,GAAG2B,GAAG,CAAC;MAChC;IACF,CAAC,EACD;MAAEC,IAAI,EAAE;IAAK,CACf,CAAC;IAED,SAASpB,MAAMA,CAAA,EAA0C;MAAA,IAAzCqB,KAAgC,GAAAlC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MACrDqB,MAAM,CAACc,OAAO,CAACnD,KAAK,CAACqB,KAAK,CAAC,CAACE,OAAO,CAAC6B,KAAA,IAAiB;QAAA,IAAhB,CAAC5B,GAAG,EAAEmB,IAAI,CAAC,GAAAS,KAAA;QAC9C,IAAIF,KAAK,KAAK,IAAI,IAAI9D,MAAM,CAAC8D,KAAK,CAAC,IAAIP,IAAI,CAACT,KAAK,EAAE;UACjD3B,cAAc,CAACiB,GAAG,EAAE,IAAI,CAAC;QAC3B;MACF,CAAC,CAAC;MACFd,YAAY,CAAC,CAAC;MACd,OAAOT,WAAW,CAACoB,KAAK;IAC1B;IAEA,SAASgC,YAAYA,CACnBhC,KAAY,EACZiC,QAAgC,EAChCC,OAAiD,EACjDC,OAAmB,EACnB;MACA,MAAMC,WAAW,GAAGlF,KAAK,CAACU,UAAU,GAChCoC,KAAK,CAACwB,GAAG,CAAEa,CAAC,IAAK/F,oBAAoB,CAAC+F,CAAC,EAAEnF,KAAK,CAACmD,OAAO,CAAC,CAAC,GACxDL,KAAK;MACT,MAAMsC,GAAG,GAAG,CAAC,GAAGL,QAAQ,CAACjC,KAAK,CAAC;MAC/B,IAAI3D,SAAS,CAACiG,GAAG,EAAEF,WAAW,CAAC,EAAE;QAC/B;MACF;MACAE,GAAG,CAACpC,OAAO,CAAEC,GAAG,IAAK;QACnB+B,OAAO,CAAC/B,GAAG,EAAE,KAAK,CAAC;MACrB,CAAC,CAAC;MACFiC,WAAW,CAAClC,OAAO,CAAEC,GAAG,IAAK;QAC3B+B,OAAO,CAAC/B,GAAG,EAAE,IAAI,CAAC;MACpB,CAAC,CAAC;MACFgC,OAAO,CAAC,CAAC;IACX;IAEA3G,KAAK,CAAC2B,QAAQ,EAAGwE,GAAG,IAAK;MACvBK,YAAY,CAACL,GAAG,EAAE/C,WAAW,EAAEM,cAAc,EAAEG,YAAY,CAAC;IAC9D,CAAC,CAAC;IAEF7D,KAAK,CAAC+B,MAAM,EAAGoE,GAAG,IAAK;MACrBK,YAAY,CAACL,GAAG,EAAE7C,SAAS,EAAEK,YAAY,EAAEG,UAAU,CAAC;IACxD,CAAC,CAAC;IAEF9D,KAAK,CAACmC,QAAQ,EAAGgE,GAAG,IAAK;MACvBK,YAAY,CAACL,GAAG,EAAE9C,WAAW,EAAEO,cAAc,EAAEG,YAAY,CAAC;IAC9D,CAAC,CAAC;IAEF/D,KAAK,CACH,MAAM0B,KAAK,CAACuC,KAAK,EAChBkC,GAAU,IAAK;MACd,MAAMY,OAAO,GAAGvB,MAAM,CAACwB,IAAI,CAAC7D,KAAK,CAACqB,KAAK,CAAC,CAACwB,GAAG,CAAEiB,OAAO,IACnDnG,oBAAoB,CAACqC,KAAK,CAACqB,KAAK,CAACyC,OAAO,CAAC,CAACrC,IAAI,EAAElD,KAAK,CAACmD,OAAO,CAC/D,CAAC;MACD,MAAMqC,OAAO,GAAG9F,OAAO,CACrB+E,GAAG,EACHzE,KAAK,CAACmD,OAAO,EACbnD,KAAK,CAACqD,YACR,CAAC;MACD,MAAMN,IAAI,GAAG9D,iBAAiB,CAACoG,OAAO,EAAEG,OAAO,CAAC;MAChD,IAAIzC,IAAI,CAACL,MAAM,GAAG,CAAC,IAAI8C,OAAO,CAAC9C,MAAM,GAAG2C,OAAO,CAAC3C,MAAM,EAAE;QACtD;MACF;MACAK,IAAI,CAACC,OAAO,CAAEyC,CAAC,IAAK;QAClB,OAAOhE,KAAK,CAACqB,KAAK,CAAC2C,CAAC,CAAC;MACvB,CAAC,CAAC;;MAEF;MACA,MAAMC,WAAW,GAAG,CAAC,GAAG/D,WAAW,CAACmB,KAAK,CAAC;MAC1C,MAAM6C,SAAS,GAAG,CAAC,GAAG/D,SAAS,CAACkB,KAAK,CAAC;MACtCnB,WAAW,CAACmB,KAAK,CAAC8C,KAAK,CAAC,CAAC;MACzBlE,WAAW,CAACoB,KAAK,CAAC8C,KAAK,CAAC,CAAC;MACzBhE,SAAS,CAACkB,KAAK,CAAC8C,KAAK,CAAC,CAAC;MACvBnC,WAAW,CAACgB,GAAG,CAAC;MAChB,IAAI,CAACtF,SAAS,CAACuG,WAAW,EAAE,CAAC,GAAG/D,WAAW,CAACmB,KAAK,CAAC,CAAC,EAAE;QACnDT,YAAY,CAAC,CAAC;MAChB;MACA,IAAI,CAAClD,SAAS,CAACwG,SAAS,EAAE,CAAC,GAAG/D,SAAS,CAACkB,KAAK,CAAC,CAAC,EAAE;QAC/CV,UAAU,CAAC,CAAC;MACd;MACAd,aAAa,CAACwB,KAAK,CAAC2B,GAAG,EAAEzE,KAAK,CAACwC,MAAM,EAAExC,KAAK,CAACc,MAAM,CAAC;IACtD,CAAC,EACD;MAAE4D,IAAI,EAAE,IAAI;MAAEmB,KAAK,EAAE;IAAO,CAC9B,CAAC;;IAED;;IAEApC,WAAW,CAACzD,KAAK,CAACuC,KAAK,CAAC;IAExB,MAAMuD,YAAY,GAAG7H,QAAQ,CAAC,MAAM;MAClC,OAAO+B,KAAK,CAACuC,KAAK,CAACwD,KAAK,CAAC,CAAC,CAACjF,MAAM,CAAEkF,IAAI,IAAK;QAC1C,OAAO,CAAC1D,UAAU,CAAClD,oBAAoB,CAAC4G,IAAI,EAAEhG,KAAK,CAACmD,OAAO,CAAC,CAAC;MAC/D,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM8C,OAAO,GAAGhI,QAAQ,CAAC,MAAM;MAC7B,OAAO;QACL,aAAa,EAAE;MACjB,CAAC;IACH,CAAC,CAAC;IAEF,MAAMiI,MAAM,GAAGjI,QAAQ,CAAC,MAAM;MAC5B,IAAIkI,KAAK,GAAGnG,KAAK,CAACoG,WAAW;MAC7B,IAAIpG,KAAK,CAACoG,WAAW,IAAI,CAAClH,YAAY,CAACc,KAAK,CAACoG,WAAW,CAAC,EAAE;QACzDD,KAAK,GAAG,iBAAiBnG,KAAK,CAACoG,WAAW,GAAG;MAC/C;MACA,OAAO;QACL,CAAC,6BAA6B,GAAGD;MACnC,CAAC;IACH,CAAC,CAAC;IAEFhI,SAAS,CAAC,MAAM;MACd,IAAI6B,KAAK,CAACwC,MAAM,EAAE;QAChBX,aAAa,CAACiB,KAAK,GAAG,IAAI;QAC1BvB,WAAW,CAACvB,KAAK,CAACuC,KAAK,EAAEvC,KAAK,CAACwC,MAAM,EAAExC,KAAK,CAACc,MAAM,CAAC;MACtD;MAEA,IAAId,KAAK,CAACW,aAAa,IAAI,IAAI,IAAIX,KAAK,CAACW,aAAa,KAAK,KAAK,EAAE;QAChEa,aAAa,CAACsB,KAAK,GAAG,CAAC,GAAGQ,MAAM,CAACtD,KAAK,CAACW,aAAa,CAAC,CAAC;MACxD,CAAC,MAAM;QACLV,QAAQ,CAAC6C,KAAK,CAACE,OAAO,CAAEmC,CAAM,IAAK;UACjCnD,cAAc,CAACuB,UAAU,CAAC4B,CAAC,CAAC,EAAE,IAAI,CAAC;QACrC,CAAC,CAAC;QACFhD,YAAY,CAAC,CAAC;MAChB;MAEA,KAAK,MAAMkE,WAAW,IAAIrG,KAAK,CAACK,MAAM,CAACiE,GAAG,CAACf,UAAU,CAAC,EAAE;QACtDtB,YAAY,CAACoE,WAAW,EAAE,IAAI,CAAC;MACjC;MAEA,KAAK,MAAMC,aAAa,IAAItG,KAAK,CAACS,QAAQ,CAAC6D,GAAG,CAACf,UAAU,CAAC,EAAE;QAC1DrB,cAAc,CAACoE,aAAa,EAAE,IAAI,CAAC;MACrC;IACF,CAAC,CAAC;IAEFjF,MAAM,CAAC;MACLiC;IACF,CAAC,CAAC;IAEFtE,SAAS,CAAC,MAAM;MACd,OAAAN,YAAA,CAAAF,SAAA,SAAAE,YAAA;QAAA,SAEgBuH,OAAO,CAACnD,KAAK;QAAA,SAASoD,MAAM,CAACpD,KAAK;QAAA;MAAA,IAC3CjB,aAAa,CAACiB,KAAK,IAAApE,YAAA,CAAAa,YAAA;QAAA;MAAA,QAAkC,EACrDuG,YAAY,CAAChD,KAAK,CAACJ,MAAM,GAAG,CAAC,GAC5BoD,YAAY,CAAChD,KAAK,CAACiD,KAAK,CAAC,CAAC,CAACzB,GAAG,CAAE0B,IAAI,IAAK;QACvC,OAAAtH,YAAA,CAAAkB,aAAA,EAAAhB,WAAA;UAAA,OAGSQ,oBAAoB,CAAC4G,IAAI,EAAEhG,KAAK,CAACmD,OAAO;QAAC;UAE5C,GAAG9D,WAAW,CAACW,KAAK,EAAEH,iBAAiB,CAAC;UACxCqD,IAAI,EAAE8C,IAAI;UACVrC,KAAK,EAAE;QAAC,IALDvC,KAAK;MASpB,CAAC,CAAC,GAAA1C,YAAA;QAAA;MAAA,IAGC0C,KAAK,CAAC,SAAS,CAAC,GAAGA,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAA1C,YAAA,gBAAAI,gBAAA,aAAuB,EAEhE;IAIT,CAAC,CAAC;IAEF,OAAO;MACL2C,KAAK;MACLC,WAAW;MACXC,WAAW;MACXC,SAAS;MACTE,WAAW;MACXD,aAAa;MACbL,aAAa;MACbsE;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
@@ -55,6 +55,11 @@
55
55
  width: 20px;
56
56
  height: 20px;
57
57
  }
58
+
59
+ &--disabled {
60
+ opacity: 0.3;
61
+ cursor: default;
62
+ }
58
63
  }
59
64
 
60
65
  &__content {
@@ -5,7 +5,7 @@ import { computed, mergeProps, onBeforeMount, ref, resolveComponent, watch, crea
5
5
  import { pressItemsPropsOptions } from "../../abstract/items.js";
6
6
  import { useTreeView } from "./tree-view.js";
7
7
  import { useRender } from "../../composables/component.js";
8
- import { getObjectValueByPath } from "../../util/common.js";
8
+ import { getObjectValueByPath, getPropertyFromItem } from "../../util/common.js";
9
9
  import { defineComponent, propsFactory } from "../../util/component/index.js";
10
10
  import { YButton } from "../button/index.js";
11
11
  import { YIconCheckbox, YIconExpand } from "../icons/index.js";
@@ -44,6 +44,10 @@ export const pressYTreeViewNodeProps = propsFactory({
44
44
  onMouseenterContainer: Function,
45
45
  onMouseleaveContainer: Function,
46
46
  onMousemoveContainer: Function,
47
+ onDblclickContainer: Function,
48
+ itemSelectable: {
49
+ type: [String, Array, Function]
50
+ },
47
51
  ...pressItemsPropsOptions({
48
52
  itemKey: 'id'
49
53
  })
@@ -122,6 +126,20 @@ export const YTreeViewNode = defineComponent({
122
126
  const contentText = computed(() => {
123
127
  return getObjectValueByPath(props.item, props.itemText) ?? '';
124
128
  });
129
+ const disabledSelect = computed(() => {
130
+ if (props.itemSelectable != null) {
131
+ let selectable = true;
132
+ if (typeof props.itemSelectable === 'function') {
133
+ selectable = !!props.itemSelectable(props.item);
134
+ } else if (Array.isArray(props.itemSelectable)) {
135
+ selectable = props.itemSelectable.includes(myKey.value);
136
+ } else {
137
+ selectable = getPropertyFromItem(props.item, props.itemSelectable, true);
138
+ }
139
+ return !selectable;
140
+ }
141
+ return false;
142
+ });
125
143
  const slotProps = computed(() => {
126
144
  return {
127
145
  level: props.level,
@@ -150,6 +168,7 @@ export const YTreeViewNode = defineComponent({
150
168
  }
151
169
  function onClickSelect(e) {
152
170
  e.stopPropagation();
171
+ if (disabledSelect.value) return;
153
172
  const to = !isChecked.value;
154
173
  selected.value = to;
155
174
  treeView.updateSelected(myKey.value, to);
@@ -173,6 +192,13 @@ export const YTreeViewNode = defineComponent({
173
192
  item: props.item
174
193
  });
175
194
  }
195
+ function onDblclickContainer(e) {
196
+ props.onDblclickContainer?.(e, {
197
+ ...slotProps.value,
198
+ item: props.item,
199
+ toggleExpand: () => onClickExpand(e)
200
+ });
201
+ }
176
202
  useRender(() => {
177
203
  const indentSpacer = [];
178
204
  for (let i = 0; i < props.level; i += 1) {
@@ -191,7 +217,8 @@ export const YTreeViewNode = defineComponent({
191
217
  "onClick": e => props.enableActive ? onClick(e) : void 0,
192
218
  "onMouseenter": props.onMouseenterContainer && onMouseenterContainer,
193
219
  "onMouseleave": props.onMouseleaveContainer && onMouseleaveContainer,
194
- "onMousemove": props.onMousemoveContainer && onMousemoveContainer
220
+ "onMousemove": props.onMousemoveContainer && onMousemoveContainer,
221
+ "onDblclick": onDblclickContainer
195
222
  }, [_createVNode(YPlate, null, null), _createVNode("div", {
196
223
  "class": 'y-tree-view-node__indents'
197
224
  }, [indentSpacer]), !imLeaf.value && leaves.value.length > 0 ? _createVNode(YButton, {
@@ -204,13 +231,16 @@ export const YTreeViewNode = defineComponent({
204
231
  "class": 'y-tree-view-node__no-expand-icon'
205
232
  }, null), props.enableSelect && // biome-ignore lint/a11y/useSemanticElements: passive
206
233
  _createVNode("div", {
207
- "class": 'y-tree-view-node__select',
234
+ "class": ['y-tree-view-node__select', {
235
+ 'y-tree-view-node__select--disabled': disabledSelect.value
236
+ }],
208
237
  "role": "checkbox",
209
238
  "aria-checked": isChecked.value,
210
239
  "onClick": onClickSelect
211
240
  }, [_createVNode(YIconCheckbox, {
212
241
  "checked": isChecked.value,
213
- "indeterminate": !selected.value && childrenSomeChecked.value
242
+ "indeterminate": !selected.value && childrenSomeChecked.value,
243
+ "disabled": disabledSelect.value
214
244
  }, null)]), _createVNode("div", {
215
245
  "class": 'y-tree-view-node__content'
216
246
  }, [slots.leading && _createVNode("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"YTreeViewNode.js","names":["computed","mergeProps","onBeforeMount","ref","resolveComponent","watch","createVNode","_createVNode","_mergeProps","pressItemsPropsOptions","useTreeView","useRender","getObjectValueByPath","defineComponent","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeStrategy","type","default","activeClass","Array","activeSingleModifier","requiredActive","activeColor","enableSelect","selectStrategy","onMouseenterContainer","Function","onMouseleaveContainer","onMousemoveContainer","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","slots","setup","_ref","expose","YTreeNode","treeView","container$","expanded","active","selected","indeterminate","myKey","children","itemChildren","slice","imLeaf","value","length","searchLoading","leaves","filter","leaf","isExcluded","childrenSelection","selectedState","map","child","childrenAllChecked","all","childrenSomeChecked","some","isChecked","classes","styles","contentText","itemText","slotProps","toggleActive","e","to","updateActive","emitActive","onClick","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","indentSpacer","i","push","leading","text","trailing","_len","arguments","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","nodeState","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.tsx"],"sourcesContent":["/** biome-ignore-all lint/a11y/noStaticElementInteractions: <explanation> */\r\n/** biome-ignore-all lint/a11y/useFocusableInteractive: <explanation> */\r\n/** biome-ignore-all lint/a11y/useKeyWithClickEvents: <explanation> */\r\nimport {\r\n computed,\r\n mergeProps,\r\n onBeforeMount,\r\n type PropType,\r\n ref,\r\n resolveComponent,\r\n type SlotsType,\r\n type VNodeArrayChildren,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { pressItemsPropsOptions } from '@/abstract/items';\r\nimport { useTreeView } from '@/components/tree-view/tree-view';\r\nimport { useRender } from '@/composables/component';\r\nimport { getObjectValueByPath } from '@/util/common';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\n\r\nimport { YButton } from '../button';\r\nimport { YIconCheckbox, YIconExpand } from '../icons';\r\nimport { YPlate } from '../plate';\r\nimport { YTextHighlighter } from '../text-highlighter/YTextHighlighter';\r\nimport { YExpandVTransition } from '../transitions';\r\n\r\nexport const pressYTreeViewNodeProps = propsFactory(\r\n {\r\n search: String,\r\n disableTransition: Boolean,\r\n enableActive: Boolean,\r\n activeStrategy: {\r\n /**\r\n * cascade: only action descendent leaves\r\n * relative: cascade after check parent (ancestor)\r\n */\r\n type: String as PropType<'independent' | 'cascade' | 'relative'>,\r\n default: 'independent',\r\n },\r\n activeClass: [String, Array],\r\n activeSingleModifier: String,\r\n requiredActive: Boolean,\r\n activeColor: {\r\n type: String,\r\n default: 'primary',\r\n },\r\n enableSelect: Boolean,\r\n selectStrategy: {\r\n /**\r\n * cascade: only action descendent leaves\r\n * relative: cascade after check parent (ancestor)\r\n * leaves: relative after return values only leaf\r\n */\r\n type: String as PropType<'independent' | 'cascade' | 'relative' | 'leaf'>,\r\n default: 'relative',\r\n },\r\n onMouseenterContainer: Function,\r\n onMouseleaveContainer: Function,\r\n onMousemoveContainer: Function,\r\n ...pressItemsPropsOptions({\r\n itemKey: 'id',\r\n }),\r\n },\r\n 'YTreeViewNode',\r\n);\r\n\r\n/**\r\n * TODO: correct selected values what selectStrategy leaf or others\r\n */\r\nexport const YTreeViewNode = defineComponent({\r\n name: 'YTreeNode',\r\n components: {\r\n YButton,\r\n YIconExpand,\r\n YPlate,\r\n YIconCheckbox,\r\n },\r\n props: {\r\n item: {\r\n type: Object as PropType<any>,\r\n },\r\n level: {\r\n type: Number as PropType<number>,\r\n default: 0,\r\n },\r\n ...pressYTreeViewNodeProps(),\r\n },\r\n slots: Object as SlotsType<{\r\n default: any;\r\n 'expand-icon': any;\r\n leading: any;\r\n trailing: any;\r\n }>,\r\n setup(props, { slots, expose }) {\r\n const YTreeNode = resolveComponent('YTreeViewNode', true) as any;\r\n const treeView = useTreeView();\r\n const container$ = ref<HTMLElement>();\r\n\r\n const expanded = ref(false);\r\n const active = ref(false);\r\n const selected = ref(false);\r\n const indeterminate = ref(false);\r\n\r\n const myKey = computed(() =>\r\n getObjectValueByPath(props.item, props.itemKey),\r\n );\r\n\r\n const children = computed(() => {\r\n return (\r\n getObjectValueByPath(props.item, props.itemChildren as string) ?? []\r\n ).slice();\r\n });\r\n\r\n const imLeaf = computed(() => children.value.length < 1);\r\n\r\n const searchLoading = computed(() => {\r\n return treeView.searchLoading.value;\r\n });\r\n\r\n const leaves = computed(() => {\r\n return children.value.filter((leaf: any) => {\r\n return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n const childrenSelection = computed(() =>\r\n treeView.selectedState.value(\r\n myKey.value,\r\n children.value.map((child: any) =>\r\n getObjectValueByPath(child, props.itemKey),\r\n ),\r\n ),\r\n );\r\n\r\n const childrenAllChecked = computed(() => {\r\n return !!children.value?.length && childrenSelection.value.all;\r\n });\r\n\r\n const childrenSomeChecked = computed(() => {\r\n return (\r\n (props.selectStrategy === 'relative' ||\r\n props.selectStrategy === 'leaf') &&\r\n (children.value?.length ?? 0) > 0 &&\r\n !childrenAllChecked.value &&\r\n childrenSelection.value.some\r\n );\r\n });\r\n\r\n const isChecked = computed(() => {\r\n return (\r\n selected.value ||\r\n (props.selectStrategy === 'leaf' && childrenAllChecked.value)\r\n );\r\n });\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view-node': true,\r\n 'y-tree-view-node--leaf': imLeaf.value,\r\n 'y-tree-view-node--expanded': expanded.value,\r\n 'y-tree-view-node--active': active.value,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n return {\r\n '--tree-view-node--level': props.level,\r\n };\r\n });\r\n\r\n const contentText = computed(() => {\r\n return getObjectValueByPath(props.item, props.itemText) ?? '';\r\n });\r\n\r\n const slotProps = computed(() => {\r\n return {\r\n level: props.level,\r\n imLeaf: imLeaf.value,\r\n toggleActive,\r\n };\r\n });\r\n\r\n watch(childrenSomeChecked, (value) => {\r\n indeterminate.value = value;\r\n });\r\n\r\n function toggleActive(e?: MouseEvent) {\r\n const to = !active.value;\r\n active.value = to;\r\n treeView.updateActive(myKey.value, to, e);\r\n treeView.emitActive();\r\n }\r\n\r\n function onClick(e: MouseEvent) {\r\n toggleActive(e);\r\n }\r\n\r\n function onClickExpand(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !expanded.value;\r\n expanded.value = to;\r\n treeView.updateExpanded(myKey.value, to);\r\n treeView.emitExpanded();\r\n }\r\n\r\n function onClickSelect(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !isChecked.value;\r\n selected.value = to;\r\n treeView.updateSelected(myKey.value, to);\r\n treeView.emitSelected();\r\n }\r\n\r\n function onMouseenterContainer(e: MouseEvent) {\r\n props.onMouseenterContainer?.(e, {\r\n ...slotProps.value,\r\n item: props.item,\r\n });\r\n }\r\n\r\n function onMouseleaveContainer(e: MouseEvent) {\r\n props.onMouseleaveContainer?.(e, {\r\n ...slotProps.value,\r\n item: props.item,\r\n });\r\n }\r\n\r\n function onMousemoveContainer(e: MouseEvent) {\r\n props.onMousemoveContainer?.(e, { ...slotProps.value, item: props.item });\r\n }\r\n\r\n useRender(() => {\r\n const indentSpacer: VNodeArrayChildren = [];\r\n for (let i = 0; i < props.level; i += 1) {\r\n indentSpacer.push(\r\n <div class={'y-tree-view-node__indent-spacer'}></div>,\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n class={classes.value}\r\n style={styles.value}\r\n role=\"treeitem\"\r\n data-level={props.level}\r\n >\r\n <div\r\n ref={container$}\r\n class={'y-tree-view-node__container'}\r\n onClick={(e: MouseEvent) =>\r\n props.enableActive ? onClick(e) : void 0\r\n }\r\n onMouseenter={props.onMouseenterContainer && onMouseenterContainer}\r\n onMouseleave={props.onMouseleaveContainer && onMouseleaveContainer}\r\n onMousemove={props.onMousemoveContainer && onMousemoveContainer}\r\n >\r\n <YPlate />\r\n <div class={'y-tree-view-node__indents'}>{indentSpacer}</div>\r\n {/* EXPAND */}\r\n {!imLeaf.value && leaves.value.length > 0 ? (\r\n <YButton\r\n class={'y-tree-view-node__expand-icon'}\r\n variation={'icon'}\r\n onClick={onClickExpand}\r\n >\r\n {slots['expand-icon'] ? (\r\n slots['expand-icon']()\r\n ) : (\r\n <YIconExpand></YIconExpand>\r\n )}\r\n </YButton>\r\n ) : (\r\n <i class={'y-tree-view-node__no-expand-icon'}></i>\r\n )}\r\n {/* SELECT */}\r\n {props.enableSelect && (\r\n // biome-ignore lint/a11y/useSemanticElements: passive\r\n <div\r\n class={'y-tree-view-node__select'}\r\n role=\"checkbox\"\r\n aria-checked={isChecked.value}\r\n onClick={onClickSelect}\r\n >\r\n <YIconCheckbox\r\n checked={isChecked.value}\r\n indeterminate={!selected.value && childrenSomeChecked.value}\r\n ></YIconCheckbox>\r\n </div>\r\n )}\r\n {/* CONTENT */}\r\n <div class={'y-tree-view-node__content'}>\r\n {slots.leading && (\r\n <div class={'y-tree-view-node__leading'}>\r\n {slots.leading(slotProps.value)}\r\n </div>\r\n )}\r\n <div class={'y-tree-view-node__text'}>\r\n {slots.default ? (\r\n slots.default?.({\r\n text: contentText.value,\r\n item: props.item,\r\n ...slotProps.value,\r\n })\r\n ) : props.search && !searchLoading.value ? (\r\n <YTextHighlighter\r\n text={contentText.value}\r\n keyword={props.search}\r\n ></YTextHighlighter>\r\n ) : (\r\n contentText.value\r\n )}\r\n </div>\r\n {slots.trailing && (\r\n <div class={'y-tree-view-node__trailing'}>\r\n {slots.trailing(slotProps.value)}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {/* CHILDREN */}\r\n {children.value.length > 0 && (\r\n <YExpandVTransition disabled={props.disableTransition}>\r\n {expanded.value && (\r\n <div class={['y-tree-view-node__leaves']} role=\"tree\">\r\n {leaves.value.map((item: any) => {\r\n return (\r\n <YTreeNode\r\n {...mergeProps(props)}\r\n key={getObjectValueByPath(item, props.itemKey)}\r\n level={(props.level ?? 0) + 1}\r\n item={item}\r\n >\r\n {{\r\n default:\r\n slots.default &&\r\n ((...args: any[]) => slots.default?.(...args)),\r\n 'expand-icon':\r\n slots['expand-icon'] &&\r\n ((...args: any[]) =>\r\n slots['expand-icon']?.(...args)),\r\n leading:\r\n slots.leading &&\r\n ((...args: any[]) => slots.leading?.(...args)),\r\n trailing:\r\n slots.trailing &&\r\n ((...args: any[]) => slots.trailing?.(...args)),\r\n }}\r\n </YTreeNode>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </YExpandVTransition>\r\n )}\r\n </div>\r\n );\r\n });\r\n\r\n const nodeState = {\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n indeterminate,\r\n };\r\n\r\n expose(nodeState);\r\n\r\n onBeforeMount(() => {\r\n treeView?.register?.(myKey.value, nodeState);\r\n });\r\n\r\n return {\r\n treeView,\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n indeterminate,\r\n childrenSelection,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"YTreeViewNode.js","names":["computed","mergeProps","onBeforeMount","ref","resolveComponent","watch","createVNode","_createVNode","_mergeProps","pressItemsPropsOptions","useTreeView","useRender","getObjectValueByPath","getPropertyFromItem","defineComponent","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeStrategy","type","default","activeClass","Array","activeSingleModifier","requiredActive","activeColor","enableSelect","selectStrategy","onMouseenterContainer","Function","onMouseleaveContainer","onMousemoveContainer","onDblclickContainer","itemSelectable","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","slots","setup","_ref","expose","YTreeNode","treeView","container$","expanded","active","selected","indeterminate","myKey","children","itemChildren","slice","imLeaf","value","length","searchLoading","leaves","filter","leaf","isExcluded","childrenSelection","selectedState","map","child","childrenAllChecked","all","childrenSomeChecked","some","isChecked","classes","styles","contentText","itemText","disabledSelect","selectable","isArray","includes","slotProps","toggleActive","e","to","updateActive","emitActive","onClick","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","toggleExpand","indentSpacer","i","push","leading","text","trailing","_len","arguments","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","nodeState","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.tsx"],"sourcesContent":["/** biome-ignore-all lint/a11y/noStaticElementInteractions: <explanation> */\r\n/** biome-ignore-all lint/a11y/useFocusableInteractive: <explanation> */\r\n/** biome-ignore-all lint/a11y/useKeyWithClickEvents: <explanation> */\r\nimport {\r\n computed,\r\n mergeProps,\r\n onBeforeMount,\r\n type PropType,\r\n ref,\r\n resolveComponent,\r\n type SlotsType,\r\n type VNodeArrayChildren,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { pressItemsPropsOptions } from '@/abstract/items';\r\nimport { useTreeView } from '@/components/tree-view/tree-view';\r\nimport { useRender } from '@/composables/component';\r\nimport { getObjectValueByPath, getPropertyFromItem } from '@/util/common';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\n\r\nimport { YButton } from '../button';\r\nimport { YIconCheckbox, YIconExpand } from '../icons';\r\nimport { YPlate } from '../plate';\r\nimport { YTextHighlighter } from '../text-highlighter/YTextHighlighter';\r\nimport { YExpandVTransition } from '../transitions';\r\n\r\nexport const pressYTreeViewNodeProps = propsFactory(\r\n {\r\n search: String,\r\n disableTransition: Boolean,\r\n enableActive: Boolean,\r\n activeStrategy: {\r\n /**\r\n * cascade: only action descendent leaves\r\n * relative: cascade after check parent (ancestor)\r\n */\r\n type: String as PropType<'independent' | 'cascade' | 'relative'>,\r\n default: 'independent',\r\n },\r\n activeClass: [String, Array],\r\n activeSingleModifier: String,\r\n requiredActive: Boolean,\r\n activeColor: {\r\n type: String,\r\n default: 'primary',\r\n },\r\n enableSelect: Boolean,\r\n selectStrategy: {\r\n /**\r\n * cascade: only action descendent leaves\r\n * relative: cascade after check parent (ancestor)\r\n * leaves: relative after return values only leaf\r\n */\r\n type: String as PropType<'independent' | 'cascade' | 'relative' | 'leaf'>,\r\n default: 'relative',\r\n },\r\n onMouseenterContainer: Function,\r\n onMouseleaveContainer: Function,\r\n onMousemoveContainer: Function,\r\n onDblclickContainer: Function,\r\n itemSelectable: {\r\n type: [String, Array, Function] as PropType<any>,\r\n },\r\n ...pressItemsPropsOptions({\r\n itemKey: 'id',\r\n }),\r\n },\r\n 'YTreeViewNode',\r\n);\r\n\r\n/**\r\n * TODO: correct selected values what selectStrategy leaf or others\r\n */\r\nexport const YTreeViewNode = defineComponent({\r\n name: 'YTreeNode',\r\n components: {\r\n YButton,\r\n YIconExpand,\r\n YPlate,\r\n YIconCheckbox,\r\n },\r\n props: {\r\n item: {\r\n type: Object as PropType<any>,\r\n },\r\n level: {\r\n type: Number as PropType<number>,\r\n default: 0,\r\n },\r\n ...pressYTreeViewNodeProps(),\r\n },\r\n slots: Object as SlotsType<{\r\n default: any;\r\n 'expand-icon': any;\r\n leading: any;\r\n trailing: any;\r\n }>,\r\n setup(props, { slots, expose }) {\r\n const YTreeNode = resolveComponent('YTreeViewNode', true) as any;\r\n const treeView = useTreeView();\r\n const container$ = ref<HTMLElement>();\r\n\r\n const expanded = ref(false);\r\n const active = ref(false);\r\n const selected = ref(false);\r\n const indeterminate = ref(false);\r\n\r\n const myKey = computed(() =>\r\n getObjectValueByPath(props.item, props.itemKey),\r\n );\r\n\r\n const children = computed(() => {\r\n return (\r\n getObjectValueByPath(props.item, props.itemChildren as string) ?? []\r\n ).slice();\r\n });\r\n\r\n const imLeaf = computed(() => children.value.length < 1);\r\n\r\n const searchLoading = computed(() => {\r\n return treeView.searchLoading.value;\r\n });\r\n\r\n const leaves = computed(() => {\r\n return children.value.filter((leaf: any) => {\r\n return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n const childrenSelection = computed(() =>\r\n treeView.selectedState.value(\r\n myKey.value,\r\n children.value.map((child: any) =>\r\n getObjectValueByPath(child, props.itemKey),\r\n ),\r\n ),\r\n );\r\n\r\n const childrenAllChecked = computed(() => {\r\n return !!children.value?.length && childrenSelection.value.all;\r\n });\r\n\r\n const childrenSomeChecked = computed(() => {\r\n return (\r\n (props.selectStrategy === 'relative' ||\r\n props.selectStrategy === 'leaf') &&\r\n (children.value?.length ?? 0) > 0 &&\r\n !childrenAllChecked.value &&\r\n childrenSelection.value.some\r\n );\r\n });\r\n\r\n const isChecked = computed(() => {\r\n return (\r\n selected.value ||\r\n (props.selectStrategy === 'leaf' && childrenAllChecked.value)\r\n );\r\n });\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view-node': true,\r\n 'y-tree-view-node--leaf': imLeaf.value,\r\n 'y-tree-view-node--expanded': expanded.value,\r\n 'y-tree-view-node--active': active.value,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n return {\r\n '--tree-view-node--level': props.level,\r\n };\r\n });\r\n\r\n const contentText = computed(() => {\r\n return getObjectValueByPath(props.item, props.itemText) ?? '';\r\n });\r\n\r\n const disabledSelect = computed(() => {\r\n if (props.itemSelectable != null) {\r\n let selectable = true;\r\n if (typeof props.itemSelectable === 'function') {\r\n selectable = !!props.itemSelectable(props.item);\r\n } else if (Array.isArray(props.itemSelectable)) {\r\n selectable = props.itemSelectable.includes(myKey.value);\r\n } else {\r\n selectable = getPropertyFromItem(\r\n props.item,\r\n props.itemSelectable,\r\n true,\r\n );\r\n }\r\n\r\n return !selectable;\r\n }\r\n return false;\r\n });\r\n\r\n const slotProps = computed(() => {\r\n return {\r\n level: props.level,\r\n imLeaf: imLeaf.value,\r\n toggleActive,\r\n };\r\n });\r\n\r\n watch(childrenSomeChecked, (value) => {\r\n indeterminate.value = value;\r\n });\r\n\r\n function toggleActive(e?: MouseEvent) {\r\n const to = !active.value;\r\n active.value = to;\r\n treeView.updateActive(myKey.value, to, e);\r\n treeView.emitActive();\r\n }\r\n\r\n function onClick(e: MouseEvent) {\r\n toggleActive(e);\r\n }\r\n\r\n function onClickExpand(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !expanded.value;\r\n expanded.value = to;\r\n treeView.updateExpanded(myKey.value, to);\r\n treeView.emitExpanded();\r\n }\r\n\r\n function onClickSelect(e: MouseEvent) {\r\n e.stopPropagation();\r\n if (disabledSelect.value) return;\r\n const to = !isChecked.value;\r\n selected.value = to;\r\n treeView.updateSelected(myKey.value, to);\r\n treeView.emitSelected();\r\n }\r\n\r\n function onMouseenterContainer(e: MouseEvent) {\r\n props.onMouseenterContainer?.(e, {\r\n ...slotProps.value,\r\n item: props.item,\r\n });\r\n }\r\n\r\n function onMouseleaveContainer(e: MouseEvent) {\r\n props.onMouseleaveContainer?.(e, {\r\n ...slotProps.value,\r\n item: props.item,\r\n });\r\n }\r\n\r\n function onMousemoveContainer(e: MouseEvent) {\r\n props.onMousemoveContainer?.(e, { ...slotProps.value, item: props.item });\r\n }\r\n\r\n function onDblclickContainer(e: MouseEvent) {\r\n props.onDblclickContainer?.(e, { ...slotProps.value, item: props.item, toggleExpand: () => onClickExpand(e) });\r\n }\r\n\r\n useRender(() => {\r\n const indentSpacer: VNodeArrayChildren = [];\r\n for (let i = 0; i < props.level; i += 1) {\r\n indentSpacer.push(\r\n <div class={'y-tree-view-node__indent-spacer'}></div>,\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n class={classes.value}\r\n style={styles.value}\r\n role=\"treeitem\"\r\n data-level={props.level}\r\n >\r\n <div\r\n ref={container$}\r\n class={'y-tree-view-node__container'}\r\n onClick={(e: MouseEvent) =>\r\n props.enableActive ? onClick(e) : void 0\r\n }\r\n onMouseenter={props.onMouseenterContainer && onMouseenterContainer}\r\n onMouseleave={props.onMouseleaveContainer && onMouseleaveContainer}\r\n onMousemove={props.onMousemoveContainer && onMousemoveContainer}\r\n onDblclick={onDblclickContainer}\r\n >\r\n <YPlate />\r\n <div class={'y-tree-view-node__indents'}>{indentSpacer}</div>\r\n {/* EXPAND */}\r\n {!imLeaf.value && leaves.value.length > 0 ? (\r\n <YButton\r\n class={'y-tree-view-node__expand-icon'}\r\n variation={'icon'}\r\n onClick={onClickExpand}\r\n >\r\n {slots['expand-icon'] ? (\r\n slots['expand-icon']()\r\n ) : (\r\n <YIconExpand></YIconExpand>\r\n )}\r\n </YButton>\r\n ) : (\r\n <i class={'y-tree-view-node__no-expand-icon'}></i>\r\n )}\r\n {/* SELECT */}\r\n {props.enableSelect && (\r\n // biome-ignore lint/a11y/useSemanticElements: passive\r\n <div\r\n class={[\r\n 'y-tree-view-node__select',\r\n {\r\n 'y-tree-view-node__select--disabled': disabledSelect.value,\r\n },\r\n ]}\r\n role=\"checkbox\"\r\n aria-checked={isChecked.value}\r\n onClick={onClickSelect}\r\n >\r\n <YIconCheckbox\r\n checked={isChecked.value}\r\n indeterminate={!selected.value && childrenSomeChecked.value}\r\n disabled={disabledSelect.value}\r\n ></YIconCheckbox>\r\n </div>\r\n )}\r\n {/* CONTENT */}\r\n <div class={'y-tree-view-node__content'}>\r\n {slots.leading && (\r\n <div class={'y-tree-view-node__leading'}>\r\n {slots.leading(slotProps.value)}\r\n </div>\r\n )}\r\n <div class={'y-tree-view-node__text'}>\r\n {slots.default ? (\r\n slots.default?.({\r\n text: contentText.value,\r\n item: props.item,\r\n ...slotProps.value,\r\n })\r\n ) : props.search && !searchLoading.value ? (\r\n <YTextHighlighter\r\n text={contentText.value}\r\n keyword={props.search}\r\n ></YTextHighlighter>\r\n ) : (\r\n contentText.value\r\n )}\r\n </div>\r\n {slots.trailing && (\r\n <div class={'y-tree-view-node__trailing'}>\r\n {slots.trailing(slotProps.value)}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {/* CHILDREN */}\r\n {children.value.length > 0 && (\r\n <YExpandVTransition disabled={props.disableTransition}>\r\n {expanded.value && (\r\n <div class={['y-tree-view-node__leaves']} role=\"tree\">\r\n {leaves.value.map((item: any) => {\r\n return (\r\n <YTreeNode\r\n {...mergeProps(props)}\r\n key={getObjectValueByPath(item, props.itemKey)}\r\n level={(props.level ?? 0) + 1}\r\n item={item}\r\n >\r\n {{\r\n default:\r\n slots.default &&\r\n ((...args: any[]) => slots.default?.(...args)),\r\n 'expand-icon':\r\n slots['expand-icon'] &&\r\n ((...args: any[]) =>\r\n slots['expand-icon']?.(...args)),\r\n leading:\r\n slots.leading &&\r\n ((...args: any[]) => slots.leading?.(...args)),\r\n trailing:\r\n slots.trailing &&\r\n ((...args: any[]) => slots.trailing?.(...args)),\r\n }}\r\n </YTreeNode>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </YExpandVTransition>\r\n )}\r\n </div>\r\n );\r\n });\r\n\r\n const nodeState = {\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n indeterminate,\r\n };\r\n\r\n expose(nodeState);\r\n\r\n onBeforeMount(() => {\r\n treeView?.register?.(myKey.value, nodeState);\r\n });\r\n\r\n return {\r\n treeView,\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n indeterminate,\r\n childrenSelection,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\r\n"],"mappings":"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","ignoreList":[]}