vome-core 0.3.37 → 0.3.39
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/admin/components/ui/avatar/index.js +1 -1
- package/dist/admin/components/ui/checkbox/index.js +1 -1
- package/dist/admin/components/ui/dialog/index.js +1 -1
- package/dist/admin/components/ui/dropdown-menu/index.js +1 -1
- package/dist/admin/components/ui/input/index.js +1 -1
- package/dist/admin/components/ui/label/index.js +1 -1
- package/dist/admin/components/ui/scroll-area/index.js +1 -1
- package/dist/admin/components/ui/select/index.js +1 -1
- package/dist/admin/components/ui/separator/index.js +1 -1
- package/dist/admin/components/ui/sheet/index.js +1 -1
- package/dist/admin/components/ui/sonner/index.js +1 -1
- package/dist/admin/components/ui/table/index.js +1 -1
- package/dist/admin/components/ui/tabs/index.js +1 -1
- package/dist/admin/components/ui/tooltip/index.js +1 -1
- package/dist/admin/crud/auto-fields.js +1 -1
- package/dist/admin/crud/components/vm-color-picker.vue +19 -1
- package/dist/admin/crud/components/vm-context-menu.vue +9 -5
- package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
- package/dist/admin/crud/components/vm-richtext.vue +312 -23
- package/dist/admin/crud/config.js +1 -1
- package/dist/admin/crud/confirm.js +1 -1
- package/dist/admin/crud/crud-page-request.js +1 -1
- package/dist/admin/crud/data-i18n.js +1 -1
- package/dist/admin/crud/dict.js +1 -1
- package/dist/admin/crud/export-fetch.js +1 -1
- package/dist/admin/crud/key.js +1 -1
- package/dist/admin/crud/plugins.js +1 -1
- package/dist/admin/crud/span.js +1 -1
- package/dist/admin/crud/style.js +1 -1
- package/dist/admin/crud/validate.js +1 -1
- package/dist/admin/directives/perm.js +1 -1
- package/dist/admin/hooks/useUpload.js +1 -1
- package/dist/admin/lib/browser.js +1 -1
- package/dist/admin/lib/cn.js +1 -1
- package/dist/admin/lib/dialog-float.js +1 -1
- package/dist/admin/lib/export-excel.d.ts +3 -3
- package/dist/admin/lib/export-excel.js +1 -1
- package/dist/admin/lib/import-excel.js +1 -1
- package/dist/admin/lib/json.js +1 -1
- package/dist/admin/lib/menu.js +1 -1
- package/dist/admin/lib/micro-locale.js +1 -1
- package/dist/admin/lib/micro-theme.js +1 -1
- package/dist/admin/lib/shell.js +1 -1
- package/dist/admin/lib/theme-color-options.js +1 -1
- package/dist/admin/lib/tree.js +1 -1
- package/dist/admin/lib/upload.js +1 -1
- package/dist/admin/lib/video-frame.js +1 -1
- package/dist/admin/router/create.js +1 -1
- package/dist/admin/router/guards.js +1 -1
- package/dist/ai/index.js +1 -1
- package/dist/client/ai-model-registry.js +1 -1
- package/dist/client/base.js +1 -1
- package/dist/client/configure.js +1 -1
- package/dist/client/dict.js +1 -1
- package/dist/client/eps-payload.js +1 -1
- package/dist/client/eps.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/locale-change.js +1 -1
- package/dist/client/locale-store.js +1 -1
- package/dist/client/service.js +1 -1
- package/dist/client/vite-admin.js +1 -1
- package/dist/client/vite-auto-import.js +1 -1
- package/dist/client/vite-micro-proxy.js +1 -1
- package/dist/client/vite-plugin-eps.js +1 -1
- package/dist/client/vite-resolve.js +1 -1
- package/dist/config/index.js +1 -1
- package/dist/index.js +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +1 -1
- package/dist/shared/datetime-picker.js +1 -1
- package/dist/shared/decimal.js +1 -1
- package/dist/shared/excel.d.ts +5 -0
- package/dist/shared/excel.js +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/locale-json.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/package.json +2 -1
|
@@ -25,9 +25,36 @@
|
|
|
25
25
|
<button type="button" class="vm-richtext__btn" :class="{ 'is-active': editor.isActive('italic') }" :title="crudLabel('rtItalic')" @click="editor.chain().focus().toggleItalic().run()"><i class="ri-italic" /></button>
|
|
26
26
|
<button type="button" class="vm-richtext__btn" :class="{ 'is-active': editor.isActive('underline') }" :title="crudLabel('rtUnderline')" @click="editor.chain().focus().toggleUnderline().run()"><i class="ri-underline" /></button>
|
|
27
27
|
<button type="button" class="vm-richtext__btn" :class="{ 'is-active': editor.isActive('strike') }" :title="crudLabel('rtStrike')" @click="editor.chain().focus().toggleStrike().run()"><i class="ri-strikethrough" /></button>
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
<span
|
|
29
|
+
class="vm-richtext__color"
|
|
30
|
+
:class="{ 'is-active': editor.isActive('highlight') }"
|
|
31
|
+
:title="crudLabel('rtBgColor')"
|
|
32
|
+
@pointerdown="rememberSelection"
|
|
33
|
+
>
|
|
34
|
+
<vm-color-picker
|
|
35
|
+
size="sm"
|
|
36
|
+
swatch-only
|
|
37
|
+
:enable-theme="false"
|
|
38
|
+
:disabled="disabled"
|
|
39
|
+
:model-value="highlightColor"
|
|
40
|
+
@update:model-value="applyHighlightColor"
|
|
41
|
+
/>
|
|
42
|
+
</span>
|
|
43
|
+
<span
|
|
44
|
+
class="vm-richtext__color"
|
|
45
|
+
:class="{ 'is-active': Boolean(textColor && textColor !== '#111827') }"
|
|
46
|
+
:title="crudLabel('rtTextColor')"
|
|
47
|
+
@pointerdown="rememberSelection"
|
|
48
|
+
>
|
|
49
|
+
<vm-color-picker
|
|
50
|
+
size="sm"
|
|
51
|
+
swatch-only
|
|
52
|
+
:enable-theme="false"
|
|
53
|
+
:disabled="disabled"
|
|
54
|
+
:model-value="textColor"
|
|
55
|
+
@update:model-value="applyTextColor"
|
|
56
|
+
/>
|
|
57
|
+
</span>
|
|
31
58
|
<span class="vm-richtext__sep" />
|
|
32
59
|
<button type="button" class="vm-richtext__btn" :class="{ 'is-active': editor.isActive('heading', { level: 2 }) }" :title="crudLabel('rtH2')" @click="editor.chain().focus().toggleHeading({ level: 2 }).run()">H2</button>
|
|
33
60
|
<button type="button" class="vm-richtext__btn" :class="{ 'is-active': editor.isActive('heading', { level: 3 }) }" :title="crudLabel('rtH3')" @click="editor.chain().focus().toggleHeading({ level: 3 }).run()">H3</button>
|
|
@@ -84,13 +111,19 @@
|
|
|
84
111
|
</div>
|
|
85
112
|
|
|
86
113
|
<EditorContent class="vm-richtext__content" :editor="editor" />
|
|
114
|
+
<vm-context-menu
|
|
115
|
+
ref="tableCtxRef"
|
|
116
|
+
:items="tableCtxItems"
|
|
117
|
+
:z-index="10050"
|
|
118
|
+
@select="onTableCtxSelect"
|
|
119
|
+
/>
|
|
87
120
|
</div>
|
|
88
121
|
</div>
|
|
89
122
|
</template>
|
|
90
123
|
|
|
91
124
|
<script setup lang="ts">
|
|
92
125
|
import { crudLabel } from '../style'
|
|
93
|
-
import { computed, nextTick, onBeforeUnmount, onMounted, shallowRef, watch } from 'vue'
|
|
126
|
+
import { computed, nextTick, onBeforeUnmount, onMounted, ref, shallowRef, watch } from 'vue'
|
|
94
127
|
import DOMPurify from 'dompurify'
|
|
95
128
|
import { EditorContent, useEditor } from '@tiptap/vue-3'
|
|
96
129
|
import StarterKit from '@tiptap/starter-kit'
|
|
@@ -110,6 +143,12 @@ import TableHeader from '@tiptap/extension-table-header'
|
|
|
110
143
|
import TableCell from '@tiptap/extension-table-cell'
|
|
111
144
|
import { useUpload } from '../../hooks/useUpload'
|
|
112
145
|
import { VM_RICHTEXT_EMOJIS, VmRichtextVideo } from './vm-richtext-extensions'
|
|
146
|
+
import VmColorPicker from './vm-color-picker.vue'
|
|
147
|
+
import VmContextMenu from './vm-context-menu.vue'
|
|
148
|
+
import { CellSelection, cellAround } from '@tiptap/pm/tables'
|
|
149
|
+
import type { Editor } from '@tiptap/core'
|
|
150
|
+
import type { EditorView } from '@tiptap/pm/view'
|
|
151
|
+
import type { CtxMenuItem } from '../../../../typings/admin/comm/crud'
|
|
113
152
|
|
|
114
153
|
defineOptions({ name: 'vm-richtext' })
|
|
115
154
|
|
|
@@ -149,6 +188,142 @@ const emojiOpen = shallowRef(false)
|
|
|
149
188
|
const emojiBtnRef = shallowRef<HTMLElement>()
|
|
150
189
|
const emojiPanelRef = shallowRef<HTMLElement>()
|
|
151
190
|
const emojiPanelStyle = shallowRef<Record<string, string>>({})
|
|
191
|
+
const textColor = ref('#111827')
|
|
192
|
+
const highlightColor = ref('#fef08a')
|
|
193
|
+
/** 点开取色器前保存选区,避免焦点离开编辑器后丢标记范围 */
|
|
194
|
+
let savedSelection: { from: number; to: number } | null = null
|
|
195
|
+
|
|
196
|
+
const tableCtxRef = ref<{ open: (ev: MouseEvent) => void; close: () => void } | null>(null)
|
|
197
|
+
const tableCtxItems = ref<CtxMenuItem[]>([])
|
|
198
|
+
|
|
199
|
+
type TableCtxKey =
|
|
200
|
+
| 'addColumnBefore'
|
|
201
|
+
| 'addColumnAfter'
|
|
202
|
+
| 'addRowBefore'
|
|
203
|
+
| 'addRowAfter'
|
|
204
|
+
| 'deleteColumn'
|
|
205
|
+
| 'deleteRow'
|
|
206
|
+
| 'mergeCells'
|
|
207
|
+
| 'splitCell'
|
|
208
|
+
|
|
209
|
+
function cellPosInSelection(sel: CellSelection, cellPos: number) {
|
|
210
|
+
let hit = false
|
|
211
|
+
sel.forEachCell((_node, pos) => {
|
|
212
|
+
if (pos === cellPos) hit = true
|
|
213
|
+
})
|
|
214
|
+
return hit
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/** 右键落点:已在多选内则保留;否则选中该单元格作为参照 */
|
|
218
|
+
function selectTableCellFromEvent(ed: Editor, event: MouseEvent) {
|
|
219
|
+
const view = ed.view
|
|
220
|
+
const coords = view.posAtCoords({ left: event.clientX, top: event.clientY })
|
|
221
|
+
if (!coords) return false
|
|
222
|
+
const $cell = cellAround(view.state.doc.resolve(coords.pos))
|
|
223
|
+
if (!$cell) return false
|
|
224
|
+
|
|
225
|
+
const { selection } = view.state
|
|
226
|
+
if (selection instanceof CellSelection && cellPosInSelection(selection, $cell.pos)) {
|
|
227
|
+
return true
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const tr = view.state.tr.setSelection(CellSelection.create(view.state.doc, $cell.pos))
|
|
231
|
+
view.dispatch(tr)
|
|
232
|
+
return true
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function buildTableCtxItems(ed: Editor): CtxMenuItem[] {
|
|
236
|
+
const can = ed.can()
|
|
237
|
+
return [
|
|
238
|
+
{
|
|
239
|
+
key: 'addColumnBefore',
|
|
240
|
+
label: crudLabel('rtTableColBefore'),
|
|
241
|
+
disabled: !can.addColumnBefore(),
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
key: 'addColumnAfter',
|
|
245
|
+
label: crudLabel('rtTableColAfter'),
|
|
246
|
+
disabled: !can.addColumnAfter(),
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
key: 'addRowBefore',
|
|
250
|
+
label: crudLabel('rtTableRowBefore'),
|
|
251
|
+
disabled: !can.addRowBefore(),
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
key: 'addRowAfter',
|
|
255
|
+
label: crudLabel('rtTableRowAfter'),
|
|
256
|
+
disabled: !can.addRowAfter(),
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
key: 'deleteColumn',
|
|
260
|
+
label: crudLabel('rtTableDeleteCol'),
|
|
261
|
+
disabled: !can.deleteColumn(),
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
key: 'deleteRow',
|
|
265
|
+
label: crudLabel('rtTableDeleteRow'),
|
|
266
|
+
disabled: !can.deleteRow(),
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
key: 'mergeCells',
|
|
270
|
+
label: crudLabel('rtTableMerge'),
|
|
271
|
+
disabled: !can.mergeCells(),
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
key: 'splitCell',
|
|
275
|
+
label: crudLabel('rtTableSplit'),
|
|
276
|
+
disabled: !can.splitCell(),
|
|
277
|
+
},
|
|
278
|
+
]
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
function onTableContextMenu(view: EditorView, event: MouseEvent) {
|
|
282
|
+
const ed = editor.value
|
|
283
|
+
if (!ed || ed.isDestroyed || props.disabled) return false
|
|
284
|
+
const target = event.target as HTMLElement | null
|
|
285
|
+
if (!target?.closest?.('td, th')) return false
|
|
286
|
+
if (!selectTableCellFromEvent(ed, event)) return false
|
|
287
|
+
event.preventDefault()
|
|
288
|
+
tableCtxItems.value = buildTableCtxItems(ed)
|
|
289
|
+
tableCtxRef.value?.open(event)
|
|
290
|
+
return true
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
function onTableCtxSelect(key: string) {
|
|
294
|
+
const ed = editor.value
|
|
295
|
+
if (!ed) return
|
|
296
|
+
const k = key as TableCtxKey
|
|
297
|
+
const chain = ed.chain().focus()
|
|
298
|
+
switch (k) {
|
|
299
|
+
case 'addColumnBefore':
|
|
300
|
+
chain.addColumnBefore().run()
|
|
301
|
+
break
|
|
302
|
+
case 'addColumnAfter':
|
|
303
|
+
chain.addColumnAfter().run()
|
|
304
|
+
break
|
|
305
|
+
case 'addRowBefore':
|
|
306
|
+
chain.addRowBefore().run()
|
|
307
|
+
break
|
|
308
|
+
case 'addRowAfter':
|
|
309
|
+
chain.addRowAfter().run()
|
|
310
|
+
break
|
|
311
|
+
case 'deleteColumn':
|
|
312
|
+
chain.deleteColumn().run()
|
|
313
|
+
break
|
|
314
|
+
case 'deleteRow':
|
|
315
|
+
chain.deleteRow().run()
|
|
316
|
+
break
|
|
317
|
+
case 'mergeCells':
|
|
318
|
+
chain.mergeCells().run()
|
|
319
|
+
break
|
|
320
|
+
case 'splitCell':
|
|
321
|
+
chain.splitCell().run()
|
|
322
|
+
break
|
|
323
|
+
default:
|
|
324
|
+
break
|
|
325
|
+
}
|
|
326
|
+
}
|
|
152
327
|
|
|
153
328
|
const readOnlyMode = computed(() => props.readonly)
|
|
154
329
|
const uploadEnabled = computed(() => Boolean(props.uploadImage) || props.autoUpload !== false)
|
|
@@ -163,7 +338,7 @@ function sanitize(html: string) {
|
|
|
163
338
|
ALLOWED_TAGS: RICH_TAGS,
|
|
164
339
|
ALLOWED_ATTR: [
|
|
165
340
|
'href', 'target', 'rel', 'class', 'src', 'alt', 'title', 'width', 'height',
|
|
166
|
-
'colspan', 'rowspan', 'align', 'controls', 'style',
|
|
341
|
+
'colspan', 'rowspan', 'align', 'controls', 'style', 'data-color',
|
|
167
342
|
],
|
|
168
343
|
})
|
|
169
344
|
}
|
|
@@ -275,6 +450,64 @@ function insertEmoji(emoji: string) {
|
|
|
275
450
|
emojiOpen.value = false
|
|
276
451
|
}
|
|
277
452
|
|
|
453
|
+
function rememberSelection() {
|
|
454
|
+
const ed = editor.value
|
|
455
|
+
if (!ed) return
|
|
456
|
+
const { from, to } = ed.state.selection
|
|
457
|
+
savedSelection = { from, to }
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
function syncColorModels() {
|
|
461
|
+
const ed = editor.value
|
|
462
|
+
if (!ed) return
|
|
463
|
+
const fg = ed.getAttributes('textStyle').color as string | undefined
|
|
464
|
+
textColor.value = fg?.trim() || '#111827'
|
|
465
|
+
const bg = ed.getAttributes('highlight').color as string | undefined
|
|
466
|
+
highlightColor.value = bg?.trim() || '#fef08a'
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
function withSavedSelection(run: (chain: {
|
|
470
|
+
unsetColor: () => { run: () => boolean }
|
|
471
|
+
setColor: (c: string) => { run: () => boolean }
|
|
472
|
+
unsetHighlight: () => { run: () => boolean }
|
|
473
|
+
setHighlight: (attrs: { color: string }) => { run: () => boolean }
|
|
474
|
+
}) => void) {
|
|
475
|
+
const ed = editor.value
|
|
476
|
+
if (!ed) return
|
|
477
|
+
const chain = ed.chain().focus()
|
|
478
|
+
if (savedSelection) {
|
|
479
|
+
chain.setTextSelection(savedSelection)
|
|
480
|
+
}
|
|
481
|
+
run(chain as never)
|
|
482
|
+
savedSelection = {
|
|
483
|
+
from: ed.state.selection.from,
|
|
484
|
+
to: ed.state.selection.to,
|
|
485
|
+
}
|
|
486
|
+
syncColorModels()
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
function applyTextColor(v: string) {
|
|
490
|
+
const color = String(v || '').trim()
|
|
491
|
+
withSavedSelection((chain) => {
|
|
492
|
+
if (!color) {
|
|
493
|
+
chain.unsetColor().run()
|
|
494
|
+
return
|
|
495
|
+
}
|
|
496
|
+
chain.setColor(color).run()
|
|
497
|
+
})
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
function applyHighlightColor(v: string) {
|
|
501
|
+
const color = String(v || '').trim()
|
|
502
|
+
withSavedSelection((chain) => {
|
|
503
|
+
if (!color) {
|
|
504
|
+
chain.unsetHighlight().run()
|
|
505
|
+
return
|
|
506
|
+
}
|
|
507
|
+
chain.setHighlight({ color }).run()
|
|
508
|
+
})
|
|
509
|
+
}
|
|
510
|
+
|
|
278
511
|
function insertTable() {
|
|
279
512
|
editor.value
|
|
280
513
|
?.chain()
|
|
@@ -283,20 +516,6 @@ function insertTable() {
|
|
|
283
516
|
.run()
|
|
284
517
|
}
|
|
285
518
|
|
|
286
|
-
function pickTextColor() {
|
|
287
|
-
const ed = editor.value
|
|
288
|
-
if (!ed) return
|
|
289
|
-
const current = (ed.getAttributes('textStyle').color as string | undefined) || '#111827'
|
|
290
|
-
const color = window.prompt(crudLabel('textColorPrompt'), current)
|
|
291
|
-
if (color == null) return
|
|
292
|
-
const v = color.trim()
|
|
293
|
-
if (!v) {
|
|
294
|
-
ed.chain().focus().unsetColor().run()
|
|
295
|
-
return
|
|
296
|
-
}
|
|
297
|
-
ed.chain().focus().setColor(v).run()
|
|
298
|
-
}
|
|
299
|
-
|
|
300
519
|
function toggleLink() {
|
|
301
520
|
const ed = editor.value
|
|
302
521
|
if (!ed) return
|
|
@@ -363,7 +582,7 @@ const editor = useEditor({
|
|
|
363
582
|
Underline,
|
|
364
583
|
TextStyle,
|
|
365
584
|
Color,
|
|
366
|
-
Highlight.configure({ multicolor:
|
|
585
|
+
Highlight.configure({ multicolor: true }),
|
|
367
586
|
TextAlign.configure({ types: ['heading', 'paragraph'] }),
|
|
368
587
|
TaskList,
|
|
369
588
|
TaskItem.configure({ nested: true }),
|
|
@@ -385,11 +604,20 @@ const editor = useEditor({
|
|
|
385
604
|
attributes: { class: 'vm-richtext__prose' },
|
|
386
605
|
handlePaste: (_view, event) => handleMediaPaste(event),
|
|
387
606
|
handleDrop: (_view, event, _slice, moved) => handleMediaDrop(event, moved),
|
|
607
|
+
handleDOMEvents: {
|
|
608
|
+
contextmenu: (view, event) => onTableContextMenu(view, event),
|
|
609
|
+
},
|
|
388
610
|
},
|
|
389
611
|
onUpdate: ({ editor: ed }) => {
|
|
390
612
|
if (syncing.value) return
|
|
391
613
|
emit('update:modelValue', normalizeHtml(ed.getHTML()))
|
|
392
614
|
},
|
|
615
|
+
onSelectionUpdate: () => {
|
|
616
|
+
syncColorModels()
|
|
617
|
+
},
|
|
618
|
+
onTransaction: () => {
|
|
619
|
+
syncColorModels()
|
|
620
|
+
},
|
|
393
621
|
})
|
|
394
622
|
|
|
395
623
|
watch(() => props.modelValue, (next) => {
|
|
@@ -497,6 +725,36 @@ onBeforeUnmount(() => {
|
|
|
497
725
|
&:disabled { opacity: 0.35; cursor: not-allowed; }
|
|
498
726
|
}
|
|
499
727
|
|
|
728
|
+
.vm-richtext__color {
|
|
729
|
+
display: inline-flex;
|
|
730
|
+
align-items: center;
|
|
731
|
+
justify-content: center;
|
|
732
|
+
min-width: 28px;
|
|
733
|
+
height: 28px;
|
|
734
|
+
padding: 0 4px;
|
|
735
|
+
border-radius: 6px;
|
|
736
|
+
cursor: pointer;
|
|
737
|
+
transition: background 0.15s ease;
|
|
738
|
+
|
|
739
|
+
&:hover {
|
|
740
|
+
background: color-mix(in srgb, var(--brand) 10%, transparent);
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
&.is-active {
|
|
744
|
+
background: color-mix(in srgb, var(--brand) 16%, transparent);
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
:deep(.vm-color-picker) {
|
|
748
|
+
width: auto;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
:deep(.vm-color-picker__swatch) {
|
|
752
|
+
width: 18px;
|
|
753
|
+
height: 18px;
|
|
754
|
+
border-radius: 4px;
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
|
|
500
758
|
.vm-richtext__sep {
|
|
501
759
|
width: 1px;
|
|
502
760
|
height: 18px;
|
|
@@ -601,14 +859,45 @@ onBeforeUnmount(() => {
|
|
|
601
859
|
blockquote { margin: 0.45em 0; padding-left: 12px; border-left: 3px solid var(--border); color: var(--muted-foreground); }
|
|
602
860
|
a { color: var(--brand); text-decoration: underline; cursor: pointer; }
|
|
603
861
|
img, video { display: block; max-width: 100%; height: auto; margin: 8px 0; border-radius: 8px; }
|
|
604
|
-
mark {
|
|
862
|
+
mark {
|
|
863
|
+
border-radius: 2px;
|
|
864
|
+
padding: 0 2px;
|
|
865
|
+
}
|
|
866
|
+
mark:not([style*='background']) {
|
|
867
|
+
background: color-mix(in srgb, var(--brand) 22%, transparent);
|
|
868
|
+
}
|
|
605
869
|
code { padding: 0.1em 0.35em; border-radius: 4px; background: var(--muted); font-size: 0.92em; }
|
|
606
870
|
pre { margin: 0.5em 0; padding: 10px 12px; border-radius: 8px; background: var(--muted); overflow-x: auto;
|
|
607
871
|
code { padding: 0; background: transparent; }
|
|
608
872
|
}
|
|
609
|
-
table { width: 100%; border-collapse: collapse; margin: 8px 0; }
|
|
610
|
-
th, td {
|
|
873
|
+
table { width: 100%; border-collapse: collapse; margin: 8px 0; table-layout: fixed; }
|
|
874
|
+
th, td {
|
|
875
|
+
position: relative;
|
|
876
|
+
min-width: 48px;
|
|
877
|
+
padding: 6px 8px;
|
|
878
|
+
border: 1px solid var(--border);
|
|
879
|
+
vertical-align: top;
|
|
880
|
+
}
|
|
611
881
|
th { background: var(--muted); font-weight: 600; }
|
|
882
|
+
.selectedCell {
|
|
883
|
+
background: color-mix(in srgb, var(--brand) 16%, transparent);
|
|
884
|
+
}
|
|
885
|
+
.selectedCell::after {
|
|
886
|
+
content: '';
|
|
887
|
+
position: absolute;
|
|
888
|
+
inset: 0;
|
|
889
|
+
pointer-events: none;
|
|
890
|
+
background: color-mix(in srgb, var(--brand) 10%, transparent);
|
|
891
|
+
}
|
|
892
|
+
.column-resize-handle {
|
|
893
|
+
position: absolute;
|
|
894
|
+
top: 0;
|
|
895
|
+
right: -2px;
|
|
896
|
+
bottom: 0;
|
|
897
|
+
width: 4px;
|
|
898
|
+
background: var(--brand);
|
|
899
|
+
pointer-events: none;
|
|
900
|
+
}
|
|
612
901
|
hr { margin: 12px 0; border: none; border-top: 1px solid var(--border); }
|
|
613
902
|
}
|
|
614
903
|
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1e00d6,_0x419bc8){const _0x427261=_0xa3a3,_0x410316=_0x1e00d6();while(!![]){try{const _0x14e124=-parseInt(_0x427261(0x1e6))/0x1*(parseInt(_0x427261(0x1e2))/0x2)+-parseInt(_0x427261(0x1e5))/0x3+-parseInt(_0x427261(0x1eb))/0x4+parseInt(_0x427261(0x1ec))/0x5+parseInt(_0x427261(0x1e4))/0x6*(-parseInt(_0x427261(0x1e1))/0x7)+-parseInt(_0x427261(0x1ea))/0x8*(parseInt(_0x427261(0x1e0))/0x9)+parseInt(_0x427261(0x1dd))/0xa*(parseInt(_0x427261(0x1de))/0xb);if(_0x14e124===_0x419bc8)break;else _0x410316['push'](_0x410316['shift']());}catch(_0x52eb54){_0x410316['push'](_0x410316['shift']());}}}(_0x2779,0xaf552));function _0x2779(){const _0x585fab=['mty3otqZowrcC3DdtW','ndaYn0fIBK5cqW','zgLJDa','C29YDa','C2vHCMnO','nZe2mZa0EefPAKTh','ntu2mJm5mKP1Cgfrra','mJm0ody1mhjZrMLgvG','yxbP','mtCWmgzqEhLqCa','mJe5otaXtNDbDLL1','BgfIzwW','mtHAyLzVtKe','mJG5mwTrAvrvqG','mJi0uKn4BLPq','CgfNAw5HDgLVBG','odi3ng5Tz2DeEG'];_0x2779=function(){return _0x585fab;};return _0x2779();}import{getCrudConfig}from'./style';import{CRUD_LABELS,DEFAULT_CRUD_DICT}from'./dict';export{CRUD_LABELS,DEFAULT_CRUD_DICT};const DEFAULT_CRUD_PERMISSION={'page':!![],'list':!![],'info':!![],'add':![],'delete':![],'update':![],'restore':![]};function _0xa3a3(_0x4d6f0d,_0x336d21){_0x4d6f0d=_0x4d6f0d-0x1dd;const _0x277903=_0x2779();let _0xa3a3d1=_0x277903[_0x4d6f0d];if(_0xa3a3['UHzkfs']===undefined){var _0x455339=function(_0x244005){const _0x51617b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x429966='',_0xda4994='';for(let _0x9cb4bd=0x0,_0x7bca23,_0x418179,_0x20b779=0x0;_0x418179=_0x244005['charAt'](_0x20b779++);~_0x418179&&(_0x7bca23=_0x9cb4bd%0x4?_0x7bca23*0x40+_0x418179:_0x418179,_0x9cb4bd++%0x4)?_0x429966+=String['fromCharCode'](0xff&_0x7bca23>>(-0x2*_0x9cb4bd&0x6)):0x0){_0x418179=_0x51617b['indexOf'](_0x418179);}for(let _0x1d1afd=0x0,_0x187066=_0x429966['length'];_0x1d1afd<_0x187066;_0x1d1afd++){_0xda4994+='%'+('00'+_0x429966['charCodeAt'](_0x1d1afd)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xda4994);};_0xa3a3['xOXVab']=_0x455339,_0xa3a3['PBOvmo']={},_0xa3a3['UHzkfs']=!![];}const _0x3ad5e5=_0x277903[0x0],_0x3cc3a5=_0x4d6f0d+_0x3ad5e5,_0x43f156=_0xa3a3['PBOvmo'][_0x3cc3a5];return!_0x43f156?(_0xa3a3d1=_0xa3a3['xOXVab'](_0xa3a3d1),_0xa3a3['PBOvmo'][_0x3cc3a5]=_0xa3a3d1):_0xa3a3d1=_0x43f156,_0xa3a3d1;}export function mergeDict(_0x429966){const _0x506c49=_0xa3a3,_0xda4994=getCrudConfig()[_0x506c49(0x1e7)];if(!_0x429966)return{..._0xda4994,'label':{..._0xda4994[_0x506c49(0x1df)]}};return{..._0xda4994,..._0x429966,'api':{..._0xda4994['api'],..._0x429966[_0x506c49(0x1ed)]},'pagination':{..._0xda4994[_0x506c49(0x1e3)],..._0x429966['pagination']},'search':{..._0xda4994[_0x506c49(0x1e9)],..._0x429966['search']},'sort':{..._0xda4994[_0x506c49(0x1e8)],..._0x429966[_0x506c49(0x1e8)]},'label':{..._0xda4994[_0x506c49(0x1df)],..._0x429966['label']}};}export function mergePermission(_0x9cb4bd,_0x7bca23){return{...DEFAULT_CRUD_PERMISSION,..._0x7bca23,..._0x9cb4bd};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function _0x1003(){const _0x214ffa=['Bw91BNq','nZm0nJvYu3PPug8','DM0Ty29UzMLYBv9FDgL0Bgu','mZi1mZuWmeHWBuvbBW','mty1mdiXm1Lnwev4Da','nZi3ndmYBgnRtxjo','DgLWCW','DgL0Bgu','DM0Ty29UzMLYBv9FAgvHza','y2fUy2vSvgv4Da','CMvTB3zL','y2XVC2u','Dw5TB3vUDa','C3rYAw5N','BwvZC2fNzq','C3r5Bgu','Dw5KzwzPBMvK','nZjVt3bpuhu','AgvHza','DM0Ty29UzMLYBv9FyNrUigLZlwDOB3n0','DMfSDwu','DM0Ty29UzMLYBv9FyNrUigLZlxbYAw1HCNK','nJu2otK3nLfzyuH0wq','DM0Ty29UzMLYBs1ZDhLSzq','cI52Bs1JB25MAxjTw2rHDgeTC2XVDd0NzgLHBg9NlwnVBNrLBNqNxsb7cIaGD2LKDgG6ig1PBIG0mdbWEcWGy2fSyYGXmdb2DYaTidmYChGPksaHAw1WB3j0yw50oWOGig1HEc13Awr0AdOGBwLUkdqWmhb4lcbJywXJkdeWmhz3ic0GmZjWEcKPicfPBxbVCNrHBNq7cIaGz2fWoIaWicfPBxbVCNrHBNq7cIaGCgfKzgLUzZOGmcaHAw1WB3j0yw50oWOGigjVCMrLCJOGBM9UzsaHAw1WB3j0yw50oWOGigjVCMrLCI1YywrPDxm6idi0ChGGiwLTCg9YDgfUDdSkicbIB3GTC2HHzg93oIb2yxiOls1ZAgfKB3CTC29MDcKGiwLTCg9YDgfUDdSkFqOUDM0Ty29UzMLYBv9FAgvHzcb7ihbHzgrPBMC6ide4ChGGmJjWEcaWoYbIB3jKzxiTyM90Dg9ToIbUB25LoYb9cI52Bs1JB25MAxjTx190AxrSzsb7igzVBNqTC2L6ztOGmtzWEdSGzM9UDc13zwLNAhq6idy1mdSGFqOUDM0Ty29UzMLYBv9FyM9KEsb7cIaGCgfKzgLUzZOGmtjWEcaYmNb4idHWEdSkicbJB2XVCJOGDMfYkc0TzM9YzwDYB3vUzcK7cIaGzM9UDc1ZAxPLoIaXnhb4oWOGigXPBMuTAgvPz2H0oIaXlJy7cN0klNzTlwnVBMzPCM1Fx2zVB3qGEWOGigrPC3bSyxK6igzSzxG7cIaGANvZDgLMEs1JB250zw50oIbMBgv4lwvUzdSkicbNyxa6idHWEdSkicbWywrKAw5NoIaXnhb4idiYChG7cN0klNzTlwnVBMzPCM1Fx2j0BIb7cIaGAgvPz2H0oIaZnNb4oWOGihbHzgrPBMC6idaGmtzWEdSkicbIB3jKzxi6ig5VBMu7cIaGyM9YzgvYlxjHzgL1CZOGmtjWEdSkicbMB250lxnPEMu6ideZChG7cIaGzM9UDc13zwLNAhq6idyWmdSkicbJDxjZB3i6ihbVAw50zxi7cN0klNzTlwnVBMzPCM1Fx2j0BI5PCY1WCMLTyxj5ihSGyMfJA2DYB3vUzdOGDMfYkc0TyNjHBMqPoYbJB2XVCJOGi2zMzJSGFqOUDM0Ty29UzMLYBv9FyNrUlMLZlxbYAw1HCNK6Ag92zxiGEYbIywnRz3jVDw5KoIb2yxiOls1ICMfUzc1KzwvWktSGFqOUDM0Ty29UzMLYBv9FyNrUlMLZlwDOB3n0ihSGyMfJA2DYB3vUzdOGDMfYkc0TBxv0zwqPoYbJB2XVCJOGDMfYkc0TzM9YzwDYB3vUzcK7ih0k','Dgv4DenVBNrLBNq','yNv0Dg9U','mtq0quv5Ee9j','y29UzMLYBurPywXVzW','mJKWmtu2nefsqw5Szq','yxbWzw5Kq2HPBgq','y3jLyxrLrwXLBwvUDa','zgL2','y29UzMLYBvrLEhq','mteYnZyZmgLJyxHRua','DM0Ty29UzMLYBv9FyM9KEq'];_0x1003=function(){return _0x214ffa;};return _0x1003();}const _0x247ebf=_0x1482;function _0x1482(_0x26618a,_0x10bf4f){_0x26618a=_0x26618a-0x19f;const _0x1003c4=_0x1003();let _0x1482ae=_0x1003c4[_0x26618a];if(_0x1482['aWZluQ']===undefined){var _0x55aad8=function(_0xe8ea33){const _0x182d57='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1442ef='',_0x4b7c1c='';for(let _0x15576d=0x0,_0x19372c,_0x477c87,_0x22f7b8=0x0;_0x477c87=_0xe8ea33['charAt'](_0x22f7b8++);~_0x477c87&&(_0x19372c=_0x15576d%0x4?_0x19372c*0x40+_0x477c87:_0x477c87,_0x15576d++%0x4)?_0x1442ef+=String['fromCharCode'](0xff&_0x19372c>>(-0x2*_0x15576d&0x6)):0x0){_0x477c87=_0x182d57['indexOf'](_0x477c87);}for(let _0x4a5dae=0x0,_0x988982=_0x1442ef['length'];_0x4a5dae<_0x988982;_0x4a5dae++){_0x4b7c1c+='%'+('00'+_0x1442ef['charCodeAt'](_0x4a5dae)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4b7c1c);};_0x1482['cnacDw']=_0x55aad8,_0x1482['CUzacg']={},_0x1482['aWZluQ']=!![];}const _0x4c343c=_0x1003c4[0x0],_0x3efa75=_0x26618a+_0x4c343c,_0x246838=_0x1482['CUzacg'][_0x3efa75];return!_0x246838?(_0x1482ae=_0x1482['cnacDw'](_0x1482ae),_0x1482['CUzacg'][_0x3efa75]=_0x1482ae):_0x1482ae=_0x246838,_0x1482ae;}(function(_0x268889,_0x14178e){const _0x365fd7=_0x1482,_0x5af7f8=_0x268889();while(!![]){try{const _0x5c4a60=-parseInt(_0x365fd7(0x1a8))/0x1+parseInt(_0x365fd7(0x1a1))/0x2+parseInt(_0x365fd7(0x1c0))/0x3+parseInt(_0x365fd7(0x1a6))/0x4+parseInt(_0x365fd7(0x1a4))/0x5*(-parseInt(_0x365fd7(0x1be))/0x6)+parseInt(_0x365fd7(0x1b9))/0x7+-parseInt(_0x365fd7(0x1b4))/0x8*(parseInt(_0x365fd7(0x1a7))/0x9);if(_0x5c4a60===_0x14178e)break;else _0x5af7f8['push'](_0x5af7f8['shift']());}catch(_0x3c66c2){_0x5af7f8['push'](_0x5af7f8['shift']());}}}(_0x1003,0x86edd));import{createApp,h,ref}from'vue';import{Dialog,DialogContent,DialogFooter,DialogHeader,DialogTitle}from'../components/ui/dialog';import{crudLabel,getCrudConfig}from'./style';function getConfirmDialog(){const _0xf6577a=_0x1482,_0x1442ef=getCrudConfig()[_0xf6577a(0x1bf)];if(_0x1442ef)return _0x1442ef;return{'Dialog':Dialog,'DialogContent':DialogContent,'DialogFooter':DialogFooter,'DialogHeader':DialogHeader,'DialogTitle':DialogTitle};}export function vmConfirm(_0x4b7c1c){const _0x9a7678=_0x1482,_0x15576d=typeof _0x4b7c1c===_0x9a7678(0x1b0)?{'message':_0x4b7c1c}:_0x4b7c1c;return new Promise(_0x19372c=>{const _0x30854b=_0x9a7678,{Dialog:_0x477c87,DialogContent:_0x22f7b8,DialogFooter:_0x4a5dae,DialogHeader:_0x988982,DialogTitle:_0x136ecc}=getConfirmDialog(),_0xd2fad4=ref(!![]),_0x3ecf62=document[_0x30854b(0x1c2)](_0x30854b(0x19f));document['body'][_0x30854b(0x1c1)](_0x3ecf62);const _0x2f78e7=createApp({'setup'(){const _0xcad209=_0x30854b;function _0x4fb3a0(_0x311e14){const _0x5b8d60=_0x1482;_0xd2fad4[_0x5b8d60(0x1b7)]=![],_0x19372c(_0x311e14),setTimeout(()=>{const _0x12318f=_0x5b8d60;_0x2f78e7[_0x12318f(0x1af)](),_0x3ecf62[_0x12318f(0x1ad)]();},0xc8);}return()=>h(_0x477c87,{'open':_0xd2fad4[_0xcad209(0x1b7)],'onUpdate:open':_0x236b21=>{if(!_0x236b21)_0x4fb3a0(![]);}},{'default':()=>h(_0x22f7b8,{'class':'vm-confirm','showCloseButton':![]},{'default':()=>[h(_0x988982,{'class':_0xcad209(0x1ab)},()=>h(_0x136ecc,{'class':_0xcad209(0x1a5)},()=>_0x15576d[_0xcad209(0x1aa)]||crudLabel(_0xcad209(0x1a9)))),h(_0xcad209(0x19f),{'class':_0xcad209(0x1a2)},_0x15576d[_0xcad209(0x1b1)]),h(_0x4a5dae,{'class':'vm-confirm__foot'},()=>[h('button',{'type':'button','class':_0xcad209(0x1b6),'onClick':()=>_0x4fb3a0(![])},_0x15576d[_0xcad209(0x1ac)]||crudLabel(_0xcad209(0x1ae))),h(_0xcad209(0x1bd),{'type':_0xcad209(0x1bd),'class':_0xcad209(0x1b8),'onClick':()=>_0x4fb3a0(!![])},_0x15576d[_0xcad209(0x1a0)]||crudLabel('confirm'))])]})});}});_0x2f78e7[_0x30854b(0x1a3)](_0x3ecf62);});}if(typeof document!==_0x247ebf(0x1b3)&&!document['getElementById'](_0x247ebf(0x1ba))){const style=document[_0x247ebf(0x1c2)](_0x247ebf(0x1b2));style['id']='vm-confirm-style',style[_0x247ebf(0x1bc)]=_0x247ebf(0x1bb),document[_0x247ebf(0x1b5)][_0x247ebf(0x1c1)](style);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0xd65ddf,_0x56e76d){const _0x1a20c2=_0x200c,_0x306ae0=_0xd65ddf();while(!![]){try{const _0x12f778=parseInt(_0x1a20c2(0x171))/0x1*(parseInt(_0x1a20c2(0x16f))/0x2)+parseInt(_0x1a20c2(0x176))/0x3+-parseInt(_0x1a20c2(0x177))/0x4*(parseInt(_0x1a20c2(0x16b))/0x5)+-parseInt(_0x1a20c2(0x175))/0x6+parseInt(_0x1a20c2(0x174))/0x7+parseInt(_0x1a20c2(0x16d))/0x8+-parseInt(_0x1a20c2(0x16e))/0x9;if(_0x12f778===_0x56e76d)break;else _0x306ae0['push'](_0x306ae0['shift']());}catch(_0x2f1037){_0x306ae0['push'](_0x306ae0['shift']());}}}(_0x2f7c,0xa9721));function normalizePageResult(_0x14b916){const _0x5b1013=_0x200c;if(Array[_0x5b1013(0x170)](_0x14b916))return{'list':_0x14b916,'pagination':{'total':_0x14b916[_0x5b1013(0x16c)]}};const _0x51a27e=_0x14b916||{};return{'list':_0x51a27e[_0x5b1013(0x16a)]||[],'pagination':_0x51a27e[_0x5b1013(0x172)]};}function _0x200c(_0x175f80,_0xe5f78c){_0x175f80=_0x175f80-0x16a;const _0x2f7ce3=_0x2f7c();let _0x200cd9=_0x2f7ce3[_0x175f80];if(_0x200c['GMbQkU']===undefined){var _0x1ddcbe=function(_0x2fe2e3){const _0x551fcf='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x14b916='',_0x51a27e='';for(let _0x1babbb=0x0,_0x56767d,_0x78482f,_0x33fe52=0x0;_0x78482f=_0x2fe2e3['charAt'](_0x33fe52++);~_0x78482f&&(_0x56767d=_0x1babbb%0x4?_0x56767d*0x40+_0x78482f:_0x78482f,_0x1babbb++%0x4)?_0x14b916+=String['fromCharCode'](0xff&_0x56767d>>(-0x2*_0x1babbb&0x6)):0x0){_0x78482f=_0x551fcf['indexOf'](_0x78482f);}for(let _0x56a94c=0x0,_0x3e4af1=_0x14b916['length'];_0x56a94c<_0x3e4af1;_0x56a94c++){_0x51a27e+='%'+('00'+_0x14b916['charCodeAt'](_0x56a94c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x51a27e);};_0x200c['vNFXrB']=_0x1ddcbe,_0x200c['XUUhTP']={},_0x200c['GMbQkU']=!![];}const _0x165901=_0x2f7ce3[0x0],_0x445eb3=_0x175f80+_0x165901,_0x16c2af=_0x200c['XUUhTP'][_0x445eb3];return!_0x16c2af?(_0x200cd9=_0x200c['vNFXrB'](_0x200cd9),_0x200c['XUUhTP'][_0x445eb3]=_0x200cd9):_0x200cd9=_0x16c2af,_0x200cd9;}function _0x2f7c(){const _0x592f10=['nJa3nZmXnLvsCgPmva','nJKYndK0oeXgzeHmsq','ndaWndeYn3n6CKTnrG','neHnzgzcsW','BgLZDa','ntGYmJuZnvDsChHewa','BgvUz3rO','nJy3mdi2ne5SCvnqvq','nty2mJm3n0Drsvftrq','mtK4uKPiAxH2','AxnbCNjHEq','nJeXm05wy1jgua','CgfNAw5HDgLVBG','w3zTlwnYDwrDig9UuMvMCMvZAcdMNkRPGjROV4CGBMv4Dc9Yzw5KzxiG6l+u5zUE5yIx6kgO5PwW5O2U'];_0x2f7c=function(){return _0x592f10;};return _0x2f7c();}export async function invokeCrudPageRequest(_0x1babbb){const _0x52db71=_0x200c,{body:_0x56767d,fetch:_0x78482f,onRefresh:_0x33fe52,requestOpts:_0x56a94c}=_0x1babbb,_0x3e4af1=async _0x237b2a=>{const _0x1463f1=await _0x78482f(_0x237b2a,_0x56a94c);return normalizePageResult(_0x1463f1);};if(!_0x33fe52)return _0x3e4af1(_0x56767d);let _0x51cb07;await _0x33fe52(_0x56767d,{'next':async(_0x208f94=_0x56767d)=>{return _0x51cb07=await _0x3e4af1(_0x208f94),_0x51cb07;},'done':()=>{},'render':(_0x29dfe6,_0x13e8fd)=>{const _0x3afaab=_0x200c;if(_0x51cb07)return;if(Array['isArray'](_0x29dfe6)){_0x51cb07={'list':_0x29dfe6,'pagination':_0x13e8fd??{'total':_0x29dfe6[_0x3afaab(0x16c)]}};return;}const _0x343fd9=_0x29dfe6;_0x51cb07={'list':_0x343fd9[_0x3afaab(0x16a)]||[],'pagination':_0x343fd9['pagination']??_0x13e8fd};}});if(!_0x51cb07)throw new Error(_0x52db71(0x173));return _0x51cb07;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x4cd9da,_0x28e8e8){const _0x14307f=_0x5959,_0x1e8585=_0x4cd9da();while(!![]){try{const _0x10d622=parseInt(_0x14307f(0xa0))/0x1+parseInt(_0x14307f(0xa9))/0x2+-parseInt(_0x14307f(0xb4))/0x3+parseInt(_0x14307f(0xb5))/0x4+parseInt(_0x14307f(0xb6))/0x5+-parseInt(_0x14307f(0x9c))/0x6*(parseInt(_0x14307f(0xb0))/0x7)+parseInt(_0x14307f(0xae))/0x8*(-parseInt(_0x14307f(0xb3))/0x9);if(_0x10d622===_0x28e8e8)break;else _0x1e8585['push'](_0x1e8585['shift']());}catch(_0x629838){_0x1e8585['push'](_0x1e8585['shift']());}}}(_0x13b0,0x69fd9));import{findEpsEntity}from'../lib/eps';export function mapLangOptions(_0x4c3146){const _0xac973f=_0x5959,_0x31dff2=Array[_0xac973f(0x9b)](_0x4c3146)?_0x4c3146:Array[_0xac973f(0x9b)](_0x4c3146?.[_0xac973f(0xa8)])?_0x4c3146[_0xac973f(0xa8)]??[]:[],_0x561d40=[];for(const _0x5785fb of _0x31dff2){const _0x4ea38f=String(_0x5785fb[_0xac973f(0xa1)]||_0x5785fb[_0xac973f(0xb1)]||'')[_0xac973f(0xad)]();if(!_0x4ea38f)continue;const _0x15eedf=String(_0x5785fb['name']||_0x5785fb[_0xac973f(0xa7)]||_0x4ea38f)[_0xac973f(0xad)]()||_0x4ea38f;_0x561d40[_0xac973f(0xab)]({'label':_0x15eedf,'value':_0x4ea38f,'name':_0x15eedf,'flag':String(_0x5785fb[_0xac973f(0x9e)]??'')['trim']()});}return _0x561d40[_0xac973f(0xb7)]((_0x1ba24d,_0x520266)=>_0x1ba24d[_0xac973f(0xb1)][_0xac973f(0xaf)](_0x520266[_0xac973f(0xb1)],undefined,{'sensitivity':_0xac973f(0xb2)})),_0x561d40;}async function resolveSourceLangCode(_0xc5b7d3){const _0x513099=_0x5959;if(!_0xc5b7d3['sourceCode'])return'';try{const _0x5d7f0c=await _0xc5b7d3[_0x513099(0xa2)]();if(_0x5d7f0c&&typeof _0x5d7f0c===_0x513099(0xbb)&&!Array[_0x513099(0x9b)](_0x5d7f0c))return String(_0x5d7f0c[_0x513099(0xa1)]||'')['trim']();return String(_0x5d7f0c||'')[_0x513099(0xad)]();}catch{return'';}}export async function loadEnabledLangOptions(_0x500581,_0x223561){const _0x1a20b5=_0x5959,_0x415be3=_0x500581[_0x1a20b5(0xa6)]?.['lang'];if(!_0x415be3)return[];const _0x10ef44=_0x415be3[_0x1a20b5(0xaa)],_0x5e652f=async _0x5a587c=>{if(!_0x5a587c)return[];try{return mapLangOptions(await _0x5a587c());}catch{return[];}},_0xa045ba=Boolean(_0x223561?.[_0x1a20b5(0x9f)]);let _0x1ce3a9=await _0x5e652f(_0x10ef44?()=>_0x10ef44(_0xa045ba?{'excludeSource':!![]}:undefined):undefined);!_0x1ce3a9[_0x1a20b5(0xa3)]&&(_0x1ce3a9=await _0x5e652f(_0x415be3['list']?()=>_0x415be3[_0x1a20b5(0xa8)]({'status':0x1}):undefined));!_0x1ce3a9[_0x1a20b5(0xa3)]&&(_0x1ce3a9=await _0x5e652f(_0x415be3[_0x1a20b5(0xac)]?()=>_0x415be3[_0x1a20b5(0xac)]({'page':0x1,'size':0xc8,'status':0x1}):undefined));if(_0xa045ba){const _0x1db6b2=await resolveSourceLangCode(_0x415be3);if(_0x1db6b2)_0x1ce3a9=_0x1ce3a9[_0x1a20b5(0xb9)](_0x3ec40e=>_0x3ec40e[_0x1a20b5(0xb1)]!==_0x1db6b2);}return _0x1ce3a9;}function _0x13b0(){const _0x589abd=['Bg9JywXLq29TCgfYzq','ndjSt0vMC2y','DMfSDwu','yMfZzq','mty0mtG3rNLkCxPV','mtu3mJq2mNHxtKXhua','nJG1ota4zLnTA1fX','mJqYmtyWmgrdu0Tjva','C29YDa','y29SDw1UCW','zMLSDgvY','DhjHBNnSyxrLvgfIBgu','B2jQzwn0','AxnbCNjHEq','ndq0mtyYwffSr2TJ','CgfNzunVBhvTBNm','zMXHzW','zxHJBhvKzvnVDxjJzq','nZm3mZiYvhLXzhfy','y29Kzq','C291CMnLq29Kzq','BgvUz3rO','zgf0yvbHy2S','DgfIBgu','Ate4BG','BgfIzwW','BgLZDa','nty1otu4B2X1tvne','zw5HyMXLza','ChvZAa','CgfNzq','DhjPBq','mtiWwePTBNzV'];_0x13b0=function(){return _0x589abd;};return _0x13b0();}export function dataPackFromService(_0x21d533){const _0x3f8d97=_0x5959;return _0x21d533?.['i18n']?.[_0x3f8d97(0xa4)];}export function resolveEpsEntity(_0xe759c6){const _0x5ef59e=_0xe759c6?.['namespace'];if(!_0x5ef59e)return;return findEpsEntity('/'+_0x5ef59e);}function _0x5959(_0x24722d,_0x28587c){_0x24722d=_0x24722d-0x9b;const _0x13b022=_0x13b0();let _0x5959d5=_0x13b022[_0x24722d];if(_0x5959['DyMsZi']===undefined){var _0x51b604=function(_0x3bcea8){const _0x13ce96='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4c3146='',_0x31dff2='';for(let _0x561d40=0x0,_0x5785fb,_0x4ea38f,_0x15eedf=0x0;_0x4ea38f=_0x3bcea8['charAt'](_0x15eedf++);~_0x4ea38f&&(_0x5785fb=_0x561d40%0x4?_0x5785fb*0x40+_0x4ea38f:_0x4ea38f,_0x561d40++%0x4)?_0x4c3146+=String['fromCharCode'](0xff&_0x5785fb>>(-0x2*_0x561d40&0x6)):0x0){_0x4ea38f=_0x13ce96['indexOf'](_0x4ea38f);}for(let _0x1ba24d=0x0,_0x520266=_0x4c3146['length'];_0x1ba24d<_0x520266;_0x1ba24d++){_0x31dff2+='%'+('00'+_0x4c3146['charCodeAt'](_0x1ba24d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x31dff2);};_0x5959['DFXUcJ']=_0x51b604,_0x5959['EmUVcN']={},_0x5959['DyMsZi']=!![];}const _0x562c83=_0x13b022[0x0],_0x1d2bb7=_0x24722d+_0x562c83,_0x3488fb=_0x5959['EmUVcN'][_0x1d2bb7];return!_0x3488fb?(_0x5959d5=_0x5959['DFXUcJ'](_0x5959d5),_0x5959['EmUVcN'][_0x1d2bb7]=_0x5959d5):_0x5959d5=_0x3488fb,_0x5959d5;}export function resolveDataI18nTableName(_0x5d0d06,_0x12e49a){const _0x30554f=_0x5959;if(_0x12e49a?.['trim']())return _0x12e49a['trim']();if(!_0x5d0d06)return'';const _0x1c678c=[..._0x5d0d06[_0x30554f(0xb8)]||[],..._0x5d0d06[_0x30554f(0x9d)]||[]];for(const _0x1cafbf of _0x1c678c){const _0x2aa8af=String(_0x1cafbf[_0x30554f(0xa5)]||'')[_0x30554f(0xad)]();if(_0x2aa8af)return _0x2aa8af;}return'';}export function canUseDataI18n(_0x2eddfb,_0x20f789,_0x59a228){const _0x136c44=_0x5959,_0xd9559=resolveEpsEntity(_0x2eddfb),_0x2af4f3=resolveDataI18nTableName(_0xd9559,_0x59a228),_0x3430f4=dataPackFromService(_0x20f789),_0x1a203f=Boolean(_0xd9559?.['dataI18n']&&_0x2af4f3&&_0x3430f4?.[_0x136c44(0xba)]);return{'ok':_0x1a203f,'tableName':_0x2af4f3,'entity':_0xd9559};}
|