@jskit-ai/assistant-core 0.1.165 → 0.1.166
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/examples/conversation/App.vue +104 -0
- package/examples/conversation/README.md +42 -0
- package/examples/conversation/dist/assets/index-CSTXm6q3.css +1 -0
- package/examples/conversation/dist/assets/index-DGgOLzoo.js +30 -0
- package/examples/conversation/dist/index.html +4 -0
- package/examples/conversation/index.html +2 -0
- package/examples/conversation/main.js +9 -0
- package/examples/conversation/node_modules/.vite/deps/@mdi_js.js +7450 -0
- package/examples/conversation/node_modules/.vite/deps/@mdi_js.js.map +1 -0
- package/examples/conversation/node_modules/.vite/deps/VTooltip-jIxO6ULs.js +2311 -0
- package/examples/conversation/node_modules/.vite/deps/VTooltip-jIxO6ULs.js.map +1 -0
- package/examples/conversation/node_modules/.vite/deps/_metadata.json +70 -0
- package/examples/conversation/node_modules/.vite/deps/defineComponent-DK6LSjDW.js +710 -0
- package/examples/conversation/node_modules/.vite/deps/defineComponent-DK6LSjDW.js.map +1 -0
- package/examples/conversation/node_modules/.vite/deps/hotkey-parsing-DnoZxtbW.js +1214 -0
- package/examples/conversation/node_modules/.vite/deps/hotkey-parsing-DnoZxtbW.js.map +1 -0
- package/examples/conversation/node_modules/.vite/deps/icons-ze2hmg7j.js +98 -0
- package/examples/conversation/node_modules/.vite/deps/icons-ze2hmg7j.js.map +1 -0
- package/examples/conversation/node_modules/.vite/deps/package.json +3 -0
- package/examples/conversation/node_modules/.vite/deps/theme-D78LVcJg.js +1301 -0
- package/examples/conversation/node_modules/.vite/deps/theme-D78LVcJg.js.map +1 -0
- package/examples/conversation/node_modules/.vite/deps/vue.js +2 -0
- package/examples/conversation/node_modules/.vite/deps/vue.runtime.esm-bundler-YcakWsDn.js +8538 -0
- package/examples/conversation/node_modules/.vite/deps/vue.runtime.esm-bundler-YcakWsDn.js.map +1 -0
- package/examples/conversation/node_modules/.vite/deps/vuetify.js +413 -0
- package/examples/conversation/node_modules/.vite/deps/vuetify.js.map +1 -0
- package/examples/conversation/node_modules/.vite/deps/vuetify_components.js +25370 -0
- package/examples/conversation/node_modules/.vite/deps/vuetify_components.js.map +1 -0
- package/examples/conversation/node_modules/.vite/deps/vuetify_directives.js +132 -0
- package/examples/conversation/node_modules/.vite/deps/vuetify_directives.js.map +1 -0
- package/examples/conversation/node_modules/.vite/deps/vuetify_iconsets_mdi-svg.js +70 -0
- package/examples/conversation/node_modules/.vite/deps/vuetify_iconsets_mdi-svg.js.map +1 -0
- package/examples/conversation/package.json +22 -0
- package/examples/conversation/server.js +123 -0
- package/examples/conversation/vite.config.js +8 -0
- package/package.json +59 -7
- package/src/client/conversation/AssistantComposerActions.vue +43 -0
- package/src/client/conversation/AssistantConversationElement.vue +78 -0
- package/src/client/conversation/AssistantProgress.vue +88 -0
- package/src/client/conversation/AssistantPromptInput.vue +467 -0
- package/src/client/conversation/AssistantTranscript.vue +1361 -0
- package/src/client/conversation/LongTextInlineParts.vue +64 -0
- package/src/client/conversation/LongTextPreviewBlocks.vue +324 -0
- package/src/client/conversation/index.js +9 -0
- package/src/client/conversation/submitText.js +29 -0
- package/src/client/conversation/useScrollToBottom.js +151 -0
- package/src/server/conversation/codexClient.js +328 -0
- package/src/server/conversation/codexEvents.js +623 -0
- package/src/server/conversation/codexTurn.js +280 -0
- package/src/server/conversation/index.js +2 -0
- package/src/server/conversation/memoryStorage.js +76 -0
- package/src/server/conversation/normalize.js +7 -0
- package/src/server/conversation/openCodeClient.js +512 -0
- package/src/server/conversation/transcript.js +92 -0
- package/src/shared/conversation/answerChoiceSugar.js +191 -0
- package/src/shared/conversation/index.js +6 -0
- package/src/shared/conversation/longTextBlocks.js +403 -0
- package/src/shared/conversation/numberedQuestionSugar.js +295 -0
- package/src/shared/conversation/scrollFollowState.js +32 -0
- package/src/shared/conversation/thinkingText.js +13 -0
- package/src/shared/conversation/turns.js +30 -0
- package/src/testing/conversationStorageContract.js +35 -0
- package/test/conversation.test.js +57 -0
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
import { Mn as effectScope, Ot as nextTick, U as computed, Vn as onScopeDispose, Wn as reactive, er as toValue, gn as watch, pt as h } from "./vue.runtime.esm-bundler-YcakWsDn.js";
|
|
2
|
+
import { G as isObject, Z as mergeDeep, a as createDefaults, i as DefaultsSymbol, s as useDefaults, t as defineComponent, u as propsFactory, ut as IN_BROWSER } from "./defineComponent-DK6LSjDW.js";
|
|
3
|
+
import { a as useTheme, c as createDisplay, d as LocaleSymbol, f as createLocale, h as useRtl, m as useLocale, n as createTheme, o as DisplaySymbol, t as ThemeSymbol, u as useDisplay } from "./theme-D78LVcJg.js";
|
|
4
|
+
import { o as VSvgIcon, r as VClassIcon, t as IconSymbol } from "./icons-ze2hmg7j.js";
|
|
5
|
+
import { _ as useDate, d as createGoTo, f as useGoTo, h as createDate, m as DateOptionsSymbol, n as splitKeySequence, p as DateAdapterSymbol, s as useLayout, t as splitKeyCombination, u as GoToSymbol } from "./hotkey-parsing-DnoZxtbW.js";
|
|
6
|
+
//#region ../../../../node_modules/vuetify/lib/iconsets/mdi.js
|
|
7
|
+
var aliases = {
|
|
8
|
+
collapse: "mdi-chevron-up",
|
|
9
|
+
complete: "mdi-check",
|
|
10
|
+
cancel: "mdi-close-circle",
|
|
11
|
+
close: "mdi-close",
|
|
12
|
+
delete: "mdi-close-circle",
|
|
13
|
+
clear: "mdi-close-circle",
|
|
14
|
+
success: "mdi-check-circle",
|
|
15
|
+
info: "mdi-information",
|
|
16
|
+
warning: "mdi-alert-circle",
|
|
17
|
+
error: "mdi-close-circle",
|
|
18
|
+
prev: "mdi-chevron-left",
|
|
19
|
+
next: "mdi-chevron-right",
|
|
20
|
+
checkboxOn: "mdi-checkbox-marked",
|
|
21
|
+
checkboxOff: "mdi-checkbox-blank-outline",
|
|
22
|
+
checkboxIndeterminate: "mdi-minus-box",
|
|
23
|
+
delimiter: "mdi-circle",
|
|
24
|
+
sortAsc: "mdi-arrow-up",
|
|
25
|
+
sortDesc: "mdi-arrow-down",
|
|
26
|
+
expand: "mdi-chevron-down",
|
|
27
|
+
menu: "mdi-menu",
|
|
28
|
+
subgroup: "mdi-menu-down",
|
|
29
|
+
dropdown: "mdi-menu-down",
|
|
30
|
+
radioOn: "mdi-radiobox-marked",
|
|
31
|
+
radioOff: "mdi-radiobox-blank",
|
|
32
|
+
edit: "mdi-pencil",
|
|
33
|
+
ratingEmpty: "mdi-star-outline",
|
|
34
|
+
ratingFull: "mdi-star",
|
|
35
|
+
ratingHalf: "mdi-star-half-full",
|
|
36
|
+
loading: "mdi-cached",
|
|
37
|
+
first: "mdi-page-first",
|
|
38
|
+
last: "mdi-page-last",
|
|
39
|
+
unfold: "mdi-unfold-more-horizontal",
|
|
40
|
+
file: "mdi-paperclip",
|
|
41
|
+
plus: "mdi-plus",
|
|
42
|
+
minus: "mdi-minus",
|
|
43
|
+
calendar: "mdi-calendar",
|
|
44
|
+
treeviewCollapse: "mdi-menu-down",
|
|
45
|
+
treeviewExpand: "mdi-menu-right",
|
|
46
|
+
tableGroupCollapse: "mdi-chevron-down",
|
|
47
|
+
tableGroupExpand: "mdi-chevron-right",
|
|
48
|
+
eyeDropper: "mdi-eyedropper",
|
|
49
|
+
upload: "mdi-cloud-upload",
|
|
50
|
+
color: "mdi-palette",
|
|
51
|
+
command: "mdi-apple-keyboard-command",
|
|
52
|
+
ctrl: "mdi-apple-keyboard-control",
|
|
53
|
+
space: "mdi-keyboard-space",
|
|
54
|
+
shift: "mdi-apple-keyboard-shift",
|
|
55
|
+
alt: "mdi-apple-keyboard-option",
|
|
56
|
+
enter: "mdi-keyboard-return",
|
|
57
|
+
arrowup: "mdi-arrow-up",
|
|
58
|
+
arrowdown: "mdi-arrow-down",
|
|
59
|
+
arrowleft: "mdi-arrow-left",
|
|
60
|
+
arrowright: "mdi-arrow-right",
|
|
61
|
+
backspace: "mdi-backspace",
|
|
62
|
+
play: "mdi-play",
|
|
63
|
+
pause: "mdi-pause",
|
|
64
|
+
fullscreen: "mdi-fullscreen",
|
|
65
|
+
fullscreenExit: "mdi-fullscreen-exit",
|
|
66
|
+
volumeHigh: "mdi-volume-high",
|
|
67
|
+
volumeMedium: "mdi-volume-medium",
|
|
68
|
+
volumeLow: "mdi-volume-low",
|
|
69
|
+
volumeOff: "mdi-volume-variant-off",
|
|
70
|
+
search: "mdi-magnify"
|
|
71
|
+
};
|
|
72
|
+
var mdi = { component: (props) => h(VClassIcon, {
|
|
73
|
+
...props,
|
|
74
|
+
class: "mdi"
|
|
75
|
+
}) };
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region ../../../../node_modules/vuetify/lib/icons.js
|
|
78
|
+
function genDefaults() {
|
|
79
|
+
return {
|
|
80
|
+
svg: { component: VSvgIcon },
|
|
81
|
+
class: { component: VClassIcon }
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function createIcons(options) {
|
|
85
|
+
const sets = genDefaults();
|
|
86
|
+
const defaultSet = options?.defaultSet ?? "mdi";
|
|
87
|
+
if (defaultSet === "mdi" && !sets.mdi) sets.mdi = mdi;
|
|
88
|
+
return mergeDeep({
|
|
89
|
+
defaultSet,
|
|
90
|
+
sets,
|
|
91
|
+
aliases: {
|
|
92
|
+
...aliases,
|
|
93
|
+
vuetify: ["M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z", ["M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z", .6]],
|
|
94
|
+
"vuetify-outline": "svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z",
|
|
95
|
+
"vuetify-play": ["m6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z", ["M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z", .6]]
|
|
96
|
+
}
|
|
97
|
+
}, options);
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region ../../../../node_modules/vuetify/lib/composables/hotkey/hotkey.js
|
|
101
|
+
function useHotkey(keys, callback, options = {}) {
|
|
102
|
+
if (!IN_BROWSER) return function() {};
|
|
103
|
+
const { event = "keydown", inputs = false, preventDefault = true, sequenceTimeout = 1e3 } = options;
|
|
104
|
+
const isMac = navigator?.userAgent?.includes("Macintosh") ?? false;
|
|
105
|
+
let timeout = 0;
|
|
106
|
+
let keyGroups;
|
|
107
|
+
let isSequence = false;
|
|
108
|
+
let groupIndex = 0;
|
|
109
|
+
function isInputFocused() {
|
|
110
|
+
if (toValue(inputs)) return false;
|
|
111
|
+
const activeElement = document.activeElement;
|
|
112
|
+
return activeElement && (activeElement.tagName === "INPUT" || activeElement.tagName === "TEXTAREA" || activeElement.isContentEditable || activeElement.contentEditable === "true");
|
|
113
|
+
}
|
|
114
|
+
function resetSequence() {
|
|
115
|
+
groupIndex = 0;
|
|
116
|
+
clearTimeout(timeout);
|
|
117
|
+
}
|
|
118
|
+
function handler(e) {
|
|
119
|
+
const group = keyGroups[groupIndex];
|
|
120
|
+
if (!group || isInputFocused()) return;
|
|
121
|
+
if (!matchesKeyGroup(e, group, isMac)) {
|
|
122
|
+
if (isSequence) resetSequence();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (toValue(preventDefault)) e.preventDefault();
|
|
126
|
+
if (!isSequence) {
|
|
127
|
+
callback(e);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
clearTimeout(timeout);
|
|
131
|
+
groupIndex++;
|
|
132
|
+
if (groupIndex === keyGroups.length) {
|
|
133
|
+
callback(e);
|
|
134
|
+
resetSequence();
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
timeout = window.setTimeout(resetSequence, toValue(sequenceTimeout));
|
|
138
|
+
}
|
|
139
|
+
function cleanup() {
|
|
140
|
+
window.removeEventListener(toValue(event), handler);
|
|
141
|
+
clearTimeout(timeout);
|
|
142
|
+
}
|
|
143
|
+
watch(() => toValue(keys), (newKeys) => {
|
|
144
|
+
cleanup();
|
|
145
|
+
if (newKeys) {
|
|
146
|
+
const groups = splitKeySequence(newKeys.toLowerCase());
|
|
147
|
+
isSequence = groups.length > 1;
|
|
148
|
+
keyGroups = groups;
|
|
149
|
+
resetSequence();
|
|
150
|
+
window.addEventListener(toValue(event), handler);
|
|
151
|
+
}
|
|
152
|
+
}, { immediate: true });
|
|
153
|
+
watch(() => toValue(event), (newEvent, oldEvent) => {
|
|
154
|
+
if (oldEvent && keyGroups && keyGroups.length > 0) {
|
|
155
|
+
window.removeEventListener(oldEvent, handler);
|
|
156
|
+
window.addEventListener(newEvent, handler);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
onScopeDispose(cleanup, true);
|
|
160
|
+
return cleanup;
|
|
161
|
+
}
|
|
162
|
+
function matchesKeyGroup(e, group, isMac) {
|
|
163
|
+
const { modifiers, actualKey } = parseKeyGroup(group);
|
|
164
|
+
const expectCtrl = modifiers.ctrl || !isMac && (modifiers.cmd || modifiers.meta);
|
|
165
|
+
const expectMeta = isMac && (modifiers.cmd || modifiers.meta);
|
|
166
|
+
return e.ctrlKey === expectCtrl && e.metaKey === expectMeta && e.shiftKey === modifiers.shift && e.altKey === modifiers.alt && e.key.toLowerCase() === actualKey?.toLowerCase();
|
|
167
|
+
}
|
|
168
|
+
function parseKeyGroup(group) {
|
|
169
|
+
const MODIFIERS = [
|
|
170
|
+
"ctrl",
|
|
171
|
+
"shift",
|
|
172
|
+
"alt",
|
|
173
|
+
"meta",
|
|
174
|
+
"cmd"
|
|
175
|
+
];
|
|
176
|
+
const { keys: parts } = splitKeyCombination(group.toLowerCase());
|
|
177
|
+
if (parts.length === 0) return {
|
|
178
|
+
modifiers: Object.fromEntries(MODIFIERS.map((m) => [m, false])),
|
|
179
|
+
actualKey: void 0
|
|
180
|
+
};
|
|
181
|
+
const modifiers = Object.fromEntries(MODIFIERS.map((m) => [m, false]));
|
|
182
|
+
let actualKey;
|
|
183
|
+
for (const part of parts) if (MODIFIERS.includes(part)) modifiers[part] = true;
|
|
184
|
+
else actualKey = part;
|
|
185
|
+
return {
|
|
186
|
+
modifiers,
|
|
187
|
+
actualKey
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
propsFactory({ mask: [String, Object] }, "mask");
|
|
191
|
+
var defaultDelimiters = /[-!$%^&*()_+|~=`{}[\]:";'<>?,./\\ ]/;
|
|
192
|
+
var presets = {
|
|
193
|
+
"credit-card": "#### - #### - #### - ####",
|
|
194
|
+
date: "##/##/####",
|
|
195
|
+
"date-time": "##/##/#### ##:##",
|
|
196
|
+
"iso-date": "####-##-##",
|
|
197
|
+
"iso-date-time": "####-##-## ##:##",
|
|
198
|
+
phone: "(###) ### - ####",
|
|
199
|
+
social: "###-##-####",
|
|
200
|
+
time: "##:##",
|
|
201
|
+
"time-with-seconds": "##:##:##"
|
|
202
|
+
};
|
|
203
|
+
var defaultTokens = {
|
|
204
|
+
"#": { pattern: /[0-9]/ },
|
|
205
|
+
A: {
|
|
206
|
+
pattern: /[A-Z]/i,
|
|
207
|
+
convert: (v) => v.toUpperCase()
|
|
208
|
+
},
|
|
209
|
+
a: {
|
|
210
|
+
pattern: /[a-z]/i,
|
|
211
|
+
convert: (v) => v.toLowerCase()
|
|
212
|
+
},
|
|
213
|
+
N: {
|
|
214
|
+
pattern: /[0-9A-Z]/i,
|
|
215
|
+
convert: (v) => v.toUpperCase()
|
|
216
|
+
},
|
|
217
|
+
n: {
|
|
218
|
+
pattern: /[0-9a-z]/i,
|
|
219
|
+
convert: (v) => v.toLowerCase()
|
|
220
|
+
},
|
|
221
|
+
X: { pattern: defaultDelimiters }
|
|
222
|
+
};
|
|
223
|
+
function useMask(props) {
|
|
224
|
+
const mask = computed(() => {
|
|
225
|
+
if (typeof props.mask === "string") {
|
|
226
|
+
if (props.mask in presets) return presets[props.mask];
|
|
227
|
+
return props.mask;
|
|
228
|
+
}
|
|
229
|
+
return props.mask?.mask ?? "";
|
|
230
|
+
});
|
|
231
|
+
const tokens = computed(() => {
|
|
232
|
+
return {
|
|
233
|
+
...defaultTokens,
|
|
234
|
+
...isObject(props.mask) ? props.mask.tokens : null
|
|
235
|
+
};
|
|
236
|
+
});
|
|
237
|
+
function isMask(char) {
|
|
238
|
+
return char in tokens.value;
|
|
239
|
+
}
|
|
240
|
+
function maskValidates(mask, char) {
|
|
241
|
+
if (char == null || !isMask(mask)) return false;
|
|
242
|
+
const item = tokens.value[mask];
|
|
243
|
+
if (item.pattern) return item.pattern.test(char);
|
|
244
|
+
return item.test(char);
|
|
245
|
+
}
|
|
246
|
+
function convert(mask, char) {
|
|
247
|
+
const item = tokens.value[mask];
|
|
248
|
+
return item.convert ? item.convert(char) : char;
|
|
249
|
+
}
|
|
250
|
+
function maskText(text) {
|
|
251
|
+
const trimmedText = text?.trim().replace(/\s+/g, " ");
|
|
252
|
+
if (trimmedText == null) return "";
|
|
253
|
+
if (!mask.value.length || !trimmedText.length) return trimmedText;
|
|
254
|
+
let textIndex = 0;
|
|
255
|
+
let maskIndex = 0;
|
|
256
|
+
let newText = "";
|
|
257
|
+
while (maskIndex < mask.value.length) {
|
|
258
|
+
const mchar = mask.value[maskIndex];
|
|
259
|
+
const tchar = trimmedText[textIndex];
|
|
260
|
+
if (mchar === "\\") {
|
|
261
|
+
newText += mask.value[maskIndex + 1];
|
|
262
|
+
maskIndex += 2;
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
if (!isMask(mchar)) {
|
|
266
|
+
newText += mchar;
|
|
267
|
+
if (tchar === mchar) textIndex++;
|
|
268
|
+
} else if (maskValidates(mchar, tchar)) {
|
|
269
|
+
newText += convert(mchar, tchar);
|
|
270
|
+
textIndex++;
|
|
271
|
+
} else break;
|
|
272
|
+
maskIndex++;
|
|
273
|
+
}
|
|
274
|
+
return newText;
|
|
275
|
+
}
|
|
276
|
+
function unmaskText(text) {
|
|
277
|
+
if (text == null) return null;
|
|
278
|
+
if (!mask.value.length || !text.length) return text;
|
|
279
|
+
let textIndex = 0;
|
|
280
|
+
let maskIndex = 0;
|
|
281
|
+
let newText = "";
|
|
282
|
+
while (true) {
|
|
283
|
+
const mchar = mask.value[maskIndex];
|
|
284
|
+
const tchar = text[textIndex];
|
|
285
|
+
if (tchar == null) break;
|
|
286
|
+
if (mchar == null) {
|
|
287
|
+
newText += tchar;
|
|
288
|
+
textIndex++;
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
if (mchar === "\\") {
|
|
292
|
+
if (tchar === mask.value[maskIndex + 1]) textIndex++;
|
|
293
|
+
maskIndex += 2;
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
if (maskValidates(mchar, tchar)) {
|
|
297
|
+
newText += tchar;
|
|
298
|
+
textIndex++;
|
|
299
|
+
maskIndex++;
|
|
300
|
+
continue;
|
|
301
|
+
} else if (mchar !== tchar) {
|
|
302
|
+
while (true) {
|
|
303
|
+
const mchar = mask.value[maskIndex++];
|
|
304
|
+
if (mchar == null || maskValidates(mchar, tchar)) break;
|
|
305
|
+
}
|
|
306
|
+
continue;
|
|
307
|
+
}
|
|
308
|
+
textIndex++;
|
|
309
|
+
maskIndex++;
|
|
310
|
+
}
|
|
311
|
+
return newText;
|
|
312
|
+
}
|
|
313
|
+
function isValid(text) {
|
|
314
|
+
if (!text) return false;
|
|
315
|
+
return unmaskText(text) === unmaskText(maskText(text));
|
|
316
|
+
}
|
|
317
|
+
function isComplete(text) {
|
|
318
|
+
if (!text) return false;
|
|
319
|
+
return maskText(text).length === mask.value.length && isValid(text);
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
isValid,
|
|
323
|
+
isComplete,
|
|
324
|
+
mask: maskText,
|
|
325
|
+
unmask: unmaskText
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
//#endregion
|
|
329
|
+
//#region ../../../../node_modules/vuetify/lib/framework.js
|
|
330
|
+
function createVuetify(vuetify = {}) {
|
|
331
|
+
const { blueprint, ...rest } = vuetify;
|
|
332
|
+
const options = mergeDeep(blueprint, rest);
|
|
333
|
+
const { aliases = {}, components = {}, directives = {} } = options;
|
|
334
|
+
const scope = effectScope();
|
|
335
|
+
return scope.run(() => {
|
|
336
|
+
const defaults = createDefaults(options.defaults);
|
|
337
|
+
const display = createDisplay(options.display, options.ssr);
|
|
338
|
+
const theme = createTheme(options.theme);
|
|
339
|
+
const icons = createIcons(options.icons);
|
|
340
|
+
const locale = createLocale(options.locale);
|
|
341
|
+
const date = createDate(options.date, locale);
|
|
342
|
+
const goTo = createGoTo(options.goTo, locale);
|
|
343
|
+
function install(app) {
|
|
344
|
+
for (const key in directives) app.directive(key, directives[key]);
|
|
345
|
+
for (const key in components) app.component(key, components[key]);
|
|
346
|
+
for (const key in aliases) app.component(key, defineComponent({
|
|
347
|
+
...aliases[key],
|
|
348
|
+
name: key,
|
|
349
|
+
aliasName: aliases[key].name
|
|
350
|
+
}));
|
|
351
|
+
const appScope = effectScope();
|
|
352
|
+
appScope.run(() => {
|
|
353
|
+
theme.install(app);
|
|
354
|
+
});
|
|
355
|
+
app.onUnmount(() => appScope.stop());
|
|
356
|
+
app.provide(DefaultsSymbol, defaults);
|
|
357
|
+
app.provide(DisplaySymbol, display);
|
|
358
|
+
app.provide(ThemeSymbol, theme);
|
|
359
|
+
app.provide(IconSymbol, icons);
|
|
360
|
+
app.provide(LocaleSymbol, locale);
|
|
361
|
+
app.provide(DateOptionsSymbol, date.options);
|
|
362
|
+
app.provide(DateAdapterSymbol, date.instance);
|
|
363
|
+
app.provide(GoToSymbol, goTo);
|
|
364
|
+
if (IN_BROWSER && options.ssr) {
|
|
365
|
+
if (app.$nuxt) app.$nuxt.hook("app:suspense:resolve", () => {
|
|
366
|
+
display.update();
|
|
367
|
+
});
|
|
368
|
+
else {
|
|
369
|
+
const { mount } = app;
|
|
370
|
+
app.mount = (...args) => {
|
|
371
|
+
const vm = mount(...args);
|
|
372
|
+
nextTick(() => display.update());
|
|
373
|
+
app.mount = mount;
|
|
374
|
+
return vm;
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
if (typeof __VUE_OPTIONS_API__ !== "boolean" || __VUE_OPTIONS_API__) app.mixin({ computed: { $vuetify() {
|
|
379
|
+
return reactive({
|
|
380
|
+
defaults: inject.call(this, DefaultsSymbol),
|
|
381
|
+
display: inject.call(this, DisplaySymbol),
|
|
382
|
+
theme: inject.call(this, ThemeSymbol),
|
|
383
|
+
icons: inject.call(this, IconSymbol),
|
|
384
|
+
locale: inject.call(this, LocaleSymbol),
|
|
385
|
+
date: inject.call(this, DateAdapterSymbol)
|
|
386
|
+
});
|
|
387
|
+
} } });
|
|
388
|
+
}
|
|
389
|
+
function unmount() {
|
|
390
|
+
scope.stop();
|
|
391
|
+
}
|
|
392
|
+
return {
|
|
393
|
+
install,
|
|
394
|
+
unmount,
|
|
395
|
+
defaults,
|
|
396
|
+
display,
|
|
397
|
+
theme,
|
|
398
|
+
icons,
|
|
399
|
+
locale,
|
|
400
|
+
date,
|
|
401
|
+
goTo
|
|
402
|
+
};
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
var version = "4.0.0";
|
|
406
|
+
createVuetify.version = version;
|
|
407
|
+
function inject(key) {
|
|
408
|
+
const vm = this.$;
|
|
409
|
+
const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides;
|
|
410
|
+
if (provides && key in provides) return provides[key];
|
|
411
|
+
}
|
|
412
|
+
//#endregion
|
|
413
|
+
export { createVuetify, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useMask, useRtl, useTheme, version };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vuetify.js","names":[],"sources":["../../../../../../../node_modules/vuetify/lib/iconsets/mdi.js","../../../../../../../node_modules/vuetify/lib/icons.js","../../../../../../../node_modules/vuetify/lib/composables/hotkey/hotkey.js","../../../../../../../node_modules/vuetify/lib/composables/mask/mask.js","../../../../../../../node_modules/vuetify/lib/framework.js"],"sourcesContent":["// Composables\nimport { VClassIcon } from \"../composables/icons.js\"; // Utilities\nimport { h } from 'vue';\n\n// Types\n\nconst aliases = {\n collapse: 'mdi-chevron-up',\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle',\n // delete (e.g. v-chip close)\n clear: 'mdi-close-circle',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-alert-circle',\n error: 'mdi-close-circle',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle',\n // for carousel\n sortAsc: 'mdi-arrow-up',\n sortDesc: 'mdi-arrow-down',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n calendar: 'mdi-calendar',\n treeviewCollapse: 'mdi-menu-down',\n treeviewExpand: 'mdi-menu-right',\n tableGroupCollapse: 'mdi-chevron-down',\n tableGroupExpand: 'mdi-chevron-right',\n eyeDropper: 'mdi-eyedropper',\n upload: 'mdi-cloud-upload',\n color: 'mdi-palette',\n command: 'mdi-apple-keyboard-command',\n ctrl: 'mdi-apple-keyboard-control',\n space: 'mdi-keyboard-space',\n shift: 'mdi-apple-keyboard-shift',\n alt: 'mdi-apple-keyboard-option',\n enter: 'mdi-keyboard-return',\n arrowup: 'mdi-arrow-up',\n arrowdown: 'mdi-arrow-down',\n arrowleft: 'mdi-arrow-left',\n arrowright: 'mdi-arrow-right',\n backspace: 'mdi-backspace',\n play: 'mdi-play',\n pause: 'mdi-pause',\n fullscreen: 'mdi-fullscreen',\n fullscreenExit: 'mdi-fullscreen-exit',\n volumeHigh: 'mdi-volume-high',\n volumeMedium: 'mdi-volume-medium',\n volumeLow: 'mdi-volume-low',\n volumeOff: 'mdi-volume-variant-off',\n search: 'mdi-magnify'\n};\nconst mdi = {\n // Not using mergeProps here, functional components merge props by default (?)\n component: props => h(VClassIcon, {\n ...props,\n class: 'mdi'\n })\n};\nexport { aliases, mdi };\n//# sourceMappingURL=mdi.js.map","// Composables\nimport { VClassIcon, VSvgIcon } from \"./composables/icons.js\";\nimport { aliases, mdi } from \"./iconsets/mdi.js\"; // Utilities\nimport { mergeDeep } from \"./util/index.js\"; // Types\nfunction genDefaults() {\n return {\n svg: {\n component: VSvgIcon\n },\n class: {\n component: VClassIcon\n }\n };\n}\nexport function createIcons(options) {\n const sets = genDefaults();\n const defaultSet = options?.defaultSet ?? 'mdi';\n if (defaultSet === 'mdi' && !sets.mdi) {\n sets.mdi = mdi;\n }\n return mergeDeep({\n defaultSet,\n sets,\n aliases: {\n ...aliases,\n /* eslint-disable max-len */\n vuetify: ['M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z', ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6]],\n 'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z',\n 'vuetify-play': ['m6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z', ['M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z', 0.6]]\n /* eslint-enable max-len */\n }\n }, options);\n}\n//# sourceMappingURL=icons.js.map","// Composables\nimport { splitKeyCombination, splitKeySequence } from \"./hotkey-parsing.js\"; // Utilities\nimport { onScopeDispose, toValue, watch } from 'vue';\nimport { IN_BROWSER } from \"../../util/index.js\"; // Types\nexport function useHotkey(keys, callback, options = {}) {\n if (!IN_BROWSER) return function () {};\n const {\n event = 'keydown',\n inputs = false,\n preventDefault = true,\n sequenceTimeout = 1000\n } = options;\n const isMac = navigator?.userAgent?.includes('Macintosh') ?? false;\n let timeout = 0;\n let keyGroups;\n let isSequence = false;\n let groupIndex = 0;\n function isInputFocused() {\n if (toValue(inputs)) return false;\n const activeElement = document.activeElement;\n return activeElement && (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA' || activeElement.isContentEditable || activeElement.contentEditable === 'true');\n }\n function resetSequence() {\n groupIndex = 0;\n clearTimeout(timeout);\n }\n function handler(e) {\n const group = keyGroups[groupIndex];\n if (!group || isInputFocused()) return;\n if (!matchesKeyGroup(e, group, isMac)) {\n if (isSequence) resetSequence();\n return;\n }\n if (toValue(preventDefault)) e.preventDefault();\n if (!isSequence) {\n callback(e);\n return;\n }\n clearTimeout(timeout);\n groupIndex++;\n if (groupIndex === keyGroups.length) {\n callback(e);\n resetSequence();\n return;\n }\n timeout = window.setTimeout(resetSequence, toValue(sequenceTimeout));\n }\n function cleanup() {\n window.removeEventListener(toValue(event), handler);\n clearTimeout(timeout);\n }\n watch(() => toValue(keys), newKeys => {\n cleanup();\n if (newKeys) {\n const groups = splitKeySequence(newKeys.toLowerCase());\n isSequence = groups.length > 1;\n keyGroups = groups;\n resetSequence();\n window.addEventListener(toValue(event), handler);\n }\n }, {\n immediate: true\n });\n\n // Watch for changes in the event type to re-register the listener\n watch(() => toValue(event), (newEvent, oldEvent) => {\n if (oldEvent && keyGroups && keyGroups.length > 0) {\n window.removeEventListener(oldEvent, handler);\n window.addEventListener(newEvent, handler);\n }\n });\n onScopeDispose(cleanup, true);\n return cleanup;\n}\nfunction matchesKeyGroup(e, group, isMac) {\n const {\n modifiers,\n actualKey\n } = parseKeyGroup(group);\n const expectCtrl = modifiers.ctrl || !isMac && (modifiers.cmd || modifiers.meta);\n const expectMeta = isMac && (modifiers.cmd || modifiers.meta);\n return e.ctrlKey === expectCtrl && e.metaKey === expectMeta && e.shiftKey === modifiers.shift && e.altKey === modifiers.alt && e.key.toLowerCase() === actualKey?.toLowerCase();\n}\nfunction parseKeyGroup(group) {\n const MODIFIERS = ['ctrl', 'shift', 'alt', 'meta', 'cmd'];\n\n // Use the shared combination splitting logic\n const {\n keys: parts\n } = splitKeyCombination(group.toLowerCase());\n\n // If the combination is invalid, return empty result\n if (parts.length === 0) {\n return {\n modifiers: Object.fromEntries(MODIFIERS.map(m => [m, false])),\n actualKey: undefined\n };\n }\n const modifiers = Object.fromEntries(MODIFIERS.map(m => [m, false]));\n let actualKey;\n for (const part of parts) {\n if (MODIFIERS.includes(part)) {\n modifiers[part] = true;\n } else {\n actualKey = part;\n }\n }\n return {\n modifiers,\n actualKey\n };\n}\n//# sourceMappingURL=hotkey.js.map","// Utilities\nimport { computed } from 'vue';\nimport { isObject, propsFactory } from \"../../util/index.js\"; // Types\nexport const makeMaskProps = propsFactory({\n mask: [String, Object]\n}, 'mask');\nexport const defaultDelimiters = /[-!$%^&*()_+|~=`{}[\\]:\";'<>?,./\\\\ ]/;\nconst presets = {\n 'credit-card': '#### - #### - #### - ####',\n date: '##/##/####',\n 'date-time': '##/##/#### ##:##',\n 'iso-date': '####-##-##',\n 'iso-date-time': '####-##-## ##:##',\n phone: '(###) ### - ####',\n social: '###-##-####',\n time: '##:##',\n 'time-with-seconds': '##:##:##'\n};\nexport function isMaskDelimiter(char) {\n return char ? defaultDelimiters.test(char) : false;\n}\nconst defaultTokens = {\n '#': {\n pattern: /[0-9]/\n },\n A: {\n pattern: /[A-Z]/i,\n convert: v => v.toUpperCase()\n },\n a: {\n pattern: /[a-z]/i,\n convert: v => v.toLowerCase()\n },\n N: {\n pattern: /[0-9A-Z]/i,\n convert: v => v.toUpperCase()\n },\n n: {\n pattern: /[0-9a-z]/i,\n convert: v => v.toLowerCase()\n },\n X: {\n pattern: defaultDelimiters\n }\n};\nexport function useMask(props) {\n const mask = computed(() => {\n if (typeof props.mask === 'string') {\n if (props.mask in presets) return presets[props.mask];\n return props.mask;\n }\n return props.mask?.mask ?? '';\n });\n const tokens = computed(() => {\n return {\n ...defaultTokens,\n ...(isObject(props.mask) ? props.mask.tokens : null)\n };\n });\n function isMask(char) {\n return char in tokens.value;\n }\n function maskValidates(mask, char) {\n if (char == null || !isMask(mask)) return false;\n const item = tokens.value[mask];\n if (item.pattern) return item.pattern.test(char);\n return item.test(char);\n }\n function convert(mask, char) {\n const item = tokens.value[mask];\n return item.convert ? item.convert(char) : char;\n }\n function maskText(text) {\n const trimmedText = text?.trim().replace(/\\s+/g, ' ');\n if (trimmedText == null) return '';\n if (!mask.value.length || !trimmedText.length) return trimmedText;\n let textIndex = 0;\n let maskIndex = 0;\n let newText = '';\n while (maskIndex < mask.value.length) {\n const mchar = mask.value[maskIndex];\n const tchar = trimmedText[textIndex];\n\n // Escaped character in mask, the next mask character is inserted\n if (mchar === '\\\\') {\n newText += mask.value[maskIndex + 1];\n maskIndex += 2;\n continue;\n }\n if (!isMask(mchar)) {\n newText += mchar;\n if (tchar === mchar) {\n textIndex++;\n }\n } else if (maskValidates(mchar, tchar)) {\n newText += convert(mchar, tchar);\n textIndex++;\n } else {\n break;\n }\n maskIndex++;\n }\n return newText;\n }\n function unmaskText(text) {\n if (text == null) return null;\n if (!mask.value.length || !text.length) return text;\n let textIndex = 0;\n let maskIndex = 0;\n let newText = '';\n while (true) {\n const mchar = mask.value[maskIndex];\n const tchar = text[textIndex];\n if (tchar == null) break;\n if (mchar == null) {\n newText += tchar;\n textIndex++;\n continue;\n }\n\n // Escaped character in mask, skip the next input character\n if (mchar === '\\\\') {\n if (tchar === mask.value[maskIndex + 1]) {\n textIndex++;\n }\n maskIndex += 2;\n continue;\n }\n if (maskValidates(mchar, tchar)) {\n // masked char\n newText += tchar;\n textIndex++;\n maskIndex++;\n continue;\n } else if (mchar !== tchar) {\n // input doesn't match mask, skip forward until it does\n while (true) {\n const mchar = mask.value[maskIndex++];\n if (mchar == null || maskValidates(mchar, tchar)) break;\n }\n continue;\n }\n textIndex++;\n maskIndex++;\n }\n return newText;\n }\n function isValid(text) {\n if (!text) return false;\n return unmaskText(text) === unmaskText(maskText(text));\n }\n function isComplete(text) {\n if (!text) return false;\n const maskedText = maskText(text);\n return maskedText.length === mask.value.length && isValid(text);\n }\n return {\n isValid,\n isComplete,\n mask: maskText,\n unmask: unmaskText\n };\n}\n//# sourceMappingURL=mask.js.map","// Composables\nimport { createIcons } from \"./icons.js\";\nimport { createDate, DateAdapterSymbol, DateOptionsSymbol } from \"./composables/date/date.js\";\nimport { createDefaults, DefaultsSymbol } from \"./composables/defaults.js\";\nimport { createDisplay, DisplaySymbol } from \"./composables/display.js\";\nimport { createGoTo, GoToSymbol } from \"./composables/goto.js\";\nimport { IconSymbol } from \"./composables/icons.js\";\nimport { createLocale, LocaleSymbol } from \"./composables/locale.js\";\nimport { createTheme, ThemeSymbol } from \"./composables/theme.js\"; // Utilities\nimport { effectScope, nextTick, reactive } from 'vue';\nimport { defineComponent, IN_BROWSER, mergeDeep } from \"./util/index.js\"; // Types\n// Exports\nexport * from \"./composables/index.js\";\nexport * from \"./types.js\";\nexport function createVuetify(vuetify = {}) {\n const {\n blueprint,\n ...rest\n } = vuetify;\n const options = mergeDeep(blueprint, rest);\n const {\n aliases = {},\n components = {},\n directives = {}\n } = options;\n const scope = effectScope();\n return scope.run(() => {\n const defaults = createDefaults(options.defaults);\n const display = createDisplay(options.display, options.ssr);\n const theme = createTheme(options.theme);\n const icons = createIcons(options.icons);\n const locale = createLocale(options.locale);\n const date = createDate(options.date, locale);\n const goTo = createGoTo(options.goTo, locale);\n function install(app) {\n for (const key in directives) {\n app.directive(key, directives[key]);\n }\n for (const key in components) {\n app.component(key, components[key]);\n }\n for (const key in aliases) {\n app.component(key, defineComponent({\n ...aliases[key],\n name: key,\n aliasName: aliases[key].name\n }));\n }\n const appScope = effectScope();\n appScope.run(() => {\n theme.install(app);\n });\n app.onUnmount(() => appScope.stop());\n app.provide(DefaultsSymbol, defaults);\n app.provide(DisplaySymbol, display);\n app.provide(ThemeSymbol, theme);\n app.provide(IconSymbol, icons);\n app.provide(LocaleSymbol, locale);\n app.provide(DateOptionsSymbol, date.options);\n app.provide(DateAdapterSymbol, date.instance);\n app.provide(GoToSymbol, goTo);\n if (IN_BROWSER && options.ssr) {\n if (app.$nuxt) {\n app.$nuxt.hook('app:suspense:resolve', () => {\n display.update();\n });\n } else {\n const {\n mount\n } = app;\n app.mount = (...args) => {\n const vm = mount(...args);\n nextTick(() => display.update());\n app.mount = mount;\n return vm;\n };\n }\n }\n if (typeof __VUE_OPTIONS_API__ !== 'boolean' || __VUE_OPTIONS_API__) {\n app.mixin({\n computed: {\n $vuetify() {\n return reactive({\n defaults: inject.call(this, DefaultsSymbol),\n display: inject.call(this, DisplaySymbol),\n theme: inject.call(this, ThemeSymbol),\n icons: inject.call(this, IconSymbol),\n locale: inject.call(this, LocaleSymbol),\n date: inject.call(this, DateAdapterSymbol)\n });\n }\n }\n });\n }\n }\n function unmount() {\n scope.stop();\n }\n return {\n install,\n unmount,\n defaults,\n display,\n theme,\n icons,\n locale,\n date,\n goTo\n };\n });\n}\nexport const version = \"4.0.0\";\ncreateVuetify.version = version;\n\n// Vue's inject() can only be used in setup\nfunction inject(key) {\n const vm = this.$;\n const provides = vm.parent?.provides ?? vm.vnode.appContext?.provides;\n if (provides && key in provides) {\n return provides[key];\n }\n}\n//# sourceMappingURL=framework.js.map"],"x_google_ignoreList":[0,1,2,3,4],"mappings":"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"}
|