@veltra/desktop 1.0.13 → 1.0.15
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/components/action/action-group.js +110 -3
- package/dist/components/action/action-group.js.map +1 -1
- package/dist/components/action/action-group.vue.d.ts +16 -3
- package/dist/components/action/action.js +26 -13
- package/dist/components/action/action.js.map +1 -1
- package/dist/components/action/style.js +2 -1
- package/dist/components/action/style2.css +35 -7
- package/dist/components/batch-edit/batch-edit-form.js +106 -42
- package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
- package/dist/components/batch-edit/batch-edit-list.js +84 -47
- package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
- package/dist/components/batch-edit/batch-edit.js +42 -10
- package/dist/components/batch-edit/batch-edit.js.map +1 -1
- package/dist/components/batch-edit/style.js +2 -4
- package/dist/components/batch-edit/style2.css +202 -30
- package/dist/components/batch-edit/use-edit.js +45 -9
- package/dist/components/batch-edit/use-edit.js.map +1 -1
- package/dist/components/cascade/cascade.js +3 -1
- package/dist/components/cascade/cascade.js.map +1 -1
- package/dist/components/code-editor/code-editor.js +145 -49
- package/dist/components/code-editor/code-editor.js.map +1 -1
- package/dist/components/code-editor/code-editor.vue.d.ts +2 -0
- package/dist/components/code-editor/style2.css +87 -19
- package/dist/components/dialog/dialog.js +6 -2
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog/style2.css +2 -3
- package/dist/components/expression-editor/components/path-preview.js +27 -0
- package/dist/components/expression-editor/components/path-preview.js.map +1 -0
- package/dist/components/expression-editor/components/variable-picker.js +200 -153
- package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
- package/dist/components/expression-editor/core/chip.js +54 -0
- package/dist/components/expression-editor/core/chip.js.map +1 -0
- package/dist/components/expression-editor/core/editor.js +425 -0
- package/dist/components/expression-editor/core/editor.js.map +1 -0
- package/dist/components/expression-editor/core/mention.js +91 -0
- package/dist/components/expression-editor/core/mention.js.map +1 -0
- package/dist/components/expression-editor/core/model.js +64 -0
- package/dist/components/expression-editor/core/model.js.map +1 -0
- package/dist/components/expression-editor/di.js +4 -10
- package/dist/components/expression-editor/di.js.map +1 -1
- package/dist/components/expression-editor/expression-editor.js +168 -114
- package/dist/components/expression-editor/expression-editor.js.map +1 -1
- package/dist/components/expression-editor/expression-editor.vue.d.ts +2 -1
- package/dist/components/expression-editor/style.js +0 -2
- package/dist/components/expression-editor/style2.css +145 -218
- package/dist/components/index.js +54 -54
- package/dist/components/layout/layout.js +12 -11
- package/dist/components/layout/layout.js.map +1 -1
- package/dist/components/multi-select/multi-select.vue.d.ts +1 -1
- package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +1 -1
- package/dist/components/number-input/number-input.js +4 -4
- package/dist/components/number-input/number-input.js.map +1 -1
- package/dist/components/pop-confirm/pop-confirm.vue.d.ts +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.js +1 -1
- package/dist/components/rich-text-editor/toolbar.js +2 -2
- package/dist/components/steps/steps.vue.d.ts +1 -1
- package/dist/components/table/use-table.js +16 -0
- package/dist/components/table/use-table.js.map +1 -1
- package/dist/components/tabs/tabs-horizontal.vue.d.ts +3 -3
- package/dist/components/tabs/tabs-vertical.vue.d.ts +2 -2
- package/dist/components/tabs/tabs.vue.d.ts +3 -3
- package/dist/components/tip/tip.js +4 -5
- package/dist/components/tip/tip.js.map +1 -1
- package/dist/components/tip/tip.vue.d.ts +1 -1
- package/dist/components/tree/style2.css +18 -12
- package/dist/components/tree/tree-node.js +7 -4
- package/dist/components/tree/tree-node.js.map +1 -1
- package/dist/components/tree-select/tree-select.vue.d.ts +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +83 -83
- package/dist/style.js +3 -3
- package/dist/types/action.d.ts +38 -4
- package/dist/types/cascade.d.ts +2 -3
- package/dist/types/code-editor.d.ts +9 -2
- package/dist/types/expression-editor.d.ts +9 -1
- package/dist/types/index.d.ts +2 -2
- package/package.json +11 -12
- package/src/components/action/action-group.vue +126 -56
- package/src/components/action/action.vue +35 -12
- package/src/components/action/style.scss +46 -10
- package/src/components/action/style.ts +2 -1
- package/src/components/batch-edit/batch-edit-form.vue +121 -45
- package/src/components/batch-edit/batch-edit-list.vue +56 -39
- package/src/components/batch-edit/batch-edit.vue +57 -6
- package/src/components/batch-edit/style.scss +251 -37
- package/src/components/batch-edit/style.ts +5 -8
- package/src/components/batch-edit/use-edit.ts +58 -11
- package/src/components/cascade/cascade.vue +3 -1
- package/src/components/code-editor/code-editor.vue +198 -63
- package/src/components/code-editor/style.scss +110 -12
- package/src/components/dialog/dialog.vue +6 -2
- package/src/components/dialog/style.scss +4 -4
- package/src/components/expression-editor/__test__/chip.test.ts +86 -0
- package/src/components/expression-editor/__test__/editor.test.ts +47 -0
- package/src/components/expression-editor/__test__/mention.test.ts +122 -0
- package/src/components/expression-editor/__test__/model.test.ts +127 -0
- package/src/components/expression-editor/components/path-preview.vue +32 -0
- package/src/components/expression-editor/components/variable-picker.vue +225 -219
- package/src/components/expression-editor/core/chip.ts +101 -0
- package/src/components/expression-editor/core/editor.ts +514 -0
- package/src/components/expression-editor/core/mention.ts +121 -0
- package/src/components/expression-editor/core/model.ts +109 -0
- package/src/components/expression-editor/di.ts +4 -32
- package/src/components/expression-editor/expression-editor.vue +184 -151
- package/src/components/expression-editor/style.scss +148 -219
- package/src/components/expression-editor/style.ts +0 -2
- package/src/components/layout/layout.vue +17 -19
- package/src/components/number-input/number-input.vue +4 -4
- package/src/components/table/use-table.ts +16 -0
- package/src/components/tip/tip.vue +4 -3
- package/src/components/tree/style.scss +30 -33
- package/src/components/tree/tree-node.vue +4 -2
- package/src/types/action.ts +42 -4
- package/src/types/cascade.ts +4 -3
- package/src/types/code-editor.ts +9 -2
- package/src/types/expression-editor.ts +9 -0
- package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js +0 -65
- package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +0 -1
- package/dist/components/expression-editor/constants.js +0 -9
- package/dist/components/expression-editor/constants.js.map +0 -1
- package/dist/components/expression-editor/internal/editor-runtime/create-runtime.js +0 -47
- package/dist/components/expression-editor/internal/editor-runtime/create-runtime.js.map +0 -1
- package/dist/components/expression-editor/internal/editor-runtime/model-sync.js +0 -49
- package/dist/components/expression-editor/internal/editor-runtime/model-sync.js.map +0 -1
- package/dist/components/expression-editor/internal/features/commands/register-command-packs.js +0 -215
- package/dist/components/expression-editor/internal/features/commands/register-command-packs.js.map +0 -1
- package/dist/components/expression-editor/internal/features/drag-drop/drag-drop-service.js +0 -33
- package/dist/components/expression-editor/internal/features/drag-drop/drag-drop-service.js.map +0 -1
- package/dist/components/expression-editor/internal/features/insertion/insertion-service.js +0 -33
- package/dist/components/expression-editor/internal/features/insertion/insertion-service.js.map +0 -1
- package/dist/components/expression-editor/nodes/variable-node.js +0 -94
- package/dist/components/expression-editor/nodes/variable-node.js.map +0 -1
- package/dist/components/expression-editor/parser.js +0 -32
- package/dist/components/expression-editor/parser.js.map +0 -1
- package/dist/components/expression-editor/plain-text.js +0 -19
- package/dist/components/expression-editor/plain-text.js.map +0 -1
- package/dist/components/expression-editor/use-context.js +0 -69
- package/dist/components/expression-editor/use-context.js.map +0 -1
- package/dist/components/expression-editor/use-decorators.js +0 -27
- package/dist/components/expression-editor/use-decorators.js.map +0 -1
- package/dist/components/expression-editor/use-expression-drag-drop.js +0 -275
- package/dist/components/expression-editor/use-expression-drag-drop.js.map +0 -1
- package/src/components/batch-edit/batch-edit-new.vue +0 -168
- package/src/components/batch-edit/style-new.scss +0 -35
- package/src/components/batch-edit/use-edit-new.ts +0 -68
- package/src/components/batch-edit/use-tip.ts +0 -47
- package/src/components/expression-editor/__test__/architecture-boundaries.test.ts +0 -103
- package/src/components/expression-editor/__test__/architecture-compatibility.test.ts +0 -52
- package/src/components/expression-editor/__test__/drag-drop.test.ts +0 -171
- package/src/components/expression-editor/__test__/parser.test.ts +0 -62
- package/src/components/expression-editor/constants.ts +0 -6
- package/src/components/expression-editor/internal/contracts/editor-runtime.ts +0 -11
- package/src/components/expression-editor/internal/editor-runtime/create-runtime.ts +0 -64
- package/src/components/expression-editor/internal/editor-runtime/index.ts +0 -1
- package/src/components/expression-editor/internal/editor-runtime/model-sync.ts +0 -68
- package/src/components/expression-editor/internal/features/commands/register-command-packs.ts +0 -517
- package/src/components/expression-editor/internal/features/drag-drop/drag-drop-service.ts +0 -51
- package/src/components/expression-editor/internal/features/insertion/insertion-service.ts +0 -56
- package/src/components/expression-editor/nodes/variable-node.tsx +0 -118
- package/src/components/expression-editor/parser.ts +0 -46
- package/src/components/expression-editor/plain-text.ts +0 -25
- package/src/components/expression-editor/plan.md +0 -22
- package/src/components/expression-editor/use-context.ts +0 -134
- package/src/components/expression-editor/use-decorators.tsx +0 -29
- package/src/components/expression-editor/use-editor.ts +0 -12
- package/src/components/expression-editor/use-expression-drag-drop.ts +0 -396
|
@@ -16,34 +16,102 @@
|
|
|
16
16
|
*/
|
|
17
17
|
/** 暗色:data-theme 与系统偏好,与 UITheme.injectBuiltInThemes 选择器策略一致 */
|
|
18
18
|
.u-code-editor {
|
|
19
|
-
|
|
19
|
+
--u-code-editor-default-lines: 8;
|
|
20
|
+
--u-code-editor-line-height: 1.6;
|
|
21
|
+
--u-code-editor-font-size: 13px;
|
|
22
|
+
--u-code-editor-padding-block: 6px;
|
|
23
|
+
--u-code-editor-bg: var(--u-bg-color-top);
|
|
24
|
+
--u-code-editor-fg: var(--u-text-color-main);
|
|
25
|
+
--u-code-editor-border: var(--u-border-color);
|
|
26
|
+
--u-code-editor-gutter-fg: var(--u-text-color-placeholder);
|
|
27
|
+
--u-code-editor-active-bg: rgba(30, 136, 229, 0.06);
|
|
28
|
+
--u-code-editor-selection-bg: rgba(30, 136, 229, 0.18);
|
|
29
|
+
position: relative;
|
|
20
30
|
width: 100%;
|
|
21
|
-
|
|
22
|
-
|
|
31
|
+
max-height: 480px;
|
|
32
|
+
border-radius: var(--u-radius-default);
|
|
33
|
+
background-color: var(--u-code-editor-bg);
|
|
34
|
+
box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
|
|
35
|
+
overflow: hidden;
|
|
36
|
+
transition: box-shadow 0.2s ease;
|
|
23
37
|
}
|
|
24
|
-
.u-code-editor:hover {
|
|
25
|
-
box-shadow: inset 0 0
|
|
38
|
+
.u-code-editor:hover, .u-code-editor:focus-within {
|
|
39
|
+
box-shadow: inset 0 0 0 1px var(--u-color-primary);
|
|
26
40
|
}
|
|
27
|
-
.u-code-editor
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
41
|
+
.u-code-editor .cm-editor {
|
|
42
|
+
background: transparent;
|
|
43
|
+
color: var(--u-code-editor-fg);
|
|
44
|
+
font-size: var(--u-code-editor-font-size);
|
|
45
|
+
line-height: var(--u-code-editor-line-height);
|
|
46
|
+
font-family: ui-monospace, "JetBrains Mono", "Fira Code", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;
|
|
47
|
+
outline: none;
|
|
31
48
|
}
|
|
32
|
-
.u-code-editor
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
49
|
+
.u-code-editor .cm-editor.cm-focused {
|
|
50
|
+
outline: none;
|
|
51
|
+
}
|
|
52
|
+
.u-code-editor .cm-editor .cm-scroller {
|
|
53
|
+
font-family: inherit;
|
|
54
|
+
line-height: inherit;
|
|
55
|
+
overflow: visible;
|
|
56
|
+
}
|
|
57
|
+
.u-code-editor .cm-editor .cm-content {
|
|
58
|
+
padding: var(--u-code-editor-padding-block) 0;
|
|
59
|
+
min-height: calc(var(--u-code-editor-default-lines) * var(--u-code-editor-line-height) * var(--u-code-editor-font-size) + var(--u-code-editor-padding-block) * 2);
|
|
60
|
+
caret-color: var(--u-color-primary);
|
|
61
|
+
}
|
|
62
|
+
.u-code-editor .cm-editor .cm-line {
|
|
63
|
+
padding: 0 8px;
|
|
64
|
+
}
|
|
65
|
+
.u-code-editor .cm-editor .cm-gutters {
|
|
66
|
+
background-color: transparent;
|
|
67
|
+
color: var(--u-code-editor-gutter-fg);
|
|
68
|
+
border-right: 1px solid var(--u-code-editor-border);
|
|
69
|
+
user-select: none;
|
|
70
|
+
}
|
|
71
|
+
.u-code-editor .cm-editor .cm-gutterElement-phantom {
|
|
72
|
+
color: var(--u-code-editor-gutter-fg);
|
|
73
|
+
opacity: 0.45;
|
|
74
|
+
padding: 0 3px 0 5px;
|
|
75
|
+
text-align: right;
|
|
76
|
+
white-space: nowrap;
|
|
77
|
+
min-width: 1ch;
|
|
78
|
+
box-sizing: border-box;
|
|
79
|
+
pointer-events: none;
|
|
36
80
|
}
|
|
37
|
-
.u-code-editor
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
81
|
+
.u-code-editor .cm-editor .cm-activeLineGutter,
|
|
82
|
+
.u-code-editor .cm-editor .cm-activeLine {
|
|
83
|
+
background-color: var(--u-code-editor-active-bg);
|
|
84
|
+
}
|
|
85
|
+
.u-code-editor .cm-editor .cm-selectionBackground,
|
|
86
|
+
.u-code-editor .cm-editor ::selection {
|
|
87
|
+
background-color: var(--u-code-editor-selection-bg);
|
|
88
|
+
}
|
|
89
|
+
.u-code-editor .cm-editor .cm-cursor {
|
|
90
|
+
border-left-color: var(--u-color-primary);
|
|
91
|
+
}
|
|
92
|
+
.u-code-editor.is-dark {
|
|
93
|
+
--u-code-editor-bg: #282c34;
|
|
94
|
+
--u-code-editor-fg: #abb2bf;
|
|
95
|
+
--u-code-editor-border: rgba(255, 255, 255, 0.08);
|
|
96
|
+
--u-code-editor-gutter-fg: #5c6370;
|
|
97
|
+
--u-code-editor-active-bg: rgba(255, 255, 255, 0.04);
|
|
98
|
+
--u-code-editor-selection-bg: rgba(99, 162, 255, 0.25);
|
|
41
99
|
}
|
|
42
100
|
.u-code-editor.is-disabled {
|
|
43
101
|
background-color: var(--u-color-disabled);
|
|
44
|
-
box-shadow: inset 0 0
|
|
102
|
+
box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
|
|
103
|
+
cursor: not-allowed;
|
|
104
|
+
}
|
|
105
|
+
.u-code-editor.is-disabled:hover, .u-code-editor.is-disabled:focus-within {
|
|
106
|
+
box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
|
|
107
|
+
}
|
|
108
|
+
.u-code-editor.is-disabled .cm-editor,
|
|
109
|
+
.u-code-editor.is-disabled .cm-content {
|
|
45
110
|
cursor: not-allowed;
|
|
46
111
|
}
|
|
47
112
|
.u-code-editor.is-readonly {
|
|
48
|
-
box-shadow:
|
|
113
|
+
box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
|
|
114
|
+
}
|
|
115
|
+
.u-code-editor.is-readonly:hover, .u-code-editor.is-readonly:focus-within {
|
|
116
|
+
box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
|
|
49
117
|
}
|
|
@@ -93,11 +93,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
93
93
|
x: 0,
|
|
94
94
|
y: 0
|
|
95
95
|
};
|
|
96
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* 更新弹框位置
|
|
98
|
+
* 使用独立 `translate` 而非整体 `transform`, 与 spring 动画的 `scale` 解耦,
|
|
99
|
+
* 避免动画期间整体 transform 被关键帧覆盖、动画结束后又"啪"地跳回内联位置
|
|
100
|
+
*/
|
|
97
101
|
const updateDialogTransform = (x, y) => {
|
|
98
102
|
const dom = dialogRef.value;
|
|
99
103
|
if (!dom) return;
|
|
100
|
-
setStyles(dom, {
|
|
104
|
+
setStyles(dom, { translate: `${x}px ${y}px` });
|
|
101
105
|
};
|
|
102
106
|
useDrag({
|
|
103
107
|
target: headerRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.js","names":["$attrs","$slots"],"sources":["../../../src/components/dialog/dialog.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" @after-leave=\"emit('closed')\" @enter=\"onOverlayEnter\">\n <div\n v-if=\"overlayVisible || opened\"\n v-show=\"overlayVisible\"\n :class=\"[cls.e('overlay'), bem.is('modal', modal)]\"\n ref=\"overlayRef\"\n @mousedown=\"modal && close()\"\n @keyup.esc=\"close\"\n tabindex=\"0\"\n >\n <transition name=\"spring\" @after-leave=\"onAfterDialogLeave\">\n <div\n v-if=\"dialogVisible\"\n v-bind=\"$attrs\"\n :class=\"className\"\n ref=\"dialogRef\"\n @mousedown.stop=\"handleIncreaseZIndex\"\n >\n <section :class=\"headerCls\" ref=\"headerRef\" @transitionend.stop @transitioncancel.stop>\n <div :class=\"cls.e('title')\" @mousedown.stop>\n <slot name=\"header\">\n {{ header || title }}\n </slot>\n </div>\n\n <div :class=\"cls.e('buttons')\" @mousedown.stop>\n <u-icon\n v-if=\"maximized\"\n :class=\"cls.e('btn-recover')\"\n @click=\"toggleMaximize(false)\"\n title=\"还原\"\n >\n <Recover />\n </u-icon>\n <u-icon\n v-else\n :class=\"cls.e('btn-maximize')\"\n @click=\"toggleMaximize(true)\"\n title=\"最大化\"\n >\n <Maximum />\n </u-icon>\n <u-icon :class=\"cls.e('btn-close')\" @click=\"close\" title=\"关闭\">\n <Close />\n </u-icon>\n </div>\n </section>\n\n <u-scroll\n tag=\"section\"\n :class=\"cls.e('body')\"\n ref=\"bodyRef\"\n :content-style=\"{ height: maximized ? '100%' : undefined }\"\n @transitionend.stop\n @transitioncancel.stop\n >\n <slot v-bind=\"{ maximized }\" />\n </u-scroll>\n\n <section ref=\"footerRef\" :class=\"footerCls\" v-if=\"$slots.footer\">\n <slot name=\"footer\" v-bind=\"{ close }\" />\n </section>\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n\n <!-- 触发 -->\n <UNodeRender @click=\"visible = !visible\" :content=\"getTriggerNode()\" ref=\"triggerRef\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag, useFallbackProps } from '@veltra/compositions'\nimport { Close, Maximum, Recover } from '@veltra/icons/normal'\nimport { bem, extractNormalVNodes, setStyles, zIndex } from '@veltra/utils'\nimport { shallowRef, watch, computed, provide, nextTick } from 'vue'\n\nimport type { DialogProps, DialogEmits, DialogExposed, ComponentSize } from '../../types'\nimport type { ScrollExposed } from '../../types'\nimport { UIcon } from '../icon'\nimport { UNodeRender } from '../node-render'\nimport { UScroll } from '../scroll'\nimport { DialogDIKey } from './di'\nimport { useMaximum } from './use-maximum'\n\ndefineOptions({\n name: 'Dialog',\n inheritAttrs: false\n})\n\nconst props = withDefaults(defineProps<DialogProps>(), {\n modal: true,\n modelValue: true,\n autoScroll: true\n})\nconst emit = defineEmits<DialogEmits>()\n\nconst slots = defineSlots<{\n footer?: (props: { close: () => void }) => any\n trigger?: () => any\n header?: () => any\n default?: (props: {\n /** 弹框是否最大化了 */\n maximized: boolean\n }) => any\n}>()\n\nconst cls = bem('dialog')\nconst headerCls = [cls.e('header')]\nconst footerCls = [cls.e('footer')]\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst overlayRef = shallowRef<HTMLDivElement>()\n\n/** 弹框模板引用 */\nconst dialogRef = shallowRef<HTMLDivElement>()\n\n/** 弹框头部模板引用 */\nconst headerRef = shallowRef<HTMLDivElement>()\n\n/** 弹框body模板引用 */\nconst bodyRef = shallowRef<ScrollExposed>()\n\n/** 弹框footer模板引用 */\nconst footerRef = shallowRef<HTMLDivElement>()\n\nconst visible = defineModel<boolean>({\n default: false\n})\n\nconst overlayVisible = shallowRef(false)\nconst dialogVisible = shallowRef(false)\n\nwatch(visible, (v) => {\n if (v) {\n overlayVisible.value = true\n } else {\n dialogVisible.value = false\n }\n})\n\nfunction getTriggerNode() {\n const nodes = slots.trigger?.()\n if (!nodes?.length) return null\n\n const node = extractNormalVNodes(nodes)[0]\n return node\n}\n\nfunction onOverlayEnter() {\n dialogVisible.value = true\n}\n\nfunction onAfterDialogLeave() {\n overlayVisible.value = false\n}\n\nconst { toggleMaximize, maximized } = useMaximum({\n dialogRef,\n cls\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\n/**\n * 是否弹出过, 用于控制下一次弹出时是否采用v-show的方式\n */\nlet opened = false\n\nwatch(visible, (v) => {\n if (!v) return\n\n if (!opened) opened = true\n\n // 初始化位置偏移量\n translated.x = 0\n translated.y = 0\n\n nextTick(() => {\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n })\n})\n\n/** dialog位移的位置 */\nconst translated = {\n x: 0,\n y: 0\n}\n\n/** 更新弹框位置 */\nconst updateDialogTransform = (x: number, y: number) => {\n const dom = dialogRef.value\n if (!dom) return\n setStyles(dom, {\n transform: `scale3d(1, 1, 1) translate3d(${x}px, ${y}px, 0)`\n })\n}\n\n// 运用拖拽\nuseDrag({\n target: headerRef,\n\n onDragStart() {\n handleIncreaseZIndex()\n },\n\n onDrag({ x, y }) {\n if (maximized.value) return\n updateDialogTransform(translated.x + x, translated.y + y)\n },\n\n onDragEnd({ x, y }) {\n if (maximized.value) return\n translated.x += x\n translated.y += y\n\n // 字体模糊的bug修正\n if (translated.x % 2 !== 0) {\n translated.x += x < 0 ? 1 : -1\n }\n if (translated.y % 2 !== 0) {\n translated.y += y < 0 ? 1 : -1\n }\n updateDialogTransform(translated.x, translated.y)\n }\n})\n\nfunction handleIncreaseZIndex() {\n if (props.modal) return\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n}\n\n/** 关闭 */\nconst close = () => {\n visible.value = false\n}\n\nprovide(DialogDIKey, {\n visible\n})\n\ndefineExpose<DialogExposed>({\n close\n})\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dialog.js","names":["$attrs","$slots"],"sources":["../../../src/components/dialog/dialog.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" @after-leave=\"emit('closed')\" @enter=\"onOverlayEnter\">\n <div\n v-if=\"overlayVisible || opened\"\n v-show=\"overlayVisible\"\n :class=\"[cls.e('overlay'), bem.is('modal', modal)]\"\n ref=\"overlayRef\"\n @mousedown=\"modal && close()\"\n @keyup.esc=\"close\"\n tabindex=\"0\"\n >\n <transition name=\"spring\" @after-leave=\"onAfterDialogLeave\">\n <div\n v-if=\"dialogVisible\"\n v-bind=\"$attrs\"\n :class=\"className\"\n ref=\"dialogRef\"\n @mousedown.stop=\"handleIncreaseZIndex\"\n >\n <section :class=\"headerCls\" ref=\"headerRef\" @transitionend.stop @transitioncancel.stop>\n <div :class=\"cls.e('title')\" @mousedown.stop>\n <slot name=\"header\">\n {{ header || title }}\n </slot>\n </div>\n\n <div :class=\"cls.e('buttons')\" @mousedown.stop>\n <u-icon\n v-if=\"maximized\"\n :class=\"cls.e('btn-recover')\"\n @click=\"toggleMaximize(false)\"\n title=\"还原\"\n >\n <Recover />\n </u-icon>\n <u-icon\n v-else\n :class=\"cls.e('btn-maximize')\"\n @click=\"toggleMaximize(true)\"\n title=\"最大化\"\n >\n <Maximum />\n </u-icon>\n <u-icon :class=\"cls.e('btn-close')\" @click=\"close\" title=\"关闭\">\n <Close />\n </u-icon>\n </div>\n </section>\n\n <u-scroll\n tag=\"section\"\n :class=\"cls.e('body')\"\n ref=\"bodyRef\"\n :content-style=\"{ height: maximized ? '100%' : undefined }\"\n @transitionend.stop\n @transitioncancel.stop\n >\n <slot v-bind=\"{ maximized }\" />\n </u-scroll>\n\n <section ref=\"footerRef\" :class=\"footerCls\" v-if=\"$slots.footer\">\n <slot name=\"footer\" v-bind=\"{ close }\" />\n </section>\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n\n <!-- 触发 -->\n <UNodeRender @click=\"visible = !visible\" :content=\"getTriggerNode()\" ref=\"triggerRef\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag, useFallbackProps } from '@veltra/compositions'\nimport { Close, Maximum, Recover } from '@veltra/icons/normal'\nimport { bem, extractNormalVNodes, setStyles, zIndex } from '@veltra/utils'\nimport { shallowRef, watch, computed, provide, nextTick } from 'vue'\n\nimport type { DialogProps, DialogEmits, DialogExposed, ComponentSize } from '../../types'\nimport type { ScrollExposed } from '../../types'\nimport { UIcon } from '../icon'\nimport { UNodeRender } from '../node-render'\nimport { UScroll } from '../scroll'\nimport { DialogDIKey } from './di'\nimport { useMaximum } from './use-maximum'\n\ndefineOptions({\n name: 'Dialog',\n inheritAttrs: false\n})\n\nconst props = withDefaults(defineProps<DialogProps>(), {\n modal: true,\n modelValue: true,\n autoScroll: true\n})\nconst emit = defineEmits<DialogEmits>()\n\nconst slots = defineSlots<{\n footer?: (props: { close: () => void }) => any\n trigger?: () => any\n header?: () => any\n default?: (props: {\n /** 弹框是否最大化了 */\n maximized: boolean\n }) => any\n}>()\n\nconst cls = bem('dialog')\nconst headerCls = [cls.e('header')]\nconst footerCls = [cls.e('footer')]\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst overlayRef = shallowRef<HTMLDivElement>()\n\n/** 弹框模板引用 */\nconst dialogRef = shallowRef<HTMLDivElement>()\n\n/** 弹框头部模板引用 */\nconst headerRef = shallowRef<HTMLDivElement>()\n\n/** 弹框body模板引用 */\nconst bodyRef = shallowRef<ScrollExposed>()\n\n/** 弹框footer模板引用 */\nconst footerRef = shallowRef<HTMLDivElement>()\n\nconst visible = defineModel<boolean>({\n default: false\n})\n\nconst overlayVisible = shallowRef(false)\nconst dialogVisible = shallowRef(false)\n\nwatch(visible, (v) => {\n if (v) {\n overlayVisible.value = true\n } else {\n dialogVisible.value = false\n }\n})\n\nfunction getTriggerNode() {\n const nodes = slots.trigger?.()\n if (!nodes?.length) return null\n\n const node = extractNormalVNodes(nodes)[0]\n return node\n}\n\nfunction onOverlayEnter() {\n dialogVisible.value = true\n}\n\nfunction onAfterDialogLeave() {\n overlayVisible.value = false\n}\n\nconst { toggleMaximize, maximized } = useMaximum({\n dialogRef,\n cls\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\n/**\n * 是否弹出过, 用于控制下一次弹出时是否采用v-show的方式\n */\nlet opened = false\n\nwatch(visible, (v) => {\n if (!v) return\n\n if (!opened) opened = true\n\n // 初始化位置偏移量\n translated.x = 0\n translated.y = 0\n\n nextTick(() => {\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n })\n})\n\n/** dialog位移的位置 */\nconst translated = {\n x: 0,\n y: 0\n}\n\n/**\n * 更新弹框位置\n * 使用独立 `translate` 而非整体 `transform`, 与 spring 动画的 `scale` 解耦,\n * 避免动画期间整体 transform 被关键帧覆盖、动画结束后又\"啪\"地跳回内联位置\n */\nconst updateDialogTransform = (x: number, y: number) => {\n const dom = dialogRef.value\n if (!dom) return\n setStyles(dom, {\n translate: `${x}px ${y}px`\n })\n}\n\n// 运用拖拽\nuseDrag({\n target: headerRef,\n\n onDragStart() {\n handleIncreaseZIndex()\n },\n\n onDrag({ x, y }) {\n if (maximized.value) return\n updateDialogTransform(translated.x + x, translated.y + y)\n },\n\n onDragEnd({ x, y }) {\n if (maximized.value) return\n translated.x += x\n translated.y += y\n\n // 字体模糊的bug修正\n if (translated.x % 2 !== 0) {\n translated.x += x < 0 ? 1 : -1\n }\n if (translated.y % 2 !== 0) {\n translated.y += y < 0 ? 1 : -1\n }\n updateDialogTransform(translated.x, translated.y)\n }\n})\n\nfunction handleIncreaseZIndex() {\n if (props.modal) return\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n}\n\n/** 关闭 */\nconst close = () => {\n visible.value = false\n}\n\nprovide(DialogDIKey, {\n visible\n})\n\ndefineExpose<DialogExposed>({\n close\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6FA,MAAM,QAAQ;EAKd,MAAM,OAAO;EAEb,MAAM,QAAQ,UAAA;EAUd,MAAM,MAAM,IAAI,SAAQ;EACxB,MAAM,YAAY,CAAC,IAAI,EAAE,SAAS,CAAA;EAClC,MAAM,YAAY,CAAC,IAAI,EAAE,SAAS,CAAA;EAElC,MAAM,EAAE,SAAS,iBAAiB,CAAC,MAAM,EAAE,EAAE,MAAM,WAA4B,CAAA;EAE/E,MAAM,aAAa,YAA2B;;EAG9C,MAAM,YAAY,YAA2B;;EAG7C,MAAM,YAAY,YAA2B;;EAG7C,MAAM,UAAU,YAA0B;;EAG1C,MAAM,YAAY,YAA2B;EAE7C,MAAM,UAAU,SAAoB,SAAA,aAEnC;EAED,MAAM,iBAAiB,WAAW,MAAK;EACvC,MAAM,gBAAgB,WAAW,MAAK;AAEtC,QAAM,UAAU,MAAM;AACpB,OAAI,EACF,gBAAe,QAAQ;OAEvB,eAAc,QAAQ;IAEzB;EAED,SAAS,iBAAiB;GACxB,MAAM,QAAQ,MAAM,WAAU;AAC9B,OAAI,CAAC,OAAO,OAAQ,QAAO;AAG3B,UADa,oBAAoB,MAAM,CAAC;;EAI1C,SAAS,iBAAiB;AACxB,iBAAc,QAAQ;;EAGxB,SAAS,qBAAqB;AAC5B,kBAAe,QAAQ;;EAGzB,MAAM,EAAE,gBAAgB,cAAc,WAAW;GAC/C;GACA;GACD,CAAA;EAED,MAAM,YAAY,eAAe;AAC/B,UAAO,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,MAAM,CAAA;IACjC;;;;EAKD,IAAI,SAAS;AAEb,QAAM,UAAU,MAAM;AACpB,OAAI,CAAC,EAAG;AAER,OAAI,CAAC,OAAQ,UAAS;AAGtB,cAAW,IAAI;AACf,cAAW,IAAI;AAEf,kBAAe;AACb,cAAU,WAAW,OAAQ,EAAE,QAAQ,QAAQ,EAAE,CAAA;KAClD;IACF;;EAGD,MAAM,aAAa;GACjB,GAAG;GACH,GAAG;GACL;;;;;;EAOA,MAAM,yBAAyB,GAAW,MAAc;GACtD,MAAM,MAAM,UAAU;AACtB,OAAI,CAAC,IAAK;AACV,aAAU,KAAK,EACb,WAAW,GAAG,EAAE,KAAK,EAAE,KACxB,CAAA;;AAIH,UAAQ;GACN,QAAQ;GAER,cAAc;AACZ,0BAAqB;;GAGvB,OAAO,EAAE,GAAG,KAAK;AACf,QAAI,UAAU,MAAO;AACrB,0BAAsB,WAAW,IAAI,GAAG,WAAW,IAAI,EAAC;;GAG1D,UAAU,EAAE,GAAG,KAAK;AAClB,QAAI,UAAU,MAAO;AACrB,eAAW,KAAK;AAChB,eAAW,KAAK;AAGhB,QAAI,WAAW,IAAI,MAAM,EACvB,YAAW,KAAK,IAAI,IAAI,IAAI;AAE9B,QAAI,WAAW,IAAI,MAAM,EACvB,YAAW,KAAK,IAAI,IAAI,IAAI;AAE9B,0BAAsB,WAAW,GAAG,WAAW,EAAC;;GAEnD,CAAA;EAED,SAAS,uBAAuB;AAC9B,OAAI,MAAM,MAAO;AACjB,aAAU,WAAW,OAAQ,EAAE,QAAQ,QAAQ,EAAE,CAAA;;;EAInD,MAAM,cAAc;AAClB,WAAQ,QAAQ;;AAGlB,UAAQ,aAAa,EACnB,SACD,CAAA;AAED,WAA4B,EAC1B,OACD,CAAA;;;kBA5PC,YAmEW,UAAA,EAnED,IAAG,QAAM,EAAA,CACjB,YAiEa,YAAA;KAjED,MAAK;KAAQ,cAAW,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,SAAA;KAAa,SAAO;;4BAgEtD,CA9DE,eAAA,SAAkB,MAAA,OAAM,GAAA,gBAAA,WAAA,EADhC,mBA+DM,OAAA;;MA5DH,OAAK,eAAA,CAAG,MAAA,IAAG,CAAC,EAAC,UAAA,EAAa,MAAA,IAAG,CAAC,GAAE,SAAU,QAAA,MAAK,CAAA,CAAA;eAC5C;MAAJ,KAAI;MACH,aAAS,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,SAAS,OAAK;MACzB,SAAK,SAAM,OAAK,CAAA,MAAA,CAAA;MACjB,UAAS;SAET,YAqDa,YAAA;MArDD,MAAK;MAAU,cAAa;;6BAoDhC,CAlDE,cAAA,SAAA,WAAA,EADR,mBAmDM,OAnDN,WAmDM,EAAA,KAAA,GAAA,EAjDIA,KAAAA,QAAM;OACb,OAAO,UAAA;gBACJ;OAAJ,KAAI;OACH,aAAS,cAAO,sBAAoB,CAAA,OAAA,CAAA;;OAErC,mBA4BU,WAAA;QA5BA,OAAK,eAAE,UAAS;iBAAM;QAAJ,KAAI;QAAa,iBAAa,OAAA,OAAA,OAAA,KAAA,oBAAd,IAAmB,CAAA,OAAA,CAAA;QAAE,oBAAgB,OAAA,OAAA,OAAA,KAAA,oBAAjB,IAAsB,CAAA,OAAA,CAAA;WACpF,mBAIM,OAAA;QAJA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,QAAA,CAAA;QAAY,aAAS,OAAA,OAAA,OAAA,KAAA,oBAAV,IAAe,CAAA,OAAA,CAAA;WAC1C,WAEO,KAAA,QAAA,UAAA,EAAA,QAAA,CAAA,gBAAA,gBADF,QAAA,UAAU,QAAA,MAAK,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,GAAA,EAItB,mBAoBM,OAAA;QApBA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,UAAA,CAAA;QAAc,aAAS,OAAA,OAAA,OAAA,KAAA,oBAAV,IAAe,CAAA,OAAA,CAAA;WAEpC,MAAA,UAAS,IAAA,WAAA,EADjB,YAOS,MAAA,YAAA,EAAA;;QALN,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,cAAA,CAAA;QACZ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,eAAc,CAAA,MAAA;QACtB,OAAM;;+BAEK,CAAX,YAAW,MAAA,QAAA,CAAA,CAAA,CAAA;;yCAEb,YAOS,MAAA,YAAA,EAAA;;QALN,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,eAAA,CAAA;QACZ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,eAAc,CAAA,KAAA;QACtB,OAAM;;+BAEK,CAAX,YAAW,MAAA,QAAA,CAAA,CAAA,CAAA;;0BAEb,YAES,MAAA,YAAA,EAAA;QAFA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,YAAA,CAAA;QAAgB,SAAO;QAAO,OAAM;;+BAC9C,CAAT,YAAS,MAAA,MAAA,CAAA,CAAA,CAAA;;;OAKf,YASW,MAAA,YAAA,EAAA;QART,KAAI;QACH,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,OAAA,CAAA;iBACT;QAAJ,KAAI;QACH,iBAAa,EAAA,QAAY,MAAA,UAAS,GAAA,SAAY,KAAA,GAAS;QACvD,iBAAa,OAAA,OAAA,OAAA,KAAA,oBAAd,IAAmB,CAAA,OAAA,CAAA;QAClB,oBAAgB,OAAA,OAAA,OAAA,KAAA,oBAAjB,IAAsB,CAAA,OAAA,CAAA;;+BAES,CAA/B,WAA+B,KAAA,QAAA,WAAA,eAAA,mBAAA,EAAA,WAAf,MAAA,UAAS,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;OAGuBC,KAAAA,OAAO,UAAA,WAAA,EAAzD,mBAEU,WAAA;;iBAFG;QAAJ,KAAI;QAAa,OAAK,eAAE,UAAS;WACxC,WAAyC,KAAA,QAAA,UAAA,eAAA,mBAAA,EAAX,OAAK,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,IAAA,mBAAA,QAAA,KAAA;;;yBAzDjC,eAAA,MAAc,CAAA,CAAA,GAAA,mBAAA,QAAA,KAAA,CAAA,CAAA;;;IAiE5B,mBAAA,OAAW;IACX,YAAwF,MAAA,WAAA,EAAA;KAA1E,SAAK,OAAA,QAAA,OAAA,OAAA,WAAE,QAAA,QAAO,CAAI,QAAA;KAAU,SAAS,gBAAc;KAAI,KAAI"}
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
.u-dialog {
|
|
37
37
|
pointer-events: auto;
|
|
38
38
|
border-radius: var(--u-radius-large);
|
|
39
|
-
will-change: transform, opacity;
|
|
40
39
|
display: flex;
|
|
41
40
|
flex-direction: column;
|
|
42
41
|
max-height: 90vh;
|
|
@@ -133,7 +132,7 @@
|
|
|
133
132
|
width: 100vw !important;
|
|
134
133
|
height: 100vh !important;
|
|
135
134
|
max-height: 100vh;
|
|
136
|
-
|
|
135
|
+
translate: 0 0 !important;
|
|
137
136
|
}
|
|
138
137
|
.dialog-maximize-enter-to .u-dialog__header:active {
|
|
139
138
|
cursor: default;
|
|
@@ -141,7 +140,7 @@
|
|
|
141
140
|
|
|
142
141
|
.dialog-maximize-enter-active,
|
|
143
142
|
.dialog-maximize-leave-active {
|
|
144
|
-
transition-property: width, height,
|
|
143
|
+
transition-property: width, height, translate;
|
|
145
144
|
transition-duration: 0.25s;
|
|
146
145
|
}
|
|
147
146
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Fragment, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, renderList, toDisplayString, unref } from "vue";
|
|
2
|
+
import { bem } from "@veltra/utils";
|
|
3
|
+
//#region src/components/expression-editor/components/path-preview.vue
|
|
4
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5
|
+
name: "ExpressionPathPreview",
|
|
6
|
+
__name: "path-preview",
|
|
7
|
+
props: { path: {} },
|
|
8
|
+
setup(__props) {
|
|
9
|
+
const cls = bem("expression-editor");
|
|
10
|
+
return (_ctx, _cache) => {
|
|
11
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass(unref(cls).e("path-preview")) }, [createElementVNode("div", { class: normalizeClass(unref(cls).e("path-preview-title")) }, "变量路径", 2), createElementVNode("ul", { class: normalizeClass(unref(cls).e("path-tree")) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.path, (node, i) => {
|
|
12
|
+
return openBlock(), createElementBlock("li", {
|
|
13
|
+
key: `${i}-${node.value || node.label}`,
|
|
14
|
+
class: normalizeClass([unref(cls).e("path-tree-item"), unref(bem).is("active", i === __props.path.length - 1)]),
|
|
15
|
+
style: normalizeStyle({ paddingLeft: `${i * 14}px` })
|
|
16
|
+
}, [i > 0 ? (openBlock(), createElementBlock("span", {
|
|
17
|
+
key: 0,
|
|
18
|
+
class: normalizeClass(unref(cls).e("path-tree-branch"))
|
|
19
|
+
}, "└", 2)) : createCommentVNode("v-if", true), createElementVNode("span", { class: normalizeClass(unref(cls).e("path-tree-label")) }, toDisplayString(node.label), 3)], 6);
|
|
20
|
+
}), 128))], 2)], 2);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
//#endregion
|
|
25
|
+
export { _sfc_main as default };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=path-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-preview.js","names":[],"sources":["../../../../src/components/expression-editor/components/path-preview.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('path-preview')\">\n <div :class=\"cls.e('path-preview-title')\">变量路径</div>\n <ul :class=\"cls.e('path-tree')\">\n <li\n v-for=\"(node, i) in path\"\n :key=\"`${i}-${node.value || node.label}`\"\n :class=\"[cls.e('path-tree-item'), bem.is('active', i === path.length - 1)]\"\n :style=\"{ paddingLeft: `${i * 14}px` }\"\n >\n <span v-if=\"i > 0\" :class=\"cls.e('path-tree-branch')\">└</span>\n <span :class=\"cls.e('path-tree-label')\">{{ node.label }}</span>\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\nimport type { VariableItem } from '../../../types'\n\ndefineOptions({\n name: 'ExpressionPathPreview'\n})\n\ndefineProps<{\n path: VariableItem[]\n}>()\n\nconst cls = bem('expression-editor')\n</script>\n"],"mappings":";;;;;;;;EA8BA,MAAM,MAAM,IAAI,oBAAmB;;uBA7BjC,mBAaM,OAAA,EAbA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,eAAA,CAAA,EAAA,EAAA,CAChB,mBAAoD,OAAA,EAA9C,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,qBAAA,CAAA,EAAA,EAAwB,QAAI,EAAA,EAC9C,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,YAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACf,mBAQK,UAAA,MAAA,WAPiB,QAAA,OAAZ,MAAM,MAAC;wBADjB,mBAQK,MAAA;KANF,KAAG,GAAK,EAAC,GAAI,KAAK,SAAS,KAAK;KAChC,OAAK,eAAA,CAAG,MAAA,IAAG,CAAC,EAAC,iBAAA,EAAoB,MAAA,IAAG,CAAC,GAAE,UAAW,MAAM,QAAA,KAAK,SAAM,EAAA,CAAA,CAAA;KACnE,OAAK,eAAA,EAAA,aAAA,GAAoB,IAAC,GAAA,KAAA,CAAA;QAEf,IAAC,KAAA,WAAA,EAAb,mBAA8D,QAAA;;KAA1C,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,mBAAA,CAAA;OAAsB,KAAC,EAAA,IAAA,mBAAA,QAAA,KAAA,EACvD,mBAA+D,QAAA,EAAxD,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,kBAAA,CAAA,EAAA,EAAA,gBAAwB,KAAK,MAAK,EAAA,EAAA,CAAA,EAAA,EAAA"}
|