eco-vue-js 0.11.13 → 0.11.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/assets/icons/IconRedo.svg.js +32 -0
- package/dist/assets/icons/IconUndo.svg.js +32 -0
- package/dist/components/FieldWrapper/WFieldWrapper.vue.d.ts +1 -0
- package/dist/components/FieldWrapper/WFieldWrapper.vue.d.ts.map +1 -1
- package/dist/components/FieldWrapper/WFieldWrapper.vue.js +36 -6
- package/dist/components/FieldWrapper/use/useFieldSaved.d.ts +4 -5
- package/dist/components/FieldWrapper/use/useFieldSaved.d.ts.map +1 -1
- package/dist/components/FieldWrapper/use/useFieldSaved.js +10 -25
- package/dist/components/FormAsync/use/useFormAsync.js +3 -3
- package/dist/components/Input/WInput.vue.d.ts +5 -5
- package/dist/components/Input/WInput.vue.d.ts.map +1 -1
- package/dist/components/Input/WInput.vue.js +107 -49
- package/dist/components/Input/WInputDate.vue.d.ts +2 -8
- package/dist/components/Input/WInputDate.vue.d.ts.map +1 -1
- package/dist/components/Input/WInputSuggest.vue.d.ts +1 -4
- package/dist/components/Input/WInputSuggest.vue.d.ts.map +1 -1
- package/dist/components/Input/WInputSuggest.vue.js +2 -2
- package/dist/components/Input/WInputToolbarButton.vue.d.ts +5 -8
- package/dist/components/Input/WInputToolbarButton.vue.d.ts.map +1 -1
- package/dist/components/Input/WInputToolbarButton.vue.js +33 -25
- package/dist/components/Input/components/ContentEditable.vue.d.ts +1 -4
- package/dist/components/Input/components/ContentEditable.vue.d.ts.map +1 -1
- package/dist/components/Input/components/ContentEditable.vue2.js +24 -62
- package/dist/components/Input/components/InputToolbar.vue.d.ts +7 -0
- package/dist/components/Input/components/InputToolbar.vue.d.ts.map +1 -1
- package/dist/components/Input/components/InputToolbar.vue2.js +39 -13
- package/dist/components/Input/components/InputToolbarButton.vue.d.ts +5 -2
- package/dist/components/Input/components/InputToolbarButton.vue.d.ts.map +1 -1
- package/dist/components/Input/components/InputToolbarButton.vue.js +19 -11
- package/dist/components/Input/models/utils.d.ts +7 -0
- package/dist/components/Input/models/utils.d.ts.map +1 -0
- package/dist/components/Input/models/utils.js +56 -0
- package/dist/components/Input/types.d.ts +3 -2
- package/dist/components/Input/types.d.ts.map +1 -1
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +3 -1
- package/dist/utils/useCopy.d.ts +1 -0
- package/dist/utils/useCopy.d.ts.map +1 -1
- package/dist/utils/useCopy.js +20 -18
- package/package.json +1 -1
@@ -0,0 +1,32 @@
|
|
1
|
+
import { createElementBlock, openBlock, createElementVNode } from 'vue';
|
2
|
+
|
3
|
+
const _hoisted_1 = {
|
4
|
+
width: "20",
|
5
|
+
height: "20",
|
6
|
+
viewBox: "0 0 24 24",
|
7
|
+
fill: "none",
|
8
|
+
xmlns: "http://www.w3.org/2000/svg"
|
9
|
+
};
|
10
|
+
|
11
|
+
function render(_ctx, _cache) {
|
12
|
+
return (openBlock(), createElementBlock("svg", _hoisted_1, _cache[0] || (_cache[0] = [
|
13
|
+
createElementVNode("path", {
|
14
|
+
d: "M16.87 18.31h-8a5 5 0 0 1 0-10h11",
|
15
|
+
stroke: "currentcolor",
|
16
|
+
"stroke-linecap": "round",
|
17
|
+
"stroke-linejoin": "round",
|
18
|
+
"stroke-miterlimit": "10",
|
19
|
+
"stroke-width": "1.5"
|
20
|
+
}, null, -1),
|
21
|
+
createElementVNode("path", {
|
22
|
+
d: "m17.57 10.81 2.56-2.56-2.56-2.56",
|
23
|
+
stroke: "currentcolor",
|
24
|
+
"stroke-linecap": "round",
|
25
|
+
"stroke-linejoin": "round",
|
26
|
+
"stroke-width": "1.5"
|
27
|
+
}, null, -1)
|
28
|
+
])))
|
29
|
+
}
|
30
|
+
const IconRedo = { render: render };
|
31
|
+
|
32
|
+
export { IconRedo as default, render };
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { createElementBlock, openBlock, createElementVNode } from 'vue';
|
2
|
+
|
3
|
+
const _hoisted_1 = {
|
4
|
+
width: "20",
|
5
|
+
height: "20",
|
6
|
+
viewBox: "0 0 24 24",
|
7
|
+
fill: "none",
|
8
|
+
xmlns: "http://www.w3.org/2000/svg"
|
9
|
+
};
|
10
|
+
|
11
|
+
function render(_ctx, _cache) {
|
12
|
+
return (openBlock(), createElementBlock("svg", _hoisted_1, _cache[0] || (_cache[0] = [
|
13
|
+
createElementVNode("path", {
|
14
|
+
d: "M7.13 18.31h8a5 5 0 0 0 0-10h-11",
|
15
|
+
stroke: "currentcolor",
|
16
|
+
"stroke-linecap": "round",
|
17
|
+
"stroke-linejoin": "round",
|
18
|
+
"stroke-miterlimit": "10",
|
19
|
+
"stroke-width": "1.5"
|
20
|
+
}, null, -1),
|
21
|
+
createElementVNode("path", {
|
22
|
+
d: "M6.43 10.81 3.87 8.25l2.56-2.56",
|
23
|
+
stroke: "currentcolor",
|
24
|
+
"stroke-linecap": "round",
|
25
|
+
"stroke-linejoin": "round",
|
26
|
+
"stroke-width": "1.5"
|
27
|
+
}, null, -1)
|
28
|
+
])))
|
29
|
+
}
|
30
|
+
const IconUndo = { render: render };
|
31
|
+
|
32
|
+
export { IconUndo as default, render };
|
@@ -26,6 +26,7 @@ declare function __VLS_template(): {
|
|
26
26
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
27
27
|
declare const __VLS_component: import('vue').DefineComponent<FieldWrapperProps, {
|
28
28
|
fieldRef: Readonly<import('vue').ShallowRef<HTMLDivElement | null>>;
|
29
|
+
showMessage: (value: string, durationMs?: number) => void;
|
29
30
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
30
31
|
click: (value: MouseEvent) => any;
|
31
32
|
}, string, import('vue').PublicProps, Readonly<FieldWrapperProps> & Readonly<{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WFieldWrapper.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/FieldWrapper/WFieldWrapper.vue"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"WFieldWrapper.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/FieldWrapper/WFieldWrapper.vue"],"names":[],"mappings":"AA6LA;AA6RA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAA;AAyG9C,iBAAS,cAAc;WAuST,OAAO,IAA6B;;uBAjBvB,GAAG;0BACC,GAAG;;;gCA/UP,OAAO,KAAG,IAAI;;YAgVb,GAAG;;;gCAhVJ,OAAO,KAAG,IAAI;;YAiVX,GAAG;uBACL,GAAG;wBACF,GAAG;;;;;;;EAiB/B;AAwBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;yBA7WO,MAAM,eAAc,MAAM;;;;;;;;;;;;OAuXpD,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { defineComponent, useId, useTemplateRef, ref, inject,
|
1
|
+
import { defineComponent, useId, useTemplateRef, ref, computed, inject, onBeforeUnmount, createElementBlock, openBlock, mergeProps, createCommentVNode, renderSlot, createElementVNode, createBlock, normalizeClass, unref, Fragment, createVNode, createTextVNode, resolveDynamicComponent, toDisplayString, Transition, withCtx, normalizeProps, guardReactiveProps, withDirectives, vShow } from 'vue';
|
2
2
|
import _sfc_main$2 from '../Button/WButtonCopy.vue.js';
|
3
3
|
import WSkeleton from '../Skeleton/WSkeleton.vue.js';
|
4
4
|
import _sfc_main$3 from '../Tooltip/WTooltip.vue.js';
|
@@ -6,7 +6,7 @@ import { encodeQueryParam } from '../../utils/api.js';
|
|
6
6
|
import { useComponentStates } from '../../utils/useComponentStates.js';
|
7
7
|
import { numberFormatter } from '../../utils/utils.js';
|
8
8
|
import _sfc_main$1 from './components/FilterButton.vue.js';
|
9
|
-
import {
|
9
|
+
import { wFieldSetShowMessage } from './use/useFieldSaved.js';
|
10
10
|
|
11
11
|
const _hoisted_1 = ["for"];
|
12
12
|
const _hoisted_2 = {
|
@@ -58,7 +58,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
58
58
|
const id = useId();
|
59
59
|
const fieldRef = useTemplateRef("field");
|
60
60
|
const focused = ref(false);
|
61
|
-
const
|
61
|
+
const message = ref(null);
|
62
|
+
const isMessageShown = ref(true);
|
62
63
|
const encodedQueryParam = computed(() => {
|
63
64
|
if (props.filterField === void 0) return void 0;
|
64
65
|
return encodeQueryParam(props.filterValue === void 0 ? props.modelValue : props.filterValue);
|
@@ -66,8 +67,35 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
66
67
|
const setFocused = (value) => {
|
67
68
|
focused.value = value;
|
68
69
|
};
|
70
|
+
let timeout = null;
|
71
|
+
const resetMessage = () => {
|
72
|
+
message.value = null;
|
73
|
+
isMessageShown.value = true;
|
74
|
+
if (timeout) {
|
75
|
+
clearTimeout(timeout);
|
76
|
+
timeout = null;
|
77
|
+
}
|
78
|
+
};
|
79
|
+
const showMessage = (value, durationMs = 2e3) => {
|
80
|
+
if (timeout) clearTimeout(timeout);
|
81
|
+
if (message.value && isMessageShown.value) {
|
82
|
+
isMessageShown.value = false;
|
83
|
+
timeout = setTimeout(() => showMessage(value, durationMs), 100);
|
84
|
+
} else {
|
85
|
+
message.value = value;
|
86
|
+
isMessageShown.value = true;
|
87
|
+
timeout = setTimeout(resetMessage, durationMs);
|
88
|
+
}
|
89
|
+
};
|
90
|
+
const setShowMessageInjected = inject(wFieldSetShowMessage, null);
|
91
|
+
setShowMessageInjected?.(showMessage);
|
92
|
+
onBeforeUnmount(() => {
|
93
|
+
setShowMessageInjected?.(null);
|
94
|
+
resetMessage();
|
95
|
+
});
|
69
96
|
__expose({
|
70
|
-
fieldRef
|
97
|
+
fieldRef,
|
98
|
+
showMessage
|
71
99
|
});
|
72
100
|
return (_ctx, _cache) => {
|
73
101
|
return openBlock(), createElementBlock("div", mergeProps({ class: "relative" }, { style: _ctx.$attrs.style }, {
|
@@ -164,10 +192,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
164
192
|
"leave-to-class": "opacity-0"
|
165
193
|
}, {
|
166
194
|
default: withCtx(() => [
|
167
|
-
|
195
|
+
message.value ? withDirectives((openBlock(), createElementBlock("div", {
|
168
196
|
key: 0,
|
169
197
|
class: normalizeClass(["text-description absolute right-0 whitespace-nowrap py-0.5 text-xs font-normal", _ctx.topText ? "bottom-full" : "top-full"])
|
170
|
-
}, toDisplayString(
|
198
|
+
}, toDisplayString(message.value), 3)), [
|
199
|
+
[vShow, isMessageShown.value]
|
200
|
+
]) : _ctx.errorMessage ? (openBlock(), createElementBlock("div", {
|
171
201
|
key: 1,
|
172
202
|
class: normalizeClass(["text-negative dark:text-negative-dark absolute pt-0.5 text-xs font-normal", [
|
173
203
|
!_ctx.leftError || _ctx.topText ? "right-0 text-end" : "left-0 text-start",
|
@@ -1,6 +1,5 @@
|
|
1
|
-
import { InjectionKey
|
2
|
-
export
|
3
|
-
export declare const
|
4
|
-
|
5
|
-
};
|
1
|
+
import { InjectionKey } from 'vue';
|
2
|
+
export type ShowMessage = (value: string, durationMs?: number) => void;
|
3
|
+
export declare const wFieldSetShowMessage: InjectionKey<(showMessage: ShowMessage | null) => void>;
|
4
|
+
export declare const useFieldMessage: () => ShowMessage;
|
6
5
|
//# sourceMappingURL=useFieldSaved.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useFieldSaved.d.ts","sourceRoot":"","sources":["../../../../../src/components/FieldWrapper/use/useFieldSaved.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,
|
1
|
+
{"version":3,"file":"useFieldSaved.d.ts","sourceRoot":"","sources":["../../../../../src/components/FieldWrapper/use/useFieldSaved.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,EAAU,MAAM,KAAK,CAAA;AAE9C,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAEtE,eAAO,MAAM,oBAAoB,EAA4B,YAAY,CAAC,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC,CAAA;AAEpH,eAAO,MAAM,eAAe,mBAY3B,CAAA"}
|
@@ -1,29 +1,14 @@
|
|
1
|
-
import {
|
1
|
+
import { provide } from 'vue';
|
2
2
|
|
3
|
-
const
|
4
|
-
const
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
const resetSaved = () => {
|
9
|
-
saved.value = false;
|
10
|
-
if (timeout) {
|
11
|
-
clearTimeout(timeout);
|
12
|
-
timeout = null;
|
13
|
-
}
|
3
|
+
const wFieldSetShowMessage = Symbol("wFieldSaved");
|
4
|
+
const useFieldMessage = () => {
|
5
|
+
let showMessageFn = null;
|
6
|
+
const setShowMessage = (value) => {
|
7
|
+
showMessageFn = value;
|
14
8
|
};
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
saved.value = false;
|
19
|
-
timeout = setTimeout(showSaved, 100);
|
20
|
-
} else {
|
21
|
-
saved.value = true;
|
22
|
-
timeout = setTimeout(resetSaved, 2e3);
|
23
|
-
}
|
24
|
-
};
|
25
|
-
onBeforeUnmount(resetSaved);
|
26
|
-
return { showSaved };
|
9
|
+
provide(wFieldSetShowMessage, setShowMessage);
|
10
|
+
const showMessage = (value, durationMs) => showMessageFn?.(value, durationMs);
|
11
|
+
return showMessage;
|
27
12
|
};
|
28
13
|
|
29
|
-
export {
|
14
|
+
export { useFieldMessage, wFieldSetShowMessage };
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import { toRef, ref, computed, onBeforeUnmount } from 'vue';
|
2
|
-
import {
|
2
|
+
import { useFieldMessage } from '../../FieldWrapper/use/useFieldSaved.js';
|
3
3
|
import { Modal } from '../../../utils/Modal.js';
|
4
4
|
import { handleApiError } from '../../../utils/api.js';
|
5
5
|
import { get, set } from '../../../utils/utils.js';
|
6
6
|
|
7
7
|
const useFormAsync = (props, onSuccess) => {
|
8
8
|
const enabled = toRef(props, "queryEnabled");
|
9
|
-
const
|
9
|
+
const showMessage = useFieldMessage();
|
10
10
|
const { data, setData, isLoadingError } = props.noParams === true ? props.useQueryFn({ enabled }) : props.useQueryFn(toRef(props, "queryParams"), { enabled });
|
11
11
|
const submitting = ref(false);
|
12
12
|
const modelValue = computed(() => get(data.value ?? {}, props.field));
|
@@ -15,7 +15,7 @@ const useFormAsync = (props, onSuccess) => {
|
|
15
15
|
submitting.value = true;
|
16
16
|
return props.apiMethod(set({}, props.field, value)).then((response) => {
|
17
17
|
setData(response.data);
|
18
|
-
|
18
|
+
showMessage("Saved");
|
19
19
|
onSuccess(response.data);
|
20
20
|
}).catch((error) => handleApiError(error, void 0, props.field)).finally(() => {
|
21
21
|
submitting.value = false;
|
@@ -1,17 +1,17 @@
|
|
1
1
|
import { InputProps, WrapSelection } from './types';
|
2
|
+
import { CaretOffset } from './models/utils';
|
2
3
|
declare const _default: <Type extends InputType = "text">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
3
4
|
props: __VLS_PrettifyLocal<any & InputProps<Type> & Partial<{}>> & import('vue').PublicProps;
|
4
5
|
expose(exposed: import('vue').ShallowUnwrapRef<{
|
5
6
|
focus: () => void;
|
6
7
|
blur: () => void;
|
7
8
|
wrapSelection: (value: WrapSelection) => void;
|
8
|
-
setCaret: (
|
9
|
-
|
10
|
-
start: number;
|
11
|
-
end: number;
|
12
|
-
} | undefined;
|
9
|
+
setCaret: (start: number, end?: number) => void;
|
10
|
+
getCaret: () => CaretOffset;
|
13
11
|
fieldRef: import('vue').ComputedRef<HTMLDivElement | null | undefined>;
|
14
12
|
scrollToInput: () => void;
|
13
|
+
undo: () => void;
|
14
|
+
redo: () => void;
|
15
15
|
}>): void;
|
16
16
|
attrs: any;
|
17
17
|
slots: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WInput.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInput.vue"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"WInput.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInput.vue"],"names":[],"mappings":"AAoPA;AAqiBA,OAAO,KAAK,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAatD,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,gBAAgB,CAAA;yBAE9B,IAAI,SAAS,SAAS,GAAG,MAAM,EAC/C,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,eAAe,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EACjE;WAwyBO,mBAAmB,CAAC,oCAAkE,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB;qBA5mB7B,IAAI;oBAOL,IAAI;+BAiCS,aAAa;0BAzKlB,MAAM,QAAQ,MAAM,KAAG,IAAI;wBAN/B,WAAW;;;oBAyBf,IAAI;oBAgBJ,IAAI;MA0sBgD,GAAG,IAAI;WACpE,GAAG;;uBAhEgB,GAAG;0BACA,GAAG;wBACJ,GAAG;;;YAEH,GAAG;;mCAzgBF,aAAa;YAwgBb,GAAG;;;YAEJ,GAAG;uBACJ,GAAG;wBACF,GAAG;uBACJ,GAAG;uBACH,GAAG;wBACF,GAAG;;;YAztB1B,oBAAoB,SAAS,4CAAa,SAAS,GAAG,IAAI;YAC1D,gBAAgB,SAAS,aAAa,GAAG,IAAI;YAC7C,aAAa,SAAS,aAAa,GAAG,IAAI;YAC1C,eAAe,SAAS,aAAa,GAAG,IAAI;YAC5C,iBAAiB,SAAS,aAAa,GAAG,IAAI;YAC9C,oBAAoB,SAAS,aAAa,GAAG,IAAI;YACjD,aAAa,GAAG,IAAI;YACpB,OAAO,SAAS,UAAU,GAAG,SAAS,GAAG,IAAI;YAC7C,MAAM,SAAS,UAAU,GAAG,IAAI;YAChC,OAAO,SAAS,UAAU,GAAG,IAAI;YACjC,WAAW,SAAS,UAAU,GAAG,IAAI;YACrC,cAAc,SAAS,UAAU,GAAG,IAAI;YACxC,cAAc,SAAS,KAAK,GAAG,IAAI;YACnC,OAAO,GAAG,IAAI;;EAswBhB,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE;AAnzBzE,wBAmzB4E;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
|
@@ -3,6 +3,8 @@ import _sfc_main$1 from '../FieldWrapper/WFieldWrapper.vue.js';
|
|
3
3
|
import { useTabActiveListener } from '../Tabs/use/useTabActiveListener.js';
|
4
4
|
import { Notify } from '../../utils/Notify.js';
|
5
5
|
import { useComponentStates } from '../../utils/useComponentStates.js';
|
6
|
+
import { checkPermissionPaste } from '../../utils/useCopy.js';
|
7
|
+
import { debounce } from '../../utils/utils.js';
|
6
8
|
import _sfc_main$2 from './components/InputActions.vue.js';
|
7
9
|
|
8
10
|
const _hoisted_1 = { class: "relative flex min-h-full flex-1" };
|
@@ -73,13 +75,71 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
73
75
|
const contentRef = useTemplateRef("content");
|
74
76
|
const inputRef = useTemplateRef("input");
|
75
77
|
const isSecureVisible = ref(false);
|
78
|
+
const history = ref([]);
|
79
|
+
const historyPosition = ref(-1);
|
80
|
+
const getCaret = () => {
|
81
|
+
if (!inputRef.value) return { start: 0, end: 0 };
|
82
|
+
if ("getCaret" in inputRef.value) return inputRef.value.getCaret();
|
83
|
+
return { start: inputRef.value.selectionStart ?? 0, end: inputRef.value.selectionEnd ?? 0 };
|
84
|
+
};
|
85
|
+
const setCaret = (start, end) => {
|
86
|
+
if (!inputRef.value) return;
|
87
|
+
if ("setCaret" in inputRef.value) inputRef.value.setCaret(start, end);
|
88
|
+
else inputRef.value.setSelectionRange(start, end ?? null);
|
89
|
+
};
|
90
|
+
const addToHistory = debounce((value) => {
|
91
|
+
const entry = { value, caret: getCaret() };
|
92
|
+
if (historyPosition.value < history.value.length - 1) history.value = history.value.slice(0, historyPosition.value + 1);
|
93
|
+
history.value.push(entry);
|
94
|
+
historyPosition.value = history.value.length - 1;
|
95
|
+
if (history.value.length > 50) {
|
96
|
+
history.value.shift();
|
97
|
+
historyPosition.value--;
|
98
|
+
}
|
99
|
+
}, 500);
|
100
|
+
const undo = () => {
|
101
|
+
if (props.loading || isDisabled.value || isReadonly.value || props.unclickable || props.textSecure) return;
|
102
|
+
if (historyPosition.value <= 0) {
|
103
|
+
fieldWrapperRef.value?.showMessage("No Undo");
|
104
|
+
historyPosition.value = history.value.length ? 0 : -1;
|
105
|
+
return;
|
106
|
+
}
|
107
|
+
fieldWrapperRef.value?.showMessage("Undo");
|
108
|
+
const index = historyPosition.value - 1;
|
109
|
+
const item = history.value[index];
|
110
|
+
emit("update:model-value", item.value);
|
111
|
+
nextTick(() => setCaret(item.caret.start, item.caret.end));
|
112
|
+
historyPosition.value = index;
|
113
|
+
};
|
114
|
+
const redo = () => {
|
115
|
+
if (props.loading || isDisabled.value || isReadonly.value || props.unclickable || props.textSecure) return;
|
116
|
+
if (historyPosition.value >= history.value.length - 1) {
|
117
|
+
fieldWrapperRef.value?.showMessage("No Redo");
|
118
|
+
historyPosition.value = history.value.length - 1;
|
119
|
+
return;
|
120
|
+
}
|
121
|
+
fieldWrapperRef.value?.showMessage("Redo");
|
122
|
+
const index = historyPosition.value + 1;
|
123
|
+
const item = history.value[index];
|
124
|
+
emit("update:model-value", item.value);
|
125
|
+
nextTick(() => setCaret(item.caret.start, item.caret.end));
|
126
|
+
historyPosition.value = index;
|
127
|
+
};
|
128
|
+
const handleHistoryKeydown = (event) => {
|
129
|
+
if (!event.ctrlKey && !event.metaKey) return;
|
130
|
+
if (event.key !== "z" && event.key !== "Z") return;
|
131
|
+
event.preventDefault();
|
132
|
+
event.stopPropagation();
|
133
|
+
if (event.shiftKey) redo();
|
134
|
+
else undo();
|
135
|
+
};
|
76
136
|
const updateModelValue = (value) => {
|
77
137
|
if (props.loading || isDisabled.value || isReadonly.value || props.unclickable) return;
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
138
|
+
let newValue;
|
139
|
+
if (props.type === "number") newValue = typeof value === "string" && value.length ? Number.parseFloat(value) : void 0;
|
140
|
+
else newValue = value;
|
141
|
+
if (!props.textSecure) addToHistory(newValue);
|
142
|
+
emit("update:model-value", newValue);
|
83
143
|
};
|
84
144
|
const handleBackspace = (event) => {
|
85
145
|
if (!props.customBackspaceHandle) return;
|
@@ -126,53 +186,34 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
126
186
|
if (props.unclickable) emit("focus", void 0);
|
127
187
|
else inputRef.value?.focus();
|
128
188
|
};
|
129
|
-
const blur = () =>
|
130
|
-
inputRef.value?.blur();
|
131
|
-
};
|
132
|
-
const checkPermission = async () => {
|
133
|
-
const result = await navigator.permissions.query({ name: "clipboard-read" });
|
134
|
-
return result.state === "granted" || result.state === "prompt";
|
135
|
-
};
|
189
|
+
const blur = () => inputRef.value?.blur();
|
136
190
|
const paste = async () => {
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
Notify.
|
147
|
-
title: "Nothing to paste"
|
148
|
-
});
|
149
|
-
return;
|
150
|
-
}
|
151
|
-
if (!props.maxLength || props.maxLength <= value.length) {
|
152
|
-
updateModelValue(value);
|
153
|
-
Notify.success({
|
154
|
-
title: "Pasted"
|
155
|
-
});
|
156
|
-
nextTick().then(() => emit("paste"));
|
157
|
-
} else {
|
158
|
-
Notify.error({
|
191
|
+
try {
|
192
|
+
await checkPermissionPaste();
|
193
|
+
await navigator.clipboard.readText().then((value) => {
|
194
|
+
if (!value) {
|
195
|
+
Notify.warn({ title: "Nothing to paste" });
|
196
|
+
} else if (!props.maxLength || props.maxLength <= value.length) {
|
197
|
+
updateModelValue(value);
|
198
|
+
Notify.success({ title: "Pasted" });
|
199
|
+
nextTick().then(() => emit("paste"));
|
200
|
+
} else Notify.error({
|
159
201
|
title: "Unable to paste",
|
160
202
|
caption: "The length of the pasted value exceeds the allowed limit"
|
161
203
|
});
|
162
|
-
}
|
163
|
-
}
|
204
|
+
});
|
205
|
+
} catch {
|
164
206
|
Notify.error({
|
165
|
-
title: "Paste failed"
|
207
|
+
title: "Paste failed",
|
208
|
+
caption: `Please allow the clipboard actions in browser settings for current domain: ${location.host}`
|
166
209
|
});
|
167
|
-
}
|
210
|
+
}
|
168
211
|
};
|
169
212
|
const scrollToInput = () => {
|
170
213
|
if (!contentRef.value || !inputRef.value) return;
|
171
214
|
contentRef.value.scrollTo({ left: contentRef.value.scrollWidth - inputRef.value.offsetWidth - 40 });
|
172
215
|
};
|
173
216
|
const wrapSelection = (value) => inputRef.value && "wrapSelection" in inputRef.value ? inputRef.value.wrapSelection(value) : void 0;
|
174
|
-
const setCaret = (indexStart, indexEnd) => inputRef.value && "setCaret" in inputRef.value ? inputRef.value.setCaret(indexStart, indexEnd) : void 0;
|
175
|
-
const getSelectionOffsets = () => inputRef.value && "getSelectionOffsets" in inputRef.value ? inputRef.value.getSelectionOffsets() : void 0;
|
176
217
|
let timeout;
|
177
218
|
const autofocusDebounced = () => {
|
178
219
|
if (timeout) clearTimeout(timeout);
|
@@ -185,15 +226,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
185
226
|
timeout = void 0;
|
186
227
|
}, typeof props.autofocus === "number" ? props.autofocus : 250);
|
187
228
|
};
|
188
|
-
if (props.autofocus !== false && props.autofocus !== void 0)
|
189
|
-
useTabActiveListener(autofocusDebounced);
|
190
|
-
}
|
229
|
+
if (props.autofocus !== false && props.autofocus !== void 0) useTabActiveListener(autofocusDebounced);
|
191
230
|
watch(() => props.autofocus, (value) => {
|
192
231
|
if (value === false || value === void 0) return;
|
193
232
|
nextTick(autofocusDebounced);
|
194
233
|
});
|
234
|
+
const handle = watch(() => props.modelValue, (value) => {
|
235
|
+
if (history.value.length === 0) {
|
236
|
+
if (value) {
|
237
|
+
addToHistory(value);
|
238
|
+
handle.stop();
|
239
|
+
}
|
240
|
+
} else handle.stop();
|
241
|
+
});
|
195
242
|
onMounted(() => {
|
196
243
|
if (props.autofocus !== false && props.autofocus !== void 0) autofocusDebounced();
|
244
|
+
if (props.modelValue) addToHistory(props.modelValue);
|
197
245
|
});
|
198
246
|
onBeforeUnmount(() => {
|
199
247
|
if (timeout) {
|
@@ -206,9 +254,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
206
254
|
blur,
|
207
255
|
wrapSelection,
|
208
256
|
setCaret,
|
209
|
-
|
257
|
+
getCaret,
|
210
258
|
fieldRef: computed(() => fieldWrapperRef.value?.fieldRef),
|
211
|
-
scrollToInput
|
259
|
+
scrollToInput,
|
260
|
+
undo,
|
261
|
+
redo
|
212
262
|
});
|
213
263
|
return (_ctx, _cache) => {
|
214
264
|
return openBlock(), createBlock(_sfc_main$1, mergeProps({ ref: "fieldWrapper" }, props, {
|
@@ -273,13 +323,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
273
323
|
key: 0,
|
274
324
|
list: _ctx.toolbarActions,
|
275
325
|
rich: _ctx.rich === true,
|
276
|
-
|
326
|
+
"is-undo": historyPosition.value !== 0,
|
327
|
+
"is-redo": historyPosition.value !== history.value.length - 1,
|
328
|
+
"text-secure": _ctx.textSecure ?? false,
|
329
|
+
onWrapSelection: wrapSelection,
|
330
|
+
onUndo: undo,
|
331
|
+
onRedo: redo
|
277
332
|
}, {
|
278
333
|
default: withCtx(() => [
|
279
334
|
renderSlot(_ctx.$slots, "toolbar", normalizeProps(guardReactiveProps({ wrapSelection })))
|
280
335
|
]),
|
281
336
|
_: 3
|
282
|
-
}, 8, ["list", "rich"])) : createCommentVNode("", true),
|
337
|
+
}, 8, ["list", "rich", "is-undo", "is-redo", "text-secure"])) : createCommentVNode("", true),
|
283
338
|
_ctx.icon ? (openBlock(), createElementBlock("div", {
|
284
339
|
key: 1,
|
285
340
|
class: normalizeClass(["flex h-full w-[--w-input-height,2.75rem] select-none items-center justify-center", {
|
@@ -351,7 +406,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
351
406
|
_cache[3] || (_cache[3] = withKeys(withModifiers(($event) => {
|
352
407
|
!unref(isDisabled) && !unref(isReadonly) && _ctx.$emit("keypress:delete", $event);
|
353
408
|
handleBackspace($event);
|
354
|
-
}, ["exact", "stop"]), ["delete"]))
|
409
|
+
}, ["exact", "stop"]), ["delete"])),
|
410
|
+
handleHistoryKeydown
|
355
411
|
],
|
356
412
|
onFocus: ($event) => {
|
357
413
|
_ctx.$emit("focus", $event);
|
@@ -418,9 +474,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
418
474
|
]),
|
419
475
|
key: "4"
|
420
476
|
} : void 0,
|
421
|
-
_ctx.$slots.bottom ? {
|
477
|
+
_ctx.$slots.bottom || true ? {
|
422
478
|
name: "bottom",
|
423
479
|
fn: withCtx(() => [
|
480
|
+
createElementVNode("pre", null, toDisplayString(historyPosition.value), 1),
|
481
|
+
createElementVNode("pre", null, toDisplayString(history.value), 1),
|
424
482
|
renderSlot(_ctx.$slots, "bottom")
|
425
483
|
]),
|
426
484
|
key: "5"
|
@@ -16,10 +16,7 @@ declare function __VLS_template(): {
|
|
16
16
|
scrollToInput: () => void | undefined;
|
17
17
|
wrapSelection: (value: import('./types').WrapSelection) => void | undefined;
|
18
18
|
setCaret: (indexStart: number, indexEnd?: number) => void | undefined;
|
19
|
-
|
20
|
-
start: number;
|
21
|
-
end: number;
|
22
|
-
} | undefined;
|
19
|
+
getCaret: () => import('./models/utils').CaretOffset | undefined;
|
23
20
|
}> | null;
|
24
21
|
};
|
25
22
|
rootEl: any;
|
@@ -46,10 +43,7 @@ declare const __VLS_component: import('vue').DefineComponent<InputDateProps, {},
|
|
46
43
|
scrollToInput: () => void | undefined;
|
47
44
|
wrapSelection: (value: import('./types').WrapSelection) => void | undefined;
|
48
45
|
setCaret: (indexStart: number, indexEnd?: number) => void | undefined;
|
49
|
-
|
50
|
-
start: number;
|
51
|
-
end: number;
|
52
|
-
} | undefined;
|
46
|
+
getCaret: () => import('./models/utils').CaretOffset | undefined;
|
53
47
|
}> | null;
|
54
48
|
}, any>;
|
55
49
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WInputDate.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputDate.vue"],"names":[],"mappings":"AAiDA;AAmHA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAO3C,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAA;AAuEvD,iBAAS,cAAc;WA6HT,OAAO,IAA6B;;uBAbtB,GAAG;0BACA,GAAG;uBACN,GAAG
|
1
|
+
{"version":3,"file":"WInputDate.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputDate.vue"],"names":[],"mappings":"AAiDA;AAmHA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAO3C,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAA;AAuEvD,iBAAS,cAAc;WA6HT,OAAO,IAA6B;;uBAbtB,GAAG;0BACA,GAAG;uBACN,GAAG;;;;;;;;;;;;;;;EAgB9B;AAeD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;OASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
@@ -10,10 +10,7 @@ declare const _default: <Type extends InputType = "text">(__VLS_props: NonNullab
|
|
10
10
|
scrollToInput: () => void | undefined;
|
11
11
|
wrapSelection: (value: WrapSelection) => void | undefined;
|
12
12
|
setCaret: (indexStart: number, indexEnd?: number) => void | undefined;
|
13
|
-
|
14
|
-
start: number;
|
15
|
-
end: number;
|
16
|
-
} | undefined;
|
13
|
+
getCaret: () => import('./models/utils').CaretOffset | undefined;
|
17
14
|
}>): void;
|
18
15
|
attrs: any;
|
19
16
|
slots: Readonly<{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WInputSuggest.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputSuggest.vue"],"names":[],"mappings":"AAyHA;AAqOA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAE7D,OAAO,EAAC,KAAK,KAAK,EAAgC,MAAM,KAAK,CAAA;yBAe5C,IAAI,SAAS,SAAS,GAAG,MAAM,EAC/C,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,eAAe,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EACjE;WA4ZO,mBAAmB,CAAC,2CAAkE,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB;;;;;;+BA9VjB,aAAa;+BACb,MAAM,aAAa,MAAM
|
1
|
+
{"version":3,"file":"WInputSuggest.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputSuggest.vue"],"names":[],"mappings":"AAyHA;AAqOA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAE7D,OAAO,EAAC,KAAK,KAAK,EAAgC,MAAM,KAAK,CAAA;yBAe5C,IAAI,SAAS,SAAS,GAAG,MAAM,EAC/C,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,eAAe,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EACjE;WA4ZO,mBAAmB,CAAC,2CAAkE,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB;;;;;;+BA9VjB,aAAa;+BACb,MAAM,aAAa,MAAM;;MA6Vc,GAAG,IAAI;WACpE,GAAG;;gBAnUD,MAAM,IAAI;iBACT,MAAM,IAAI;mBACR,MAAM,IAAI;kBACX,MAAM,IAAI;iBACX,CAAC,KAAK,EAAE;YAAC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;SAAC,KAAK,IAAI;gBAChD,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI;kBACpC,MAAM,KAAK,EAAE;;gBANf,MAAM,IAAI;iBACT,MAAM,IAAI;mBACR,MAAM,IAAI;kBACX,MAAM,IAAI;iBACX,CAAC,KAAK,EAAE;YAAC,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;SAAC,KAAK,IAAI;gBAChD,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI;kBACpC,MAAM,KAAK,EAAE;;;YA9EnB,oBAAoB,mDAAsB,IAAI;YAC9C,gBAAgB,SAAS,aAAa,GAAG,IAAI;YAC7C,aAAa,SAAS,aAAa,GAAG,IAAI;YAC1C,eAAe,SAAS,aAAa,GAAG,IAAI;YAC5C,iBAAiB,SAAS,aAAa,GAAG,IAAI;YAC9C,MAAM,GAAG,IAAI;YACb,OAAO,GAAG,IAAI;YACd,aAAa,GAAG,IAAI;YACpB,OAAO,SAAS,UAAU,GAAG,SAAS,GAAG,IAAI;YAC7C,MAAM,SAAS,UAAU,GAAG,IAAI;;EAsYlC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE;AAvazE,wBAua4E;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
|
@@ -99,7 +99,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
99
99
|
const scrollToInput = () => inputRef.value?.scrollToInput();
|
100
100
|
const wrapSelection = (value) => inputRef.value?.wrapSelection(value);
|
101
101
|
const setCaret = (indexStart, indexEnd) => inputRef.value?.setCaret(indexStart, indexEnd);
|
102
|
-
const
|
102
|
+
const getCaret = () => inputRef.value?.getCaret();
|
103
103
|
const updateDropdown = () => dropdownMenuRef.value && "updateDropdown" in dropdownMenuRef.value ? dropdownMenuRef.value.updateDropdown() : void 0;
|
104
104
|
__expose({
|
105
105
|
focus,
|
@@ -109,7 +109,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
109
109
|
scrollToInput,
|
110
110
|
wrapSelection,
|
111
111
|
setCaret,
|
112
|
-
|
112
|
+
getCaret
|
113
113
|
});
|
114
114
|
return (_ctx, _cache) => {
|
115
115
|
return openBlock(), createBlock(resolveDynamicComponent(_ctx.static ? InputSuggestStatic : unref(isMobile) ? _sfc_main$1 : _sfc_main$2), mergeProps({ ref: "dropdownMenu" }, _ctx.static ? void 0 : unref(isMobile) ? {
|
@@ -1,11 +1,8 @@
|
|
1
|
-
import { ToolbarAction
|
2
|
-
|
3
|
-
|
4
|
-
}
|
5
|
-
|
6
|
-
"wrap-selection": (value: WrapSelection) => any;
|
7
|
-
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
8
|
-
"onWrap-selection"?: ((value: WrapSelection) => any) | undefined;
|
1
|
+
import { ToolbarAction } from './types';
|
2
|
+
declare const _default: import('vue').DefineComponent<ToolbarAction, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
3
|
+
click: (index: number | undefined) => any;
|
4
|
+
}, string, import('vue').PublicProps, Readonly<ToolbarAction> & Readonly<{
|
5
|
+
onClick?: ((index: number | undefined) => any) | undefined;
|
9
6
|
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
10
7
|
export default _default;
|
11
8
|
//# sourceMappingURL=WInputToolbarButton.vue.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WInputToolbarButton.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputToolbarButton.vue"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"WInputToolbarButton.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/WInputToolbarButton.vue"],"names":[],"mappings":"AAmDA;AA+FA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAA;;;;;;AA2M1C,wBAOG"}
|