yuyeon 0.0.27 → 0.0.29
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 +1410 -1374
- package/dist/yuyeon.umd.cjs +3 -3
- package/lib/components/button/YButton.mjs +34 -9
- package/lib/components/button/YButton.mjs.map +1 -1
- package/lib/components/button/YButton.scss +1 -0
- package/lib/components/tab/YTab.mjs +0 -2
- package/lib/components/tab/YTab.mjs.map +1 -1
- package/lib/components/tab/YTab.scss +70 -59
- package/lib/components/tree-view/YTreeView.mjs +5 -3
- package/lib/components/tree-view/YTreeView.mjs.map +1 -1
- package/lib/components/tree-view/YTreeViewNode.mjs +4 -3
- package/lib/components/tree-view/YTreeViewNode.mjs.map +1 -1
- package/lib/components/tree-view/util.mjs +1 -1
- package/lib/components/tree-view/util.mjs.map +1 -1
- package/lib/composables/choice-link.mjs +13 -0
- package/lib/composables/choice-link.mjs.map +1 -0
- package/package.json +1 -1
- package/types/components/button/YButton.d.ts +3 -1
- package/types/composables/choice-link.d.ts +2 -0
- package/types/shims.d.ts +81 -81
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
|
|
2
2
|
import { computed, defineComponent, mergeProps } from 'vue';
|
|
3
3
|
import { pressChoiceItemPropsOptions, useChoiceItem } from "../../composables/choice.mjs";
|
|
4
|
+
import { useChoiceByLink } from "../../composables/choice-link.mjs";
|
|
4
5
|
import { useRender } from "../../composables/component.mjs";
|
|
5
6
|
import { pressVueRouterPropsOptions, useLink } from "../../composables/vue-router.mjs";
|
|
6
7
|
import { PlateWave } from "../../directives/plate-wave/index.mjs";
|
|
@@ -68,6 +69,7 @@ export const YButton = defineComponent({
|
|
|
68
69
|
} = _ref;
|
|
69
70
|
const choice = useChoiceItem(props, props.injectSymbol, false);
|
|
70
71
|
const link = useLink(props, attrs);
|
|
72
|
+
useChoiceByLink(link, choice?.select);
|
|
71
73
|
const isActive = computed(() => {
|
|
72
74
|
if (props.active !== undefined) {
|
|
73
75
|
return props.active;
|
|
@@ -123,31 +125,54 @@ export const YButton = defineComponent({
|
|
|
123
125
|
[`--y-button__text-color`]: textColor
|
|
124
126
|
};
|
|
125
127
|
});
|
|
128
|
+
const isDisabled = computed(() => {
|
|
129
|
+
return choice?.disabled.value || props.disabled;
|
|
130
|
+
});
|
|
126
131
|
|
|
127
132
|
/// Events
|
|
128
133
|
function onClick(e) {
|
|
129
|
-
e
|
|
130
|
-
|
|
134
|
+
function guardEvent(e) {
|
|
135
|
+
// don't redirect with control keys
|
|
136
|
+
if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;
|
|
137
|
+
// don't redirect when preventDefault called
|
|
138
|
+
if (e.defaultPrevented) return;
|
|
139
|
+
// don't redirect on right click
|
|
140
|
+
if (e.button !== undefined && e.button !== 0) return;
|
|
141
|
+
// don't redirect if `target="_blank"`
|
|
142
|
+
if (/\b_blank\b/i.test(attrs.target)) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
if (!guardEvent(e) || props.loading || isDisabled.value) {
|
|
131
148
|
return;
|
|
132
149
|
}
|
|
133
150
|
link.navigate?.(e);
|
|
151
|
+
if (e.preventDefault) e.preventDefault();
|
|
134
152
|
choice?.toggle();
|
|
135
153
|
}
|
|
136
154
|
useRender(() => {
|
|
137
|
-
|
|
155
|
+
const Tag = link.isLink.value ? 'a' : 'button';
|
|
156
|
+
return _withDirectives(_createVNode(Tag, {
|
|
138
157
|
"class": [`${NAME}`, choice?.selectedClass.value, {
|
|
139
158
|
...classes.value
|
|
140
159
|
}],
|
|
160
|
+
"href": link.href.value,
|
|
141
161
|
"style": styles.value,
|
|
142
162
|
"onClick": onClick,
|
|
143
163
|
"disabled": props.disabled ? true : undefined
|
|
144
|
-
},
|
|
145
|
-
"
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
164
|
+
}, {
|
|
165
|
+
default: () => [_createVNode("span", {
|
|
166
|
+
"class": ['y-button__content']
|
|
167
|
+
}, [props.loading && _createVNode(YSpinnerRing, mergeProps({
|
|
168
|
+
width: '24',
|
|
169
|
+
height: '24'
|
|
170
|
+
}), null), slots.default?.()]), slots.append?.()]
|
|
171
|
+
}), [[_resolveDirective("plate-wave"), !props.noWave && !props.loading]]);
|
|
150
172
|
});
|
|
173
|
+
return {
|
|
174
|
+
link
|
|
175
|
+
};
|
|
151
176
|
}
|
|
152
177
|
});
|
|
153
178
|
//# sourceMappingURL=YButton.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YButton.mjs","names":["computed","defineComponent","mergeProps","pressChoiceItemPropsOptions","useChoiceItem","useRender","pressVueRouterPropsOptions","useLink","PlateWave","isColorValue","propsFactory","YSpinnerRing","Y_TOGGLE_BUTTON_KEY","NAME","pressYButtonProps","loading","Boolean","active","type","default","undefined","injectSymbol","variation","String","small","icon","outlined","rounded","filled","color","noWave","YButton","name","directives","props","emits","choice","setup","_ref","attrs","slots","link","isActive","isLink","value","isSelected","variations","split","map","trim","classes","includes","disabled","styles","textColor","onClick","e","preventDefault","navigate","toggle","_withDirectives","_createVNode","selectedClass","width","height","append","_resolveDirective"],"sources":["../../../src/components/button/YButton.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport { computed, defineComponent, mergeProps } from 'vue';\n\nimport {\n pressChoiceItemPropsOptions,\n useChoiceItem,\n} from '../../composables/choice';\nimport { useRender } from '../../composables/component';\nimport {\n pressVueRouterPropsOptions,\n useLink,\n} from '../../composables/vue-router';\nimport { PlateWave } from '../../directives/plate-wave';\nimport { isColorValue } from '../../util/color';\nimport { propsFactory } from '../../util/vue-component';\nimport { YSpinnerRing } from '../loading/YSpinnerRing';\nimport { Y_TOGGLE_BUTTON_KEY } from '../toggle-button';\n\n/**\n * Style\n */\nimport './YButton.scss';\n\nconst NAME = 'y-button';\n\nexport const pressYButtonProps = propsFactory(\n {\n loading: Boolean,\n active: { type: Boolean, default: undefined },\n injectSymbol: { type: null, default: Y_TOGGLE_BUTTON_KEY },\n //\n variation: {\n type: String as PropType<string>,\n },\n small: Boolean,\n icon: Boolean,\n outlined: {\n type: Boolean,\n default: false,\n },\n rounded: {\n type: Boolean,\n default: false,\n },\n filled: {\n type: Boolean,\n default: false,\n },\n //\n color: {\n type: String,\n },\n noWave: {\n type: Boolean,\n default: false,\n },\n ...pressVueRouterPropsOptions(),\n ...pressChoiceItemPropsOptions(),\n },\n 'YButton',\n);\n\nexport const YButton = defineComponent({\n name: 'YButton',\n directives: {\n PlateWave,\n },\n props: pressYButtonProps(),\n emits: {\n 'choice:selected': (choice: { value: boolean }) => true,\n },\n setup(props, { attrs, slots }) {\n const choice = useChoiceItem(props, props.injectSymbol, false);\n const link = useLink(props, attrs);\n\n const isActive = computed(() => {\n if (props.active !== undefined) {\n return props.active;\n }\n if (link.isLink.value) {\n return link.isActive?.value;\n }\n return choice?.isSelected.value;\n });\n\n const variations = computed(() => {\n const { variation } = props;\n if (typeof variation === 'string') {\n return variation.split(',').map((value) => {\n return value.trim();\n });\n }\n return [];\n });\n\n const classes = computed(() => {\n const { outlined, rounded, filled, small, icon } = props;\n return {\n [`${NAME}--outlined`]:\n variations.value.includes('outlined') || outlined,\n [`${NAME}--rounded`]: variations.value.includes('rounded') || rounded,\n [`${NAME}--filled`]: variations.value.includes('filled') || filled,\n [`${NAME}--text`]: variations.value.includes('text'),\n [`${NAME}--small`]: variations.value.includes('small') || small,\n [`${NAME}--icon`]: variations.value.includes('icon') || icon,\n [`${NAME}--color`]: props.color,\n [`${NAME}--loading`]: props.loading,\n [`${NAME}--disabled`]: props.disabled,\n [`${NAME}--active`]: isActive.value,\n };\n });\n\n const styles = computed(() => {\n let { color } = props;\n let textColor: string | undefined;\n if (color && !isColorValue(color)) {\n color = `var(--y-theme-${color})`;\n textColor = `var(--y-theme-on-${props.color})`;\n }\n return {\n [`--y-button__color`]: color,\n [`--y-button__text-color`]: textColor,\n };\n });\n\n /// Events\n function onClick(e: MouseEvent) {\n e.preventDefault();\n if (props.loading) {\n return;\n }\n link.navigate?.(e);\n choice?.toggle();\n }\n\n useRender(() => {\n return (\n <button\n class={[\n `${NAME}`,\n choice?.selectedClass.value,\n {\n ...classes.value,\n },\n ]}\n style={styles.value}\n onClick={onClick}\n disabled={props.disabled ? true : undefined}\n v-plate-wave={!props.noWave && !props.loading}\n >\n <span class={['y-button__content']}>\n {props.loading && (\n <YSpinnerRing\n {...mergeProps({ width: '24', height: '24' })}\n ></YSpinnerRing>\n )}\n {slots.default?.()}\n </span>\n {slots.append?.()}\n </button>\n );\n });\n },\n});\n\nexport type YButton = InstanceType<typeof YButton>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YButton.mjs","names":["computed","defineComponent","mergeProps","pressChoiceItemPropsOptions","useChoiceItem","useChoiceByLink","useRender","pressVueRouterPropsOptions","useLink","PlateWave","isColorValue","propsFactory","YSpinnerRing","Y_TOGGLE_BUTTON_KEY","NAME","pressYButtonProps","loading","Boolean","active","type","default","undefined","injectSymbol","variation","String","small","icon","outlined","rounded","filled","color","noWave","YButton","name","directives","props","emits","choice","setup","_ref","attrs","slots","link","select","isActive","isLink","value","isSelected","variations","split","map","trim","classes","includes","disabled","styles","textColor","isDisabled","onClick","e","guardEvent","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","test","target","navigate","preventDefault","toggle","Tag","_withDirectives","_createVNode","selectedClass","href","width","height","append","_resolveDirective"],"sources":["../../../src/components/button/YButton.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport { computed, defineComponent, mergeProps } from 'vue';\n\nimport {\n pressChoiceItemPropsOptions,\n useChoiceItem,\n} from '../../composables/choice';\nimport { useChoiceByLink } from '../../composables/choice-link';\nimport { useRender } from '../../composables/component';\nimport {\n pressVueRouterPropsOptions,\n useLink,\n} from '../../composables/vue-router';\nimport { PlateWave } from '../../directives/plate-wave';\nimport { isColorValue } from '../../util/color';\nimport { propsFactory } from '../../util/vue-component';\nimport { YSpinnerRing } from '../loading/YSpinnerRing';\nimport { Y_TOGGLE_BUTTON_KEY } from '../toggle-button';\n\n/**\n * Style\n */\nimport './YButton.scss';\n\nconst NAME = 'y-button';\n\nexport const pressYButtonProps = propsFactory(\n {\n loading: Boolean,\n active: { type: Boolean, default: undefined },\n injectSymbol: { type: null, default: Y_TOGGLE_BUTTON_KEY },\n //\n variation: {\n type: String as PropType<string>,\n },\n small: Boolean,\n icon: Boolean,\n outlined: {\n type: Boolean,\n default: false,\n },\n rounded: {\n type: Boolean,\n default: false,\n },\n filled: {\n type: Boolean,\n default: false,\n },\n //\n color: {\n type: String,\n },\n noWave: {\n type: Boolean,\n default: false,\n },\n ...pressVueRouterPropsOptions(),\n ...pressChoiceItemPropsOptions(),\n },\n 'YButton',\n);\n\nexport const YButton = defineComponent({\n name: 'YButton',\n directives: {\n PlateWave,\n },\n props: pressYButtonProps(),\n emits: {\n 'choice:selected': (choice: { value: boolean }) => true,\n },\n setup(props, { attrs, slots }) {\n const choice = useChoiceItem(props, props.injectSymbol, false);\n const link = useLink(props, attrs);\n useChoiceByLink(link, choice?.select);\n\n const isActive = computed(() => {\n if (props.active !== undefined) {\n return props.active;\n }\n if (link.isLink.value) {\n return link.isActive?.value;\n }\n return choice?.isSelected.value;\n });\n\n const variations = computed(() => {\n const { variation } = props;\n if (typeof variation === 'string') {\n return variation.split(',').map((value) => {\n return value.trim();\n });\n }\n return [];\n });\n\n const classes = computed(() => {\n const { outlined, rounded, filled, small, icon } = props;\n return {\n [`${NAME}--outlined`]:\n variations.value.includes('outlined') || outlined,\n [`${NAME}--rounded`]: variations.value.includes('rounded') || rounded,\n [`${NAME}--filled`]: variations.value.includes('filled') || filled,\n [`${NAME}--text`]: variations.value.includes('text'),\n [`${NAME}--small`]: variations.value.includes('small') || small,\n [`${NAME}--icon`]: variations.value.includes('icon') || icon,\n [`${NAME}--color`]: props.color,\n [`${NAME}--loading`]: props.loading,\n [`${NAME}--disabled`]: props.disabled,\n [`${NAME}--active`]: isActive.value,\n };\n });\n\n const styles = computed(() => {\n let { color } = props;\n let textColor: string | undefined;\n if (color && !isColorValue(color)) {\n color = `var(--y-theme-${color})`;\n textColor = `var(--y-theme-on-${props.color})`;\n }\n return {\n [`--y-button__color`]: color,\n [`--y-button__text-color`]: textColor,\n };\n });\n\n const isDisabled = computed(() => {\n return choice?.disabled.value || props.disabled;\n });\n\n /// Events\n function onClick(e: MouseEvent) {\n function guardEvent(e: MouseEvent) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;\n // don't redirect when preventDefault called\n if (e.defaultPrevented) return;\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) return;\n // don't redirect if `target=\"_blank\"`\n if (/\\b_blank\\b/i.test(attrs.target as string)) {\n return;\n }\n return true;\n }\n if (!guardEvent(e) || props.loading || isDisabled.value) {\n return;\n }\n link.navigate?.(e);\n if (e.preventDefault) e.preventDefault();\n choice?.toggle();\n }\n\n useRender(() => {\n const Tag = link.isLink.value ? 'a' : 'button';\n return (\n <Tag\n class={[\n `${NAME}`,\n choice?.selectedClass.value,\n {\n ...classes.value,\n },\n ]}\n href={link.href.value}\n style={styles.value}\n onClick={onClick}\n disabled={props.disabled ? true : undefined}\n v-plate-wave={!props.noWave && !props.loading}\n >\n <span class={['y-button__content']}>\n {props.loading && (\n <YSpinnerRing\n {...mergeProps({ width: '24', height: '24' })}\n ></YSpinnerRing>\n )}\n {slots.default?.()}\n </span>\n {slots.append?.()}\n </Tag>\n );\n });\n\n return {\n link,\n };\n },\n});\n\nexport type YButton = InstanceType<typeof YButton>;\n"],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@ import { Y_TABS_KEY } from "./shared.mjs";
|
|
|
8
8
|
import "./YTab.scss";
|
|
9
9
|
export const pressYTabPropsOptions = propsFactory({
|
|
10
10
|
text: String,
|
|
11
|
-
value: String,
|
|
12
11
|
hideIndicator: Boolean,
|
|
13
12
|
indicatorColor: String,
|
|
14
13
|
...pressYButtonProps({
|
|
@@ -45,7 +44,6 @@ export const YTab = defineComponent({
|
|
|
45
44
|
}
|
|
46
45
|
useRender(() => {
|
|
47
46
|
const yButtonProps = chooseProps(props, YButton.props);
|
|
48
|
-
console.log(props, yButtonProps);
|
|
49
47
|
return _createVNode(_Fragment, null, [_createVNode(YButton, _mergeProps({
|
|
50
48
|
"class": ['y-tab'],
|
|
51
49
|
"active": false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTab.mjs","names":["shallowRef","computed","defineComponent","ref","useRender","chooseProps","propsFactory","YButton","pressYButtonProps","Y_TABS_KEY","pressYTabPropsOptions","text","String","
|
|
1
|
+
{"version":3,"file":"YTab.mjs","names":["shallowRef","computed","defineComponent","ref","useRender","chooseProps","propsFactory","YButton","pressYButtonProps","Y_TABS_KEY","pressYTabPropsOptions","text","String","hideIndicator","Boolean","indicatorColor","selectedClass","noWave","YTab","name","props","slots","Object","setup","_ref","attrs","selected","indicator$","indicatorStyles","attrsProps","role","value","tabindex","onChoice","_ref2","yButtonProps","_createVNode","_Fragment","_mergeProps","default","append"],"sources":["../../../src/components/tab/YTab.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\r\nimport { PropType, SlotsType, computed, defineComponent, ref } from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { chooseProps, propsFactory } from '../../util';\r\nimport { YButton, pressYButtonProps } from '../button';\r\nimport { Y_TABS_KEY } from './shared';\r\n\r\nimport './YTab.scss';\r\n\r\nexport const pressYTabPropsOptions = propsFactory(\r\n {\r\n text: String as PropType<string>,\r\n hideIndicator: Boolean as PropType<boolean>,\r\n indicatorColor: String as PropType<string>,\r\n ...pressYButtonProps({\r\n selectedClass: 'y-tab--selected',\r\n noWave: true,\r\n }),\r\n },\r\n 'YTab',\r\n);\r\n\r\nexport const YTab = defineComponent({\r\n name: 'YTab',\r\n props: pressYTabPropsOptions(),\r\n slots: Object as SlotsType<{\r\n default?: any;\r\n }>,\r\n setup(props, { slots, attrs }) {\r\n const selected = shallowRef(false);\r\n\r\n const indicator$ = ref();\r\n const indicatorStyles = computed(() => {\r\n return {};\r\n });\r\n const attrsProps = computed(() => {\r\n return {\r\n role: 'tab',\r\n 'aria-selected': `${String(selected.value)}`,\r\n tabindex: selected.value ? 0 : -1,\r\n };\r\n });\r\n\r\n function onChoice({ value }: { value: boolean }) {\r\n selected.value = value;\r\n }\r\n\r\n useRender(() => {\r\n const yButtonProps = chooseProps(props, YButton.props);\r\n return (\r\n <>\r\n <YButton\r\n class={['y-tab']}\r\n active={false}\r\n {...attrsProps.value}\r\n {...attrs}\r\n {...yButtonProps}\r\n injectSymbol={Y_TABS_KEY}\r\n onChoice:selected={onChoice}\r\n >\r\n {{\r\n default: () => slots.default?.() ?? props.text,\r\n append: () =>\r\n !props.hideIndicator && (\r\n <div\r\n ref={indicator$}\r\n class={['y-tab__indicator']}\r\n style={indicatorStyles.value}\r\n ></div>\r\n ),\r\n }}\r\n </YButton>\r\n </>\r\n );\r\n });\r\n\r\n return {};\r\n },\r\n});\r\n"],"mappings":";AAAA,SAASA,UAAU,QAAQ,mBAAmB;AAC9C,SAA8BC,QAAQ,EAAEC,eAAe,EAAEC,GAAG,QAAQ,KAAK;AAAC,SAEjEC,SAAS;AAAA,SACTC,WAAW,EAAEC,YAAY;AAAA,SACzBC,OAAO,EAAEC,iBAAiB;AAAA,SAC1BC,UAAU;AAEnB;AAEA,OAAO,MAAMC,qBAAqB,GAAGJ,YAAY,CAC/C;EACEK,IAAI,EAAEC,MAA0B;EAChCC,aAAa,EAAEC,OAA4B;EAC3CC,cAAc,EAAEH,MAA0B;EAC1C,GAAGJ,iBAAiB,CAAC;IACnBQ,aAAa,EAAE,iBAAiB;IAChCC,MAAM,EAAE;EACV,CAAC;AACH,CAAC,EACD,MACF,CAAC;AAED,OAAO,MAAMC,IAAI,GAAGhB,eAAe,CAAC;EAClCiB,IAAI,EAAE,MAAM;EACZC,KAAK,EAAEV,qBAAqB,CAAC,CAAC;EAC9BW,KAAK,EAAEC,MAEL;EACFC,KAAKA,CAACH,KAAK,EAAAI,IAAA,EAAoB;IAAA,IAAlB;MAAEH,KAAK;MAAEI;IAAM,CAAC,GAAAD,IAAA;IAC3B,MAAME,QAAQ,GAAG1B,UAAU,CAAC,KAAK,CAAC;IAElC,MAAM2B,UAAU,GAAGxB,GAAG,CAAC,CAAC;IACxB,MAAMyB,eAAe,GAAG3B,QAAQ,CAAC,MAAM;MACrC,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM4B,UAAU,GAAG5B,QAAQ,CAAC,MAAM;MAChC,OAAO;QACL6B,IAAI,EAAE,KAAK;QACX,eAAe,EAAG,GAAElB,MAAM,CAACc,QAAQ,CAACK,KAAK,CAAE,EAAC;QAC5CC,QAAQ,EAAEN,QAAQ,CAACK,KAAK,GAAG,CAAC,GAAG,CAAC;MAClC,CAAC;IACH,CAAC,CAAC;IAEF,SAASE,QAAQA,CAAAC,KAAA,EAAgC;MAAA,IAA/B;QAAEH;MAA0B,CAAC,GAAAG,KAAA;MAC7CR,QAAQ,CAACK,KAAK,GAAGA,KAAK;IACxB;IAEA3B,SAAS,CAAC,MAAM;MACd,MAAM+B,YAAY,GAAG9B,WAAW,CAACe,KAAK,EAAEb,OAAO,CAACa,KAAK,CAAC;MACtD,OAAAgB,YAAA,CAAAC,SAAA,SAAAD,YAAA,CAAA7B,OAAA,EAAA+B,WAAA;QAAA,SAGa,CAAC,OAAO,CAAC;QAAA,UACR;MAAK,GACTT,UAAU,CAACE,KAAK,EAChBN,KAAK,EACLU,YAAY;QAAA,gBACF1B,UAAU;QAAA,qBACLwB;MAAQ;QAGzBM,OAAO,EAAEA,CAAA,KAAMlB,KAAK,CAACkB,OAAO,GAAG,CAAC,IAAInB,KAAK,CAACT,IAAI;QAC9C6B,MAAM,EAAEA,CAAA,KACN,CAACpB,KAAK,CAACP,aAAa,IAAAuB,YAAA;UAAA,OAEXT,UAAU;UAAA,SACR,CAAC,kBAAkB,CAAC;UAAA,SACpBC,eAAe,CAACG;QAAK;MAE/B;IAKb,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -1,59 +1,70 @@
|
|
|
1
|
-
@use '../../styles/variables';
|
|
2
|
-
|
|
3
|
-
.y-tab {
|
|
4
|
-
--y-tab-color: var(--y-theme-on-surface);
|
|
5
|
-
--y-tab-active-color: var(--y-theme-primary);
|
|
6
|
-
|
|
7
|
-
--y-tab-indicator-width: 2.7px;
|
|
8
|
-
--y-tab-indicator-color: inherit;
|
|
9
|
-
--y-tab-active-indicator-color: var(--y-theme-primary);
|
|
10
|
-
--y-tab-hover-indicator-color: var(--y-theme-outline);
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
border-radius: 0;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
1
|
+
@use '../../styles/variables';
|
|
2
|
+
|
|
3
|
+
.y-tab {
|
|
4
|
+
--y-tab-color: var(--y-theme-on-surface);
|
|
5
|
+
--y-tab-active-color: var(--y-theme-primary);
|
|
6
|
+
|
|
7
|
+
--y-tab-indicator-width: 2.7px;
|
|
8
|
+
--y-tab-indicator-color: inherit;
|
|
9
|
+
--y-tab-active-indicator-color: var(--y-theme-primary);
|
|
10
|
+
--y-tab-hover-indicator-color: var(--y-theme-outline-variant);
|
|
11
|
+
--y-tab-indicator-side-offset: 4px;
|
|
12
|
+
|
|
13
|
+
border-radius: 0;
|
|
14
|
+
color: var(--y-tab-color);
|
|
15
|
+
|
|
16
|
+
&.y-button {
|
|
17
|
+
font-size: 1rem;
|
|
18
|
+
padding: 4px 8px 12px;
|
|
19
|
+
box-shadow: none;
|
|
20
|
+
|
|
21
|
+
&:before {
|
|
22
|
+
left: var(--y-tab-indicator-side-offset);
|
|
23
|
+
right: var(--y-tab-indicator-side-offset);
|
|
24
|
+
background: radial-gradient(currentColor, transparent 80%),
|
|
25
|
+
linear-gradient(0deg, currentColor, transparent 70%);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&__indicator {
|
|
30
|
+
height: var(--y-tab-indicator-width);
|
|
31
|
+
position: absolute;
|
|
32
|
+
left: var(--y-tab-indicator-side-offset);
|
|
33
|
+
right: var(--y-tab-indicator-side-offset);
|
|
34
|
+
bottom: 0;
|
|
35
|
+
background-color: currentColor;
|
|
36
|
+
border-top-left-radius: 4444px;
|
|
37
|
+
border-top-right-radius: 4444px;
|
|
38
|
+
transform: scaleY(0);
|
|
39
|
+
transform-origin: bottom center;
|
|
40
|
+
transition-timing-function: variables.$basic-transition-timing-function;
|
|
41
|
+
transition-duration: 200ms;
|
|
42
|
+
transition-property: all;
|
|
43
|
+
will-change: transform;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.y-button {
|
|
47
|
+
&__content {
|
|
48
|
+
padding: 0;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
&--active {
|
|
53
|
+
font-weight: 700;
|
|
54
|
+
color: var(--y-tab-active-color);
|
|
55
|
+
|
|
56
|
+
&:before {
|
|
57
|
+
opacity: 0.04;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&:hover:not(&--active) &__indicator {
|
|
62
|
+
transform: scaleY(1);
|
|
63
|
+
color: var(--y-tab-hover-indicator-color);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
&--active &__indicator {
|
|
67
|
+
color: var(--y-tab-active-indicator-color);
|
|
68
|
+
transform: scaleY(1);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createTextVNode as _createTextVNode, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
1
|
+
import { createTextVNode as _createTextVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from "vue";
|
|
2
2
|
import { computed, defineComponent, onMounted, provide, ref, shallowRef, watch, watchEffect } from 'vue';
|
|
3
3
|
import { useModelDuplex } from "../../composables/communication.mjs";
|
|
4
4
|
import { useRender } from "../../composables/component.mjs";
|
|
@@ -358,11 +358,13 @@ export const YTreeView = defineComponent({
|
|
|
358
358
|
}, [searchLoading.value && _createVNode(YProgressBar, {
|
|
359
359
|
"indeterminate": true
|
|
360
360
|
}, null), renderLeaves.value.length > 0 ? renderLeaves.value.map(leaf => {
|
|
361
|
-
return _createVNode(YTreeViewNode, {
|
|
361
|
+
return _createVNode(YTreeViewNode, _mergeProps({
|
|
362
|
+
"key": getObjectValueByPath(leaf, props.itemKey)
|
|
363
|
+
}, {
|
|
362
364
|
...chooseProps(props, treeViewNodeProps),
|
|
363
365
|
item: leaf,
|
|
364
366
|
level: 0
|
|
365
|
-
}, slots);
|
|
367
|
+
}), slots);
|
|
366
368
|
}) : _createVNode("div", {
|
|
367
369
|
"class": "y-tree-view__no-data"
|
|
368
370
|
}, [slots['no-data'] ? slots['no-data']() : _createVNode("span", null, [_createTextVNode("No Data")])])])]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTreeView.mjs","names":["computed","defineComponent","onMounted","provide","ref","shallowRef","watch","watchEffect","useModelDuplex","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","hasOwnProperty","debounce","chooseProps","YProgressBar","YTreeViewNode","pressYTreeViewNodeProps","filterTreeItem","filterTreeItems","getKeys","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","activeStrategy","String","selected","selectStrategy","returnItem","defaultExpand","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","emit","expose","nodes","expandedSet","Set","selectedSet","activeSet","excludedSet","filterItemsFn","excludeItem","expandedCache","searchLoading","items","search","arguments","length","undefined","excluded","value","diff","forEach","key","updateExpanded","item","itemKey","itemText","itemChildren","expand","getDescendants","descendants","childKeys","push","childKey","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","existNode","vnode","indeterminate","node","map","child","add","issueVnodeState","to","isArray","delete","neo","deep","until","Object","entries","_ref2","emitExpanded","updateActive","event","inactiveKey","keys","activeSingleModifier","getModifierState","descendant","updateSelected","arr","emitActive","emitSelected","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","nodeKey","neoKeys","k","oldSelected","clear","isExcluded","has","register","activeValue","selectedValue","renderLeaves","leaf","classes","styles","color","activeColor","_createVNode","_Fragment","_createTextVNode"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\r\n PropType,\r\n Ref,\r\n VNode,\r\n computed,\r\n defineComponent,\r\n onMounted,\r\n provide,\r\n ref,\r\n shallowRef,\r\n watch,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { CandidateKey } from '../../types';\r\nimport { differenceBetween } from '../../util/array';\r\nimport { isColorValue } from '../../util/color';\r\nimport {\r\n deepEqual,\r\n getObjectValueByPath,\r\n hasOwnProperty,\r\n} from '../../util/common';\r\nimport { debounce } from '../../util/debounce';\r\nimport { chooseProps } from '../../util/vue-component';\r\nimport { YProgressBar } from '../progress-bar';\r\nimport { YTreeViewNode, pressYTreeViewNodeProps } from './YTreeViewNode';\r\nimport { NodeState, TreeviewFilterFn } from './types';\r\nimport { filterTreeItem, filterTreeItems, getKeys } from './util';\r\n\r\nimport './YTreeView.scss';\r\n\r\nconst treeViewNodeProps = pressYTreeViewNodeProps();\r\n\r\nexport const YTreeView = defineComponent({\r\n name: 'YTreeView',\r\n props: {\r\n expanded: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n active: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n multipleActive: Boolean,\r\n activeStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'independent',\r\n },\r\n selected: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n selectStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'leaf',\r\n },\r\n returnItem: Boolean,\r\n defaultExpand: [Boolean, String, Number],\r\n filter: Function as PropType<TreeviewFilterFn>,\r\n searchDebounceWait: {\r\n type: Number as PropType<number>,\r\n default: 700,\r\n },\r\n ...treeViewNodeProps,\r\n },\r\n emits: ['update:expanded', 'update:active', 'update:selected'],\r\n setup(props, { slots, emit, expose }) {\r\n const nodes = ref<Record<CandidateKey, any>>({});\r\n\r\n const expanded = useModelDuplex(props, 'expanded');\r\n const active = useModelDuplex(props, 'active');\r\n const selected = useModelDuplex(props, 'selected');\r\n\r\n const expandedSet = ref(new Set<CandidateKey>());\r\n const selectedSet = ref(new Set<CandidateKey>());\r\n const activeSet = ref(new Set<CandidateKey>());\r\n const excludedSet = ref(new Set<CandidateKey>());\r\n const filterItemsFn = shallowRef(\r\n debounce(excludeItem, props.searchDebounceWait),\r\n );\r\n const expandedCache = ref<CandidateKey[]>([]);\r\n const searchLoading = shallowRef(false);\r\n\r\n function excludeItem(items: any[], search = '', filter = filterTreeItem) {\r\n const excluded = new Set<CandidateKey>();\r\n if (!search) {\r\n searchLoading.value = false;\r\n excludedSet.value = excluded;\r\n const diff = differenceBetween(expandedCache.value, [\r\n ...expandedSet.value,\r\n ]);\r\n diff.forEach((key) => {\r\n updateExpanded(key, false);\r\n });\r\n expandedCache.value.forEach((key) => {\r\n updateExpanded(key, true);\r\n });\r\n return;\r\n }\r\n for (const item of items) {\r\n filterTreeItems(\r\n filter,\r\n item,\r\n search ?? '',\r\n props.itemKey,\r\n props.itemText,\r\n props.itemChildren as string,\r\n excluded,\r\n );\r\n }\r\n excludedSet.value = excluded;\r\n searchLoading.value = false;\r\n expand();\r\n }\r\n\r\n watchEffect(() => {\r\n searchLoading.value = true;\r\n filterItemsFn.value(props.items, props.search, props.filter);\r\n });\r\n\r\n // Util Methods\r\n function getDescendants(\r\n key: CandidateKey,\r\n descendants: CandidateKey[] = [],\r\n ) {\r\n const { childKeys } = nodes.value[key];\r\n descendants.push(...childKeys);\r\n for (const childKey of childKeys) {\r\n descendants = getDescendants(childKey, descendants);\r\n }\r\n return descendants;\r\n }\r\n\r\n function getNodeKey(itemOrKey: any) {\r\n return props.returnItem\r\n ? getObjectValueByPath(itemOrKey, props.itemKey)\r\n : itemOrKey;\r\n }\r\n\r\n // State Methods\r\n function updateNodes(\r\n items: any[],\r\n parentKey: CandidateKey | null = null,\r\n level = 0,\r\n ) {\r\n for (const item of items) {\r\n const key = getObjectValueByPath(item, props.itemKey);\r\n const children =\r\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\r\n const exist = hasOwnProperty(nodes.value, key);\r\n const existNode = exist\r\n ? nodes.value[key]\r\n : {\r\n vnode: null,\r\n selected: false,\r\n indeterminate: false,\r\n active: false,\r\n expanded: false,\r\n };\r\n const node: NodeState = {\r\n vnode: existNode.vnode,\r\n item,\r\n level,\r\n parentKey,\r\n childKeys: children.map((child: any) =>\r\n getObjectValueByPath(child, props.itemKey),\r\n ),\r\n expanded: children.length > 0 && existNode.expanded,\r\n active: existNode.active,\r\n indeterminate: existNode.indeterminate,\r\n selected: existNode.selected,\r\n };\r\n\r\n updateNodes(children, key, level + 1);\r\n\r\n nodes.value[key] = node;\r\n if (nodes.value[key].expanded) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].selected) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].active) {\r\n activeSet.value.add(key);\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n function updateExpanded(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n const children = getObjectValueByPath(\r\n node.item,\r\n props.itemChildren as string,\r\n );\r\n if (Array.isArray(children) && children.length > 0) {\r\n to ? expandedSet.value.add(key) : expandedSet.value.delete(key);\r\n node.expanded = to;\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n watch(\r\n expandedSet,\r\n (neo) => {\r\n if (!props.search) {\r\n expandedCache.value = [...neo];\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n function expand(until: boolean | string | number = true) {\r\n Object.entries(nodes.value).forEach(([key, node]) => {\r\n if (until === true || until >= node.level) {\r\n updateExpanded(key, true);\r\n }\r\n });\r\n emitExpanded();\r\n return expandedSet.value;\r\n }\r\n\r\n function updateActive(key: CandidateKey, to: boolean, event?: MouseEvent) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n let inactiveKey = !to ? key : '';\r\n if (!props.multipleActive) {\r\n [inactiveKey] = activeSet.value.keys();\r\n }\r\n if (to) {\r\n activeSet.value.add(key);\r\n node.active = true;\r\n }\r\n if (inactiveKey && inactiveKey in nodes.value) {\r\n activeSet.value.delete(inactiveKey);\r\n nodes.value[inactiveKey].active = false;\r\n issueVnodeState(inactiveKey);\r\n }\r\n\r\n if (\r\n props.activeSingleModifier &&\r\n event?.getModifierState(props.activeSingleModifier)\r\n ) {\r\n return;\r\n }\r\n\r\n if (props.multipleActive && props.activeStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? activeSet.value.add(descendant)\r\n : activeSet.value.delete(descendant);\r\n nodes.value[descendant].active = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function updateSelected(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n\r\n if (to) {\r\n selectedSet.value.add(key);\r\n node.selected = true;\r\n }\r\n\r\n if (!to && key in nodes.value) {\r\n selectedSet.value.delete(key);\r\n nodes.value[key].selected = false;\r\n issueVnodeState(key);\r\n }\r\n\r\n if (props.selectStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? selectedSet.value.add(descendant)\r\n : selectedSet.value.delete(descendant);\r\n nodes.value[descendant].selected = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function emitExpanded() {\r\n const arr = [...expandedSet.value];\r\n expanded.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitActive() {\r\n const arr = [...activeSet.value];\r\n active.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitSelected() {\r\n const arr = [...selectedSet.value];\r\n selected.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function stateWatcher(\r\n value: any[],\r\n stateSet: Ref<Set<CandidateKey>>,\r\n updater: (key: CandidateKey, to: boolean) => void,\r\n emitter: () => void,\r\n ) {\r\n const valuesOfKey = props.returnItem\r\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\r\n : value;\r\n const old = [...stateSet.value];\r\n if (deepEqual(old, valuesOfKey)) {\r\n return;\r\n }\r\n old.forEach((key) => updater(key, false));\r\n valuesOfKey.forEach((key) => updater(key, true));\r\n emitter();\r\n }\r\n\r\n watch(expanded, (neo) => {\r\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\r\n });\r\n\r\n watch(active, (neo) => {\r\n stateWatcher(neo, activeSet, updateActive, emitActive);\r\n });\r\n\r\n watch(selected, (neo) => {\r\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\r\n });\r\n\r\n watch(\r\n () => props.items,\r\n (neo: any[]) => {\r\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\r\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\r\n );\r\n const neoKeys = getKeys(\r\n neo,\r\n props.itemKey,\r\n props.itemChildren as string,\r\n );\r\n const diff = differenceBetween(oldKeys, neoKeys);\r\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\r\n return;\r\n }\r\n diff.forEach((k) => delete nodes.value[k]);\r\n\r\n // init\r\n const oldSelected = [...selectedSet.value];\r\n selectedSet.value.clear();\r\n expandedSet.value.clear();\r\n activeSet.value.clear();\r\n updateNodes(neo);\r\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\r\n emitSelected();\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n // Search\r\n function isExcluded(key: CandidateKey) {\r\n return !!props.search && excludedSet.value.has(key);\r\n }\r\n\r\n // Provide & Issue\r\n function issueVnodeState(key: CandidateKey) {\r\n const node = nodes.value[key];\r\n if (node && node.vnode) {\r\n node.vnode.active = node.active;\r\n node.vnode.selected = node.selected;\r\n node.vnode.indeterminate = node.indeterminate;\r\n node.vnode.expanded = node.expanded;\r\n }\r\n }\r\n\r\n function register(key: CandidateKey, vnode: VNode) {\r\n if (nodes.value[key]) {\r\n nodes.value[key].vnode = vnode;\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n\r\n updateNodes(props.items);\r\n\r\n for (const activeValue of props.active.map(getNodeKey)) {\r\n updateActive(activeValue, true);\r\n }\r\n\r\n for (const selectedValue of props.selected.map(getNodeKey)) {\r\n updateSelected(selectedValue, true);\r\n }\r\n\r\n provide('tree-view', {\r\n register,\r\n updateExpanded,\r\n updateActive,\r\n updateSelected,\r\n emitExpanded,\r\n emitActive,\r\n emitSelected,\r\n isExcluded,\r\n searchLoading,\r\n });\r\n\r\n const renderLeaves = computed(() => {\r\n return props.items.filter((leaf) => {\r\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view': true,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n let color = props.activeColor;\r\n if (props.activeColor && !isColorValue(props.activeColor)) {\r\n color = `var(--y-theme-${props.activeColor})`;\r\n }\r\n return {\r\n [`--y-tree-view__active-color`]: color,\r\n };\r\n });\r\n\r\n onMounted(() => {\r\n if (props.defaultExpand !== undefined) {\r\n expandedCache.value = [...expand(props.defaultExpand)];\r\n } else {\r\n expanded.value.forEach((v: any) => updateExpanded(getNodeKey(v), true));\r\n emitExpanded();\r\n }\r\n });\r\n\r\n expose({\r\n expand,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <div class={classes.value} style={styles.value} role=\"tree\">\r\n {searchLoading.value && <YProgressBar indeterminate />}\r\n {renderLeaves.value.length > 0 ? (\r\n renderLeaves.value.map((leaf) => {\r\n return (\r\n <YTreeViewNode\r\n v-slots={slots}\r\n {...{\r\n ...chooseProps(props, treeViewNodeProps),\r\n item: leaf,\r\n level: 0,\r\n }}\r\n ></YTreeViewNode>\r\n );\r\n })\r\n ) : (\r\n <div class=\"y-tree-view__no-data\">\r\n {slots['no-data'] ? slots['no-data']() : <span>No Data</span>}\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n nodes,\r\n expandedSet,\r\n selectedSet,\r\n activeSet,\r\n excludedSet,\r\n searchLoading,\r\n expandedCache,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeView = InstanceType<typeof YTreeView>;\r\n"],"mappings":";AAAA,SAIEA,QAAQ,EACRC,eAAe,EACfC,SAAS,EACTC,OAAO,EACPC,GAAG,EACHC,UAAU,EACVC,KAAK,EACLC,WAAW,QACN,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,SAAS;AAAA,SAETC,iBAAiB;AAAA,SACjBC,YAAY;AAAA,SAEnBC,SAAS,EACTC,oBAAoB,EACpBC,cAAc;AAAA,SAEPC,QAAQ;AAAA,SACRC,WAAW;AAAA,SACXC,YAAY;AAAA,SACZC,aAAa,EAAEC,uBAAuB;AAAA,SAEtCC,cAAc,EAAEC,eAAe,EAAEC,OAAO;AAEjD;AAEA,MAAMC,iBAAiB,GAAGJ,uBAAuB,CAAC,CAAC;AAEnD,OAAO,MAAMK,SAAS,GAAGvB,eAAe,CAAC;EACvCwB,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,cAAc,EAAE;MACdN,IAAI,EAAEO,MAA6C;MAAE;MACrDL,OAAO,EAAE;IACX,CAAC;IACDM,QAAQ,EAAE;MACRR,IAAI,EAAE,CAACC,KAAK,CAA6B;MACzCC,OAAO,EAAEA,CAAA,KAAM;IACjB,CAAC;IACDO,cAAc,EAAE;MACdT,IAAI,EAAEO,MAA6C;MAAE;MACrDL,OAAO,EAAE;IACX,CAAC;IACDQ,UAAU,EAAEL,OAAO;IACnBM,aAAa,EAAE,CAACN,OAAO,EAAEE,MAAM,EAAEK,MAAM,CAAC;IACxCC,MAAM,EAAEC,QAAsC;IAC9CC,kBAAkB,EAAE;MAClBf,IAAI,EAAEY,MAA0B;MAChCV,OAAO,EAAE;IACX,CAAC;IACD,GAAGP;EACL,CAAC;EACDqB,KAAK,EAAE,CAAC,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,CAAC;EAC9DC,KAAKA,CAACnB,KAAK,EAAAoB,IAAA,EAA2B;IAAA,IAAzB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAO,CAAC,GAAAH,IAAA;IAClC,MAAMI,KAAK,GAAG9C,GAAG,CAA4B,CAAC,CAAC,CAAC;IAEhD,MAAMuB,QAAQ,GAAGnB,cAAc,CAACkB,KAAK,EAAE,UAAU,CAAC;IAClD,MAAMK,MAAM,GAAGvB,cAAc,CAACkB,KAAK,EAAE,QAAQ,CAAC;IAC9C,MAAMU,QAAQ,GAAG5B,cAAc,CAACkB,KAAK,EAAE,UAAU,CAAC;IAElD,MAAMyB,WAAW,GAAG/C,GAAG,CAAC,IAAIgD,GAAG,CAAe,CAAC,CAAC;IAChD,MAAMC,WAAW,GAAGjD,GAAG,CAAC,IAAIgD,GAAG,CAAe,CAAC,CAAC;IAChD,MAAME,SAAS,GAAGlD,GAAG,CAAC,IAAIgD,GAAG,CAAe,CAAC,CAAC;IAC9C,MAAMG,WAAW,GAAGnD,GAAG,CAAC,IAAIgD,GAAG,CAAe,CAAC,CAAC;IAChD,MAAMI,aAAa,GAAGnD,UAAU,CAC9BU,QAAQ,CAAC0C,WAAW,EAAE/B,KAAK,CAACiB,kBAAkB,CAChD,CAAC;IACD,MAAMe,aAAa,GAAGtD,GAAG,CAAiB,EAAE,CAAC;IAC7C,MAAMuD,aAAa,GAAGtD,UAAU,CAAC,KAAK,CAAC;IAEvC,SAASoD,WAAWA,CAACG,KAAY,EAAwC;MAAA,IAAtCC,MAAM,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;MAAA,IAAErB,MAAM,GAAAqB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG1C,cAAc;MACrE,MAAM6C,QAAQ,GAAG,IAAIb,GAAG,CAAe,CAAC;MACxC,IAAI,CAACS,MAAM,EAAE;QACXF,aAAa,CAACO,KAAK,GAAG,KAAK;QAC3BX,WAAW,CAACW,KAAK,GAAGD,QAAQ;QAC5B,MAAME,IAAI,GAAGzD,iBAAiB,CAACgD,aAAa,CAACQ,KAAK,EAAE,CAClD,GAAGf,WAAW,CAACe,KAAK,CACrB,CAAC;QACFC,IAAI,CAACC,OAAO,CAAEC,GAAG,IAAK;UACpBC,cAAc,CAACD,GAAG,EAAE,KAAK,CAAC;QAC5B,CAAC,CAAC;QACFX,aAAa,CAACQ,KAAK,CAACE,OAAO,CAAEC,GAAG,IAAK;UACnCC,cAAc,CAACD,GAAG,EAAE,IAAI,CAAC;QAC3B,CAAC,CAAC;QACF;MACF;MACA,KAAK,MAAME,IAAI,IAAIX,KAAK,EAAE;QACxBvC,eAAe,CACboB,MAAM,EACN8B,IAAI,EACJV,MAAM,IAAI,EAAE,EACZnC,KAAK,CAAC8C,OAAO,EACb9C,KAAK,CAAC+C,QAAQ,EACd/C,KAAK,CAACgD,YAAY,EAClBT,QACF,CAAC;MACH;MACAV,WAAW,CAACW,KAAK,GAAGD,QAAQ;MAC5BN,aAAa,CAACO,KAAK,GAAG,KAAK;MAC3BS,MAAM,CAAC,CAAC;IACV;IAEApE,WAAW,CAAC,MAAM;MAChBoD,aAAa,CAACO,KAAK,GAAG,IAAI;MAC1BV,aAAa,CAACU,KAAK,CAACxC,KAAK,CAACkC,KAAK,EAAElC,KAAK,CAACmC,MAAM,EAAEnC,KAAK,CAACe,MAAM,CAAC;IAC9D,CAAC,CAAC;;IAEF;IACA,SAASmC,cAAcA,CACrBP,GAAiB,EAEjB;MAAA,IADAQ,WAA2B,GAAAf,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;MAEhC,MAAM;QAAEgB;MAAU,CAAC,GAAG5B,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC;MACtCQ,WAAW,CAACE,IAAI,CAAC,GAAGD,SAAS,CAAC;MAC9B,KAAK,MAAME,QAAQ,IAAIF,SAAS,EAAE;QAChCD,WAAW,GAAGD,cAAc,CAACI,QAAQ,EAAEH,WAAW,CAAC;MACrD;MACA,OAAOA,WAAW;IACpB;IAEA,SAASI,UAAUA,CAACC,SAAc,EAAE;MAClC,OAAOxD,KAAK,CAACY,UAAU,GACnBzB,oBAAoB,CAACqE,SAAS,EAAExD,KAAK,CAAC8C,OAAO,CAAC,GAC9CU,SAAS;IACf;;IAEA;IACA,SAASC,WAAWA,CAClBvB,KAAY,EAGZ;MAAA,IAFAwB,SAA8B,GAAAtB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MAAA,IACrCuB,KAAK,GAAAvB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;MAET,KAAK,MAAMS,IAAI,IAAIX,KAAK,EAAE;QACxB,MAAMS,GAAG,GAAGxD,oBAAoB,CAAC0D,IAAI,EAAE7C,KAAK,CAAC8C,OAAO,CAAC;QACrD,MAAMc,QAAQ,GACZzE,oBAAoB,CAAC0D,IAAI,EAAE7C,KAAK,CAACgD,YAAsB,CAAC,IAAI,EAAE;QAChE,MAAMa,KAAK,GAAGzE,cAAc,CAACoC,KAAK,CAACgB,KAAK,EAAEG,GAAG,CAAC;QAC9C,MAAMmB,SAAS,GAAGD,KAAK,GACnBrC,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,GAChB;UACEoB,KAAK,EAAE,IAAI;UACXrD,QAAQ,EAAE,KAAK;UACfsD,aAAa,EAAE,KAAK;UACpB3D,MAAM,EAAE,KAAK;UACbJ,QAAQ,EAAE;QACZ,CAAC;QACL,MAAMgE,IAAe,GAAG;UACtBF,KAAK,EAAED,SAAS,CAACC,KAAK;UACtBlB,IAAI;UACJc,KAAK;UACLD,SAAS;UACTN,SAAS,EAAEQ,QAAQ,CAACM,GAAG,CAAEC,KAAU,IACjChF,oBAAoB,CAACgF,KAAK,EAAEnE,KAAK,CAAC8C,OAAO,CAC3C,CAAC;UACD7C,QAAQ,EAAE2D,QAAQ,CAACvB,MAAM,GAAG,CAAC,IAAIyB,SAAS,CAAC7D,QAAQ;UACnDI,MAAM,EAAEyD,SAAS,CAACzD,MAAM;UACxB2D,aAAa,EAAEF,SAAS,CAACE,aAAa;UACtCtD,QAAQ,EAAEoD,SAAS,CAACpD;QACtB,CAAC;QAED+C,WAAW,CAACG,QAAQ,EAAEjB,GAAG,EAAEgB,KAAK,GAAG,CAAC,CAAC;QAErCnC,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,GAAGsB,IAAI;QACvB,IAAIzC,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,CAAC1C,QAAQ,EAAE;UAC7BwB,WAAW,CAACe,KAAK,CAAC4B,GAAG,CAACzB,GAAG,CAAC;QAC5B;QACA,IAAInB,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,CAACjC,QAAQ,EAAE;UAC7Be,WAAW,CAACe,KAAK,CAAC4B,GAAG,CAACzB,GAAG,CAAC;QAC5B;QACA,IAAInB,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,CAACtC,MAAM,EAAE;UAC3BuB,SAAS,CAACY,KAAK,CAAC4B,GAAG,CAACzB,GAAG,CAAC;QAC1B;QAEA0B,eAAe,CAAC1B,GAAG,CAAC;MACtB;IACF;IAEA,SAASC,cAAcA,CAACD,GAAiB,EAAE2B,EAAW,EAAE;MACtD,IAAI,EAAE3B,GAAG,IAAInB,KAAK,CAACgB,KAAK,CAAC,EAAE;MAC3B,MAAMyB,IAAI,GAAGzC,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC;MAC7B,MAAMiB,QAAQ,GAAGzE,oBAAoB,CACnC8E,IAAI,CAACpB,IAAI,EACT7C,KAAK,CAACgD,YACR,CAAC;MACD,IAAI7C,KAAK,CAACoE,OAAO,CAACX,QAAQ,CAAC,IAAIA,QAAQ,CAACvB,MAAM,GAAG,CAAC,EAAE;QAClDiC,EAAE,GAAG7C,WAAW,CAACe,KAAK,CAAC4B,GAAG,CAACzB,GAAG,CAAC,GAAGlB,WAAW,CAACe,KAAK,CAACgC,MAAM,CAAC7B,GAAG,CAAC;QAC/DsB,IAAI,CAAChE,QAAQ,GAAGqE,EAAE;QAClBD,eAAe,CAAC1B,GAAG,CAAC;MACtB;IACF;IAEA/D,KAAK,CACH6C,WAAW,EACVgD,GAAG,IAAK;MACP,IAAI,CAACzE,KAAK,CAACmC,MAAM,EAAE;QACjBH,aAAa,CAACQ,KAAK,GAAG,CAAC,GAAGiC,GAAG,CAAC;MAChC;IACF,CAAC,EACD;MAAEC,IAAI,EAAE;IAAK,CACf,CAAC;IAED,SAASzB,MAAMA,CAAA,EAA0C;MAAA,IAAzC0B,KAAgC,GAAAvC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MACrDwC,MAAM,CAACC,OAAO,CAACrD,KAAK,CAACgB,KAAK,CAAC,CAACE,OAAO,CAACoC,KAAA,IAAiB;QAAA,IAAhB,CAACnC,GAAG,EAAEsB,IAAI,CAAC,GAAAa,KAAA;QAC9C,IAAIH,KAAK,KAAK,IAAI,IAAIA,KAAK,IAAIV,IAAI,CAACN,KAAK,EAAE;UACzCf,cAAc,CAACD,GAAG,EAAE,IAAI,CAAC;QAC3B;MACF,CAAC,CAAC;MACFoC,YAAY,CAAC,CAAC;MACd,OAAOtD,WAAW,CAACe,KAAK;IAC1B;IAEA,SAASwC,YAAYA,CAACrC,GAAiB,EAAE2B,EAAW,EAAEW,KAAkB,EAAE;MACxE,IAAI,EAAEtC,GAAG,IAAInB,KAAK,CAACgB,KAAK,CAAC,EAAE;MAC3B,MAAMyB,IAAI,GAAGzC,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC;MAC7B,IAAIuC,WAAW,GAAG,CAACZ,EAAE,GAAG3B,GAAG,GAAG,EAAE;MAChC,IAAI,CAAC3C,KAAK,CAACM,cAAc,EAAE;QACzB,CAAC4E,WAAW,CAAC,GAAGtD,SAAS,CAACY,KAAK,CAAC2C,IAAI,CAAC,CAAC;MACxC;MACA,IAAIb,EAAE,EAAE;QACN1C,SAAS,CAACY,KAAK,CAAC4B,GAAG,CAACzB,GAAG,CAAC;QACxBsB,IAAI,CAAC5D,MAAM,GAAG,IAAI;MACpB;MACA,IAAI6E,WAAW,IAAIA,WAAW,IAAI1D,KAAK,CAACgB,KAAK,EAAE;QAC7CZ,SAAS,CAACY,KAAK,CAACgC,MAAM,CAACU,WAAW,CAAC;QACnC1D,KAAK,CAACgB,KAAK,CAAC0C,WAAW,CAAC,CAAC7E,MAAM,GAAG,KAAK;QACvCgE,eAAe,CAACa,WAAW,CAAC;MAC9B;MAEA,IACElF,KAAK,CAACoF,oBAAoB,IAC1BH,KAAK,EAAEI,gBAAgB,CAACrF,KAAK,CAACoF,oBAAoB,CAAC,EACnD;QACA;MACF;MAEA,IAAIpF,KAAK,CAACM,cAAc,IAAIN,KAAK,CAACQ,cAAc,KAAK,SAAS,EAAE;QAC9D,KAAK,MAAM8E,UAAU,IAAIpC,cAAc,CAACP,GAAG,CAAC,EAAE;UAC5C,IAAI2C,UAAU,IAAI9D,KAAK,CAACgB,KAAK,EAAE;YAC7B8B,EAAE,GACE1C,SAAS,CAACY,KAAK,CAAC4B,GAAG,CAACkB,UAAU,CAAC,GAC/B1D,SAAS,CAACY,KAAK,CAACgC,MAAM,CAACc,UAAU,CAAC;YACtC9D,KAAK,CAACgB,KAAK,CAAC8C,UAAU,CAAC,CAACjF,MAAM,GAAGiE,EAAE;YACnCD,eAAe,CAACiB,UAAU,CAAC;UAC7B;QACF;MACF;IACF;IAEA,SAASC,cAAcA,CAAC5C,GAAiB,EAAE2B,EAAW,EAAE;MACtD,IAAI,EAAE3B,GAAG,IAAInB,KAAK,CAACgB,KAAK,CAAC,EAAE;MAC3B,MAAMyB,IAAI,GAAGzC,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC;MAE7B,IAAI2B,EAAE,EAAE;QACN3C,WAAW,CAACa,KAAK,CAAC4B,GAAG,CAACzB,GAAG,CAAC;QAC1BsB,IAAI,CAACvD,QAAQ,GAAG,IAAI;MACtB;MAEA,IAAI,CAAC4D,EAAE,IAAI3B,GAAG,IAAInB,KAAK,CAACgB,KAAK,EAAE;QAC7Bb,WAAW,CAACa,KAAK,CAACgC,MAAM,CAAC7B,GAAG,CAAC;QAC7BnB,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,CAACjC,QAAQ,GAAG,KAAK;QACjC2D,eAAe,CAAC1B,GAAG,CAAC;MACtB;MAEA,IAAI3C,KAAK,CAACW,cAAc,KAAK,SAAS,EAAE;QACtC,KAAK,MAAM2E,UAAU,IAAIpC,cAAc,CAACP,GAAG,CAAC,EAAE;UAC5C,IAAI2C,UAAU,IAAI9D,KAAK,CAACgB,KAAK,EAAE;YAC7B8B,EAAE,GACE3C,WAAW,CAACa,KAAK,CAAC4B,GAAG,CAACkB,UAAU,CAAC,GACjC3D,WAAW,CAACa,KAAK,CAACgC,MAAM,CAACc,UAAU,CAAC;YACxC9D,KAAK,CAACgB,KAAK,CAAC8C,UAAU,CAAC,CAAC5E,QAAQ,GAAG4D,EAAE;YACrCD,eAAe,CAACiB,UAAU,CAAC;UAC7B;QACF;MACF;IACF;IAEA,SAASP,YAAYA,CAAA,EAAG;MACtB,MAAMS,GAAG,GAAG,CAAC,GAAG/D,WAAW,CAACe,KAAK,CAAC;MAClCvC,QAAQ,CAACuC,KAAK,GAAGxC,KAAK,CAACY,UAAU,GAC7B4E,GAAG,CAACtB,GAAG,CAAEvB,GAAG,IAAKnB,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,CAACE,IAAI,CAAC,GACvC2C,GAAG;IACT;IAEA,SAASC,UAAUA,CAAA,EAAG;MACpB,MAAMD,GAAG,GAAG,CAAC,GAAG5D,SAAS,CAACY,KAAK,CAAC;MAChCnC,MAAM,CAACmC,KAAK,GAAGxC,KAAK,CAACY,UAAU,GAC3B4E,GAAG,CAACtB,GAAG,CAAEvB,GAAG,IAAKnB,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,CAACE,IAAI,CAAC,GACvC2C,GAAG;IACT;IAEA,SAASE,YAAYA,CAAA,EAAG;MACtB,MAAMF,GAAG,GAAG,CAAC,GAAG7D,WAAW,CAACa,KAAK,CAAC;MAClC9B,QAAQ,CAAC8B,KAAK,GAAGxC,KAAK,CAACY,UAAU,GAC7B4E,GAAG,CAACtB,GAAG,CAAEvB,GAAG,IAAKnB,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,CAACE,IAAI,CAAC,GACvC2C,GAAG;IACT;IAEA,SAASG,YAAYA,CACnBnD,KAAY,EACZoD,QAAgC,EAChCC,OAAiD,EACjDC,OAAmB,EACnB;MACA,MAAMC,WAAW,GAAG/F,KAAK,CAACY,UAAU,GAChC4B,KAAK,CAAC0B,GAAG,CAAE8B,CAAC,IAAK7G,oBAAoB,CAAC6G,CAAC,EAAEhG,KAAK,CAAC8C,OAAO,CAAC,CAAC,GACxDN,KAAK;MACT,MAAMyD,GAAG,GAAG,CAAC,GAAGL,QAAQ,CAACpD,KAAK,CAAC;MAC/B,IAAItD,SAAS,CAAC+G,GAAG,EAAEF,WAAW,CAAC,EAAE;QAC/B;MACF;MACAE,GAAG,CAACvD,OAAO,CAAEC,GAAG,IAAKkD,OAAO,CAAClD,GAAG,EAAE,KAAK,CAAC,CAAC;MACzCoD,WAAW,CAACrD,OAAO,CAAEC,GAAG,IAAKkD,OAAO,CAAClD,GAAG,EAAE,IAAI,CAAC,CAAC;MAChDmD,OAAO,CAAC,CAAC;IACX;IAEAlH,KAAK,CAACqB,QAAQ,EAAGwE,GAAG,IAAK;MACvBkB,YAAY,CAAClB,GAAG,EAAEhD,WAAW,EAAEmB,cAAc,EAAEmC,YAAY,CAAC;IAC9D,CAAC,CAAC;IAEFnG,KAAK,CAACyB,MAAM,EAAGoE,GAAG,IAAK;MACrBkB,YAAY,CAAClB,GAAG,EAAE7C,SAAS,EAAEoD,YAAY,EAAES,UAAU,CAAC;IACxD,CAAC,CAAC;IAEF7G,KAAK,CAAC8B,QAAQ,EAAG+D,GAAG,IAAK;MACvBkB,YAAY,CAAClB,GAAG,EAAE9C,WAAW,EAAE4D,cAAc,EAAEG,YAAY,CAAC;IAC9D,CAAC,CAAC;IAEF9G,KAAK,CACH,MAAMoB,KAAK,CAACkC,KAAK,EAChBuC,GAAU,IAAK;MACd,MAAMyB,OAAO,GAAGtB,MAAM,CAACO,IAAI,CAAC3D,KAAK,CAACgB,KAAK,CAAC,CAAC0B,GAAG,CAAEiC,OAAO,IACnDhH,oBAAoB,CAACqC,KAAK,CAACgB,KAAK,CAAC2D,OAAO,CAAC,CAACtD,IAAI,EAAE7C,KAAK,CAAC8C,OAAO,CAC/D,CAAC;MACD,MAAMsD,OAAO,GAAGxG,OAAO,CACrB6E,GAAG,EACHzE,KAAK,CAAC8C,OAAO,EACb9C,KAAK,CAACgD,YACR,CAAC;MACD,MAAMP,IAAI,GAAGzD,iBAAiB,CAACkH,OAAO,EAAEE,OAAO,CAAC;MAChD,IAAI3D,IAAI,CAACJ,MAAM,GAAG,CAAC,IAAI+D,OAAO,CAAC/D,MAAM,GAAG6D,OAAO,CAAC7D,MAAM,EAAE;QACtD;MACF;MACAI,IAAI,CAACC,OAAO,CAAE2D,CAAC,IAAK,OAAO7E,KAAK,CAACgB,KAAK,CAAC6D,CAAC,CAAC,CAAC;;MAE1C;MACA,MAAMC,WAAW,GAAG,CAAC,GAAG3E,WAAW,CAACa,KAAK,CAAC;MAC1Cb,WAAW,CAACa,KAAK,CAAC+D,KAAK,CAAC,CAAC;MACzB9E,WAAW,CAACe,KAAK,CAAC+D,KAAK,CAAC,CAAC;MACzB3E,SAAS,CAACY,KAAK,CAAC+D,KAAK,CAAC,CAAC;MACvB9C,WAAW,CAACgB,GAAG,CAAC;MAChB,IAAI,CAACvF,SAAS,CAACoH,WAAW,EAAE,CAAC,GAAG3E,WAAW,CAACa,KAAK,CAAC,CAAC,EAAE;QACnDkD,YAAY,CAAC,CAAC;MAChB;IACF,CAAC,EACD;MAAEhB,IAAI,EAAE;IAAK,CACf,CAAC;;IAED;IACA,SAAS8B,UAAUA,CAAC7D,GAAiB,EAAE;MACrC,OAAO,CAAC,CAAC3C,KAAK,CAACmC,MAAM,IAAIN,WAAW,CAACW,KAAK,CAACiE,GAAG,CAAC9D,GAAG,CAAC;IACrD;;IAEA;IACA,SAAS0B,eAAeA,CAAC1B,GAAiB,EAAE;MAC1C,MAAMsB,IAAI,GAAGzC,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC;MAC7B,IAAIsB,IAAI,IAAIA,IAAI,CAACF,KAAK,EAAE;QACtBE,IAAI,CAACF,KAAK,CAAC1D,MAAM,GAAG4D,IAAI,CAAC5D,MAAM;QAC/B4D,IAAI,CAACF,KAAK,CAACrD,QAAQ,GAAGuD,IAAI,CAACvD,QAAQ;QACnCuD,IAAI,CAACF,KAAK,CAACC,aAAa,GAAGC,IAAI,CAACD,aAAa;QAC7CC,IAAI,CAACF,KAAK,CAAC9D,QAAQ,GAAGgE,IAAI,CAAChE,QAAQ;MACrC;IACF;IAEA,SAASyG,QAAQA,CAAC/D,GAAiB,EAAEoB,KAAY,EAAE;MACjD,IAAIvC,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,EAAE;QACpBnB,KAAK,CAACgB,KAAK,CAACG,GAAG,CAAC,CAACoB,KAAK,GAAGA,KAAK;MAChC;MAEAM,eAAe,CAAC1B,GAAG,CAAC;IACtB;IAEAc,WAAW,CAACzD,KAAK,CAACkC,KAAK,CAAC;IAExB,KAAK,MAAMyE,WAAW,IAAI3G,KAAK,CAACK,MAAM,CAAC6D,GAAG,CAACX,UAAU,CAAC,EAAE;MACtDyB,YAAY,CAAC2B,WAAW,EAAE,IAAI,CAAC;IACjC;IAEA,KAAK,MAAMC,aAAa,IAAI5G,KAAK,CAACU,QAAQ,CAACwD,GAAG,CAACX,UAAU,CAAC,EAAE;MAC1DgC,cAAc,CAACqB,aAAa,EAAE,IAAI,CAAC;IACrC;IAEAnI,OAAO,CAAC,WAAW,EAAE;MACnBiI,QAAQ;MACR9D,cAAc;MACdoC,YAAY;MACZO,cAAc;MACdR,YAAY;MACZU,UAAU;MACVC,YAAY;MACZc,UAAU;MACVvE;IACF,CAAC,CAAC;IAEF,MAAM4E,YAAY,GAAGvI,QAAQ,CAAC,MAAM;MAClC,OAAO0B,KAAK,CAACkC,KAAK,CAACnB,MAAM,CAAE+F,IAAI,IAAK;QAClC,OAAO,CAACN,UAAU,CAACrH,oBAAoB,CAAC2H,IAAI,EAAE9G,KAAK,CAAC8C,OAAO,CAAC,CAAC;MAC/D,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAMiE,OAAO,GAAGzI,QAAQ,CAAC,MAAM;MAC7B,OAAO;QACL,aAAa,EAAE;MACjB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM0I,MAAM,GAAG1I,QAAQ,CAAC,MAAM;MAC5B,IAAI2I,KAAK,GAAGjH,KAAK,CAACkH,WAAW;MAC7B,IAAIlH,KAAK,CAACkH,WAAW,IAAI,CAACjI,YAAY,CAACe,KAAK,CAACkH,WAAW,CAAC,EAAE;QACzDD,KAAK,GAAI,iBAAgBjH,KAAK,CAACkH,WAAY,GAAE;MAC/C;MACA,OAAO;QACL,CAAE,6BAA4B,GAAGD;MACnC,CAAC;IACH,CAAC,CAAC;IAEFzI,SAAS,CAAC,MAAM;MACd,IAAIwB,KAAK,CAACa,aAAa,KAAKyB,SAAS,EAAE;QACrCN,aAAa,CAACQ,KAAK,GAAG,CAAC,GAAGS,MAAM,CAACjD,KAAK,CAACa,aAAa,CAAC,CAAC;MACxD,CAAC,MAAM;QACLZ,QAAQ,CAACuC,KAAK,CAACE,OAAO,CAAEsD,CAAM,IAAKpD,cAAc,CAACW,UAAU,CAACyC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvEjB,YAAY,CAAC,CAAC;MAChB;IACF,CAAC,CAAC;IAEFxD,MAAM,CAAC;MACL0B;IACF,CAAC,CAAC;IAEFlE,SAAS,CAAC,MAAM;MACd,OAAAoI,YAAA,CAAAC,SAAA,SAAAD,YAAA;QAAA,SAEgBJ,OAAO,CAACvE,KAAK;QAAA,SAASwE,MAAM,CAACxE,KAAK;QAAA,QAAO;MAAM,IACxDP,aAAa,CAACO,KAAK,IAAA2E,YAAA,CAAA5H,YAAA;QAAA;MAAA,QAAkC,EACrDsH,YAAY,CAACrE,KAAK,CAACH,MAAM,GAAG,CAAC,GAC5BwE,YAAY,CAACrE,KAAK,CAAC0B,GAAG,CAAE4C,IAAI,IAAK;QAC/B,OAAAK,YAAA,CAAA3H,aAAA;UAIM,GAAGF,WAAW,CAACU,KAAK,EAAEH,iBAAiB,CAAC;UACxCgD,IAAI,EAAEiE,IAAI;UACVnD,KAAK,EAAE;QAAC,GAJDtC,KAAK;MAQpB,CAAC,CAAC,GAAA8F,YAAA;QAAA,SAES;MAAsB,IAC9B9F,KAAK,CAAC,SAAS,CAAC,GAAGA,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAA8F,YAAA,gBAAAE,gBAAA,aAAuB,EAEhE;IAIT,CAAC,CAAC;IAEF,OAAO;MACL7F,KAAK;MACLC,WAAW;MACXE,WAAW;MACXC,SAAS;MACTC,WAAW;MACXI,aAAa;MACbD;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"YTreeView.mjs","names":["computed","defineComponent","onMounted","provide","ref","shallowRef","watch","watchEffect","useModelDuplex","useRender","differenceBetween","isColorValue","deepEqual","getObjectValueByPath","hasOwnProperty","debounce","chooseProps","YProgressBar","YTreeViewNode","pressYTreeViewNodeProps","filterTreeItem","filterTreeItems","getKeys","treeViewNodeProps","YTreeView","name","props","expanded","type","Array","default","active","multipleActive","Boolean","activeStrategy","String","selected","selectStrategy","returnItem","defaultExpand","Number","filter","Function","searchDebounceWait","emits","setup","_ref","slots","emit","expose","nodes","expandedSet","Set","selectedSet","activeSet","excludedSet","filterItemsFn","excludeItem","expandedCache","searchLoading","items","search","arguments","length","undefined","excluded","value","diff","forEach","key","updateExpanded","item","itemKey","itemText","itemChildren","expand","getDescendants","descendants","childKeys","push","childKey","getNodeKey","itemOrKey","updateNodes","parentKey","level","children","exist","existNode","vnode","indeterminate","node","map","child","add","issueVnodeState","to","isArray","delete","neo","deep","until","Object","entries","_ref2","emitExpanded","updateActive","event","inactiveKey","keys","activeSingleModifier","getModifierState","descendant","updateSelected","arr","emitActive","emitSelected","stateWatcher","stateSet","updater","emitter","valuesOfKey","v","old","oldKeys","nodeKey","neoKeys","k","oldSelected","clear","isExcluded","has","register","activeValue","selectedValue","renderLeaves","leaf","classes","styles","color","activeColor","_createVNode","_Fragment","_mergeProps","_createTextVNode"],"sources":["../../../src/components/tree-view/YTreeView.tsx"],"sourcesContent":["import {\r\n PropType,\r\n Ref,\r\n VNode,\r\n computed,\r\n defineComponent,\r\n onMounted,\r\n provide,\r\n ref,\r\n shallowRef,\r\n watch,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { CandidateKey } from '../../types';\r\nimport { differenceBetween } from '../../util/array';\r\nimport { isColorValue } from '../../util/color';\r\nimport {\r\n deepEqual,\r\n getObjectValueByPath,\r\n hasOwnProperty,\r\n} from '../../util/common';\r\nimport { debounce } from '../../util/debounce';\r\nimport { chooseProps } from '../../util/vue-component';\r\nimport { YProgressBar } from '../progress-bar';\r\nimport { YTreeViewNode, pressYTreeViewNodeProps } from './YTreeViewNode';\r\nimport { NodeState, TreeviewFilterFn } from './types';\r\nimport { filterTreeItem, filterTreeItems, getKeys } from './util';\r\n\r\nimport './YTreeView.scss';\r\n\r\nconst treeViewNodeProps = pressYTreeViewNodeProps();\r\n\r\nexport const YTreeView = defineComponent({\r\n name: 'YTreeView',\r\n props: {\r\n expanded: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n active: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n multipleActive: Boolean,\r\n activeStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'independent',\r\n },\r\n selected: {\r\n type: [Array] as PropType<CandidateKey[]>,\r\n default: () => [],\r\n },\r\n selectStrategy: {\r\n type: String as PropType<'independent' | 'cascade'>, // TODO: 'leaf'\r\n default: 'leaf',\r\n },\r\n returnItem: Boolean,\r\n defaultExpand: [Boolean, String, Number],\r\n filter: Function as PropType<TreeviewFilterFn>,\r\n searchDebounceWait: {\r\n type: Number as PropType<number>,\r\n default: 700,\r\n },\r\n ...treeViewNodeProps,\r\n },\r\n emits: ['update:expanded', 'update:active', 'update:selected'],\r\n setup(props, { slots, emit, expose }) {\r\n const nodes = ref<Record<CandidateKey, any>>({});\r\n\r\n const expanded = useModelDuplex(props, 'expanded');\r\n const active = useModelDuplex(props, 'active');\r\n const selected = useModelDuplex(props, 'selected');\r\n\r\n const expandedSet = ref(new Set<CandidateKey>());\r\n const selectedSet = ref(new Set<CandidateKey>());\r\n const activeSet = ref(new Set<CandidateKey>());\r\n const excludedSet = ref(new Set<CandidateKey>());\r\n const filterItemsFn = shallowRef(\r\n debounce(excludeItem, props.searchDebounceWait),\r\n );\r\n const expandedCache = ref<CandidateKey[]>([]);\r\n const searchLoading = shallowRef(false);\r\n\r\n function excludeItem(items: any[], search = '', filter = filterTreeItem) {\r\n const excluded = new Set<CandidateKey>();\r\n if (!search) {\r\n searchLoading.value = false;\r\n excludedSet.value = excluded;\r\n const diff = differenceBetween(expandedCache.value, [\r\n ...expandedSet.value,\r\n ]);\r\n diff.forEach((key) => {\r\n updateExpanded(key, false);\r\n });\r\n expandedCache.value.forEach((key) => {\r\n updateExpanded(key, true);\r\n });\r\n return;\r\n }\r\n for (const item of items) {\r\n filterTreeItems(\r\n filter,\r\n item,\r\n search ?? '',\r\n props.itemKey,\r\n props.itemText,\r\n props.itemChildren as string,\r\n excluded,\r\n );\r\n }\r\n excludedSet.value = excluded;\r\n searchLoading.value = false;\r\n expand();\r\n }\r\n\r\n watchEffect(() => {\r\n searchLoading.value = true;\r\n filterItemsFn.value(props.items, props.search, props.filter);\r\n });\r\n\r\n // Util Methods\r\n function getDescendants(\r\n key: CandidateKey,\r\n descendants: CandidateKey[] = [],\r\n ) {\r\n const { childKeys } = nodes.value[key];\r\n descendants.push(...childKeys);\r\n for (const childKey of childKeys) {\r\n descendants = getDescendants(childKey, descendants);\r\n }\r\n return descendants;\r\n }\r\n\r\n function getNodeKey(itemOrKey: any) {\r\n return props.returnItem\r\n ? getObjectValueByPath(itemOrKey, props.itemKey)\r\n : itemOrKey;\r\n }\r\n\r\n // State Methods\r\n function updateNodes(\r\n items: any[],\r\n parentKey: CandidateKey | null = null,\r\n level = 0,\r\n ) {\r\n for (const item of items) {\r\n const key = getObjectValueByPath(item, props.itemKey);\r\n const children =\r\n getObjectValueByPath(item, props.itemChildren as string) ?? [];\r\n const exist = hasOwnProperty(nodes.value, key);\r\n const existNode = exist\r\n ? nodes.value[key]\r\n : {\r\n vnode: null,\r\n selected: false,\r\n indeterminate: false,\r\n active: false,\r\n expanded: false,\r\n };\r\n const node: NodeState = {\r\n vnode: existNode.vnode,\r\n item,\r\n level,\r\n parentKey,\r\n childKeys: children.map((child: any) =>\r\n getObjectValueByPath(child, props.itemKey),\r\n ),\r\n expanded: children.length > 0 && existNode.expanded,\r\n active: existNode.active,\r\n indeterminate: existNode.indeterminate,\r\n selected: existNode.selected,\r\n };\r\n\r\n updateNodes(children, key, level + 1);\r\n\r\n nodes.value[key] = node;\r\n if (nodes.value[key].expanded) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].selected) {\r\n expandedSet.value.add(key);\r\n }\r\n if (nodes.value[key].active) {\r\n activeSet.value.add(key);\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n function updateExpanded(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n const children = getObjectValueByPath(\r\n node.item,\r\n props.itemChildren as string,\r\n );\r\n if (Array.isArray(children) && children.length > 0) {\r\n to ? expandedSet.value.add(key) : expandedSet.value.delete(key);\r\n node.expanded = to;\r\n issueVnodeState(key);\r\n }\r\n }\r\n\r\n watch(\r\n expandedSet,\r\n (neo) => {\r\n if (!props.search) {\r\n expandedCache.value = [...neo];\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n function expand(until: boolean | string | number = true) {\r\n Object.entries(nodes.value).forEach(([key, node]) => {\r\n if (until === true || until >= node.level) {\r\n updateExpanded(key, true);\r\n }\r\n });\r\n emitExpanded();\r\n return expandedSet.value;\r\n }\r\n\r\n function updateActive(key: CandidateKey, to: boolean, event?: MouseEvent) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n let inactiveKey = !to ? key : '';\r\n if (!props.multipleActive) {\r\n [inactiveKey] = activeSet.value.keys();\r\n }\r\n if (to) {\r\n activeSet.value.add(key);\r\n node.active = true;\r\n }\r\n if (inactiveKey && inactiveKey in nodes.value) {\r\n activeSet.value.delete(inactiveKey);\r\n nodes.value[inactiveKey].active = false;\r\n issueVnodeState(inactiveKey);\r\n }\r\n\r\n if (\r\n props.activeSingleModifier &&\r\n event?.getModifierState(props.activeSingleModifier)\r\n ) {\r\n return;\r\n }\r\n\r\n if (props.multipleActive && props.activeStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? activeSet.value.add(descendant)\r\n : activeSet.value.delete(descendant);\r\n nodes.value[descendant].active = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function updateSelected(key: CandidateKey, to: boolean) {\r\n if (!(key in nodes.value)) return;\r\n const node = nodes.value[key];\r\n\r\n if (to) {\r\n selectedSet.value.add(key);\r\n node.selected = true;\r\n }\r\n\r\n if (!to && key in nodes.value) {\r\n selectedSet.value.delete(key);\r\n nodes.value[key].selected = false;\r\n issueVnodeState(key);\r\n }\r\n\r\n if (props.selectStrategy === 'cascade') {\r\n for (const descendant of getDescendants(key)) {\r\n if (descendant in nodes.value) {\r\n to\r\n ? selectedSet.value.add(descendant)\r\n : selectedSet.value.delete(descendant);\r\n nodes.value[descendant].selected = to;\r\n issueVnodeState(descendant);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function emitExpanded() {\r\n const arr = [...expandedSet.value];\r\n expanded.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitActive() {\r\n const arr = [...activeSet.value];\r\n active.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function emitSelected() {\r\n const arr = [...selectedSet.value];\r\n selected.value = props.returnItem\r\n ? arr.map((key) => nodes.value[key].item)\r\n : arr;\r\n }\r\n\r\n function stateWatcher(\r\n value: any[],\r\n stateSet: Ref<Set<CandidateKey>>,\r\n updater: (key: CandidateKey, to: boolean) => void,\r\n emitter: () => void,\r\n ) {\r\n const valuesOfKey = props.returnItem\r\n ? value.map((v) => getObjectValueByPath(v, props.itemKey))\r\n : value;\r\n const old = [...stateSet.value];\r\n if (deepEqual(old, valuesOfKey)) {\r\n return;\r\n }\r\n old.forEach((key) => updater(key, false));\r\n valuesOfKey.forEach((key) => updater(key, true));\r\n emitter();\r\n }\r\n\r\n watch(expanded, (neo) => {\r\n stateWatcher(neo, expandedSet, updateExpanded, emitExpanded);\r\n });\r\n\r\n watch(active, (neo) => {\r\n stateWatcher(neo, activeSet, updateActive, emitActive);\r\n });\r\n\r\n watch(selected, (neo) => {\r\n stateWatcher(neo, selectedSet, updateSelected, emitSelected);\r\n });\r\n\r\n watch(\r\n () => props.items,\r\n (neo: any[]) => {\r\n const oldKeys = Object.keys(nodes.value).map((nodeKey) =>\r\n getObjectValueByPath(nodes.value[nodeKey].item, props.itemKey),\r\n );\r\n const neoKeys = getKeys(\r\n neo,\r\n props.itemKey,\r\n props.itemChildren as string,\r\n );\r\n const diff = differenceBetween(oldKeys, neoKeys);\r\n if (diff.length < 1 && neoKeys.length < oldKeys.length) {\r\n return;\r\n }\r\n diff.forEach((k) => delete nodes.value[k]);\r\n\r\n // init\r\n const oldSelected = [...selectedSet.value];\r\n selectedSet.value.clear();\r\n expandedSet.value.clear();\r\n activeSet.value.clear();\r\n updateNodes(neo);\r\n if (!deepEqual(oldSelected, [...selectedSet.value])) {\r\n emitSelected();\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n // Search\r\n function isExcluded(key: CandidateKey) {\r\n return !!props.search && excludedSet.value.has(key);\r\n }\r\n\r\n // Provide & Issue\r\n function issueVnodeState(key: CandidateKey) {\r\n const node = nodes.value[key];\r\n if (node && node.vnode) {\r\n node.vnode.active = node.active;\r\n node.vnode.selected = node.selected;\r\n node.vnode.indeterminate = node.indeterminate;\r\n node.vnode.expanded = node.expanded;\r\n }\r\n }\r\n\r\n function register(key: CandidateKey, vnode: VNode) {\r\n if (nodes.value[key]) {\r\n nodes.value[key].vnode = vnode;\r\n }\r\n\r\n issueVnodeState(key);\r\n }\r\n\r\n updateNodes(props.items);\r\n\r\n for (const activeValue of props.active.map(getNodeKey)) {\r\n updateActive(activeValue, true);\r\n }\r\n\r\n for (const selectedValue of props.selected.map(getNodeKey)) {\r\n updateSelected(selectedValue, true);\r\n }\r\n\r\n provide('tree-view', {\r\n register,\r\n updateExpanded,\r\n updateActive,\r\n updateSelected,\r\n emitExpanded,\r\n emitActive,\r\n emitSelected,\r\n isExcluded,\r\n searchLoading,\r\n });\r\n\r\n const renderLeaves = computed(() => {\r\n return props.items.filter((leaf) => {\r\n return !isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view': true,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n let color = props.activeColor;\r\n if (props.activeColor && !isColorValue(props.activeColor)) {\r\n color = `var(--y-theme-${props.activeColor})`;\r\n }\r\n return {\r\n [`--y-tree-view__active-color`]: color,\r\n };\r\n });\r\n\r\n onMounted(() => {\r\n if (props.defaultExpand !== undefined) {\r\n expandedCache.value = [...expand(props.defaultExpand)];\r\n } else {\r\n expanded.value.forEach((v: any) => updateExpanded(getNodeKey(v), true));\r\n emitExpanded();\r\n }\r\n });\r\n\r\n expose({\r\n expand,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <div class={classes.value} style={styles.value} role=\"tree\">\r\n {searchLoading.value && <YProgressBar indeterminate />}\r\n {renderLeaves.value.length > 0 ? (\r\n renderLeaves.value.map((leaf) => {\r\n return (\r\n <YTreeViewNode\r\n v-slots={slots}\r\n key={getObjectValueByPath(leaf, props.itemKey)}\r\n {...{\r\n ...chooseProps(props, treeViewNodeProps),\r\n item: leaf,\r\n level: 0,\r\n }}\r\n ></YTreeViewNode>\r\n );\r\n })\r\n ) : (\r\n <div class=\"y-tree-view__no-data\">\r\n {slots['no-data'] ? slots['no-data']() : <span>No Data</span>}\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n nodes,\r\n expandedSet,\r\n selectedSet,\r\n activeSet,\r\n excludedSet,\r\n searchLoading,\r\n expandedCache,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeView = InstanceType<typeof YTreeView>;\r\n"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { computed, defineComponent, h, inject, ref } from 'vue';
|
|
2
|
+
import { pressItemsPropsOptions } from "../../abstract/items.mjs";
|
|
2
3
|
import { useRender } from "../../composables/component.mjs";
|
|
3
4
|
import { getObjectValueByPath } from "../../util/common.mjs";
|
|
4
5
|
import { propsFactory } from "../../util/vue-component.mjs";
|
|
5
6
|
import { YButton } from "../button/index.mjs";
|
|
7
|
+
import { YIconCheckbox, YIconExpand } from "../icons/index.mjs";
|
|
6
8
|
import { YPlate } from "../plate/index.mjs";
|
|
7
9
|
import YTextHighlighter from "../text-highlighter/YTextHighlighter.mjs";
|
|
8
|
-
import { YIconCheckbox, YIconExpand } from "../icons/index.mjs";
|
|
9
10
|
import { YExpandVTransition } from "../transitions/index.mjs";
|
|
10
|
-
import { pressItemsPropsOptions } from "../../abstract/items.mjs";
|
|
11
11
|
export const pressYTreeViewNodeProps = propsFactory({
|
|
12
12
|
search: String,
|
|
13
13
|
disableTransition: Boolean,
|
|
@@ -107,7 +107,8 @@ export const YTreeViewNode = defineComponent({
|
|
|
107
107
|
return h(YTreeViewNode, {
|
|
108
108
|
...props,
|
|
109
109
|
level: (props.level ?? 0) + 1,
|
|
110
|
-
item
|
|
110
|
+
item,
|
|
111
|
+
key: getObjectValueByPath(item, props.itemKey)
|
|
111
112
|
}, slots);
|
|
112
113
|
});
|
|
113
114
|
const indentSpacer = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTreeViewNode.mjs","names":["computed","defineComponent","h","inject","ref","useRender","getObjectValueByPath","propsFactory","YButton","YPlate","YTextHighlighter","YIconCheckbox","YIconExpand","YExpandVTransition","pressItemsPropsOptions","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeClass","Array","activeSingleModifier","activeColor","type","default","enableSelect","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","setup","_ref","slots","expose","treeView","expanded","active","selected","immediate","onClick","e","to","value","updateActive","myKey","emitActive","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","children","itemChildren","imLeaf","length","classes","styles","contentText","itemText","slotProps","searchLoading","leaves","filter","leaf","isExcluded","map","indentSpacer","i","push","class","style","variation","checked","leading","text","keyword","trailing","disabled","role","undefined","created","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.ts"],"sourcesContent":["import {\r\n PropType,\r\n VNodeArrayChildren,\r\n computed,\r\n defineComponent,\r\n h,\r\n inject,\r\n ref,\r\n} from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport { getObjectValueByPath } from '../../util/common';\r\nimport { propsFactory } from '../../util/vue-component';\r\nimport { YButton } from '../button';\r\nimport { YPlate } from '../plate';\r\nimport YTextHighlighter from '../text-highlighter/YTextHighlighter';\r\n\r\nimport { YIconCheckbox, YIconExpand } from '../icons';\r\nimport { YExpandVTransition } from '../transitions';\r\nimport { pressItemsPropsOptions } from \"../../abstract/items\";\r\n\r\nexport const pressYTreeViewNodeProps = propsFactory(\r\n {\r\n search: String,\r\n disableTransition: Boolean,\r\n enableActive: Boolean,\r\n activeClass: [String, Array],\r\n activeSingleModifier: String,\r\n activeColor: {\r\n type: String,\r\n default: 'primary',\r\n },\r\n enableSelect: Boolean,\r\n ...pressItemsPropsOptions({\r\n itemKey: 'id',\r\n }),\r\n },\r\n 'YTreeViewNode',\r\n);\r\n\r\nexport const YTreeViewNode = defineComponent({\r\n name: 'YTreeNode',\r\n components: {\r\n YButton,\r\n YIconExpand,\r\n YPlate,\r\n YIconCheckbox,\r\n },\r\n props: {\r\n item: {\r\n type: Object as PropType<any>,\r\n },\r\n level: {\r\n type: Number as PropType<number>,\r\n default: 0,\r\n },\r\n ...pressYTreeViewNodeProps(),\r\n },\r\n setup(props, { slots, expose }) {\r\n const treeView = inject<any>('tree-view');\r\n\r\n const expanded = ref(false);\r\n const active = ref(false);\r\n const selected = ref(false);\r\n const immediate = ref(false);\r\n\r\n function onClick(e: MouseEvent) {\r\n const to = !active.value;\r\n active.value = to;\r\n treeView.updateActive(myKey.value, to, e);\r\n treeView.emitActive();\r\n }\r\n\r\n function onClickExpand(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !expanded.value;\r\n expanded.value = to;\r\n treeView.updateExpanded(myKey.value, to);\r\n treeView.emitExpanded();\r\n }\r\n\r\n function onClickSelect(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !selected.value;\r\n selected.value = to;\r\n treeView.updateSelected(myKey.value, to);\r\n treeView.emitSelected();\r\n }\r\n\r\n const children = computed(() => {\r\n return props.item?.[props.itemChildren as string] ?? [];\r\n });\r\n\r\n const imLeaf = computed(() => children.value.length < 1);\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view-node': true,\r\n 'y-tree-view-node--leaf': imLeaf.value,\r\n 'y-tree-view-node--expanded': expanded.value,\r\n 'y-tree-view-node--active': active.value,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n return {\r\n '--tree-view-node--level': props.level,\r\n };\r\n });\r\n\r\n const contentText = computed(() => {\r\n return getObjectValueByPath(props.item, props.itemText) ?? '';\r\n });\r\n\r\n const slotProps = computed(() => {\r\n return {\r\n level: props.level,\r\n imLeaf: imLeaf.value,\r\n };\r\n });\r\n\r\n const searchLoading = computed(() => {\r\n return treeView.searchLoading.value;\r\n });\r\n\r\n useRender(() => {\r\n const leaves = children.value\r\n .filter((leaf: any) => {\r\n return !treeView.isExcluded(\r\n getObjectValueByPath(leaf, props.itemKey),\r\n );\r\n })\r\n .map((item: any) => {\r\n return h(\r\n YTreeViewNode,\r\n { ...props, level: (props.level ?? 0) + 1, item },\r\n slots,\r\n );\r\n });\r\n const indentSpacer: VNodeArrayChildren = [];\r\n for (let i = 0; i < props.level; i += 1) {\r\n indentSpacer.push(\r\n h('div', { class: 'y-tree-view-node__indent-spacer' }),\r\n );\r\n }\r\n return h(\r\n 'div',\r\n {\r\n class: classes.value,\r\n style: styles.value,\r\n '.role': 'treeitem',\r\n 'data-level': props.level,\r\n },\r\n [\r\n h(\r\n 'div',\r\n {\r\n class: 'y-tree-view-node__container',\r\n onClick: (e: MouseEvent) =>\r\n props.enableActive ? onClick(e) : void 0,\r\n },\r\n [\r\n h(YPlate),\r\n h('div', { class: 'y-tree-view-node__indents' }, indentSpacer),\r\n /* EXPAND */\r\n !imLeaf.value && leaves.length > 0\r\n ? h(\r\n YButton,\r\n {\r\n class: 'y-tree-view-node__expand-icon',\r\n variation: 'icon',\r\n onClick: (e: MouseEvent) => onClickExpand(e),\r\n },\r\n () => [\r\n slots['expand-icon']\r\n ? slots['expand-icon']()\r\n : h(YIconExpand),\r\n ],\r\n )\r\n : h('i', { class: 'y-tree-view-node__no-expand-icon' }),\r\n props.enableSelect &&\r\n h(\r\n 'div',\r\n {\r\n class: ['y-tree-view-node__select'],\r\n onClick: (e: MouseEvent) => onClickSelect(e),\r\n },\r\n [h(YIconCheckbox, { checked: selected.value })],\r\n ),\r\n /* CONTENT */\r\n h('div', { class: 'y-tree-view-node__content' }, [\r\n slots.leading &&\r\n h(\r\n 'div',\r\n { class: 'y-tree-view-node__leading' },\r\n slots.leading(slotProps.value),\r\n ),\r\n h(\r\n 'div',\r\n { class: 'y-tree-view-node__text' },\r\n slots.default\r\n ? slots.default?.({\r\n text: contentText.value,\r\n item: props.item,\r\n ...slotProps.value\r\n })\r\n : props.search && !searchLoading.value\r\n ? h(YTextHighlighter, {\r\n text: contentText.value,\r\n keyword: props.search,\r\n })\r\n : contentText.value,\r\n ),\r\n slots.trailing &&\r\n h(\r\n 'div',\r\n { class: 'y-tree-view-node__trailing' },\r\n slots.trailing(),\r\n ),\r\n ]),\r\n ],\r\n ),\r\n /* CHILDREN */\r\n children.value.length > 0\r\n ? h(\r\n YExpandVTransition,\r\n { disabled: props.disableTransition },\r\n expanded.value\r\n ? () =>\r\n h(\r\n 'div',\r\n {\r\n class: { 'y-tree-view-node__leaves': true },\r\n role: 'tree',\r\n },\r\n leaves,\r\n )\r\n : undefined,\r\n )\r\n : undefined,\r\n ],\r\n );\r\n });\r\n\r\n const myKey = computed(() => {\r\n return getObjectValueByPath(props.item, props.itemKey);\r\n });\r\n\r\n expose({\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n immediate,\r\n });\r\n\r\n return {\r\n treeView,\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n immediate,\r\n };\r\n },\r\n created() {\r\n this.treeView?.register?.(this.myKey, this);\r\n },\r\n});\r\n\r\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YTreeViewNode.mjs","names":["computed","defineComponent","h","inject","ref","pressItemsPropsOptions","useRender","getObjectValueByPath","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeClass","Array","activeSingleModifier","activeColor","type","default","enableSelect","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","setup","_ref","slots","expose","treeView","expanded","active","selected","immediate","onClick","e","to","value","updateActive","myKey","emitActive","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","children","itemChildren","imLeaf","length","classes","styles","contentText","itemText","slotProps","searchLoading","leaves","filter","leaf","isExcluded","map","key","indentSpacer","i","push","class","style","variation","checked","leading","text","keyword","trailing","disabled","role","undefined","created","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.ts"],"sourcesContent":["import {\n PropType,\n VNodeArrayChildren,\n computed,\n defineComponent,\n h,\n inject,\n ref,\n} from 'vue';\n\nimport { pressItemsPropsOptions } from '../../abstract/items';\nimport { useRender } from '../../composables/component';\nimport { getObjectValueByPath } from '../../util/common';\nimport { propsFactory } from '../../util/vue-component';\nimport { YButton } from '../button';\nimport { YIconCheckbox, YIconExpand } from '../icons';\nimport { YPlate } from '../plate';\nimport YTextHighlighter from '../text-highlighter/YTextHighlighter';\nimport { YExpandVTransition } from '../transitions';\n\nexport const pressYTreeViewNodeProps = propsFactory(\n {\n search: String,\n disableTransition: Boolean,\n enableActive: Boolean,\n activeClass: [String, Array],\n activeSingleModifier: String,\n activeColor: {\n type: String,\n default: 'primary',\n },\n enableSelect: Boolean,\n ...pressItemsPropsOptions({\n itemKey: 'id',\n }),\n },\n 'YTreeViewNode',\n);\n\nexport const YTreeViewNode = defineComponent({\n name: 'YTreeNode',\n components: {\n YButton,\n YIconExpand,\n YPlate,\n YIconCheckbox,\n },\n props: {\n item: {\n type: Object as PropType<any>,\n },\n level: {\n type: Number as PropType<number>,\n default: 0,\n },\n ...pressYTreeViewNodeProps(),\n },\n setup(props, { slots, expose }) {\n const treeView = inject<any>('tree-view');\n\n const expanded = ref(false);\n const active = ref(false);\n const selected = ref(false);\n const immediate = ref(false);\n\n function onClick(e: MouseEvent) {\n const to = !active.value;\n active.value = to;\n treeView.updateActive(myKey.value, to, e);\n treeView.emitActive();\n }\n\n function onClickExpand(e: MouseEvent) {\n e.stopPropagation();\n const to = !expanded.value;\n expanded.value = to;\n treeView.updateExpanded(myKey.value, to);\n treeView.emitExpanded();\n }\n\n function onClickSelect(e: MouseEvent) {\n e.stopPropagation();\n const to = !selected.value;\n selected.value = to;\n treeView.updateSelected(myKey.value, to);\n treeView.emitSelected();\n }\n\n const children = computed(() => {\n return props.item?.[props.itemChildren as string] ?? [];\n });\n\n const imLeaf = computed(() => children.value.length < 1);\n\n const classes = computed(() => {\n return {\n 'y-tree-view-node': true,\n 'y-tree-view-node--leaf': imLeaf.value,\n 'y-tree-view-node--expanded': expanded.value,\n 'y-tree-view-node--active': active.value,\n };\n });\n\n const styles = computed(() => {\n return {\n '--tree-view-node--level': props.level,\n };\n });\n\n const contentText = computed(() => {\n return getObjectValueByPath(props.item, props.itemText) ?? '';\n });\n\n const slotProps = computed(() => {\n return {\n level: props.level,\n imLeaf: imLeaf.value,\n };\n });\n\n const searchLoading = computed(() => {\n return treeView.searchLoading.value;\n });\n\n useRender(() => {\n const leaves = children.value\n .filter((leaf: any) => {\n return !treeView.isExcluded(\n getObjectValueByPath(leaf, props.itemKey),\n );\n })\n .map((item: any) => {\n return h(\n YTreeViewNode,\n {\n ...props,\n level: (props.level ?? 0) + 1,\n item,\n key: getObjectValueByPath(item, props.itemKey),\n },\n slots,\n );\n });\n const indentSpacer: VNodeArrayChildren = [];\n for (let i = 0; i < props.level; i += 1) {\n indentSpacer.push(\n h('div', { class: 'y-tree-view-node__indent-spacer' }),\n );\n }\n return h(\n 'div',\n {\n class: classes.value,\n style: styles.value,\n '.role': 'treeitem',\n 'data-level': props.level,\n },\n [\n h(\n 'div',\n {\n class: 'y-tree-view-node__container',\n onClick: (e: MouseEvent) =>\n props.enableActive ? onClick(e) : void 0,\n },\n [\n h(YPlate),\n h('div', { class: 'y-tree-view-node__indents' }, indentSpacer),\n /* EXPAND */\n !imLeaf.value && leaves.length > 0\n ? h(\n YButton,\n {\n class: 'y-tree-view-node__expand-icon',\n variation: 'icon',\n onClick: (e: MouseEvent) => onClickExpand(e),\n },\n () => [\n slots['expand-icon']\n ? slots['expand-icon']()\n : h(YIconExpand),\n ],\n )\n : h('i', { class: 'y-tree-view-node__no-expand-icon' }),\n props.enableSelect &&\n h(\n 'div',\n {\n class: ['y-tree-view-node__select'],\n onClick: (e: MouseEvent) => onClickSelect(e),\n },\n [h(YIconCheckbox, { checked: selected.value })],\n ),\n /* CONTENT */\n h('div', { class: 'y-tree-view-node__content' }, [\n slots.leading &&\n h(\n 'div',\n { class: 'y-tree-view-node__leading' },\n slots.leading(slotProps.value),\n ),\n h(\n 'div',\n { class: 'y-tree-view-node__text' },\n slots.default\n ? slots.default?.({\n text: contentText.value,\n item: props.item,\n ...slotProps.value,\n })\n : props.search && !searchLoading.value\n ? h(YTextHighlighter, {\n text: contentText.value,\n keyword: props.search,\n })\n : contentText.value,\n ),\n slots.trailing &&\n h(\n 'div',\n { class: 'y-tree-view-node__trailing' },\n slots.trailing(),\n ),\n ]),\n ],\n ),\n /* CHILDREN */\n children.value.length > 0\n ? h(\n YExpandVTransition,\n { disabled: props.disableTransition },\n expanded.value\n ? () =>\n h(\n 'div',\n {\n class: { 'y-tree-view-node__leaves': true },\n role: 'tree',\n },\n leaves,\n )\n : undefined,\n )\n : undefined,\n ],\n );\n });\n\n const myKey = computed(() => {\n return getObjectValueByPath(props.item, props.itemKey);\n });\n\n expose({\n myKey,\n expanded,\n active,\n selected,\n immediate,\n });\n\n return {\n treeView,\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n },\n created() {\n this.treeView?.register?.(this.myKey, this);\n },\n});\n\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\n"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export function getKeys(items, itemKey, childrenKey) {
|
|
|
13
13
|
}
|
|
14
14
|
export function filterTreeItem(item, search, textKey) {
|
|
15
15
|
const text = getObjectValueByPath(item, textKey);
|
|
16
|
-
return text
|
|
16
|
+
return text?.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;
|
|
17
17
|
}
|
|
18
18
|
export function filterTreeItems(filter, item, search, idKey, textKey, childrenKey, excluded) {
|
|
19
19
|
const children = getObjectValueByPath(item, childrenKey);
|