vome-core 0.3.6 → 0.3.8
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/components/vm-dept-tree.vue +110 -172
- package/dist/admin/components/vm-loading.vue +113 -0
- package/dist/admin/crud/auto-fields.js +1 -1
- package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
- package/dist/admin/crud/components/vm-select.vue +96 -5
- 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/index.d.ts +0 -1
- package/dist/admin/crud/index.js +0 -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/crud/vm-upsert.vue +0 -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.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/admin/styles/base.css +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-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.js +1 -1
- package/dist/shared/datetime-picker.js +1 -1
- package/dist/shared/excel.js +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 +1 -1
- package/dist/admin/crud/components/vm-user-select.vue +0 -234
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
:loading="loading"
|
|
6
6
|
:add="canAdd && !onlyTrashed"
|
|
7
7
|
add-title="新增顶级部门"
|
|
8
|
-
@refresh="
|
|
8
|
+
@refresh="emit('refresh')"
|
|
9
9
|
@add="openAdd(null)"
|
|
10
10
|
>
|
|
11
11
|
<button
|
|
@@ -56,13 +56,13 @@
|
|
|
56
56
|
</button>
|
|
57
57
|
</div>
|
|
58
58
|
<div v-else-if="!onlyTrashed && canManage" class="vm-dept-tree__ops" @click.stop>
|
|
59
|
-
<button type="button" title="新增子部门" @click="openAdd(row.id)">
|
|
59
|
+
<button v-if="canAdd" type="button" title="新增子部门" @click="openAdd(row.id)">
|
|
60
60
|
<i class="ri-add-line" />
|
|
61
61
|
</button>
|
|
62
|
-
<button type="button" title="编辑" @click="openEdit(row)">
|
|
62
|
+
<button v-if="canUpdate" type="button" title="编辑" @click="openEdit(row)">
|
|
63
63
|
<i class="ri-edit-line" />
|
|
64
64
|
</button>
|
|
65
|
-
<button type="button" title="删除" @click="remove(row)">
|
|
65
|
+
<button v-if="canDelete" type="button" title="删除" @click="remove(row)">
|
|
66
66
|
<i class="ri-delete-bin-line" />
|
|
67
67
|
</button>
|
|
68
68
|
</div>
|
|
@@ -101,20 +101,20 @@
|
|
|
101
101
|
</template>
|
|
102
102
|
|
|
103
103
|
<script setup lang="ts">
|
|
104
|
-
import {
|
|
105
|
-
import { ref, computed, watch, onMounted } from 'vue'
|
|
104
|
+
import { ref, computed, watch } from 'vue'
|
|
106
105
|
import { toast } from 'vue-sonner'
|
|
107
|
-
import {
|
|
106
|
+
import { flattenTree } from '../lib/tree'
|
|
108
107
|
import { vmConfirm } from '../crud/confirm'
|
|
109
108
|
|
|
110
109
|
defineOptions({ name: 'vm-dept-tree' })
|
|
111
110
|
|
|
112
|
-
|
|
111
|
+
/** 调用方须先组装好的树节点(含 children),组件不再做扁平→树转换 */
|
|
112
|
+
export type DeptTreeNode = {
|
|
113
113
|
id: number
|
|
114
114
|
parentId: number | null
|
|
115
115
|
orderNum: number
|
|
116
116
|
name: string
|
|
117
|
-
children?:
|
|
117
|
+
children?: DeptTreeNode[]
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
type FlatRow = {
|
|
@@ -129,64 +129,70 @@ type FlatRow = {
|
|
|
129
129
|
|
|
130
130
|
const props = withDefaults(
|
|
131
131
|
defineProps<{
|
|
132
|
+
/** 已是树形结构的部门数据 */
|
|
133
|
+
data?: DeptTreeNode[]
|
|
134
|
+
loading?: boolean
|
|
132
135
|
modelValue?: number | null
|
|
133
136
|
rootLabel?: string
|
|
134
|
-
/**
|
|
137
|
+
/** 回收站 UI:隐藏新增,显示恢复/彻底删除 */
|
|
135
138
|
onlyTrashed?: boolean
|
|
139
|
+
canAdd?: boolean
|
|
140
|
+
canUpdate?: boolean
|
|
141
|
+
canDelete?: boolean
|
|
142
|
+
canRestore?: boolean
|
|
136
143
|
}>(),
|
|
137
144
|
{
|
|
145
|
+
data: () => [],
|
|
146
|
+
loading: false,
|
|
138
147
|
modelValue: null,
|
|
139
148
|
rootLabel: '全部',
|
|
140
149
|
onlyTrashed: false,
|
|
150
|
+
canAdd: false,
|
|
151
|
+
canUpdate: false,
|
|
152
|
+
canDelete: false,
|
|
153
|
+
canRestore: false,
|
|
141
154
|
},
|
|
142
155
|
)
|
|
143
156
|
|
|
144
157
|
const emit = defineEmits<{
|
|
145
158
|
'update:modelValue': [v: number | null]
|
|
146
159
|
change: [v: number | null, meta: { name: string; ids: number[] }]
|
|
147
|
-
|
|
160
|
+
refresh: []
|
|
161
|
+
add: [payload: { name: string; orderNum: number; parentId: number | null }]
|
|
162
|
+
update: [payload: { id: number; name: string; orderNum: number; parentId: number | null }]
|
|
163
|
+
delete: [payload: { id: number }]
|
|
164
|
+
restore: [payload: { id: number }]
|
|
165
|
+
forceDelete: [payload: { id: number }]
|
|
148
166
|
}>()
|
|
149
167
|
|
|
150
|
-
const { service } = useVome()
|
|
151
|
-
|
|
152
|
-
const loading = ref(false)
|
|
153
168
|
const submitting = ref(false)
|
|
154
|
-
const rows = ref<DeptRow[]>([])
|
|
155
169
|
const expanded = ref(new Set<number>())
|
|
156
170
|
const formOpen = ref(false)
|
|
157
171
|
const formMode = ref<'add' | 'edit'>('add')
|
|
158
172
|
const form = ref({ id: 0, name: '', orderNum: '0', parentId: null as number | null })
|
|
159
173
|
const parentName = ref('顶级')
|
|
174
|
+
const trashBusyId = ref<number | null>(null)
|
|
160
175
|
|
|
161
|
-
const canAdd = computed(() => Boolean(service.base.department?._permission?.add))
|
|
162
176
|
const canManage = computed(
|
|
163
|
-
() =>
|
|
164
|
-
Boolean(service.base.department?._permission?.update) ||
|
|
165
|
-
Boolean(service.base.department?._permission?.delete) ||
|
|
166
|
-
canAdd.value,
|
|
167
|
-
)
|
|
168
|
-
const canTrashOps = computed(
|
|
169
|
-
() =>
|
|
170
|
-
Boolean(service.base.department?._permission?.restore) ||
|
|
171
|
-
Boolean(service.base.department?._permission?.delete),
|
|
177
|
+
() => props.canAdd || props.canUpdate || props.canDelete,
|
|
172
178
|
)
|
|
173
|
-
const
|
|
179
|
+
const canTrashOps = computed(() => props.canRestore || props.canDelete)
|
|
174
180
|
|
|
175
181
|
const idNameMap = computed(() => {
|
|
176
182
|
const map = new Map<number, string>()
|
|
177
|
-
const walk = (list:
|
|
183
|
+
const walk = (list: DeptTreeNode[]) => {
|
|
178
184
|
for (const n of list) {
|
|
179
185
|
map.set(n.id, n.name)
|
|
180
186
|
if (n.children?.length) walk(n.children)
|
|
181
187
|
}
|
|
182
188
|
}
|
|
183
|
-
walk(
|
|
189
|
+
walk(props.data)
|
|
184
190
|
return map
|
|
185
191
|
})
|
|
186
192
|
|
|
187
193
|
const descendantMap = computed(() => {
|
|
188
194
|
const map = new Map<number, number[]>()
|
|
189
|
-
const walk = (node:
|
|
195
|
+
const walk = (node: DeptTreeNode): number[] => {
|
|
190
196
|
let ids: number[] = []
|
|
191
197
|
for (const c of node.children || []) {
|
|
192
198
|
ids.push(c.id)
|
|
@@ -195,11 +201,11 @@ const descendantMap = computed(() => {
|
|
|
195
201
|
map.set(node.id, ids)
|
|
196
202
|
return ids
|
|
197
203
|
}
|
|
198
|
-
for (const n of
|
|
204
|
+
for (const n of props.data) walk(n)
|
|
199
205
|
return map
|
|
200
206
|
})
|
|
201
207
|
|
|
202
|
-
function collectExpandable(list:
|
|
208
|
+
function collectExpandable(list: DeptTreeNode[], into: Set<number>) {
|
|
203
209
|
for (const n of list) {
|
|
204
210
|
if (n.children?.length) {
|
|
205
211
|
into.add(n.id)
|
|
@@ -208,39 +214,21 @@ function collectExpandable(list: DeptRow[], into: Set<number>) {
|
|
|
208
214
|
}
|
|
209
215
|
}
|
|
210
216
|
|
|
211
|
-
|
|
212
|
-
const flat =
|
|
213
|
-
|
|
214
|
-
.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
function flatten(nodes: DeptRow[], depth = 0, out: FlatRow[] = []) {
|
|
224
|
-
for (const n of nodes) {
|
|
225
|
-
const kids = n.children || []
|
|
226
|
-
out.push({
|
|
227
|
-
id: n.id,
|
|
228
|
-
label: n.name,
|
|
229
|
-
depth,
|
|
230
|
-
hasChildren: kids.length > 0,
|
|
231
|
-
visible: true,
|
|
232
|
-
parentId: n.parentId,
|
|
233
|
-
orderNum: n.orderNum,
|
|
234
|
-
})
|
|
235
|
-
if (kids.length && expanded.value.has(n.id)) flatten(kids, depth + 1, out)
|
|
236
|
-
}
|
|
237
|
-
return out
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
const visibleRows = computed(() => flatten(rows.value))
|
|
217
|
+
const visibleRows = computed((): FlatRow[] => {
|
|
218
|
+
const flat = flattenTree(props.data, expanded.value)
|
|
219
|
+
return flat.map((n) => ({
|
|
220
|
+
id: n.id as number,
|
|
221
|
+
label: n.name,
|
|
222
|
+
depth: n.depth,
|
|
223
|
+
hasChildren: n.hasChildren,
|
|
224
|
+
visible: true,
|
|
225
|
+
parentId: n.parentId ?? null,
|
|
226
|
+
orderNum: n.orderNum ?? 0,
|
|
227
|
+
}))
|
|
228
|
+
})
|
|
241
229
|
|
|
242
230
|
const emptyText = computed(() => {
|
|
243
|
-
if (loading
|
|
231
|
+
if (props.loading || visibleRows.value.length) return ''
|
|
244
232
|
return props.onlyTrashed ? '回收站为空' : '暂无部门'
|
|
245
233
|
})
|
|
246
234
|
|
|
@@ -262,83 +250,25 @@ function toggleExpand(id: number) {
|
|
|
262
250
|
expanded.value = next
|
|
263
251
|
}
|
|
264
252
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
rows.value = toTree(Array.isArray(list) ? list : [])
|
|
272
|
-
const next = new Set<number>()
|
|
273
|
-
collectExpandable(rows.value, next)
|
|
274
|
-
expanded.value = next
|
|
275
|
-
if (props.modelValue != null && !idNameMap.value.has(props.modelValue)) {
|
|
276
|
-
select(null)
|
|
277
|
-
}
|
|
278
|
-
} catch (e) {
|
|
279
|
-
console.error('[dept-tree] load failed', e)
|
|
280
|
-
rows.value = []
|
|
281
|
-
toast.error('加载部门失败')
|
|
282
|
-
} finally {
|
|
283
|
-
loading.value = false
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
async function restoreDept(row: FlatRow) {
|
|
288
|
-
if (trashBusyId.value === row.id) return
|
|
289
|
-
const ok = await vmConfirm({
|
|
290
|
-
title: '恢复部门',
|
|
291
|
-
message: `确定恢复「${row.label}」?`,
|
|
292
|
-
confirmText: '恢复',
|
|
293
|
-
cancelText: '取消',
|
|
294
|
-
})
|
|
295
|
-
if (!ok) return
|
|
296
|
-
trashBusyId.value = row.id
|
|
297
|
-
try {
|
|
298
|
-
await service.base.department.restore({ ids: [row.id] })
|
|
299
|
-
toast.success('已恢复')
|
|
300
|
-
if (props.modelValue === row.id) select(null)
|
|
301
|
-
await load()
|
|
302
|
-
emit('updated')
|
|
303
|
-
} catch (e) {
|
|
304
|
-
console.error(e)
|
|
305
|
-
const err = e as Error & { toasted?: boolean }
|
|
306
|
-
if (!err.toasted) toast.error(e instanceof Error ? e.message : '恢复失败')
|
|
307
|
-
} finally {
|
|
308
|
-
trashBusyId.value = null
|
|
253
|
+
function syncExpandedFromData() {
|
|
254
|
+
const next = new Set<number>()
|
|
255
|
+
collectExpandable(props.data, next)
|
|
256
|
+
expanded.value = next
|
|
257
|
+
if (props.modelValue != null && !idNameMap.value.has(props.modelValue)) {
|
|
258
|
+
select(null)
|
|
309
259
|
}
|
|
310
260
|
}
|
|
311
261
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
confirmText: '彻底删除',
|
|
318
|
-
cancelText: '取消',
|
|
319
|
-
})
|
|
320
|
-
if (!ok) return
|
|
321
|
-
trashBusyId.value = row.id
|
|
322
|
-
try {
|
|
323
|
-
await service.base.department.delete({ ids: [row.id], force: true })
|
|
324
|
-
toast.success('已彻底删除')
|
|
325
|
-
if (props.modelValue === row.id) select(null)
|
|
326
|
-
await load()
|
|
327
|
-
emit('updated')
|
|
328
|
-
} catch (e) {
|
|
329
|
-
console.error(e)
|
|
330
|
-
const err = e as Error & { toasted?: boolean }
|
|
331
|
-
if (!err.toasted) toast.error(e instanceof Error ? e.message : '删除失败')
|
|
332
|
-
} finally {
|
|
333
|
-
trashBusyId.value = null
|
|
334
|
-
}
|
|
335
|
-
}
|
|
262
|
+
watch(
|
|
263
|
+
() => props.data,
|
|
264
|
+
() => syncExpandedFromData(),
|
|
265
|
+
{ deep: true, immediate: true },
|
|
266
|
+
)
|
|
336
267
|
|
|
337
268
|
watch(
|
|
338
269
|
() => props.onlyTrashed,
|
|
339
270
|
() => {
|
|
340
271
|
select(null)
|
|
341
|
-
void load()
|
|
342
272
|
},
|
|
343
273
|
)
|
|
344
274
|
|
|
@@ -363,36 +293,25 @@ function openEdit(row: FlatRow) {
|
|
|
363
293
|
formOpen.value = true
|
|
364
294
|
}
|
|
365
295
|
|
|
366
|
-
|
|
296
|
+
function submitForm() {
|
|
367
297
|
const name = form.value.name.trim()
|
|
368
298
|
if (!name) {
|
|
369
299
|
toast.error('请填写部门名称')
|
|
370
300
|
return
|
|
371
301
|
}
|
|
372
302
|
submitting.value = true
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
} else {
|
|
383
|
-
await service.base.department.update({ ...payload, id: form.value.id })
|
|
384
|
-
toast.success('已保存部门')
|
|
385
|
-
}
|
|
386
|
-
formOpen.value = false
|
|
387
|
-
await load()
|
|
388
|
-
emit('updated')
|
|
389
|
-
} catch (e) {
|
|
390
|
-
console.error(e)
|
|
391
|
-
const err = e as Error & { toasted?: boolean }
|
|
392
|
-
if (!err.toasted) toast.error(e instanceof Error ? e.message : '保存失败')
|
|
393
|
-
} finally {
|
|
394
|
-
submitting.value = false
|
|
303
|
+
const payload = {
|
|
304
|
+
name,
|
|
305
|
+
orderNum: Number(form.value.orderNum || 0),
|
|
306
|
+
parentId: form.value.parentId,
|
|
307
|
+
}
|
|
308
|
+
if (formMode.value === 'add') {
|
|
309
|
+
emit('add', payload)
|
|
310
|
+
} else {
|
|
311
|
+
emit('update', { ...payload, id: form.value.id })
|
|
395
312
|
}
|
|
313
|
+
formOpen.value = false
|
|
314
|
+
submitting.value = false
|
|
396
315
|
}
|
|
397
316
|
|
|
398
317
|
async function remove(row: FlatRow) {
|
|
@@ -403,27 +322,41 @@ async function remove(row: FlatRow) {
|
|
|
403
322
|
cancelText: '取消',
|
|
404
323
|
})
|
|
405
324
|
if (!ok) return
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
await service.base.department.delete({ ids: [row.id] })
|
|
409
|
-
toast.success('已删除')
|
|
410
|
-
if (props.modelValue === row.id) select(null)
|
|
411
|
-
await load()
|
|
412
|
-
emit('updated')
|
|
413
|
-
} catch (e) {
|
|
414
|
-
console.error(e)
|
|
415
|
-
const err = e as Error & { toasted?: boolean }
|
|
416
|
-
if (!err.toasted) toast.error(e instanceof Error ? e.message : '删除失败')
|
|
417
|
-
} finally {
|
|
418
|
-
submitting.value = false
|
|
419
|
-
}
|
|
325
|
+
if (props.modelValue === row.id) select(null)
|
|
326
|
+
emit('delete', { id: row.id })
|
|
420
327
|
}
|
|
421
328
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
329
|
+
async function restoreDept(row: FlatRow) {
|
|
330
|
+
if (trashBusyId.value === row.id) return
|
|
331
|
+
const ok = await vmConfirm({
|
|
332
|
+
title: '恢复部门',
|
|
333
|
+
message: `确定恢复「${row.label}」?`,
|
|
334
|
+
confirmText: '恢复',
|
|
335
|
+
cancelText: '取消',
|
|
336
|
+
})
|
|
337
|
+
if (!ok) return
|
|
338
|
+
trashBusyId.value = row.id
|
|
339
|
+
if (props.modelValue === row.id) select(null)
|
|
340
|
+
emit('restore', { id: row.id })
|
|
341
|
+
trashBusyId.value = null
|
|
342
|
+
}
|
|
425
343
|
|
|
426
|
-
|
|
344
|
+
async function forceDeleteDept(row: FlatRow) {
|
|
345
|
+
if (trashBusyId.value === row.id) return
|
|
346
|
+
const ok = await vmConfirm({
|
|
347
|
+
title: '彻底删除',
|
|
348
|
+
message: `确定彻底删除「${row.label}」?此操作不可恢复。`,
|
|
349
|
+
confirmText: '彻底删除',
|
|
350
|
+
cancelText: '取消',
|
|
351
|
+
})
|
|
352
|
+
if (!ok) return
|
|
353
|
+
trashBusyId.value = row.id
|
|
354
|
+
if (props.modelValue === row.id) select(null)
|
|
355
|
+
emit('forceDelete', { id: row.id })
|
|
356
|
+
trashBusyId.value = null
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
defineExpose({ idNameMap })
|
|
427
360
|
</script>
|
|
428
361
|
|
|
429
362
|
<style lang="scss" scoped>
|
|
@@ -529,6 +462,11 @@ defineExpose({ load, idNameMap })
|
|
|
529
462
|
background: var(--card);
|
|
530
463
|
color: var(--brand);
|
|
531
464
|
}
|
|
465
|
+
|
|
466
|
+
&:disabled {
|
|
467
|
+
opacity: 0.5;
|
|
468
|
+
cursor: not-allowed;
|
|
469
|
+
}
|
|
532
470
|
}
|
|
533
471
|
}
|
|
534
472
|
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
v-if="mode === 'overlay'"
|
|
4
|
+
class="vm-loading vm-loading--overlay"
|
|
5
|
+
:class="{ 'is-fixed': fixed }"
|
|
6
|
+
:style="overlayStyle"
|
|
7
|
+
aria-busy="true"
|
|
8
|
+
aria-live="polite"
|
|
9
|
+
>
|
|
10
|
+
<i
|
|
11
|
+
class="ri-loader-4-line vm-loading__spinner"
|
|
12
|
+
:style="spinnerStyle"
|
|
13
|
+
aria-hidden="true"
|
|
14
|
+
/>
|
|
15
|
+
</div>
|
|
16
|
+
<div
|
|
17
|
+
v-else
|
|
18
|
+
class="vm-loading vm-loading--footer"
|
|
19
|
+
:style="footerStyle"
|
|
20
|
+
role="status"
|
|
21
|
+
>
|
|
22
|
+
{{ status === 'end' ? endText : loadingText }}
|
|
23
|
+
</div>
|
|
24
|
+
</template>
|
|
25
|
+
|
|
26
|
+
<script setup lang="ts">
|
|
27
|
+
import { computed } from 'vue'
|
|
28
|
+
|
|
29
|
+
defineOptions({ name: 'vm-loading' })
|
|
30
|
+
|
|
31
|
+
const props = withDefaults(
|
|
32
|
+
defineProps<{
|
|
33
|
+
/** overlay:蒙层转圈;footer:列表底部文案 */
|
|
34
|
+
mode?: 'overlay' | 'footer'
|
|
35
|
+
/** footer:loading = 加载中…;end = 没有更多了 */
|
|
36
|
+
status?: 'loading' | 'end'
|
|
37
|
+
/** overlay 蒙层色,默认主题半透明 card */
|
|
38
|
+
overlayColor?: string
|
|
39
|
+
/** overlay 转圈色,默认 --brand */
|
|
40
|
+
spinnerColor?: string
|
|
41
|
+
/** footer 文案色,默认 --muted-foreground */
|
|
42
|
+
textColor?: string
|
|
43
|
+
/** overlay 是否 fixed 盖住视口;默认 absolute 盖住定位父级 */
|
|
44
|
+
fixed?: boolean
|
|
45
|
+
loadingText?: string
|
|
46
|
+
endText?: string
|
|
47
|
+
}>(),
|
|
48
|
+
{
|
|
49
|
+
mode: 'overlay',
|
|
50
|
+
status: 'loading',
|
|
51
|
+
fixed: false,
|
|
52
|
+
loadingText: '加载中...',
|
|
53
|
+
endText: '没有更多了',
|
|
54
|
+
},
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
const overlayStyle = computed(() => ({
|
|
58
|
+
background:
|
|
59
|
+
props.overlayColor ||
|
|
60
|
+
'color-mix(in srgb, var(--card) 70%, transparent)',
|
|
61
|
+
}))
|
|
62
|
+
|
|
63
|
+
const spinnerStyle = computed(() => ({
|
|
64
|
+
color: props.spinnerColor || 'var(--brand)',
|
|
65
|
+
}))
|
|
66
|
+
|
|
67
|
+
const footerStyle = computed(() => ({
|
|
68
|
+
color: props.textColor || 'var(--muted-foreground)',
|
|
69
|
+
}))
|
|
70
|
+
</script>
|
|
71
|
+
|
|
72
|
+
<style lang="scss" scoped>
|
|
73
|
+
.vm-loading--overlay {
|
|
74
|
+
position: absolute;
|
|
75
|
+
inset: 0;
|
|
76
|
+
z-index: 20;
|
|
77
|
+
display: flex;
|
|
78
|
+
align-items: center;
|
|
79
|
+
justify-content: center;
|
|
80
|
+
backdrop-filter: blur(1px);
|
|
81
|
+
pointer-events: all;
|
|
82
|
+
|
|
83
|
+
&.is-fixed {
|
|
84
|
+
position: fixed;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.vm-loading__spinner {
|
|
89
|
+
font-size: 28px;
|
|
90
|
+
line-height: 1;
|
|
91
|
+
animation: vm-loading-spin 0.8s linear infinite;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.vm-loading--footer {
|
|
95
|
+
display: flex;
|
|
96
|
+
box-sizing: border-box;
|
|
97
|
+
width: 100%;
|
|
98
|
+
min-height: 36px;
|
|
99
|
+
align-items: center;
|
|
100
|
+
justify-content: center;
|
|
101
|
+
margin: 0;
|
|
102
|
+
padding: 8px 0;
|
|
103
|
+
background: transparent;
|
|
104
|
+
font-size: 12px;
|
|
105
|
+
text-align: center;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@keyframes vm-loading-spin {
|
|
109
|
+
to {
|
|
110
|
+
transform: rotate(360deg);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x1ddfcd=_0x23b8;(function(_0x160406,_0xe6a9a3){const _0x23cdb4=_0x23b8,_0x593bf5=_0x160406();while(!![]){try{const _0x634313=-parseInt(_0x23cdb4(0xb8))/0x1+parseInt(_0x23cdb4(0xdf))/0x2*(-parseInt(_0x23cdb4(0xb5))/0x3)+parseInt(_0x23cdb4(0xc4))/0x4*(-parseInt(_0x23cdb4(0xd1))/0x5)+parseInt(_0x23cdb4(0xa6))/0x6+-parseInt(_0x23cdb4(0xa4))/0x7*(-parseInt(_0x23cdb4(0xa9))/0x8)+-parseInt(_0x23cdb4(0xad))/0x9*(parseInt(_0x23cdb4(0xa0))/0xa)+-parseInt(_0x23cdb4(0xb6))/0xb*(-parseInt(_0x23cdb4(0xba))/0xc);if(_0x634313===_0xe6a9a3)break;else _0x593bf5['push'](_0x593bf5['shift']());}catch(_0x20d1be){_0x593bf5['push'](_0x593bf5['shift']());}}}(_0x4f1a,0xf2e91));import{findEpsEntity}from'../lib/eps';import{getDictOptions}from'../../client';export const UPSERT_BUILTIN_IGNORE=['id',_0x1ddfcd(0xd8),_0x1ddfcd(0xd5),_0x1ddfcd(0xbf),_0x1ddfcd(0xc0)];export const TABLE_BUILTIN_IGNORE=[_0x1ddfcd(0xc0),_0x1ddfcd(0xbf)];function dictKeyOf(_0x2e0194){const _0x602a2a=_0x1ddfcd;if(typeof _0x2e0194['dict']==='string'&&_0x2e0194[_0x602a2a(0xda)])return _0x2e0194[_0x602a2a(0xda)];if(Array[_0x602a2a(0xa2)](_0x2e0194[_0x602a2a(0xda)])&&_0x2e0194['dict'][0x0])return _0x2e0194[_0x602a2a(0xda)][0x0];return;}function isSwitchDict(_0x217273){const _0x5a7ac2=_0x1ddfcd;return _0x217273===_0x5a7ac2(0xb2)||_0x217273===_0x5a7ac2(0xb1);}function switchFormItem(_0x1fd436,_0x3290ba,_0x13b57a){const _0x4a4953=_0x1ddfcd;return{..._0x1fd436,'type':_0x4a4953(0xdd),'value':_0x13b57a,'dict':_0x3290ba,'component':{'props':()=>mapDictOptions(_0x3290ba)}};}function _0x4f1a(){const _0x4c4a0a=['zwrPDa','DgvUyw50swq','BMfTzxnWywnL','zgLJDa','Aw5WDxq','CMvXDwLYzwq','C3DPDgnO','ugDcB29SzwfU','mtrRsNPxAg8','BgfIzwW','mJa2mde0mhPXDfjUEG','ywrK','AxnbCNjHEq','DM0TC3DPDgnO','mZvyBKLHz0W','C2vSzwn0','ndGWmdC2oeT1q1bjzq','y29SDw1UCW','C2vSzwn0Aw9U','mta5nty2ng9NreDRCW','BNvTyMvY','DgvZDa','zNvUy3rPB24','owzuzLD1tW','y29SB3i','yM9VBgvHBG','C2nHBgu','EwvZx25V','C3rHDhvZ','C3rHCNrZv2L0Aa','ugDcAwDjBNq','mZeYndu2BfDYt3ju','nJm4D1PLBwDo','y29TBwvUDa','odKWodK0sM1YuwfO','ugDeB3vIBgvqCMvJAxnPB24','mZG4mJm2u0znt1zx','Dg9mB3DLCKnHC2u','C291CMnL','ugDjBNrLz2vY','BNvSBgfIBgu','DxbKyxrLvgLTzq','zgvSzxrLvgLTzq','ChjVCa','ugDcAwDtzxjPywW','C3rYAw5N','mtjVsw9RAeO','ugDoDw1LCMLJ','ChjVCgvYDhLoyw1L','ugDuzxH0','ugDtzxjPywW','DhLWzq','ChvZAa','ugDtBwfSBfnLCMLHBa','zMLSDgvY','ugDszwfS','CMLNAhq','y29SDw1UvhLWzq','AgfZ','otaWnZy1wgrns3vA','CgfNzunVBhvTBNm','DMfSDwu','BwfW','y3jLyxrLvgLTzq','C3fSvhLWzq'];_0x4f1a=function(){return _0x4c4a0a;};return _0x4f1a();}export function mapDictOptions(_0x333551){const _0x3e6db3=_0x1ddfcd;return getDictOptions(_0x333551)[_0x3e6db3(0xd4)](_0x3098a2=>{const _0x51bfbe=_0x3e6db3;let _0x7f9cb0=_0x3098a2[_0x51bfbe(0xd3)];return typeof _0x3098a2['value']===_0x51bfbe(0xc3)&&/^-?\d+(\.\d+)?$/['test'](_0x3098a2[_0x51bfbe(0xd3)])&&(_0x7f9cb0=Number(_0x3098a2[_0x51bfbe(0xd3)])),{'label':String(_0x3098a2[_0x51bfbe(0xe0)]??''),'value':_0x7f9cb0,'color':_0x3098a2[_0x51bfbe(0xae)]};});}function isMainTableCol(_0xaf5259){const _0x277059=_0x1ddfcd;return!_0xaf5259[_0x277059(0xbc)]||_0xaf5259[_0x277059(0xbc)][_0x277059(0xb3)]('a.');}function epsColumns(_0x36d76f){const _0x30a14e=_0x1ddfcd,_0x2d050d=_0x36d76f[_0x30a14e(0xd9)]?findEpsEntity('/'+_0x36d76f[_0x30a14e(0xd9)]):undefined;if(!_0x2d050d)return[];const _0x43df18=[..._0x2d050d[_0x30a14e(0xa7)]||[],..._0x2d050d[_0x30a14e(0xd2)]||[]],_0x168e08=new Set(),_0x5f2763=[];for(const _0x3a59d1 of _0x43df18){if(!_0x3a59d1[_0x30a14e(0xc6)]||!isMainTableCol(_0x3a59d1))continue;if(_0x168e08[_0x30a14e(0xd0)](_0x3a59d1[_0x30a14e(0xc6)]))continue;_0x168e08[_0x30a14e(0xa1)](_0x3a59d1[_0x30a14e(0xc6)]),_0x5f2763[_0x30a14e(0xca)](_0x3a59d1);}return _0x5f2763;}function columnTypeOf(_0x5bf33e){const _0x17089c=_0x1ddfcd;return String(_0x5bf33e[_0x17089c(0xcf)]||'');}function sqlTypeOf(_0x348f7b){const _0x523433=_0x1ddfcd;return String(_0x348f7b[_0x523433(0xd6)]||'')[_0x523433(0xbb)]();}function isTextCol(_0x562a80){const _0x5412f2=_0x1ddfcd,_0x331d93=columnTypeOf(_0x562a80);if(_0x331d93===_0x5412f2(0xc7))return!![];return sqlTypeOf(_0x562a80)==='text';}function isIntegerCol(_0x4a992b){const _0x4cdf4e=_0x1ddfcd,_0x5a69e2=columnTypeOf(_0x4a992b);if(_0x5a69e2===_0x4cdf4e(0xbd)||_0x5a69e2===_0x4cdf4e(0xc8)||_0x5a69e2==='PgSmallInt'||_0x5a69e2===_0x4cdf4e(0xb4)||_0x5a69e2===_0x4cdf4e(0xcb)||_0x5a69e2===_0x4cdf4e(0xc2))return!![];if(_0x4a992b[_0x4cdf4e(0xc9)]===_0x4cdf4e(0xaa)&&!isNumericCol(_0x4a992b))return!![];return/^(integer|serial|smallint|bigint|smallserial|bigserial)\b/[_0x4cdf4e(0xab)](sqlTypeOf(_0x4a992b));}function _0x23b8(_0xd6b6bd,_0x4dbac1){_0xd6b6bd=_0xd6b6bd-0xa0;const _0x4f1a66=_0x4f1a();let _0x23b831=_0x4f1a66[_0xd6b6bd];if(_0x23b8['NTlCPZ']===undefined){var _0x25ef93=function(_0x23861e){const _0x578689='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2e0194='',_0x217273='';for(let _0x1fd436=0x0,_0x3290ba,_0x13b57a,_0x333551=0x0;_0x13b57a=_0x23861e['charAt'](_0x333551++);~_0x13b57a&&(_0x3290ba=_0x1fd436%0x4?_0x3290ba*0x40+_0x13b57a:_0x13b57a,_0x1fd436++%0x4)?_0x2e0194+=String['fromCharCode'](0xff&_0x3290ba>>(-0x2*_0x1fd436&0x6)):0x0){_0x13b57a=_0x578689['indexOf'](_0x13b57a);}for(let _0x3098a2=0x0,_0x7f9cb0=_0x2e0194['length'];_0x3098a2<_0x7f9cb0;_0x3098a2++){_0x217273+='%'+('00'+_0x2e0194['charCodeAt'](_0x3098a2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x217273);};_0x23b8['EOJJdq']=_0x25ef93,_0x23b8['dvtDfs']={},_0x23b8['NTlCPZ']=!![];}const _0x1c27f4=_0x4f1a66[0x0],_0x399a0f=_0xd6b6bd+_0x1c27f4,_0x34cb19=_0x23b8['dvtDfs'][_0x399a0f];return!_0x34cb19?(_0x23b831=_0x23b8['EOJJdq'](_0x23b831),_0x23b8['dvtDfs'][_0x399a0f]=_0x23b831):_0x23b831=_0x34cb19,_0x23b831;}function isNumericCol(_0x441db3){const _0x2369db=_0x1ddfcd,_0x19b7f2=columnTypeOf(_0x441db3);if(_0x19b7f2===_0x2369db(0xc5)||_0x19b7f2===_0x2369db(0xb9)||_0x19b7f2===_0x2369db(0xcd))return!![];return/^(numeric|decimal|double|real)\b/[_0x2369db(0xab)](sqlTypeOf(_0x441db3));}function isBooleanCol(_0x420913){const _0x2c865d=_0x1ddfcd;return columnTypeOf(_0x420913)===_0x2c865d(0xde)||_0x420913[_0x2c865d(0xc9)]===_0x2c865d(0xaf)||sqlTypeOf(_0x420913)[_0x2c865d(0xb3)]('boolean');}function numberPrecision(_0x49e1ec){const _0x23aa96=_0x1ddfcd;if(isIntegerCol(_0x49e1ec))return 0x0;if(typeof _0x49e1ec['scale']===_0x23aa96(0xaa))return _0x49e1ec[_0x23aa96(0xb0)];return 0x2;}export function mergeByProp(_0x1fcaaa,_0x35befa){const _0x45ace7=_0x1ddfcd,_0x57892e=_0x35befa[_0x45ace7(0xcc)](_0xe90cb9=>Boolean(_0xe90cb9[_0x45ace7(0xc1)])),_0x5f00af=_0x35befa['filter'](_0x49b830=>!_0x49b830[_0x45ace7(0xc1)]&&_0x49b830[_0x45ace7(0xc9)]),_0x390926=new Map(_0x57892e[_0x45ace7(0xd4)](_0x153282=>[String(_0x153282['prop']),_0x153282])),_0x3b8976=new Set(_0x5f00af['map'](_0x302648=>String(_0x302648[_0x45ace7(0xc9)]))),_0x2acdf2=new Set(),_0x7df672=[];for(const _0x321a5d of _0x1fcaaa){if(!_0x321a5d[_0x45ace7(0xc1)]&&_0x321a5d[_0x45ace7(0xc9)]){if(_0x3b8976[_0x45ace7(0xd0)](String(_0x321a5d[_0x45ace7(0xc9)])))continue;_0x7df672[_0x45ace7(0xca)](_0x321a5d);continue;}if(!_0x321a5d[_0x45ace7(0xc1)])continue;const _0x1a3b78=String(_0x321a5d[_0x45ace7(0xc1)]),_0x39449d=_0x390926['get'](_0x1a3b78);_0x39449d?(_0x7df672[_0x45ace7(0xca)]({..._0x321a5d,..._0x39449d}),_0x2acdf2['add'](_0x1a3b78)):_0x7df672[_0x45ace7(0xca)](_0x321a5d);}for(const _0x5871ca of _0x57892e){const _0x3863ea=String(_0x5871ca[_0x45ace7(0xc1)]);if(!_0x2acdf2[_0x45ace7(0xd0)](_0x3863ea))_0x7df672['push'](_0x5871ca);}return _0x7df672[_0x45ace7(0xca)](..._0x5f00af),_0x7df672;}export function sortRequiredFirst(_0x5d0fe0){const _0x5ef6ea=_0x1ddfcd,_0x230f56=[],_0xef2043=[];for(const _0x3a4389 of _0x5d0fe0){_0x3a4389[_0x5ef6ea(0xdc)]===!![]||typeof _0x3a4389[_0x5ef6ea(0xdc)]===_0x5ef6ea(0xac)?_0x230f56[_0x5ef6ea(0xca)](_0x3a4389):_0xef2043[_0x5ef6ea(0xca)](_0x3a4389);}return[..._0x230f56,..._0xef2043];}export function buildAutoUpsertItems(_0x48f1aa,_0x6c4eff={}){const _0x384d90=_0x1ddfcd,_0x110ade=new Set([...UPSERT_BUILTIN_IGNORE,..._0x6c4eff['ignoreFields']||[]]),_0x4a54d5=[];for(const _0x1db4e2 of epsColumns(_0x48f1aa)){const _0x4a7096=_0x1db4e2[_0x384d90(0xc6)];if(_0x110ade[_0x384d90(0xd0)](_0x4a7096))continue;const _0x25c1f8=_0x1db4e2['comment']||_0x4a7096,_0x194613=dictKeyOf(_0x1db4e2),_0x5c7f1b=_0x1db4e2[_0x384d90(0xbe)]===![]&&_0x1db4e2['hasDefault']!==!![],_0x5b7792={'prop':_0x4a7096,'label':_0x25c1f8,'span':0xc,..._0x5c7f1b?{'required':!![]}:{}};if(_0x4a7096===_0x384d90(0xb2)){const _0x328374=_0x194613||_0x384d90(0xb2);isSwitchDict(_0x328374)?_0x4a54d5[_0x384d90(0xca)](switchFormItem(_0x5b7792,_0x328374,0x1)):_0x4a54d5[_0x384d90(0xca)]({..._0x5b7792,'type':'select','dict':_0x328374,'value':0x1});continue;}if(_0x194613){isSwitchDict(_0x194613)?_0x4a54d5[_0x384d90(0xca)](switchFormItem(_0x5b7792,_0x194613,_0x194613==='yes_no'?![]:0x1)):_0x4a54d5['push']({..._0x5b7792,'type':_0x384d90(0xa5),'dict':_0x194613,'value':0x0});continue;}if(isTextCol(_0x1db4e2)){_0x4a54d5[_0x384d90(0xca)]({..._0x5b7792,'type':'textarea','span':0xc});continue;}if(isBooleanCol(_0x1db4e2)){_0x4a54d5[_0x384d90(0xca)]({..._0x5b7792,'type':_0x384d90(0xdd),'value':![],'component':{'props':()=>mapDictOptions(_0x384d90(0xb1))},'dict':_0x384d90(0xb1)});continue;}if(isIntegerCol(_0x1db4e2)||isNumericCol(_0x1db4e2)){const _0x241345=numberPrecision(_0x1db4e2);_0x4a54d5['push']({..._0x5b7792,'type':_0x384d90(0xaa),'component':{'props':{'type':_0x384d90(0xaa),'precision':_0x241345,'controls':![]}}});continue;}_0x4a54d5[_0x384d90(0xca)]({..._0x5b7792,'type':_0x384d90(0xdb)});}return _0x4a54d5;}export function buildAutoTableColumns(_0xa1719b,_0x322c2b={}){const _0x2be430=_0x1ddfcd,_0x24f302=new Set([...TABLE_BUILTIN_IGNORE,..._0x322c2b['ignoreFields']||[]]),_0x56df9a=[];!_0x24f302[_0x2be430(0xd0)](_0x2be430(0xa8))&&_0x56df9a[_0x2be430(0xca)]({'type':'selection','width':0x32});for(const _0x4c14ae of epsColumns(_0xa1719b)){const _0xe77f6=_0x4c14ae[_0x2be430(0xc6)];if(_0x24f302['has'](_0xe77f6))continue;const _0x680972=_0x4c14ae[_0x2be430(0xb7)]||_0xe77f6,_0x176fd9=dictKeyOf(_0x4c14ae);if(_0xe77f6===_0x2be430(0xb2)){const _0x55783e=_0x176fd9||_0x2be430(0xb2);isSwitchDict(_0x55783e)?_0x56df9a[_0x2be430(0xca)]({'prop':_0xe77f6,'label':_0x680972,'width':0x50,'fixed':_0x2be430(0xce),'component':{'name':_0x2be430(0xa3),'props':()=>mapDictOptions(_0x55783e)}}):_0x56df9a[_0x2be430(0xca)]({'prop':_0xe77f6,'label':_0x680972,'width':0x64,'fixed':_0x2be430(0xce),'dict':()=>mapDictOptions(_0x55783e)});continue;}if(_0x176fd9&&isSwitchDict(_0x176fd9)){_0x56df9a[_0x2be430(0xca)]({'prop':_0xe77f6,'label':_0x680972,'width':0x50,'component':{'name':_0x2be430(0xa3),'props':()=>mapDictOptions(_0x176fd9)}});continue;}if(_0xe77f6==='id'){_0x56df9a['push']({'prop':_0xe77f6,'label':_0x680972,'width':0x50});continue;}if(_0xe77f6===_0x2be430(0xd5)){_0x56df9a[_0x2be430(0xca)]({'prop':_0xe77f6,'label':_0x680972,'width':0xa0});continue;}if(_0x176fd9){_0x56df9a['push']({'prop':_0xe77f6,'label':_0x680972,'minWidth':0x78,'dict':()=>mapDictOptions(_0x176fd9)});continue;}if(isTextCol(_0x4c14ae)){_0x56df9a[_0x2be430(0xca)]({'prop':_0xe77f6,'label':_0x680972,'minWidth':0xa0,'showOverflowTooltip':!![]});continue;}_0x56df9a[_0x2be430(0xca)]({'prop':_0xe77f6,'label':_0x680972,'minWidth':0x78});}return!_0x24f302[_0x2be430(0xd0)]('op')&&_0x56df9a[_0x2be430(0xca)]({'type':'op','buttons':[_0x2be430(0xd7),'delete']}),_0x56df9a;}
|
|
1
|
+
const _0x4f9bbd=_0x4f1c;(function(_0x25ec11,_0x633a0e){const _0x10afb6=_0x4f1c,_0xb070d0=_0x25ec11();while(!![]){try{const _0x368cb8=-parseInt(_0x10afb6(0x203))/0x1+parseInt(_0x10afb6(0x1e2))/0x2+-parseInt(_0x10afb6(0x207))/0x3+parseInt(_0x10afb6(0x1f3))/0x4*(-parseInt(_0x10afb6(0x1dd))/0x5)+-parseInt(_0x10afb6(0x20e))/0x6*(parseInt(_0x10afb6(0x1fe))/0x7)+-parseInt(_0x10afb6(0x1f7))/0x8*(-parseInt(_0x10afb6(0x206))/0x9)+parseInt(_0x10afb6(0x1ed))/0xa;if(_0x368cb8===_0x633a0e)break;else _0xb070d0['push'](_0xb070d0['shift']());}catch(_0x243b38){_0xb070d0['push'](_0xb070d0['shift']());}}}(_0x5ca9,0x29ed6));import{findEpsEntity}from'../lib/eps';import{getDictOptions}from'../../client';export const UPSERT_BUILTIN_IGNORE=['id',_0x4f9bbd(0x1d5),_0x4f9bbd(0x1df),'updateTime',_0x4f9bbd(0x1ee)];export const TABLE_BUILTIN_IGNORE=[_0x4f9bbd(0x1ee),_0x4f9bbd(0x1e7)];function dictKeyOf(_0x310070){const _0x3fb2ce=_0x4f9bbd;if(typeof _0x310070['dict']===_0x3fb2ce(0x1e0)&&_0x310070['dict'])return _0x310070[_0x3fb2ce(0x1de)];if(Array[_0x3fb2ce(0x1e5)](_0x310070[_0x3fb2ce(0x1de)])&&_0x310070[_0x3fb2ce(0x1de)][0x0])return _0x310070['dict'][0x0];return;}function isSwitchDict(_0x2da269){const _0x126c2f=_0x4f9bbd;return _0x2da269===_0x126c2f(0x1e6)||_0x2da269===_0x126c2f(0x1d3);}function switchFormItem(_0x4a3a61,_0x1ed74d,_0x25bfb6){return{..._0x4a3a61,'type':'switch','value':_0x25bfb6,'dict':_0x1ed74d,'component':{'props':()=>mapDictOptions(_0x1ed74d)}};}export function mapDictOptions(_0x136b3e){const _0x2596d0=_0x4f9bbd;return getDictOptions(_0x136b3e)[_0x2596d0(0x1f1)](_0x3534e7=>{const _0x3ac02a=_0x2596d0;let _0x35d6f2=_0x3534e7[_0x3ac02a(0x1db)];return typeof _0x3534e7[_0x3ac02a(0x1db)]===_0x3ac02a(0x1e0)&&/^-?\d+(\.\d+)?$/[_0x3ac02a(0x1ef)](_0x3534e7[_0x3ac02a(0x1db)])&&(_0x35d6f2=Number(_0x3534e7[_0x3ac02a(0x1db)])),{'label':String(_0x3534e7['label']??''),'value':_0x35d6f2,'color':_0x3534e7[_0x3ac02a(0x1fc)]};});}function isMainTableCol(_0x4b158f){const _0x14a657=_0x4f9bbd;return!_0x4b158f['source']||_0x4b158f[_0x14a657(0x1e9)]['startsWith']('a.');}function epsColumns(_0x5d9f5b){const _0x320985=_0x4f9bbd,_0x1ea518=_0x5d9f5b['namespace']?findEpsEntity('/'+_0x5d9f5b[_0x320985(0x20b)]):undefined;if(!_0x1ea518)return[];const _0x399b98=[..._0x1ea518[_0x320985(0x1d1)]||[],..._0x1ea518['pageColumns']||[]],_0x395cde=new Set(),_0x4f9a15=[];for(const _0x2f9094 of _0x399b98){if(!_0x2f9094[_0x320985(0x200)]||!isMainTableCol(_0x2f9094))continue;if(_0x395cde[_0x320985(0x1fb)](_0x2f9094[_0x320985(0x200)]))continue;_0x395cde['add'](_0x2f9094['propertyName']),_0x4f9a15[_0x320985(0x1e8)](_0x2f9094);}return _0x4f9a15;}function columnTypeOf(_0x43fef2){const _0x44d4e2=_0x4f9bbd;return String(_0x43fef2[_0x44d4e2(0x1d8)]||'');}function sqlTypeOf(_0x5da6a8){const _0x440469=_0x4f9bbd;return String(_0x5da6a8[_0x440469(0x1ea)]||'')[_0x440469(0x202)]();}function isTextCol(_0x53211c){const _0x2d5e0c=_0x4f9bbd,_0x2d0e69=columnTypeOf(_0x53211c);if(_0x2d0e69===_0x2d5e0c(0x208))return!![];return sqlTypeOf(_0x53211c)===_0x2d5e0c(0x209);}function isIntegerCol(_0x13de9b){const _0x498f30=_0x4f9bbd,_0x42692f=columnTypeOf(_0x13de9b);if(_0x42692f===_0x498f30(0x1dc)||_0x42692f===_0x498f30(0x204)||_0x42692f===_0x498f30(0x20c)||_0x42692f===_0x498f30(0x1f8)||_0x42692f===_0x498f30(0x1f9)||_0x42692f==='PgBigSerial')return!![];if(_0x13de9b[_0x498f30(0x1fa)]==='number'&&!isNumericCol(_0x13de9b))return!![];return/^(integer|serial|smallint|bigint|smallserial|bigserial)\b/[_0x498f30(0x1ef)](sqlTypeOf(_0x13de9b));}function isNumericCol(_0x16fff8){const _0x1dbb1e=_0x4f9bbd,_0x31f4a8=columnTypeOf(_0x16fff8);if(_0x31f4a8===_0x1dbb1e(0x1f6)||_0x31f4a8===_0x1dbb1e(0x1d4)||_0x31f4a8==='PgReal')return!![];return/^(numeric|decimal|double|real)\b/[_0x1dbb1e(0x1ef)](sqlTypeOf(_0x16fff8));}function isBooleanCol(_0x4ca9d5){const _0x3a6bfb=_0x4f9bbd;return columnTypeOf(_0x4ca9d5)===_0x3a6bfb(0x205)||_0x4ca9d5['type']===_0x3a6bfb(0x201)||sqlTypeOf(_0x4ca9d5)[_0x3a6bfb(0x1e4)]('boolean');}function numberPrecision(_0x3fe966){const _0x4e852d=_0x4f9bbd;if(isIntegerCol(_0x3fe966))return 0x0;if(typeof _0x3fe966[_0x4e852d(0x1ec)]===_0x4e852d(0x20a))return _0x3fe966[_0x4e852d(0x1ec)];return 0x2;}function _0x4f1c(_0x51901b,_0x1e5139){_0x51901b=_0x51901b-0x1cf;const _0x5ca9e7=_0x5ca9();let _0x4f1c1c=_0x5ca9e7[_0x51901b];if(_0x4f1c['YAmFKa']===undefined){var _0x26d109=function(_0x7a08aa){const _0x4aa226='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x310070='',_0x2da269='';for(let _0x4a3a61=0x0,_0x1ed74d,_0x25bfb6,_0x136b3e=0x0;_0x25bfb6=_0x7a08aa['charAt'](_0x136b3e++);~_0x25bfb6&&(_0x1ed74d=_0x4a3a61%0x4?_0x1ed74d*0x40+_0x25bfb6:_0x25bfb6,_0x4a3a61++%0x4)?_0x310070+=String['fromCharCode'](0xff&_0x1ed74d>>(-0x2*_0x4a3a61&0x6)):0x0){_0x25bfb6=_0x4aa226['indexOf'](_0x25bfb6);}for(let _0x3534e7=0x0,_0x35d6f2=_0x310070['length'];_0x3534e7<_0x35d6f2;_0x3534e7++){_0x2da269+='%'+('00'+_0x310070['charCodeAt'](_0x3534e7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2da269);};_0x4f1c['uGdxYm']=_0x26d109,_0x4f1c['OWnTCL']={},_0x4f1c['YAmFKa']=!![];}const _0x1e68ad=_0x5ca9e7[0x0],_0x59b608=_0x51901b+_0x1e68ad,_0x490c3a=_0x4f1c['OWnTCL'][_0x59b608];return!_0x490c3a?(_0x4f1c1c=_0x4f1c['uGdxYm'](_0x4f1c1c),_0x4f1c['OWnTCL'][_0x59b608]=_0x4f1c1c):_0x4f1c1c=_0x490c3a,_0x4f1c1c;}function _0x5ca9(){const _0x380bb8=['ndGXnti3BKXzBffq','ugDuzxH0','Dgv4Da','BNvTyMvY','BMfTzxnWywnL','ugDtBwfSBeLUDa','Aw5WDxq','mtm3mJu2nKrhtfzywa','C2vSzwn0','zMLSDgvY','y29SDw1UCW','C2vSzwn0Aw9U','EwvZx25V','ugDeB3vIBgvqCMvJAxnPB24','DgvUyw50swq','zNvUy3rPB24','ChjVCa','y29SDw1UvhLWzq','ywrK','C3DPDgnO','DMfSDwu','ugDjBNrLz2vY','mJy2mZbkverKBfi','zgLJDa','y3jLyxrLvgLTzq','C3rYAw5N','BNvSBgfIBgu','nJa3nJi4u2H1CfPT','DM0TC3DPDgnO','C3rHCNrZv2L0Aa','AxnbCNjHEq','C3rHDhvZ','DxbKyxrLvgLTzq','ChvZAa','C291CMnL','C3fSvhLWzq','zwrPDa','C2nHBgu','mZmYodi4mhzPzer1Eq','zgvSzxrLvgLTzq','DgvZDa','AgfZrgvMyxvSDa','BwfW','zgvSzxrL','ogvlCw94wG','z2v0','CMvXDwLYzwq','ugDoDw1LCMLJ','mtK5mZmWngDkAffvqq','ugDcAwDjBNq','ugDtBwfSBfnLCMLHBa','DhLWzq','AgfZ','y29SB3i','CMLNAhq','n1bht3HeEq','AwDUB3jLrMLLBgrZ','ChjVCgvYDhLoyw1L','yM9VBgvHBG','Dg9mB3DLCKnHC2u','mZe0mtq5zNrbrxfL','ugDtzxjPywW','ugDcB29SzwfU','ovnuuMDizG'];_0x5ca9=function(){return _0x380bb8;};return _0x5ca9();}export function mergeByProp(_0x38738a,_0xde5dc7){const _0x1a84b2=_0x4f9bbd,_0x2987b0=_0xde5dc7['filter'](_0x1da208=>Boolean(_0x1da208[_0x1a84b2(0x1d7)])),_0x2b7ef8=_0xde5dc7[_0x1a84b2(0x1d0)](_0x1c1590=>!_0x1c1590[_0x1a84b2(0x1d7)]&&_0x1c1590[_0x1a84b2(0x1fa)]),_0x3f55b8=new Map(_0x2987b0['map'](_0x177e8b=>[String(_0x177e8b[_0x1a84b2(0x1d7)]),_0x177e8b])),_0x2f51dd=new Set(_0x2b7ef8['map'](_0x207514=>String(_0x207514[_0x1a84b2(0x1fa)]))),_0xa85431=new Set(),_0x4467f0=[];for(const _0x1dcc22 of _0x38738a){if(!_0x1dcc22['prop']&&_0x1dcc22['type']){if(_0x2f51dd['has'](String(_0x1dcc22[_0x1a84b2(0x1fa)])))continue;_0x4467f0[_0x1a84b2(0x1e8)](_0x1dcc22);continue;}if(!_0x1dcc22['prop'])continue;const _0x35f0e8=String(_0x1dcc22[_0x1a84b2(0x1d7)]),_0x566bcb=_0x3f55b8[_0x1a84b2(0x1f4)](_0x35f0e8);_0x566bcb?(_0x4467f0[_0x1a84b2(0x1e8)]({..._0x1dcc22,..._0x566bcb}),_0xa85431[_0x1a84b2(0x1d9)](_0x35f0e8)):_0x4467f0['push'](_0x1dcc22);}for(const _0x1674f6 of _0x2987b0){const _0x59ee89=String(_0x1674f6[_0x1a84b2(0x1d7)]);if(!_0xa85431[_0x1a84b2(0x1fb)](_0x59ee89))_0x4467f0['push'](_0x1674f6);}return _0x4467f0[_0x1a84b2(0x1e8)](..._0x2b7ef8),_0x4467f0;}export function sortRequiredFirst(_0x18d2af){const _0x21fc71=_0x4f9bbd,_0x294347=[],_0xfb846a=[];for(const _0x1907d7 of _0x18d2af){_0x1907d7[_0x21fc71(0x1f5)]===!![]||typeof _0x1907d7[_0x21fc71(0x1f5)]===_0x21fc71(0x1d6)?_0x294347[_0x21fc71(0x1e8)](_0x1907d7):_0xfb846a['push'](_0x1907d7);}return[..._0x294347,..._0xfb846a];}export function buildAutoUpsertItems(_0x23e3ca,_0x4d453c={}){const _0x3854c1=_0x4f9bbd,_0x1cbe4d=new Set([...UPSERT_BUILTIN_IGNORE,..._0x4d453c[_0x3854c1(0x1ff)]||[]]),_0x3b69fb=[];for(const _0x1bbeae of epsColumns(_0x23e3ca)){const _0x3243e0=_0x1bbeae[_0x3854c1(0x200)];if(_0x1cbe4d['has'](_0x3243e0))continue;const _0x5bb0aa=_0x1bbeae['comment']||_0x3243e0,_0x47d9ff=dictKeyOf(_0x1bbeae),_0x5f3f7d=_0x1bbeae[_0x3854c1(0x1e1)]===![]&&_0x1bbeae[_0x3854c1(0x1f0)]!==!![],_0x217187={'prop':_0x3243e0,'label':_0x5bb0aa,'span':0xc,..._0x5f3f7d?{'required':!![]}:{}};if(_0x3243e0===_0x3854c1(0x1e6)){const _0x575611=_0x47d9ff||_0x3854c1(0x1e6);isSwitchDict(_0x575611)?_0x3b69fb['push'](switchFormItem(_0x217187,_0x575611,0x1)):_0x3b69fb['push']({..._0x217187,'type':_0x3854c1(0x1cf),'dict':_0x575611,'value':0x1});continue;}if(_0x47d9ff){isSwitchDict(_0x47d9ff)?_0x3b69fb[_0x3854c1(0x1e8)](switchFormItem(_0x217187,_0x47d9ff,_0x47d9ff===_0x3854c1(0x1d3)?![]:0x1)):_0x3b69fb[_0x3854c1(0x1e8)]({..._0x217187,'type':_0x3854c1(0x1cf),'dict':_0x47d9ff,'value':0x0});continue;}if(isTextCol(_0x1bbeae)){_0x3b69fb[_0x3854c1(0x1e8)]({..._0x217187,'type':'textarea','span':0xc});continue;}if(isBooleanCol(_0x1bbeae)){_0x3b69fb[_0x3854c1(0x1e8)]({..._0x217187,'type':_0x3854c1(0x1da),'value':![],'component':{'props':()=>mapDictOptions(_0x3854c1(0x1d3))},'dict':_0x3854c1(0x1d3)});continue;}if(isIntegerCol(_0x1bbeae)||isNumericCol(_0x1bbeae)){const _0x312517=numberPrecision(_0x1bbeae);_0x3b69fb[_0x3854c1(0x1e8)]({..._0x217187,'type':'number','component':{'props':{'type':_0x3854c1(0x20a),'precision':_0x312517,'controls':![]}}});continue;}_0x3b69fb[_0x3854c1(0x1e8)]({..._0x217187,'type':_0x3854c1(0x20d)});}return _0x3b69fb;}export function buildAutoTableColumns(_0x2bcfdb,_0xfee104={}){const _0x33d8c6=_0x4f9bbd,_0x28f811=new Set([...TABLE_BUILTIN_IGNORE,..._0xfee104[_0x33d8c6(0x1ff)]||[]]),_0x5ce4bb=[];!_0x28f811[_0x33d8c6(0x1fb)](_0x33d8c6(0x1d2))&&_0x5ce4bb[_0x33d8c6(0x1e8)]({'type':_0x33d8c6(0x1d2),'width':0x32});for(const _0x58ca6a of epsColumns(_0x2bcfdb)){const _0x350ce9=_0x58ca6a[_0x33d8c6(0x200)];if(_0x28f811[_0x33d8c6(0x1fb)](_0x350ce9))continue;const _0x52e0d9=_0x58ca6a['comment']||_0x350ce9,_0x329389=dictKeyOf(_0x58ca6a);if(_0x350ce9===_0x33d8c6(0x1e6)){const _0xc6a41a=_0x329389||_0x33d8c6(0x1e6);isSwitchDict(_0xc6a41a)?_0x5ce4bb[_0x33d8c6(0x1e8)]({'prop':_0x350ce9,'label':_0x52e0d9,'width':0x50,'fixed':_0x33d8c6(0x1fd),'component':{'name':_0x33d8c6(0x1e3),'props':()=>mapDictOptions(_0xc6a41a)}}):_0x5ce4bb['push']({'prop':_0x350ce9,'label':_0x52e0d9,'width':0x64,'fixed':_0x33d8c6(0x1fd),'dict':()=>mapDictOptions(_0xc6a41a)});continue;}if(_0x329389&&isSwitchDict(_0x329389)){_0x5ce4bb[_0x33d8c6(0x1e8)]({'prop':_0x350ce9,'label':_0x52e0d9,'width':0x50,'component':{'name':_0x33d8c6(0x1e3),'props':()=>mapDictOptions(_0x329389)}});continue;}if(_0x350ce9==='id'){_0x5ce4bb[_0x33d8c6(0x1e8)]({'prop':_0x350ce9,'label':_0x52e0d9,'width':0x50});continue;}if(_0x350ce9===_0x33d8c6(0x1df)){_0x5ce4bb[_0x33d8c6(0x1e8)]({'prop':_0x350ce9,'label':_0x52e0d9,'width':0xa0});continue;}if(_0x329389){_0x5ce4bb[_0x33d8c6(0x1e8)]({'prop':_0x350ce9,'label':_0x52e0d9,'minWidth':0x78,'dict':()=>mapDictOptions(_0x329389)});continue;}if(isTextCol(_0x58ca6a)){_0x5ce4bb['push']({'prop':_0x350ce9,'label':_0x52e0d9,'minWidth':0xa0,'showOverflowTooltip':!![]});continue;}_0x5ce4bb[_0x33d8c6(0x1e8)]({'prop':_0x350ce9,'label':_0x52e0d9,'minWidth':0x78});}return!_0x28f811[_0x33d8c6(0x1fb)]('op')&&_0x5ce4bb[_0x33d8c6(0x1e8)]({'type':'op','buttons':[_0x33d8c6(0x1eb),_0x33d8c6(0x1f2)]}),_0x5ce4bb;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _0x3652(_0x5a1c45,_0x2691ee){_0x5a1c45=_0x5a1c45-0x125;const _0x4ed11a=_0x4ed1();let _0x36526a=_0x4ed11a[_0x5a1c45];if(_0x3652['KqeCZB']===undefined){var _0x5cc66b=function(_0x2784cd){const _0x2d2ec5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x21db61='',_0x5f341a='';for(let _0x21569a=0x0,_0x2a6c7e,_0x2d9890,_0x42a7c2=0x0;_0x2d9890=_0x2784cd['charAt'](_0x42a7c2++);~_0x2d9890&&(_0x2a6c7e=_0x21569a%0x4?_0x2a6c7e*0x40+_0x2d9890:_0x2d9890,_0x21569a++%0x4)?_0x21db61+=String['fromCharCode'](0xff&_0x2a6c7e>>(-0x2*_0x21569a&0x6)):0x0){_0x2d9890=_0x2d2ec5['indexOf'](_0x2d9890);}for(let _0x3c18c0=0x0,_0x56d7fb=_0x21db61['length'];_0x3c18c0<_0x56d7fb;_0x3c18c0++){_0x5f341a+='%'+('00'+_0x21db61['charCodeAt'](_0x3c18c0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5f341a);};_0x3652['NqPCCD']=_0x5cc66b,_0x3652['pTvsDq']={},_0x3652['KqeCZB']=!![];}const _0x3b8df2=_0x4ed11a[0x0],_0x329c93=_0x5a1c45+_0x3b8df2,_0x514919=_0x3652['pTvsDq'][_0x329c93];return!_0x514919?(_0x36526a=_0x3652['NqPCCD'](_0x36526a),_0x3652['pTvsDq'][_0x329c93]=_0x36526a):_0x36526a=_0x514919,_0x36526a;}const _0x2460cc=_0x3652;function _0x4ed1(){const _0x135a05=['y3jLyxrL','DMLKzw9BC3jJxq','BMfTzq','DMLKzw8','mNLivfnOvG','ndeWody4nwXjufvksq','ndCYmZa5mM9IvK5nAa','mte5nde1m3HczxfnCq','mZa3mte4nefdrhbHyq','Bwf4lxDPzhrOoJeWmcu7yM9YzgvYlxjHzgL1CZO4ChG','nJq2mtmXnwTWvgzlsa','8j+qU+kaJEkDHo+4JW','ohffDKryta','Aw5Zzxj0q29UDgvUDa','ndm5mtvlqwfPCee','mta0mtyYohbxAMD6zq','yMXVy2S'];_0x4ed1=function(){return _0x135a05;};return _0x4ed1();}(function(_0x151663,_0x47f636){const _0x54aef5=_0x3652,_0x43644a=_0x151663();while(!![]){try{const _0x501ae0=-parseInt(_0x54aef5(0x12d))/0x1*(parseInt(_0x54aef5(0x134))/0x2)+parseInt(_0x54aef5(0x126))/0x3+parseInt(_0x54aef5(0x12e))/0x4+parseInt(_0x54aef5(0x135))/0x5+parseInt(_0x54aef5(0x127))/0x6+-parseInt(_0x54aef5(0x129))/0x7+parseInt(_0x54aef5(0x12b))/0x8*(-parseInt(_0x54aef5(0x125))/0x9);if(_0x501ae0===_0x47f636)break;else _0x43644a['push'](_0x43644a['shift']());}catch(_0x3e8eb8){_0x43644a['push'](_0x43644a['shift']());}}}(_0x4ed1,0x7a257));import{Node,mergeAttributes}from'@tiptap/core';export const VmRichtextVideo=Node[_0x2460cc(0x130)]({'name':_0x2460cc(0x133),'group':_0x2460cc(0x12f),'atom':!![],'selectable':!![],'draggable':!![],'addAttributes'(){return{'src':{'default':null},'controls':{'default':!![]}};},'parseHTML'(){const _0xc54e37=_0x2460cc;return[{'tag':_0xc54e37(0x131)}];},'renderHTML'({HTMLAttributes:_0x21db61}){const _0x31c7ca=_0x2460cc;return[_0x31c7ca(0x133),mergeAttributes(_0x21db61,{'controls':!![],'style':_0x31c7ca(0x128)})];},'addCommands'(){const _0x49778d=_0x2460cc;return{'setVideo':_0x5f341a=>({commands:_0x21569a})=>_0x21569a[_0x49778d(0x12c)]({'type':this[_0x49778d(0x132)],'attrs':_0x5f341a})};}});export const VM_RICHTEXT_EMOJIS=['\uD83D\uDE00','\uD83D\uDE03','\uD83D\uDE04','\uD83D\uDE01','\uD83D\uDE06','\uD83D\uDE05','\uD83E\uDD23','\uD83D\uDE02','\uD83D\uDE42','\uD83D\uDE43','\uD83D\uDE09','\uD83D\uDE0A','\uD83D\uDE07','\uD83E\uDD70','\uD83D\uDE0D','\uD83E\uDD29','\uD83D\uDE18','\uD83D\uDE17','\uD83D\uDE1A','\uD83D\uDE19','\uD83D\uDE0B','\uD83D\uDE1B','\uD83D\uDE1C','\uD83E\uDD2A','\uD83D\uDE1D','\uD83E\uDD11','\uD83E\uDD17','\uD83E\uDD2D','\uD83E\uDD2B','\uD83E\uDD14','\uD83E\uDD10','\uD83E\uDD28','\uD83D\uDE10','\uD83D\uDE11','\uD83D\uDE36','\uD83D\uDE0F','\uD83D\uDE12','\uD83D\uDE44','\uD83D\uDE2C','\uD83E\uDD25','\uD83D\uDE0C','\uD83D\uDE14','\uD83D\uDE2A','\uD83E\uDD24','\uD83D\uDE34','\uD83D\uDE37','\uD83E\uDD12','\uD83E\uDD15','\uD83E\uDD22','\uD83E\uDD2E','\uD83E\uDD75','\uD83E\uDD76','\uD83E\uDD74','\uD83D\uDE35','\uD83E\uDD2F','\uD83E\uDD20','\uD83E\uDD73','\uD83D\uDE0E','\uD83E\uDD13','\uD83E\uDDD0','\uD83D\uDE15','\uD83D\uDE1F','\uD83D\uDE41','☹️','\uD83D\uDE2E','\uD83D\uDE2F','\uD83D\uDE32','\uD83D\uDE33','\uD83E\uDD7A','\uD83D\uDE26','\uD83D\uDE27','\uD83D\uDE28','\uD83D\uDE30','\uD83D\uDE25','\uD83D\uDE22','\uD83D\uDE2D','\uD83D\uDE31','\uD83D\uDE16','\uD83D\uDE23','\uD83D\uDE1E','\uD83D\uDE13','\uD83D\uDE29','\uD83D\uDE2B','\uD83E\uDD71','\uD83D\uDE24','\uD83D\uDE21','\uD83D\uDE20','\uD83E\uDD2C','\uD83D\uDE08','\uD83D\uDC7F','\uD83D\uDC4B','\uD83E\uDD1A','\uD83D\uDD90','✋','\uD83D\uDD96','\uD83D\uDC4C','\uD83E\uDD0C','\uD83E\uDD0F','✌️','\uD83E\uDD1E','\uD83E\uDD1F','\uD83E\uDD18','\uD83E\uDD19','\uD83D\uDC48','\uD83D\uDC49','\uD83D\uDC46','\uD83D\uDD95','\uD83D\uDC47','☝️','\uD83D\uDC4D','\uD83D\uDC4E','✊','\uD83D\uDC4A','\uD83E\uDD1B','\uD83E\uDD1C','\uD83D\uDC4F','\uD83D\uDE4C','\uD83D\uDC50','\uD83E\uDD32','\uD83E\uDD1D','\uD83D\uDE4F','\uD83D\uDCAA','\uD83E\uDDBE','✍️','\uD83D\uDC85','\uD83E\uDD33','❤️','\uD83E\uDDE1','\uD83D\uDC9B','\uD83D\uDC9A','\uD83D\uDC99','\uD83D\uDC9C','\uD83D\uDDA4','\uD83E\uDD0D','\uD83E\uDD0E','\uD83D\uDC94','❣️','\uD83D\uDC95','\uD83D\uDC9E','\uD83D\uDC93','\uD83D\uDC97','\uD83D\uDC96','\uD83D\uDC98','\uD83D\uDC9D','\uD83D\uDC9F','☮️','✝️','☪️','\uD83D\uDD49','☸️','✡️','\uD83D\uDD2F','\uD83D\uDD4E','☯️','☦️','\uD83D\uDED0','⭐','\uD83C\uDF1F','✨','⚡','\uD83D\uDD25','\uD83D\uDCA5','☀️','\uD83C\uDF19','⭐️','\uD83C\uDF08','✅','❌','⭕','❗','❓','‼️','⁉️','\uD83D\uDCAF','\uD83D\uDD14','\uD83D\uDD15','\uD83D\uDCCC','\uD83D\uDCCD','\uD83D\uDCCE','\uD83D\uDD17','\uD83D\uDD12','\uD83D\uDD13','\uD83D\uDD11','\uD83D\uDDDD','\uD83D\uDCA1','\uD83D\uDD26','\uD83D\uDCDD','✏️','✒️','\uD83D\uDD8A','\uD83D\uDD8B','\uD83D\uDD8C','\uD83D\uDD8D','\uD83D\uDCBC','\uD83D\uDCC1','\uD83D\uDCC2','\uD83D\uDCC5','\uD83D\uDCC6','\uD83D\uDDD3','\uD83D\uDCC7','\uD83D\uDCC8','\uD83D\uDCC9','\uD83D\uDCCA','\uD83D\uDCCB','\uD83D\uDCE4','\uD83D\uDCE5','\uD83D\uDCE6','\uD83D\uDCEB','\uD83D\uDCEC','\uD83D\uDCED','\uD83D\uDCEE','\uD83D\uDCEF','\uD83D\uDCDC','\uD83D\uDCC3','\uD83D\uDCC4','\uD83D\uDCD1','☕','\uD83C\uDF75','\uD83E\uDDC3','\uD83E\uDD64','\uD83E\uDDCB','\uD83C\uDF7A','\uD83C\uDF7B','\uD83E\uDD42','\uD83C\uDF77','\uD83C\uDF78','\uD83C\uDF55','\uD83C\uDF54','\uD83C\uDF5F','\uD83C\uDF2D','\uD83C\uDF7F','\uD83C\uDF69','\uD83C\uDF6A','\uD83C\uDF82','\uD83C\uDF70','\uD83E\uDDC1','\uD83C\uDF4E','\uD83C\uDF4A','\uD83C\uDF4B','\uD83C\uDF4C','\uD83C\uDF49','\uD83C\uDF47','\uD83C\uDF53','\uD83E\uDED0','\uD83C\uDF52','\uD83C\uDF51','⚽','\uD83C\uDFC0','\uD83C\uDFC8','⚾','\uD83C\uDFBE','\uD83C\uDFD0','\uD83C\uDFC9','\uD83C\uDFB1','\uD83C\uDFD3','\uD83C\uDFF8','\uD83C\uDFAE','\uD83D\uDD79','\uD83C\uDFB2','\uD83E\uDDE9','\uD83C\uDFAF','\uD83C\uDFB3','\uD83C\uDFB0','\uD83C\uDFB8','\uD83C\uDFB9','\uD83E\uDD41','\uD83C\uDFA4','\uD83C\uDFA7','\uD83C\uDFAC','\uD83C\uDFA5','\uD83D\uDCF7','\uD83D\uDCF8','\uD83D\uDCF9','\uD83D\uDCFA','\uD83D\uDCFB','\uD83C\uDF99','\uD83D\uDE80','✈️','\uD83D\uDEE9','\uD83D\uDEEB','\uD83D\uDEEC','\uD83D\uDEF0','\uD83D\uDCBA','\uD83D\uDEF8','\uD83D\uDE81','\uD83D\uDEF6','\uD83D\uDE97','\uD83D\uDE95','\uD83D\uDE99','\uD83D\uDE8C','\uD83D\uDE8E','\uD83C\uDFCE','\uD83D\uDE93','\uD83D\uDE91','\uD83D\uDE92','\uD83D\uDE90','\uD83C\uDFE0','\uD83C\uDFE1','\uD83C\uDFE2','\uD83C\uDFE3','\uD83C\uDFE4','\uD83C\uDFE5','\uD83C\uDFE6','\uD83C\uDFE8','\uD83C\uDFE9','\uD83C\uDFEA','\uD83D\uDC36','\uD83D\uDC31','\uD83D\uDC2D','\uD83D\uDC39','\uD83D\uDC30','\uD83E\uDD8A','\uD83D\uDC3B','\uD83D\uDC3C',_0x2460cc(0x12a),'\uD83D\uDC28','\uD83D\uDC2F','\uD83E\uDD81','\uD83D\uDC2E','\uD83D\uDC37','\uD83D\uDC38','\uD83D\uDC35','\uD83D\uDE48','\uD83D\uDE49','\uD83D\uDE4A','\uD83D\uDC12','\uD83D\uDC14','\uD83D\uDC27','\uD83D\uDC26','\uD83D\uDC24','\uD83D\uDC23','\uD83D\uDC25','\uD83E\uDD86','\uD83E\uDD85','\uD83E\uDD89','\uD83E\uDD87','\uD83C\uDF89','\uD83C\uDF8A','\uD83C\uDF88','\uD83C\uDF81','\uD83C\uDF80','\uD83C\uDF97','\uD83C\uDFAB','\uD83C\uDF9F','\uD83C\uDFC6','\uD83C\uDFC5'];
|