vome-core 0.1.96 → 0.1.97

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.
Files changed (66) hide show
  1. package/dist/admin/components/ui/avatar/index.js +1 -1
  2. package/dist/admin/components/ui/checkbox/index.js +1 -1
  3. package/dist/admin/components/ui/dialog/index.js +1 -1
  4. package/dist/admin/components/ui/dropdown-menu/index.js +1 -1
  5. package/dist/admin/components/ui/input/index.js +1 -1
  6. package/dist/admin/components/ui/label/index.js +1 -1
  7. package/dist/admin/components/ui/scroll-area/index.js +1 -1
  8. package/dist/admin/components/ui/select/index.js +1 -1
  9. package/dist/admin/components/ui/separator/index.js +1 -1
  10. package/dist/admin/components/ui/sheet/index.js +1 -1
  11. package/dist/admin/components/ui/sonner/index.js +1 -1
  12. package/dist/admin/components/ui/table/index.js +1 -1
  13. package/dist/admin/components/ui/tabs/index.js +1 -1
  14. package/dist/admin/components/ui/tooltip/index.js +1 -1
  15. package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
  16. package/dist/admin/crud/config.js +1 -1
  17. package/dist/admin/crud/confirm.js +1 -1
  18. package/dist/admin/crud/crud-page-request.js +1 -1
  19. package/dist/admin/crud/data-i18n.d.ts +16 -6
  20. package/dist/admin/crud/data-i18n.js +1 -1
  21. package/dist/admin/crud/dict.js +1 -1
  22. package/dist/admin/crud/export-fetch.js +1 -1
  23. package/dist/admin/crud/key.js +1 -1
  24. package/dist/admin/crud/plugins.js +1 -1
  25. package/dist/admin/crud/span.js +1 -1
  26. package/dist/admin/crud/style.js +1 -1
  27. package/dist/admin/crud/validate.js +1 -1
  28. package/dist/admin/crud/vm-crud.vue +45 -9
  29. package/dist/admin/crud/vm-data-i18n-btn.vue +45 -22
  30. package/dist/admin/crud/vm-data-i18n-lang.vue +147 -44
  31. package/dist/admin/crud/vm-table.vue +108 -27
  32. package/dist/admin/crud/vm-toolbar.vue +1 -1
  33. package/dist/admin/directives/perm.js +1 -1
  34. package/dist/admin/hooks/useUpload.js +1 -1
  35. package/dist/admin/lib/browser.js +1 -1
  36. package/dist/admin/lib/cn.js +1 -1
  37. package/dist/admin/lib/dialog-float.js +1 -1
  38. package/dist/admin/lib/export-excel.js +1 -1
  39. package/dist/admin/lib/import-excel.js +1 -1
  40. package/dist/admin/lib/json.js +1 -1
  41. package/dist/admin/lib/menu.js +1 -1
  42. package/dist/admin/lib/micro-locale.js +1 -1
  43. package/dist/admin/lib/micro-theme.js +1 -1
  44. package/dist/admin/lib/setup-crud-defaults.js +1 -1
  45. package/dist/admin/lib/shell.js +1 -1
  46. package/dist/admin/lib/theme-color-options.js +1 -1
  47. package/dist/admin/lib/tree.js +1 -1
  48. package/dist/admin/lib/upload.js +1 -1
  49. package/dist/admin/lib/video-frame.js +1 -1
  50. package/dist/admin/router/create.js +1 -1
  51. package/dist/admin/router/guards.js +1 -1
  52. package/dist/admin/themes/dark.js +1 -1
  53. package/dist/admin/themes/index.js +1 -1
  54. package/dist/admin/themes/light.js +1 -1
  55. package/dist/index.js +1 -1
  56. package/dist/server/index.js +1 -1
  57. package/dist/shared/datetime-picker.js +1 -1
  58. package/dist/shared/excel.js +1 -1
  59. package/dist/shared/index.js +1 -1
  60. package/dist/shared/locale-json.js +1 -1
  61. package/dist/shared/tree.js +1 -1
  62. package/dist/typings/routing/eps.d.ts +2 -0
  63. package/package.json +1 -1
  64. package/typings/admin/comm/crud.ts +4 -0
  65. package/typings/admin/comm/eps.ts +2 -0
  66. package/typings/routing/eps.ts +2 -0
@@ -1,40 +1,84 @@
1
1
  <template>
2
- <DropdownMenu v-if="langs.length" :modal="false">
3
- <DropdownMenuTrigger as-child>
4
- <button
5
- type="button"
6
- class="vm-crud-toolbar__btn is-ghost vm-data-i18n-lang__btn"
7
- :disabled="switching"
8
- :title="current?.name || langCode"
9
- >
10
- <span class="vm-data-i18n-lang__flag" aria-hidden="true">
11
- {{ current?.flag || '🏳️' }}
12
- </span>
13
- 切换
14
- </button>
15
- </DropdownMenuTrigger>
16
- <DropdownMenuContent align="start" class="vm-data-i18n-lang__menu">
17
- <DropdownMenuItem
18
- v-for="lang in langs"
19
- :key="lang.value"
20
- class="vm-data-i18n-lang__item"
21
- :class="{ 'is-active': langCode === lang.value }"
22
- :disabled="switching"
23
- @click="switchLang(lang.value)"
24
- >
25
- <span class="vm-data-i18n-lang__flag" aria-hidden="true">
26
- {{ lang.flag || '🏳️' }}
27
- </span>
28
- <span class="vm-data-i18n-lang__label">{{ lang.name || lang.label }}</span>
29
- </DropdownMenuItem>
30
- </DropdownMenuContent>
31
- </DropdownMenu>
2
+ <div v-if="targetLangs.length" class="vm-data-i18n-lang">
3
+ <DropdownMenu :modal="false">
4
+ <DropdownMenuTrigger as-child>
5
+ <button
6
+ type="button"
7
+ class="vm-crud-toolbar__btn is-ghost vm-data-i18n-lang__btn"
8
+ :disabled="switching"
9
+ :title="
10
+ crudFormat(
11
+ crudLabel('dataI18nTargetLang', crud.dict.label),
12
+ targetCurrent?.name || targetCode,
13
+ )
14
+ "
15
+ >
16
+ <span class="vm-data-i18n-lang__flag" aria-hidden="true">
17
+ {{ targetCurrent?.flag || '🏳️' }}
18
+ </span>
19
+ {{ crudLabel('dataI18nSwitch', crud.dict.label) }}
20
+ </button>
21
+ </DropdownMenuTrigger>
22
+ <DropdownMenuContent align="start" class="vm-data-i18n-lang__menu">
23
+ <DropdownMenuItem
24
+ v-for="lang in targetLangs"
25
+ :key="lang.value"
26
+ class="vm-data-i18n-lang__item"
27
+ :class="{ 'is-active': targetCode === lang.value }"
28
+ :disabled="switching"
29
+ @click="switchTarget(lang.value)"
30
+ >
31
+ <span class="vm-data-i18n-lang__flag" aria-hidden="true">
32
+ {{ lang.flag || '🏳️' }}
33
+ </span>
34
+ <span class="vm-data-i18n-lang__label">{{ lang.name || lang.label }}</span>
35
+ </DropdownMenuItem>
36
+ </DropdownMenuContent>
37
+ </DropdownMenu>
38
+
39
+ <DropdownMenu :modal="false">
40
+ <DropdownMenuTrigger as-child>
41
+ <button
42
+ type="button"
43
+ class="vm-crud-toolbar__btn is-ghost vm-data-i18n-lang__btn"
44
+ :disabled="switching"
45
+ :title="
46
+ crudFormat(
47
+ crudLabel('dataI18nSourceLang', crud.dict.label),
48
+ sourceCurrent?.name || sourceCode,
49
+ )
50
+ "
51
+ >
52
+ <span class="vm-data-i18n-lang__flag" aria-hidden="true">
53
+ {{ sourceCurrent?.flag || '🇨🇳' }}
54
+ </span>
55
+ {{ crudLabel('dataI18nSource', crud.dict.label) }}
56
+ </button>
57
+ </DropdownMenuTrigger>
58
+ <DropdownMenuContent align="start" class="vm-data-i18n-lang__menu">
59
+ <DropdownMenuItem
60
+ v-for="lang in sourceLangs"
61
+ :key="lang.value"
62
+ class="vm-data-i18n-lang__item"
63
+ :class="{ 'is-active': sourceCode === lang.value }"
64
+ :disabled="switching"
65
+ @click="switchSource(lang.value)"
66
+ >
67
+ <span class="vm-data-i18n-lang__flag" aria-hidden="true">
68
+ {{ lang.flag || '🏳️' }}
69
+ </span>
70
+ <span class="vm-data-i18n-lang__label">{{ lang.name || lang.label }}</span>
71
+ </DropdownMenuItem>
72
+ </DropdownMenuContent>
73
+ </DropdownMenu>
74
+ </div>
32
75
  </template>
33
76
 
34
77
  <script setup lang="ts">
35
78
  import { computed, onMounted, ref, watch } from 'vue'
36
79
  import { useVome } from '../hooks/useVome'
37
80
  import { useCrud } from './useCrud'
81
+ import { crudFormat, crudLabel } from './style'
38
82
  import {
39
83
  DropdownMenu,
40
84
  DropdownMenuContent,
@@ -50,15 +94,49 @@ const { service } = useVome()
50
94
  const langs = ref<DataI18nLangOption[]>([])
51
95
  const switching = ref(false)
52
96
 
53
- const langCode = computed({
97
+ const targetCode = computed({
54
98
  get: () => crud.dataI18nLangCode?.value || '',
55
99
  set: (v: string) => {
56
100
  if (crud.dataI18nLangCode) crud.dataI18nLangCode.value = v
57
101
  },
58
102
  })
59
103
 
60
- const current = computed(
61
- () => langs.value.find((l) => l.value === langCode.value) || langs.value[0],
104
+ const sourceCode = computed({
105
+ get: () => crud.dataI18nSourceLangCode?.value || 'zh-CN',
106
+ set: (v: string) => {
107
+ if (crud.dataI18nSourceLangCode) crud.dataI18nSourceLangCode.value = v
108
+ },
109
+ })
110
+
111
+ const targetLangs = computed(() =>
112
+ langs.value.filter((l) => l.value !== 'zh-CN'),
113
+ )
114
+
115
+ const sourceLangs = computed(() => {
116
+ const zhName = crudLabel('dataI18nZh', crud.dict.label)
117
+ const zh: DataI18nLangOption = {
118
+ label: `${zhName} (zh-CN)`,
119
+ value: 'zh-CN',
120
+ name: zhName,
121
+ flag: '🇨🇳',
122
+ }
123
+ // 对照可选中文 + 其它语种(不含当前目标,避免无意义对照)
124
+ const rest = langs.value.filter(
125
+ (l) => l.value !== 'zh-CN' && l.value !== targetCode.value,
126
+ )
127
+ return [zh, ...rest]
128
+ })
129
+
130
+ const targetCurrent = computed(
131
+ () =>
132
+ targetLangs.value.find((l) => l.value === targetCode.value) ||
133
+ targetLangs.value[0],
134
+ )
135
+
136
+ const sourceCurrent = computed(
137
+ () =>
138
+ sourceLangs.value.find((l) => l.value === sourceCode.value) ||
139
+ sourceLangs.value[0],
62
140
  )
63
141
 
64
142
  async function loadLangs() {
@@ -66,7 +144,7 @@ async function loadLangs() {
66
144
  .i18n?.lang
67
145
  if (!langSvc?.list) {
68
146
  langs.value = [{ label: 'en-US', value: 'en-US', name: 'en-US', flag: '🇺🇸' }]
69
- ensureLang()
147
+ ensureLangs()
70
148
  return
71
149
  }
72
150
  try {
@@ -76,34 +154,53 @@ async function loadLangs() {
76
154
  flag?: string
77
155
  }>
78
156
  langs.value = (rows || [])
79
- .filter((r) => r.code && r.code !== 'zh-CN')
157
+ .filter((r) => r.code)
80
158
  .map((r) => ({
81
159
  label: `${r.name || r.code} (${r.code})`,
82
160
  value: String(r.code),
83
161
  name: String(r.name || r.code),
84
- flag: r.flag || '🏳️',
162
+ flag: r.flag || (r.code === 'zh-CN' ? '🇨🇳' : '🏳️'),
85
163
  }))
86
164
  } catch {
87
165
  langs.value = [{ label: 'en-US', value: 'en-US', name: 'en-US', flag: '🇺🇸' }]
88
166
  }
89
- ensureLang()
167
+ ensureLangs()
90
168
  if (crud.trashMode.value === 'dataI18n') {
91
169
  await crud.refresh()
92
170
  }
93
171
  }
94
172
 
95
- function ensureLang() {
96
- if (!langs.value.length) return
97
- if (!langCode.value || !langs.value.some((l) => l.value === langCode.value)) {
98
- langCode.value = langs.value[0]!.value
173
+ function ensureLangs() {
174
+ if (!targetLangs.value.length) return
175
+ if (
176
+ !targetCode.value ||
177
+ !targetLangs.value.some((o) => o.value === targetCode.value)
178
+ ) {
179
+ targetCode.value = targetLangs.value[0]!.value
180
+ }
181
+ if (!sourceCode.value) sourceCode.value = 'zh-CN'
182
+ if (sourceCode.value === targetCode.value) sourceCode.value = 'zh-CN'
183
+ }
184
+
185
+ async function switchTarget(code: string) {
186
+ if (switching.value || !code || code === targetCode.value) return
187
+ switching.value = true
188
+ try {
189
+ targetCode.value = code
190
+ if (sourceCode.value === code) sourceCode.value = 'zh-CN'
191
+ crud.pagination.value = { ...crud.pagination.value, page: 1 }
192
+ await crud.refresh()
193
+ } finally {
194
+ switching.value = false
99
195
  }
100
196
  }
101
197
 
102
- async function switchLang(code: string) {
103
- if (switching.value || !code || code === langCode.value) return
198
+ async function switchSource(code: string) {
199
+ if (switching.value || !code || code === sourceCode.value) return
200
+ if (code === targetCode.value) return
104
201
  switching.value = true
105
202
  try {
106
- langCode.value = code
203
+ sourceCode.value = code
107
204
  crud.pagination.value = { ...crud.pagination.value, page: 1 }
108
205
  await crud.refresh()
109
206
  } finally {
@@ -124,6 +221,12 @@ onMounted(() => {
124
221
  </script>
125
222
 
126
223
  <style lang="scss" scoped>
224
+ .vm-data-i18n-lang {
225
+ display: inline-flex;
226
+ align-items: center;
227
+ gap: 8px;
228
+ }
229
+
127
230
  .vm-crud-toolbar__btn {
128
231
  display: inline-flex;
129
232
  height: 36px;
@@ -277,7 +277,9 @@
277
277
  @interact-outside="preventDialogOutsideClose"
278
278
  >
279
279
  <DialogHeader class="vm-crud-shell__head">
280
- <DialogTitle class="vm-crud-shell__title">编辑译文</DialogTitle>
280
+ <DialogTitle class="vm-crud-shell__title">
281
+ {{ crudLabel('dataI18nEdit', crud.dict.label) }}
282
+ </DialogTitle>
281
283
  <DialogClose class="vm-crud-shell__close">
282
284
  <i class="ri-close-line" />
283
285
  <span class="sr-only">Close</span>
@@ -296,17 +298,27 @@
296
298
  />
297
299
  </div>
298
300
  <div
301
+ v-for="f in dataI18nEditFields"
302
+ :key="f.name"
299
303
  class="vm-data-i18n-edit__field"
300
304
  :style="{ gridColumn: `span ${dataI18nEditSpan}` }"
301
305
  >
302
- <Label class="vm-data-i18n-edit__label">
303
- value
304
- <span class="vm-data-i18n-edit__req">*</span>
305
- </Label>
306
+ <Label class="vm-data-i18n-edit__label">{{ f.label || f.name }}</Label>
306
307
  <Input
307
308
  class="vm-data-i18n-edit__control"
308
- v-model="dataI18nEditForm.value"
309
+ v-model="dataI18nEditForm.values[f.name]"
309
310
  />
311
+ <div
312
+ v-if="dataI18nEditForm.sources[f.name]"
313
+ class="vm-data-i18n-edit__source"
314
+ >
315
+ {{
316
+ crudFormat(
317
+ crudLabel('dataI18nCompare', crud.dict.label),
318
+ dataI18nEditForm.sources[f.name],
319
+ )
320
+ }}
321
+ </div>
310
322
  </div>
311
323
  </div>
312
324
  <DialogFooter class="vm-crud-shell__foot">
@@ -316,7 +328,7 @@
316
328
  :disabled="dataI18nEditSubmitting"
317
329
  @click="dataI18nEditOpen = false"
318
330
  >
319
- 取消
331
+ {{ crudLabel('close', crud.dict.label) }}
320
332
  </button>
321
333
  <button
322
334
  type="button"
@@ -324,7 +336,11 @@
324
336
  :disabled="dataI18nEditSubmitting"
325
337
  @click="saveDataI18nEdit"
326
338
  >
327
- {{ dataI18nEditSubmitting ? '保存中…' : '保存' }}
339
+ {{
340
+ dataI18nEditSubmitting
341
+ ? crudLabel('saving', crud.dict.label)
342
+ : crudLabel('save', crud.dict.label)
343
+ }}
328
344
  </button>
329
345
  </DialogFooter>
330
346
  </DialogContent>
@@ -339,7 +355,7 @@ import { useCrud } from './useCrud'
339
355
  import { injectTableOptions, TABLE_API_KEY } from './key'
340
356
  import { flattenTree } from '../lib/tree'
341
357
  import { resolveCrudComponent } from './registry'
342
- import { getCrudStyle, crudLabel, crudT, crudLocaleRev } from './style'
358
+ import { getCrudStyle, crudLabel, crudT, crudFormat, crudLocaleRev } from './style'
343
359
  import { findEpsEntity } from '../lib/eps'
344
360
  import { useVome } from '../hooks/useVome'
345
361
  import { vmConfirm } from './confirm'
@@ -391,17 +407,56 @@ let emptyRo: ResizeObserver | null = null
391
407
 
392
408
  const overrideColumns = ref<CrudColumn[] | null>(null)
393
409
 
394
- const DATA_I18N_COLUMNS: CrudColumn[] = [
395
- { prop: 'id', label: 'ID', minWidth: 100 },
396
- { prop: 'value', label: 'value', minWidth: 180 },
397
- { prop: 'source', label: '原数据', minWidth: 180 },
398
- { type: 'op', buttons: ['edit', 'delete'], width: 140 },
399
- ]
410
+ const DATA_I18N_ID_COL: CrudColumn = {
411
+ prop: 'id',
412
+ label: 'ID',
413
+ minWidth: 100,
414
+ }
415
+
416
+ const DATA_I18N_OP_COL: CrudColumn = {
417
+ type: 'op',
418
+ buttons: ['edit', 'delete'],
419
+ width: 140,
420
+ }
400
421
 
401
422
  const isDataI18nView = computed(() => crud.trashMode.value === 'dataI18n')
402
423
 
403
- const columns = computed(() => {
404
- if (isDataI18nView.value) return DATA_I18N_COLUMNS
424
+ /** 语言 Tab:按表头/当前页内容估 minWidth(限幅) */
425
+ function dataI18nColMinWidth(header: string, samples: string[]) {
426
+ let maxChars = [...header].length
427
+ for (const s of samples) {
428
+ const n = [...String(s || '')].length
429
+ if (n > maxChars) maxChars = n
430
+ }
431
+ return Math.min(360, Math.max(108, maxChars * 14 + 28))
432
+ }
433
+
434
+ const columns = computed((): CrudColumn[] => {
435
+ if (isDataI18nView.value) {
436
+ void crudLocaleRev.value
437
+ const fields = crud.dataI18nFields?.value || []
438
+ const rows = crud.list.value || []
439
+ const origSuffix = crudLabel('dataI18nOrigSuffix', crud.dict.label)
440
+ const fieldCols: CrudColumn[] = []
441
+ for (const f of fields) {
442
+ const base = f.label || f.name
443
+ const srcProp = `__src_${f.name}`
444
+ const srcHeader = `${base}${origSuffix}`
445
+ const srcSamples = rows.map((r) => String(r[srcProp] ?? ''))
446
+ const valSamples = rows.map((r) => String(r[f.name] ?? ''))
447
+ fieldCols.push({
448
+ prop: srcProp,
449
+ label: srcHeader,
450
+ minWidth: dataI18nColMinWidth(srcHeader, srcSamples),
451
+ })
452
+ fieldCols.push({
453
+ prop: f.name,
454
+ label: base,
455
+ minWidth: dataI18nColMinWidth(base, valSamples),
456
+ })
457
+ }
458
+ return [DATA_I18N_ID_COL, ...fieldCols, DATA_I18N_OP_COL]
459
+ }
405
460
  const raw =
406
461
  overrideColumns.value ||
407
462
  (props.columns?.length ? props.columns : tableOpts?.columns || [])
@@ -724,21 +779,36 @@ function deleteRowTargets(row: Record<string, unknown>) {
724
779
  const { service: hostService } = useVome()
725
780
  const dataI18nEditOpen = ref(false)
726
781
  const dataI18nEditSubmitting = ref(false)
727
- const dataI18nEditForm = ref({ id: '', key: '', value: '' })
782
+ const dataI18nEditForm = ref<{
783
+ id: string
784
+ values: Record<string, string>
785
+ sources: Record<string, string>
786
+ }>({ id: '', values: {}, sources: {} })
728
787
  const dataI18nEditFormCols = useFormCols()
729
788
  const dataI18nEditSpan = computed(() =>
730
789
  resolveFormSpan(12, dataI18nEditFormCols.value),
731
790
  )
791
+ const dataI18nEditFields = computed(
792
+ () => crud.dataI18nFields?.value || [],
793
+ )
732
794
 
733
795
  function onDataI18nEditOpenChange(v: boolean) {
734
796
  dataI18nEditOpen.value = v
735
797
  }
736
798
 
737
799
  function openDataI18nEdit(row: Record<string, unknown>) {
800
+ const fields = crud.dataI18nFields?.value || []
801
+ const sources = (row.__sources as Record<string, string>) || {}
802
+ const values: Record<string, string> = {}
803
+ const src: Record<string, string> = {}
804
+ for (const f of fields) {
805
+ values[f.name] = String(row[f.name] ?? '')
806
+ src[f.name] = String(sources[f.name] ?? '')
807
+ }
738
808
  dataI18nEditForm.value = {
739
809
  id: String(row.id ?? ''),
740
- key: String(row.key ?? ''),
741
- value: String(row.value ?? ''),
810
+ values,
811
+ sources: src,
742
812
  }
743
813
  dataI18nEditOpen.value = true
744
814
  }
@@ -749,7 +819,7 @@ async function saveDataI18nEdit() {
749
819
  const dataPack = dataPackFromService(hostService)
750
820
  const lang = crud.dataI18nLangCode?.value
751
821
  if (!meta.ok || !dataPack?.updateEntry || !lang) {
752
- toast.error('未配置业务翻译服务')
822
+ toast.error(crudLabel('dataI18nNoService', crud.dict.label))
753
823
  return
754
824
  }
755
825
  dataI18nEditSubmitting.value = true
@@ -758,8 +828,7 @@ async function saveDataI18nEdit() {
758
828
  tableName: meta.tableName,
759
829
  langCode: lang,
760
830
  id: dataI18nEditForm.value.id,
761
- key: dataI18nEditForm.value.key,
762
- value: dataI18nEditForm.value.value,
831
+ values: { ...dataI18nEditForm.value.values },
763
832
  })
764
833
  toast.success(crudLabel('saveSuccess', crud.dict.label))
765
834
  dataI18nEditOpen.value = false
@@ -776,12 +845,17 @@ async function deleteDataI18nEntry(row: Record<string, unknown>) {
776
845
  const dataPack = dataPackFromService(hostService)
777
846
  const lang = crud.dataI18nLangCode?.value
778
847
  if (!meta.ok || !dataPack?.deleteEntry || !lang) {
779
- toast.error('未配置业务翻译服务')
848
+ toast.error(crudLabel('dataI18nNoService', crud.dict.label))
780
849
  return
781
850
  }
851
+ const id = String(row.id ?? '')
852
+ if (!id) return
782
853
  const ok = await vmConfirm({
783
854
  title: crudLabel('tips', crud.dict.label),
784
- message: crudLabel('deleteConfirm', crud.dict.label),
855
+ message: crudFormat(
856
+ crudLabel('dataI18nDeleteConfirm', crud.dict.label),
857
+ id,
858
+ ),
785
859
  confirmText: crudLabel('confirm', crud.dict.label),
786
860
  cancelText: crudLabel('close', crud.dict.label),
787
861
  })
@@ -790,8 +864,7 @@ async function deleteDataI18nEntry(row: Record<string, unknown>) {
790
864
  await dataPack.deleteEntry({
791
865
  tableName: meta.tableName,
792
866
  langCode: lang,
793
- id: String(row.id ?? ''),
794
- key: String(row.key ?? ''),
867
+ id,
795
868
  })
796
869
  toast.success(crudLabel('deleteSuccess', crud.dict.label))
797
870
  await crud.refresh()
@@ -1283,4 +1356,12 @@ defineExpose({
1283
1356
  cursor: default;
1284
1357
  }
1285
1358
  }
1359
+
1360
+ .vm-data-i18n-edit__source {
1361
+ margin-top: 6px;
1362
+ font-size: 12px;
1363
+ line-height: 1.4;
1364
+ color: var(--muted-foreground);
1365
+ word-break: break-word;
1366
+ }
1286
1367
  </style>
@@ -146,7 +146,7 @@ const viewTabs = computed(() => {
146
146
  })
147
147
  }
148
148
  if (dataI18nEnabled.value) {
149
- tabs.push({ label: '语言', value: 'dataI18n' })
149
+ tabs.push({ label: crudLabel('dataI18n', crud.dict.label), value: 'dataI18n' })
150
150
  }
151
151
  return tabs
152
152
  })
@@ -1 +1 @@
1
- function _0x4c23(_0x2798b9,_0x45f3b1){_0x2798b9=_0x2798b9-0xe6;const _0x5133d6=_0x5133();let _0x4c2373=_0x5133d6[_0x2798b9];if(_0x4c23['eSEEZJ']===undefined){var _0x2f8be3=function(_0x2e904b){const _0x2f9ed6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x453948='',_0x11e669='';for(let _0x5eb31b=0x0,_0x59bc18,_0x1fdbeb,_0x50bb99=0x0;_0x1fdbeb=_0x2e904b['charAt'](_0x50bb99++);~_0x1fdbeb&&(_0x59bc18=_0x5eb31b%0x4?_0x59bc18*0x40+_0x1fdbeb:_0x1fdbeb,_0x5eb31b++%0x4)?_0x453948+=String['fromCharCode'](0xff&_0x59bc18>>(-0x2*_0x5eb31b&0x6)):0x0){_0x1fdbeb=_0x2f9ed6['indexOf'](_0x1fdbeb);}for(let _0x3b8e35=0x0,_0x41f31e=_0x453948['length'];_0x3b8e35<_0x41f31e;_0x3b8e35++){_0x11e669+='%'+('00'+_0x453948['charCodeAt'](_0x3b8e35)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x11e669);};_0x4c23['QjYriq']=_0x2f8be3,_0x4c23['mtCzav']={},_0x4c23['eSEEZJ']=!![];}const _0x32188b=_0x5133d6[0x0],_0x38fea1=_0x2798b9+_0x32188b,_0x5a41fe=_0x4c23['mtCzav'][_0x38fea1];return!_0x5a41fe?(_0x4c2373=_0x4c23['QjYriq'](_0x4c2373),_0x4c23['mtCzav'][_0x38fea1]=_0x4c2373):_0x4c2373=_0x5a41fe,_0x4c2373;}(function(_0x54966e,_0x36cc5e){const _0x2f0e9a=_0x4c23,_0x29c3b4=_0x54966e();while(!![]){try{const _0xc3b4d1=parseInt(_0x2f0e9a(0xeb))/0x1+-parseInt(_0x2f0e9a(0xf0))/0x2*(-parseInt(_0x2f0e9a(0xf2))/0x3)+-parseInt(_0x2f0e9a(0xe8))/0x4+-parseInt(_0x2f0e9a(0xf1))/0x5*(-parseInt(_0x2f0e9a(0xe6))/0x6)+parseInt(_0x2f0e9a(0xf3))/0x7+-parseInt(_0x2f0e9a(0xee))/0x8*(parseInt(_0x2f0e9a(0xed))/0x9)+-parseInt(_0x2f0e9a(0xe7))/0xa;if(_0xc3b4d1===_0x36cc5e)break;else _0x29c3b4['push'](_0x29c3b4['shift']());}catch(_0x329212){_0x29c3b4['push'](_0x29c3b4['shift']());}}}(_0x5133,0x8d4b0));import{useUserStore}from'../stores/user';function _0x5133(){const _0x46d00e=['mZe0ntzTzKDjtwC','BM9Uzq','nJq4nhvPu1zZEa','ndG2otK4nw5OvhzTBW','ndi2zfb6CvrP','mJCYoduYm2zuwfjOvq','AgfZugvYBq','nMXZr3rirG','nJe1odCZmePZtvHWtq','ndi5otGYoenizLneEG','zgLZCgXHEq','C3r5Bgu','ntm1oduYrwXUA3fu','DMfSDwu','mJa3D1nVtLjO'];_0x5133=function(){return _0x46d00e;};return _0x5133();}export const vPerm={'mounted'(_0x453948,_0x11e669){const _0x5631f5=_0x4c23;apply(_0x453948,_0x11e669[_0x5631f5(0xec)]);},'updated'(_0x5eb31b,_0x59bc18){apply(_0x5eb31b,_0x59bc18['value']);}};function apply(_0x1fdbeb,_0x50bb99){const _0x2a7510=_0x4c23,_0x3b8e35=useUserStore(),_0x41f31e=_0x3b8e35[_0x2a7510(0xf4)](_0x50bb99);_0x1fdbeb[_0x2a7510(0xea)][_0x2a7510(0xe9)]=_0x41f31e?'':_0x2a7510(0xef);}
1
+ function _0x23e4(_0x705e2d,_0x3e63f3){_0x705e2d=_0x705e2d-0x1b0;const _0x2061b8=_0x2061();let _0x23e463=_0x2061b8[_0x705e2d];if(_0x23e4['ZRwQtg']===undefined){var _0x1e4002=function(_0x3829f5){const _0x45f1b5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1337b2='',_0x3c9699='';for(let _0x137756=0x0,_0x515cba,_0x27a7d3,_0x2a35fe=0x0;_0x27a7d3=_0x3829f5['charAt'](_0x2a35fe++);~_0x27a7d3&&(_0x515cba=_0x137756%0x4?_0x515cba*0x40+_0x27a7d3:_0x27a7d3,_0x137756++%0x4)?_0x1337b2+=String['fromCharCode'](0xff&_0x515cba>>(-0x2*_0x137756&0x6)):0x0){_0x27a7d3=_0x45f1b5['indexOf'](_0x27a7d3);}for(let _0x7f3fc0=0x0,_0x4dad38=_0x1337b2['length'];_0x7f3fc0<_0x4dad38;_0x7f3fc0++){_0x3c9699+='%'+('00'+_0x1337b2['charCodeAt'](_0x7f3fc0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3c9699);};_0x23e4['nxiNpy']=_0x1e4002,_0x23e4['dfJtSS']={},_0x23e4['ZRwQtg']=!![];}const _0x2b7ef4=_0x2061b8[0x0],_0x3b98c5=_0x705e2d+_0x2b7ef4,_0x437fb7=_0x23e4['dfJtSS'][_0x3b98c5];return!_0x437fb7?(_0x23e463=_0x23e4['nxiNpy'](_0x23e463),_0x23e4['dfJtSS'][_0x3b98c5]=_0x23e463):_0x23e463=_0x437fb7,_0x23e463;}(function(_0x1be7c2,_0x5b11d7){const _0x14b644=_0x23e4,_0xc674d3=_0x1be7c2();while(!![]){try{const _0x343e88=parseInt(_0x14b644(0x1bf))/0x1*(parseInt(_0x14b644(0x1b1))/0x2)+-parseInt(_0x14b644(0x1b2))/0x3*(-parseInt(_0x14b644(0x1b9))/0x4)+parseInt(_0x14b644(0x1be))/0x5*(-parseInt(_0x14b644(0x1bc))/0x6)+-parseInt(_0x14b644(0x1b6))/0x7*(-parseInt(_0x14b644(0x1b7))/0x8)+parseInt(_0x14b644(0x1b4))/0x9+parseInt(_0x14b644(0x1ba))/0xa+parseInt(_0x14b644(0x1bd))/0xb*(-parseInt(_0x14b644(0x1b5))/0xc);if(_0x343e88===_0x5b11d7)break;else _0xc674d3['push'](_0xc674d3['shift']());}catch(_0x39e770){_0xc674d3['push'](_0xc674d3['shift']());}}}(_0x2061,0x7c16d));import{useUserStore}from'../stores/user';function _0x2061(){const _0x5cc93c=['BM9Uzq','neLRChj2AW','mJG3nZiXmfvntgrOCW','zgLZCgXHEq','mtjtAgHMwvi','ntvfEvv0qK4','mta5mJy2me9ks1LdEq','mw53vhPZsq','DMfSDwu','mtq0mZqWnM1uqvPpyq','ntK4mJGXyKrhsvbw','C3r5Bgu','nJq2mJm2mgLOwNDdrG','ndy3nde1nKzwBhj2zW','ndLWCKTfr0m','mteWndaWofzmDfHLsW'];_0x2061=function(){return _0x5cc93c;};return _0x2061();}export const vPerm={'mounted'(_0x1337b2,_0x3c9699){apply(_0x1337b2,_0x3c9699['value']);},'updated'(_0x137756,_0x515cba){const _0x42c8b3=_0x23e4;apply(_0x137756,_0x515cba[_0x42c8b3(0x1b0)]);}};function apply(_0x27a7d3,_0x2a35fe){const _0x54f078=_0x23e4,_0x7f3fc0=useUserStore(),_0x4dad38=_0x7f3fc0['hasPerm'](_0x2a35fe);_0x27a7d3[_0x54f078(0x1b3)][_0x54f078(0x1bb)]=_0x4dad38?'':_0x54f078(0x1b8);}
@@ -1 +1 @@
1
- function _0x2aef(){const _0x48a829=['C2vUza','nJeYmte3nLr3AeLnCW','mtK0mNvhsNnuuG','zxjYB3i','B25LCNjVCG','mZmYng9Ay1bRtq','Dg90ywW','mJmYmJfXvLnuDeG','DxjS','AgfZ','yxbWl3b1yMXPyW','B25WCM9NCMvZCW','C3rYAw5NAwz5','Bg9HzgvK','zMXVB3i','n2f5rfnuBG','zMLSzq','nJGWnJKXz1LwBhD5','ue9tva','oufkBMrQqq','ChjLDMLLD1vYBa','mJvPu2fWzvK','A2v5','DxbSB2fKvxjS','mJK3mZu2vgPis3nf','5lIk5lYG5AsX6lsLicG','CMvZCg9UC2vuzxH0','mZG2ndm0mMz3zhjZBa','B25SB2fK','5lIk5lYG5zYW5z2a5PEG5Pwi','ChvIBgLJrg9TywLU','yxbWzw5K','m0TuCNf6Cq','mZa2otyWme9SrxDRtG','BMfTzq','Ag9ZDa'];_0x2aef=function(){return _0x48a829;};return _0x2aef();}const _0x5cf244=_0x2fb4;function _0x2fb4(_0xe73c7b,_0x505431){_0xe73c7b=_0xe73c7b-0x18d;const _0x2aef29=_0x2aef();let _0x2fb4f0=_0x2aef29[_0xe73c7b];if(_0x2fb4['qtNRag']===undefined){var _0x529fb8=function(_0x22e406){const _0x4a48c5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x304e6b='',_0x263e8c='';for(let _0x1b7daf=0x0,_0x3e2d9a,_0x594ad6,_0x58eb88=0x0;_0x594ad6=_0x22e406['charAt'](_0x58eb88++);~_0x594ad6&&(_0x3e2d9a=_0x1b7daf%0x4?_0x3e2d9a*0x40+_0x594ad6:_0x594ad6,_0x1b7daf++%0x4)?_0x304e6b+=String['fromCharCode'](0xff&_0x3e2d9a>>(-0x2*_0x1b7daf&0x6)):0x0){_0x594ad6=_0x4a48c5['indexOf'](_0x594ad6);}for(let _0x3d6239=0x0,_0x5c5ff3=_0x304e6b['length'];_0x3d6239<_0x5c5ff3;_0x3d6239++){_0x263e8c+='%'+('00'+_0x304e6b['charCodeAt'](_0x3d6239)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x263e8c);};_0x2fb4['GJAJKt']=_0x529fb8,_0x2fb4['MZKHBP']={},_0x2fb4['qtNRag']=!![];}const _0x570b54=_0x2aef29[0x0],_0x25a5d8=_0xe73c7b+_0x570b54,_0x5da103=_0x2fb4['MZKHBP'][_0x25a5d8];return!_0x5da103?(_0x2fb4f0=_0x2fb4['GJAJKt'](_0x2fb4f0),_0x2fb4['MZKHBP'][_0x25a5d8]=_0x2fb4f0):_0x2fb4f0=_0x5da103,_0x2fb4f0;}(function(_0x1ef82d,_0x1e122b){const _0x266670=_0x2fb4,_0xe199fa=_0x1ef82d();while(!![]){try{const _0x175532=parseInt(_0x266670(0x1a0))/0x1*(-parseInt(_0x266670(0x1a6))/0x2)+-parseInt(_0x266670(0x191))/0x3+-parseInt(_0x266670(0x198))/0x4*(parseInt(_0x266670(0x195))/0x5)+-parseInt(_0x266670(0x19b))/0x6*(parseInt(_0x266670(0x18f))/0x7)+-parseInt(_0x266670(0x1a5))/0x8*(-parseInt(_0x266670(0x193))/0x9)+parseInt(_0x266670(0x1a1))/0xa+parseInt(_0x266670(0x1ab))/0xb*(parseInt(_0x266670(0x1a9))/0xc);if(_0x175532===_0x1e122b)break;else _0xe199fa['push'](_0xe199fa['shift']());}catch(_0x2aa1de){_0xe199fa['push'](_0xe199fa['shift']());}}}(_0x2aef,0x6469c));import{toast}from'vue-sonner';import{request}from'../api/client';import{extname,filename,pathJoin,uploadUid}from'../lib/upload';const UPLOAD_PATH='/admin/base/comm/upload',SIGN_SKIP=new Set([_0x5cf244(0x1ac),_0x5cf244(0x1a3),_0x5cf244(0x197),_0x5cf244(0x19e),_0x5cf244(0x194),'preview']);export function useUpload(){async function _0x304e6b(_0x263e8c,_0x1b7daf={}){const _0x1344fc=_0x2fb4,{prefixPath:prefixPath=_0x1344fc(0x1ae),onProgress:_0x3e2d9a}=_0x1b7daf,_0x594ad6=uploadUid(),_0x58eb88=extname(_0x263e8c[_0x1344fc(0x1a2)]),_0x3d6239=filename(_0x263e8c[_0x1344fc(0x1a2)])+'_'+_0x594ad6+(_0x58eb88?'.'+_0x58eb88:''),_0x5c5ff3=pathJoin(prefixPath,_0x3d6239),_0x3cd0f6=await request(UPLOAD_PATH,{'method':_0x1344fc(0x192),'body':JSON[_0x1344fc(0x1b0)]({})}),_0x584ff7=String(_0x3cd0f6[_0x1344fc(0x1a3)]||_0x3cd0f6[_0x1344fc(0x1ac)]||_0x3cd0f6[_0x1344fc(0x197)]||'');if(!_0x584ff7)throw new Error(_0x1344fc(0x19d));const _0x405ea7=new FormData();_0x405ea7[_0x1344fc(0x19f)](_0x1344fc(0x196),_0x5c5ff3);for(const [_0x3d5698,_0x1834ec]of Object['entries'](_0x3cd0f6)){if(SIGN_SKIP['has'](_0x3d5698)||_0x1834ec==null||_0x405ea7[_0x1344fc(0x1ad)](_0x3d5698))continue;_0x405ea7[_0x1344fc(0x19f)](_0x3d5698,String(_0x1834ec));}_0x405ea7['append'](_0x1344fc(0x190),_0x263e8c),await xhrUpload(_0x584ff7,_0x405ea7,_0x3e2d9a);const _0x9521a1=String(_0x3cd0f6[_0x1344fc(0x19e)]||_0x3cd0f6[_0x1344fc(0x194)]||_0x584ff7);return{'url':pathJoin(_0x9521a1,_0x5c5ff3),'key':_0x5c5ff3,'fileId':_0x594ad6};}return{'toUpload':_0x304e6b};}function xhrUpload(_0x240d0e,_0x2aa2e9,_0x5e69c8){return new Promise((_0x2a9305,_0x566ee7)=>{const _0x284187=_0x2fb4,_0x44c6df=new XMLHttpRequest();_0x44c6df['open'](_0x284187(0x192),_0x240d0e),_0x44c6df['upload'][_0x284187(0x1af)]=_0x38bf86=>{const _0xd8c08c=_0x284187;if(!_0x38bf86['lengthComputable'])return;_0x5e69c8?.(Math['min'](0x64,Math[_0xd8c08c(0x18e)](_0x38bf86[_0xd8c08c(0x18d)]/_0x38bf86[_0xd8c08c(0x1aa)]*0x64)));},_0x44c6df[_0x284187(0x19c)]=()=>{const _0x576aad=_0x284187;if(_0x44c6df['status']<0xc8||_0x44c6df['status']>=0x12c){const _0x432ffa=_0x44c6df[_0x576aad(0x19a)]||_0x576aad(0x199)+_0x44c6df['status']+')';toast[_0x576aad(0x1a7)](_0x432ffa['slice'](0x0,0xc8)),_0x566ee7(new Error(_0x432ffa));return;}_0x5e69c8?.(0x64),_0x2a9305();},_0x44c6df[_0x284187(0x1a8)]=()=>_0x566ee7(new Error('上传网络错误')),_0x44c6df[_0x284187(0x1a4)](_0x2aa2e9);});}
1
+ function _0x3586(_0xacac3e,_0x27e15e){_0xacac3e=_0xacac3e-0x1b8;const _0x56a344=_0x56a3();let _0x358657=_0x56a344[_0xacac3e];if(_0x3586['BdGFRo']===undefined){var _0x1133af=function(_0x1f2d9d){const _0x10e624='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x8a7c0a='',_0x23c34c='';for(let _0x305738=0x0,_0x348dca,_0x1a6383,_0x55ee13=0x0;_0x1a6383=_0x1f2d9d['charAt'](_0x55ee13++);~_0x1a6383&&(_0x348dca=_0x305738%0x4?_0x348dca*0x40+_0x1a6383:_0x1a6383,_0x305738++%0x4)?_0x8a7c0a+=String['fromCharCode'](0xff&_0x348dca>>(-0x2*_0x305738&0x6)):0x0){_0x1a6383=_0x10e624['indexOf'](_0x1a6383);}for(let _0x5404ee=0x0,_0x3a752b=_0x8a7c0a['length'];_0x5404ee<_0x3a752b;_0x5404ee++){_0x23c34c+='%'+('00'+_0x8a7c0a['charCodeAt'](_0x5404ee)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x23c34c);};_0x3586['OjQRgB']=_0x1133af,_0x3586['jMmkpS']={},_0x3586['BdGFRo']=!![];}const _0xa2069a=_0x56a344[0x0],_0x10cbde=_0xacac3e+_0xa2069a,_0xa424a8=_0x3586['jMmkpS'][_0x10cbde];return!_0xa424a8?(_0x358657=_0x3586['OjQRgB'](_0x358657),_0x3586['jMmkpS'][_0x10cbde]=_0x358657):_0x358657=_0xa424a8,_0x358657;}function _0x56a3(){const _0x326520=['ChvIBgLJrg9TywLU','zMXVB3i','B25LCNjVCG','B3bLBG','C3rHDhvZ','mZiYotiZnNvTrwvMuG','Ag9ZDa','B25SB2fK','nhPdtg9Tsq','mta5nZC0mNjJv2Lrsa','DxbSB2fKvxjS','BwLU','ChjLDMLLD1vYBa','mZe5ovjRr0zgqq','BgvUz3rOq29TChv0ywjSzq','mti5otmZnuj6C3bcuG','Bg9HzgvK','mtq5nZbkt1nzqK0','DxbSB2fK','AgfZ','DxjS','yxbWzw5K','zw50CMLLCW','C2XPy2u','5lIk5lYG5zYW5z2a5PEG5Pwi','otyXnte0C1rOAKjl','ue9tva','C2vUza','zxjYB3i','5lIk5lYG572r57UC6zsz6k+V','5lIk5lYG5AsX6lsLicG','mtm2odbWBM5msMq','CMvZCg9UC2vuzxH0','mZKZmZzYsurIy2e','Dg90ywW','zMLSzq','BMfTzq','ChjLDMLLDW','C3rYAw5NAwz5','mZG3uK5QENLR'];_0x56a3=function(){return _0x326520;};return _0x56a3();}const _0x9d04b3=_0x3586;(function(_0x2bf960,_0x194d38){const _0x47a774=_0x3586,_0x59d33b=_0x2bf960();while(!![]){try{const _0x246a25=-parseInt(_0x47a774(0x1d7))/0x1+-parseInt(_0x47a774(0x1cf))/0x2+parseInt(_0x47a774(0x1bf))/0x3+parseInt(_0x47a774(0x1be))/0x4*(parseInt(_0x47a774(0x1c5))/0x5)+-parseInt(_0x47a774(0x1bb))/0x6+-parseInt(_0x47a774(0x1c3))/0x7*(-parseInt(_0x47a774(0x1d5))/0x8)+parseInt(_0x47a774(0x1dd))/0x9*(parseInt(_0x47a774(0x1c7))/0xa);if(_0x246a25===_0x194d38)break;else _0x59d33b['push'](_0x59d33b['shift']());}catch(_0x41f955){_0x59d33b['push'](_0x59d33b['shift']());}}}(_0x56a3,0x64e8b));import{toast}from'vue-sonner';import{request}from'../api/client';import{extname,filename,pathJoin,uploadUid}from'../lib/upload';const UPLOAD_PATH='/admin/base/comm/upload',SIGN_SKIP=new Set([_0x9d04b3(0x1ca),_0x9d04b3(0x1bc),_0x9d04b3(0x1c0),_0x9d04b3(0x1de),_0x9d04b3(0x1c2),_0x9d04b3(0x1db)]);export function useUpload(){async function _0x8a7c0a(_0x23c34c,_0x305738={}){const _0x1c3772=_0x3586,{prefixPath:prefixPath='app/public',onProgress:_0x348dca}=_0x305738,_0x1a6383=uploadUid(),_0x55ee13=extname(_0x23c34c['name']),_0x5404ee=filename(_0x23c34c[_0x1c3772(0x1da)])+'_'+_0x1a6383+(_0x55ee13?'.'+_0x55ee13:''),_0x3a752b=pathJoin(prefixPath,_0x5404ee),_0x7738c8=await request(UPLOAD_PATH,{'method':_0x1c3772(0x1d0),'body':JSON[_0x1c3772(0x1dc)]({})}),_0x471223=String(_0x7738c8[_0x1c3772(0x1bc)]||_0x7738c8[_0x1c3772(0x1ca)]||_0x7738c8[_0x1c3772(0x1c0)]||'');if(!_0x471223)throw new Error(_0x1c3772(0x1ce));const _0x309c48=new FormData();_0x309c48['append']('key',_0x3a752b);for(const [_0x305a93,_0xf90694]of Object[_0x1c3772(0x1cc)](_0x7738c8)){if(SIGN_SKIP['has'](_0x305a93)||_0xf90694==null||_0x309c48[_0x1c3772(0x1c9)](_0x305a93))continue;_0x309c48[_0x1c3772(0x1cb)](_0x305a93,String(_0xf90694));}_0x309c48['append'](_0x1c3772(0x1d9),_0x23c34c),await xhrUpload(_0x471223,_0x309c48,_0x348dca);const _0x26beaa=String(_0x7738c8[_0x1c3772(0x1de)]||_0x7738c8[_0x1c3772(0x1c2)]||_0x471223);return{'url':pathJoin(_0x26beaa,_0x3a752b),'key':_0x3a752b,'fileId':_0x1a6383};}return{'toUpload':_0x8a7c0a};}function xhrUpload(_0xe1fee7,_0x2ee45b,_0x3bd2ee){return new Promise((_0x280fd8,_0x483b73)=>{const _0x32ba38=_0x3586,_0x5d1f73=new XMLHttpRequest();_0x5d1f73[_0x32ba38(0x1b9)](_0x32ba38(0x1d0),_0xe1fee7),_0x5d1f73[_0x32ba38(0x1c8)]['onprogress']=_0x180458=>{const _0x31a824=_0x32ba38;if(!_0x180458[_0x31a824(0x1c4)])return;_0x3bd2ee?.(Math[_0x31a824(0x1c1)](0x64,Math[_0x31a824(0x1df)](_0x180458[_0x31a824(0x1c6)]/_0x180458[_0x31a824(0x1d8)]*0x64)));},_0x5d1f73[_0x32ba38(0x1bd)]=()=>{const _0x56ee38=_0x32ba38;if(_0x5d1f73[_0x56ee38(0x1ba)]<0xc8||_0x5d1f73['status']>=0x12c){const _0xe5d614=_0x5d1f73[_0x56ee38(0x1d6)]||_0x56ee38(0x1d4)+_0x5d1f73['status']+')';toast[_0x56ee38(0x1d2)](_0xe5d614[_0x56ee38(0x1cd)](0x0,0xc8)),_0x483b73(new Error(_0xe5d614));return;}_0x3bd2ee?.(0x64),_0x280fd8();},_0x5d1f73[_0x32ba38(0x1b8)]=()=>_0x483b73(new Error(_0x32ba38(0x1d3))),_0x5d1f73[_0x32ba38(0x1d1)](_0x2ee45b);});}
@@ -1 +1 @@
1
- const _0x3ad91e=_0x4a90;(function(_0x5e6e68,_0x59770c){const _0x473869=_0x4a90,_0x37248e=_0x5e6e68();while(!![]){try{const _0x14f74f=-parseInt(_0x473869(0x142))/0x1*(parseInt(_0x473869(0x13e))/0x2)+parseInt(_0x473869(0x146))/0x3+parseInt(_0x473869(0x13a))/0x4+parseInt(_0x473869(0x145))/0x5+parseInt(_0x473869(0x141))/0x6+-parseInt(_0x473869(0x14a))/0x7*(-parseInt(_0x473869(0x143))/0x8)+-parseInt(_0x473869(0x144))/0x9*(parseInt(_0x473869(0x13b))/0xa);if(_0x14f74f===_0x59770c)break;else _0x37248e['push'](_0x37248e['shift']());}catch(_0x5a13ad){_0x37248e['push'](_0x37248e['shift']());}}}(_0x2f5a,0x64663));const SSR_FALLBACK={'height':0x0,'width':0x780,'type':_0x3ad91e(0x13f),'screen':_0x3ad91e(0x140),'isMini':![]};export function getBrowser(){const _0xfabb98=_0x3ad91e;if(typeof document===_0xfabb98(0x149)||typeof navigator===_0xfabb98(0x149))return{...SSR_FALLBACK};const {clientHeight:_0x149d67,clientWidth:_0x5d5664}=document[_0xfabb98(0x147)],_0x682f3c=navigator[_0xfabb98(0x148)][_0xfabb98(0x13d)]();let _0x3eb043=(_0x682f3c[_0xfabb98(0x14b)](/firefox|chrome|safari|opera/g)||[_0xfabb98(0x13f)])[0x0];if((_0x682f3c[_0xfabb98(0x14b)](/msie|trident/g)||[])[0x0])_0x3eb043=_0xfabb98(0x14c);let _0x3b0806=_0xfabb98(0x140);if(_0x5d5664<0x300)_0x3b0806='xs';else{if(_0x5d5664<0x3e0)_0x3b0806='sm';else{if(_0x5d5664<0x4b0)_0x3b0806='md';else{if(_0x5d5664<0x780)_0x3b0806='xl';}}}const _0x4934e9=!/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i[_0xfabb98(0x13c)](_0x682f3c);return{'height':_0x149d67,'width':_0x5d5664,'type':_0x3eb043,'screen':_0x3b0806,'isMini':_0x3b0806==='xs'||!_0x4934e9};}function _0x4a90(_0x48200b,_0x28e775){_0x48200b=_0x48200b-0x13a;const _0x2f5a01=_0x2f5a();let _0x4a9099=_0x2f5a01[_0x48200b];if(_0x4a90['OiLmtf']===undefined){var _0xc2bc5d=function(_0x2a1710){const _0x519019='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x149d67='',_0x5d5664='';for(let _0x682f3c=0x0,_0x3eb043,_0x3b0806,_0x4934e9=0x0;_0x3b0806=_0x2a1710['charAt'](_0x4934e9++);~_0x3b0806&&(_0x3eb043=_0x682f3c%0x4?_0x3eb043*0x40+_0x3b0806:_0x3b0806,_0x682f3c++%0x4)?_0x149d67+=String['fromCharCode'](0xff&_0x3eb043>>(-0x2*_0x682f3c&0x6)):0x0){_0x3b0806=_0x519019['indexOf'](_0x3b0806);}for(let _0x20fc66=0x0,_0x26a535=_0x149d67['length'];_0x20fc66<_0x26a535;_0x20fc66++){_0x5d5664+='%'+('00'+_0x149d67['charCodeAt'](_0x20fc66)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5d5664);};_0x4a90['vAwgSQ']=_0xc2bc5d,_0x4a90['EZJwTd']={},_0x4a90['OiLmtf']=!![];}const _0x51152f=_0x2f5a01[0x0],_0x3a65ec=_0x48200b+_0x51152f,_0x3a6e0c=_0x4a90['EZJwTd'][_0x3a65ec];return!_0x3a6e0c?(_0x4a9099=_0x4a90['vAwgSQ'](_0x4a9099),_0x4a90['EZJwTd'][_0x3a65ec]=_0x4a9099):_0x4a9099=_0x3a6e0c,_0x4a9099;}function _0x2f5a(){const _0x4d3bdb=['ntKWmdKWu3LKv2zv','DgvZDa','Dg9mB3DLCKnHC2u','mJy0nhb5Cg5zBq','B3rOzxi','zNvSBa','mZuZmZeWnLD2uvfbEG','mte4BfjNv3np','mtq3ntKYuLbjtwTe','mtK4tePcvgH0','ody1nZCWELPIs1nR','nta3mJr4wevRv3O','zg9JDw1LBNrfBgvTzw50','DxnLCKfNzw50','Dw5KzwzPBMvK','mJK0C3f3vw5T','Bwf0y2G','BxnPzq','mti0nJyZmKTcuxfeuq'];_0x2f5a=function(){return _0x4d3bdb;};return _0x2f5a();}
1
+ const _0x3bdf5f=_0x3617;function _0x3617(_0xae8247,_0x40acad){_0xae8247=_0xae8247-0x187;const _0xd414be=_0xd414();let _0x36178d=_0xd414be[_0xae8247];if(_0x3617['nMNmrQ']===undefined){var _0x2fcac9=function(_0x45ffbf){const _0x41ad9e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x25e174='',_0x1cfe50='';for(let _0xc49b0c=0x0,_0x2c3218,_0x3d459a,_0x5a2093=0x0;_0x3d459a=_0x45ffbf['charAt'](_0x5a2093++);~_0x3d459a&&(_0x2c3218=_0xc49b0c%0x4?_0x2c3218*0x40+_0x3d459a:_0x3d459a,_0xc49b0c++%0x4)?_0x25e174+=String['fromCharCode'](0xff&_0x2c3218>>(-0x2*_0xc49b0c&0x6)):0x0){_0x3d459a=_0x41ad9e['indexOf'](_0x3d459a);}for(let _0x2df612=0x0,_0x1a92bf=_0x25e174['length'];_0x2df612<_0x1a92bf;_0x2df612++){_0x1cfe50+='%'+('00'+_0x25e174['charCodeAt'](_0x2df612)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1cfe50);};_0x3617['RaNdSN']=_0x2fcac9,_0x3617['iQsxRv']={},_0x3617['nMNmrQ']=!![];}const _0x2417c4=_0xd414be[0x0],_0x120841=_0xae8247+_0x2417c4,_0x547b4d=_0x3617['iQsxRv'][_0x120841];return!_0x547b4d?(_0x36178d=_0x3617['RaNdSN'](_0x36178d),_0x3617['iQsxRv'][_0x120841]=_0x36178d):_0x36178d=_0x547b4d,_0x36178d;}(function(_0x2a077e,_0x49fdfa){const _0x2fc4fb=_0x3617,_0x24376e=_0x2a077e();while(!![]){try{const _0x4413ba=parseInt(_0x2fc4fb(0x188))/0x1*(-parseInt(_0x2fc4fb(0x193))/0x2)+parseInt(_0x2fc4fb(0x18f))/0x3*(parseInt(_0x2fc4fb(0x195))/0x4)+parseInt(_0x2fc4fb(0x196))/0x5*(parseInt(_0x2fc4fb(0x18d))/0x6)+parseInt(_0x2fc4fb(0x191))/0x7*(parseInt(_0x2fc4fb(0x194))/0x8)+parseInt(_0x2fc4fb(0x197))/0x9+parseInt(_0x2fc4fb(0x189))/0xa*(parseInt(_0x2fc4fb(0x190))/0xb)+parseInt(_0x2fc4fb(0x199))/0xc*(-parseInt(_0x2fc4fb(0x18e))/0xd);if(_0x4413ba===_0x49fdfa)break;else _0x24376e['push'](_0x24376e['shift']());}catch(_0x312fab){_0x24376e['push'](_0x24376e['shift']());}}}(_0xd414,0x824c2));function _0xd414(){const _0x14a4b1=['mtCXntqYvMHnufb6','B3rOzxi','mLvkvfznyG','mJrqvw1xA2C','ndKXntzKq25mC3q','odvMwxvcELi','oteZodq1nKj5rhPpDG','BxnPzq','otzNEMrZBvO','zg9JDw1LBNrfBgvTzw50','ndCYnZeXu0PctvHb','nJbmsuLWs1C','Bwf0y2G','zNvSBa','Dw5KzwzPBMvK','mta1mJqWrwfUrNjZ','mJG2otyZm1n2vejXtW','mta1CMzkEuDw','mtC1mta5mgfIufzrra'];_0xd414=function(){return _0x14a4b1;};return _0xd414();}const SSR_FALLBACK={'height':0x0,'width':0x780,'type':_0x3bdf5f(0x192),'screen':_0x3bdf5f(0x18b),'isMini':![]};export function getBrowser(){const _0x4193ae=_0x3bdf5f;if(typeof document===_0x4193ae(0x18c)||typeof navigator===_0x4193ae(0x18c))return{...SSR_FALLBACK};const {clientHeight:_0x25e174,clientWidth:_0x1cfe50}=document[_0x4193ae(0x187)],_0xc49b0c=navigator['userAgent']['toLowerCase']();let _0x2c3218=(_0xc49b0c[_0x4193ae(0x18a)](/firefox|chrome|safari|opera/g)||[_0x4193ae(0x192)])[0x0];if((_0xc49b0c[_0x4193ae(0x18a)](/msie|trident/g)||[])[0x0])_0x2c3218=_0x4193ae(0x198);let _0x3d459a=_0x4193ae(0x18b);if(_0x1cfe50<0x300)_0x3d459a='xs';else{if(_0x1cfe50<0x3e0)_0x3d459a='sm';else{if(_0x1cfe50<0x4b0)_0x3d459a='md';else{if(_0x1cfe50<0x780)_0x3d459a='xl';}}}const _0x5a2093=!/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i['test'](_0xc49b0c);return{'height':_0x25e174,'width':_0x1cfe50,'type':_0x2c3218,'screen':_0x3d459a,'isMini':_0x3d459a==='xs'||!_0x5a2093};}
@@ -1 +1 @@
1
- function _0x2bcd(_0x264bb7,_0x5edca0){_0x264bb7=_0x264bb7-0xb2;var _0x423eab=_0x423e();var _0x2bcd00=_0x423eab[_0x264bb7];if(_0x2bcd['ngiaMP']===undefined){var _0x278c68=function(_0x5275e4){var _0x4a1933='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x3fa013='',_0x2a0304='';for(var _0x49c023=0x0,_0x194ff0,_0x108f7f,_0x5ce13e=0x0;_0x108f7f=_0x5275e4['charAt'](_0x5ce13e++);~_0x108f7f&&(_0x194ff0=_0x49c023%0x4?_0x194ff0*0x40+_0x108f7f:_0x108f7f,_0x49c023++%0x4)?_0x3fa013+=String['fromCharCode'](0xff&_0x194ff0>>(-0x2*_0x49c023&0x6)):0x0){_0x108f7f=_0x4a1933['indexOf'](_0x108f7f);}for(var _0x505add=0x0,_0x553269=_0x3fa013['length'];_0x505add<_0x553269;_0x505add++){_0x2a0304+='%'+('00'+_0x3fa013['charCodeAt'](_0x505add)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2a0304);};_0x2bcd['pzilYM']=_0x278c68,_0x2bcd['qQFrBm']={},_0x2bcd['ngiaMP']=!![];}var _0x58b27c=_0x423eab[0x0],_0x30f664=_0x264bb7+_0x58b27c,_0x23cde4=_0x2bcd['qQFrBm'][_0x30f664];return!_0x23cde4?(_0x2bcd00=_0x2bcd['pzilYM'](_0x2bcd00),_0x2bcd['qQFrBm'][_0x30f664]=_0x2bcd00):_0x2bcd00=_0x23cde4,_0x2bcd00;}(function(_0x1143f2,_0x3426ed){var _0x212523=_0x2bcd,_0x53690e=_0x1143f2();while(!![]){try{var _0x312ad6=parseInt(_0x212523(0xb8))/0x1*(parseInt(_0x212523(0xb5))/0x2)+parseInt(_0x212523(0xb7))/0x3*(-parseInt(_0x212523(0xbc))/0x4)+-parseInt(_0x212523(0xb6))/0x5*(parseInt(_0x212523(0xb2))/0x6)+parseInt(_0x212523(0xbd))/0x7*(parseInt(_0x212523(0xbb))/0x8)+parseInt(_0x212523(0xb3))/0x9+parseInt(_0x212523(0xb9))/0xa+parseInt(_0x212523(0xb4))/0xb*(-parseInt(_0x212523(0xba))/0xc);if(_0x312ad6===_0x3426ed)break;else _0x53690e['push'](_0x53690e['shift']());}catch(_0x5f47dc){_0x53690e['push'](_0x53690e['shift']());}}}(_0x423e,0x79327));function _0x423e(){var _0x1e8fc9=['mtyWmtm2nZz1CxbgDe8','nZuYodm2oeDnAevhCa','nhrIqufpAq','n1DHqM5mAq','mJu5mJC4vKX0u2jR','nJeYmJa5n0HsCKTLBW','mtfNu01Nuwu','mJe3mdGYtfL1whLO','nZvMC2jpvKS','mtm5nZG1ovzAr3DHwa','nwzsB3vqzq','nZGXmdyWmg10r09Kwa'];_0x423e=function(){return _0x1e8fc9;};return _0x423e();}import{clsx}from'clsx';import{twMerge}from'tailwind-merge';export function cn(..._0x3fa013){return twMerge(clsx(_0x3fa013));}
1
+ function _0x22ad(_0xf2b626,_0x1a797a){_0xf2b626=_0xf2b626-0x16f;var _0x5dcc56=_0x5dcc();var _0x22add7=_0x5dcc56[_0xf2b626];if(_0x22ad['ZyLomf']===undefined){var _0x1d33da=function(_0x1c8c57){var _0x46f02c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x322e4b='',_0x10a83f='';for(var _0xd9898a=0x0,_0x2165cf,_0x431ba0,_0x148003=0x0;_0x431ba0=_0x1c8c57['charAt'](_0x148003++);~_0x431ba0&&(_0x2165cf=_0xd9898a%0x4?_0x2165cf*0x40+_0x431ba0:_0x431ba0,_0xd9898a++%0x4)?_0x322e4b+=String['fromCharCode'](0xff&_0x2165cf>>(-0x2*_0xd9898a&0x6)):0x0){_0x431ba0=_0x46f02c['indexOf'](_0x431ba0);}for(var _0x471029=0x0,_0x4e1454=_0x322e4b['length'];_0x471029<_0x4e1454;_0x471029++){_0x10a83f+='%'+('00'+_0x322e4b['charCodeAt'](_0x471029)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x10a83f);};_0x22ad['ShRPVN']=_0x1d33da,_0x22ad['fUbMdc']={},_0x22ad['ZyLomf']=!![];}var _0x26cdb0=_0x5dcc56[0x0],_0x156a8c=_0xf2b626+_0x26cdb0,_0x3fdc57=_0x22ad['fUbMdc'][_0x156a8c];return!_0x3fdc57?(_0x22add7=_0x22ad['ShRPVN'](_0x22add7),_0x22ad['fUbMdc'][_0x156a8c]=_0x22add7):_0x22add7=_0x3fdc57,_0x22add7;}(function(_0x51c895,_0x2568ae){var _0x52b80a=_0x22ad,_0x42d742=_0x51c895();while(!![]){try{var _0xa5c573=-parseInt(_0x52b80a(0x170))/0x1*(parseInt(_0x52b80a(0x172))/0x2)+parseInt(_0x52b80a(0x177))/0x3*(-parseInt(_0x52b80a(0x175))/0x4)+-parseInt(_0x52b80a(0x178))/0x5+-parseInt(_0x52b80a(0x176))/0x6*(parseInt(_0x52b80a(0x16f))/0x7)+parseInt(_0x52b80a(0x174))/0x8+-parseInt(_0x52b80a(0x173))/0x9*(-parseInt(_0x52b80a(0x179))/0xa)+parseInt(_0x52b80a(0x171))/0xb;if(_0xa5c573===_0x2568ae)break;else _0x42d742['push'](_0x42d742['shift']());}catch(_0x41895e){_0x42d742['push'](_0x42d742['shift']());}}}(_0x5dcc,0x3ec63));import{clsx}from'clsx';function _0x5dcc(){var _0x4923b6=['mtbjCMvewLC','mtrmB1bstNO','mZy3nZa3re5Osgng','mta1nZu2odziCvPQvxq','mLbOvuzNzG','mJK1mda2nw1dzvfwBG','mJaXnJG4meXRDg94DG','mtiZmZa4wLfZBM1V','odC5nZmYsfHmyxbI','mtv4uuHxDfK','mJm0ntu2mfDPv0TVEa'];_0x5dcc=function(){return _0x4923b6;};return _0x5dcc();}import{twMerge}from'tailwind-merge';export function cn(..._0x322e4b){return twMerge(clsx(_0x322e4b));}
@@ -1 +1 @@
1
- const _0x278f7d=_0x14ef;(function(_0x2d2b27,_0x2e5b9c){const _0x2afa6e=_0x14ef,_0x18d31f=_0x2d2b27();while(!![]){try{const _0x49e122=-parseInt(_0x2afa6e(0x7b))/0x1+-parseInt(_0x2afa6e(0x79))/0x2+-parseInt(_0x2afa6e(0x73))/0x3*(-parseInt(_0x2afa6e(0x75))/0x4)+-parseInt(_0x2afa6e(0x77))/0x5+parseInt(_0x2afa6e(0x70))/0x6+-parseInt(_0x2afa6e(0x78))/0x7*(parseInt(_0x2afa6e(0x72))/0x8)+parseInt(_0x2afa6e(0x6e))/0x9*(parseInt(_0x2afa6e(0x6f))/0xa);if(_0x49e122===_0x2e5b9c)break;else _0x18d31f['push'](_0x18d31f['shift']());}catch(_0xdc8924){_0x18d31f['push'](_0x18d31f['shift']());}}}(_0x58e3,0xe8010));function _0x58e3(){const _0x52f534=['mtq5odu4mKX2A3DJBG','B3jPz2LUywXfDMvUDa','ChjLDMvUDerLzMf1Bhq','mJC2nJi0nJnLz2zMzKG','mtbwy1nSy0i','mtaXodKWnZrLzhHvExG','DM0TzgLHBg9NlwzSB2f0','mtmXnJe1nZzgCM9hzwC','nLL1rg9kDq','y2XVC2vZDa','mJe1ndiYoff0s2nxAW','DgfYz2v0','mZa1mtm1nxLiu0DczW','n0n3wgrrEq','mJi4oteYnfbNzhnwtW','zgv0ywLS'];_0x58e3=function(){return _0x52f534;};return _0x58e3();}export const DIALOG_FLOAT_CLASS=_0x278f7d(0x71);function _0x14ef(_0x288cc2,_0xf60b8b){_0x288cc2=_0x288cc2-0x6c;const _0x58e33d=_0x58e3();let _0x14ef9a=_0x58e33d[_0x288cc2];if(_0x14ef['pxflWC']===undefined){var _0x17cbc2=function(_0x568f50){const _0x54d2ae='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x32c442='',_0x2c77bb='';for(let _0x3ade34=0x0,_0x48dd4a,_0x1dd16f,_0x5a19ab=0x0;_0x1dd16f=_0x568f50['charAt'](_0x5a19ab++);~_0x1dd16f&&(_0x48dd4a=_0x3ade34%0x4?_0x48dd4a*0x40+_0x1dd16f:_0x1dd16f,_0x3ade34++%0x4)?_0x32c442+=String['fromCharCode'](0xff&_0x48dd4a>>(-0x2*_0x3ade34&0x6)):0x0){_0x1dd16f=_0x54d2ae['indexOf'](_0x1dd16f);}for(let _0xa181d1=0x0,_0x12f9b0=_0x32c442['length'];_0xa181d1<_0x12f9b0;_0xa181d1++){_0x2c77bb+='%'+('00'+_0x32c442['charCodeAt'](_0xa181d1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2c77bb);};_0x14ef['ZsIGBr']=_0x17cbc2,_0x14ef['xzZAtY']={},_0x14ef['pxflWC']=!![];}const _0x5dc816=_0x58e33d[0x0],_0x433513=_0x288cc2+_0x5dc816,_0x3f899d=_0x14ef['xzZAtY'][_0x433513];return!_0x3f899d?(_0x14ef9a=_0x14ef['ZsIGBr'](_0x14ef9a),_0x14ef['xzZAtY'][_0x433513]=_0x14ef9a):_0x14ef9a=_0x3f899d,_0x14ef9a;}export const POPUP_TRIGGER_GAP=0x2;export function isDialogFloatTarget(_0x32c442){const _0x2c066a=_0x278f7d,_0x2c77bb=_0x32c442[_0x2c066a(0x7a)],_0x3ade34=_0x2c77bb?.[_0x2c066a(0x6c)]?.[_0x2c066a(0x76)]??_0x32c442[_0x2c066a(0x76)];if(!_0x3ade34)return![];const _0x48dd4a=_0x3ade34 instanceof Element?_0x3ade34:_0x3ade34['parentElement'];return Boolean(_0x48dd4a?.[_0x2c066a(0x74)]('.'+DIALOG_FLOAT_CLASS));}export function preventDialogOutsideClose(_0x1dd16f){const _0x1075f2=_0x278f7d;if(isDialogFloatTarget(_0x1dd16f))_0x1dd16f[_0x1075f2(0x6d)]();}
1
+ function _0x1fc7(_0x3e9b8f,_0xdf9dc2){_0x3e9b8f=_0x3e9b8f-0xa6;const _0x15dec6=_0x15de();let _0x1fc78a=_0x15dec6[_0x3e9b8f];if(_0x1fc7['krlhzb']===undefined){var _0x22dd1a=function(_0x2e0f54){const _0xf16ec1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3b3ecc='',_0x285f9d='';for(let _0x198fa6=0x0,_0x22c474,_0x36b756,_0x423341=0x0;_0x36b756=_0x2e0f54['charAt'](_0x423341++);~_0x36b756&&(_0x22c474=_0x198fa6%0x4?_0x22c474*0x40+_0x36b756:_0x36b756,_0x198fa6++%0x4)?_0x3b3ecc+=String['fromCharCode'](0xff&_0x22c474>>(-0x2*_0x198fa6&0x6)):0x0){_0x36b756=_0xf16ec1['indexOf'](_0x36b756);}for(let _0x49b5ee=0x0,_0x4d5df4=_0x3b3ecc['length'];_0x49b5ee<_0x4d5df4;_0x49b5ee++){_0x285f9d+='%'+('00'+_0x3b3ecc['charCodeAt'](_0x49b5ee)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x285f9d);};_0x1fc7['XHoFjE']=_0x22dd1a,_0x1fc7['BrCVVX']={},_0x1fc7['krlhzb']=!![];}const _0x2cb5cf=_0x15dec6[0x0],_0x211384=_0x3e9b8f+_0x2cb5cf,_0x31c6d1=_0x1fc7['BrCVVX'][_0x211384];return!_0x31c6d1?(_0x1fc78a=_0x1fc7['XHoFjE'](_0x1fc78a),_0x1fc7['BrCVVX'][_0x211384]=_0x1fc78a):_0x1fc78a=_0x31c6d1,_0x1fc78a;}(function(_0x2611cc,_0x23cdf8){const _0x2dbf2d=_0x1fc7,_0x299e4b=_0x2611cc();while(!![]){try{const _0x37fd2e=parseInt(_0x2dbf2d(0xae))/0x1+parseInt(_0x2dbf2d(0xb4))/0x2+parseInt(_0x2dbf2d(0xa8))/0x3*(-parseInt(_0x2dbf2d(0xb3))/0x4)+parseInt(_0x2dbf2d(0xaa))/0x5*(-parseInt(_0x2dbf2d(0xb5))/0x6)+-parseInt(_0x2dbf2d(0xb0))/0x7+-parseInt(_0x2dbf2d(0xb2))/0x8*(parseInt(_0x2dbf2d(0xa6))/0x9)+-parseInt(_0x2dbf2d(0xaf))/0xa*(-parseInt(_0x2dbf2d(0xac))/0xb);if(_0x37fd2e===_0x23cdf8)break;else _0x299e4b['push'](_0x299e4b['shift']());}catch(_0x9fa263){_0x299e4b['push'](_0x299e4b['shift']());}}}(_0x15de,0xb0eec));export const DIALOG_FLOAT_CLASS='vm-dialog-float';export const POPUP_TRIGGER_GAP=0x2;export function isDialogFloatTarget(_0x3b3ecc){const _0x36ed87=_0x1fc7,_0x285f9d=_0x3b3ecc[_0x36ed87(0xab)],_0x198fa6=_0x285f9d?.[_0x36ed87(0xa9)]?.[_0x36ed87(0xad)]??_0x3b3ecc[_0x36ed87(0xad)];if(!_0x198fa6)return![];const _0x22c474=_0x198fa6 instanceof Element?_0x198fa6:_0x198fa6['parentElement'];return Boolean(_0x22c474?.[_0x36ed87(0xb1)]('.'+DIALOG_FLOAT_CLASS));}export function preventDialogOutsideClose(_0x36b756){const _0x5f467d=_0x1fc7;if(isDialogFloatTarget(_0x36b756))_0x36b756[_0x5f467d(0xa7)]();}function _0x15de(){const _0x428c4a=['ndvyAxrewNK','ChjLDMvUDerLzMf1Bhq','mtvosNbWzMC','B3jPz2LUywXfDMvUDa','nwPlDvPQsq','zgv0ywLS','mtfdteTHt1i','DgfYz2v0','nZKXmdCWEw1ZvLjf','mtyYnJe4nZbgqvLYyuC','mtq0mtuZmuHlsNjMCW','y2XVC2vZDa','nZK1nZy4vxDys3jJ','ntq2mZmYs0XHuhbO','mtGWndq0nNnSD1rbrG','nZi1mtm2nLf0A3fKBq'];_0x15de=function(){return _0x428c4a;};return _0x15de();}