gis-view-webgl2 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +140 -60
- package/dist/index.js +1 -1
- package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +73 -5
- package/docs/GisView.md +49 -49
- package/docs/ai/06-/344/274/232/350/257/235/347/264/242/345/274/225/344/270/216/345/244/215/346/237/245/346/226/271/346/263/225.md +87 -16
- package/docs/demos/ApiCoverageDemo.vue +1 -5
- package/docs/demos/BackendSyncDemo.vue +1 -2
- package/docs/demos/BackgroundDemo.vue +68 -1
- package/docs/demos/BasicDemo.vue +76 -76
- package/docs/demos/BatchAddDemo.vue +2 -1
- package/docs/demos/ChannelDemo.vue +1 -3
- package/docs/demos/ClusterDemo.vue +48 -1
- package/docs/demos/CopyMergeDemo.vue +899 -904
- package/docs/demos/DemoShell.vue +336 -336
- package/docs/demos/EventDemo.vue +300 -300
- package/docs/demos/ExtensionDemo.vue +200 -200
- package/docs/demos/GisViewDemo.vue +64 -64
- package/docs/demos/LabelDemo.vue +489 -489
- package/docs/demos/StyleDemo.vue +67 -67
- package/docs/demos/api-index.js +24 -29
- package/docs/demos/demos.js +92 -92
- package/docs/demos/gis-view-demo/useGisViewDemo.js +19 -14
- package/docs/demos/shared/demoData.js +107 -107
- package/docs/demos/shared/demoStyle.css +249 -249
- package/docs/format/02-/350/212/202/347/202/271/344/270/216/347/272/277/350/267/257.md +3 -3
- package/docs/format/03-/346/213/220/347/202/271/350/243/205/351/245/260/344/270/216/346/240/267/345/274/217.md +3 -0
- package/docs/from0/01-/345/205/210/346/212/212/345/234/260/345/233/276/346/203/263/346/270/205/346/245/232.md +8 -7
- package/docs/index.html +3 -3
- package/docs/internals/04-/347/233/270/346/234/272/345/235/220/346/240/207/344/270/216/345/203/217/347/264/240.md +6 -4
- package/docs/internals/14-/350/203/214/346/231/257/345/261/202.md +2 -2
- package/docs/manual/02-/345/235/220/346/240/207/344/270/216/346/225/260/346/215/256.md +36 -16
- package/docs/manual/03-/351/205/215/347/275/256/351/241/271.md +38 -84
- package/docs/manual/04-/344/272/213/344/273/266/344/270/216/345/233/236/350/260/203.md +36 -19
- package/docs/manual/06-/346/225/260/346/215/256/344/270/216/345/234/272/346/231/257/346/233/264/346/226/260.md +1 -1
- package/docs/manual/07-/346/214/207/351/222/210/344/270/216/350/246/201/347/264/240/347/274/226/350/276/221.md +7 -7
- package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +15 -15
- package/docs/manual/10-/351/200/232/351/201/223/347/274/226/350/276/221/344/270/216/346/226/260/345/242/236.md +1 -1
- package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +6 -0
- package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +1 -1
- package/docs/manual/15-/345/257/274/345/207/272/344/270/216/351/233/206/346/210/220.md +2 -0
- package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +10 -8
- package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +11 -7
- package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +27 -8
- package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +27 -4
- package/docs/manual/21-/350/257/264/346/230/216/344/270/216/345/270/270/350/247/201/351/227/256/351/242/230.md +3 -3
- package/docs/playground/index.html +1 -1
- package/docs/sample-document/345/255/227/346/256/265/350/257/246/350/247/243.md +2 -2
- package/docs/steps/check-doc-truth.mjs +1 -1
- package/docs/steps/selftest-actions.html +4 -4
- package/docs/steps/selftest-data.html +5 -5
- package/docs/steps/selftest-demos.html +1683 -1619
- package/docs/steps/selftest-docs.html +4 -4
- package/docs/steps/selftest-effects.html +1 -1
- package/docs/steps/selftest-features.html +548 -47
- package/docs/steps/selftest-full.html +566 -566
- package/docs/steps/selftest-labels.html +647 -647
- package/docs/steps/selftest-perf.html +2282 -2237
- package/docs/steps/selftest-select.html +53 -14
- package/docs/steps/step-10-full.js +1 -4
- package/docs/steps/step-12-events.js +1 -4
- package/package.json +43 -43
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<div id="map" style="width:640px;height:400px"></div>
|
|
9
9
|
<pre id="out"></pre>
|
|
10
10
|
<script type="module">
|
|
11
|
-
// 这一页的自测:① 多选开关(
|
|
11
|
+
// 这一页的自测:① 多选开关(features.multiSelect)—— 打开后不用修饰键、单击即取反累加;toggleSelect 另测;
|
|
12
12
|
// ② 状态样式里的阴影(selectStyle / lineSelectStyle 写 shadow 要画得出来、取消选中要收掉);
|
|
13
13
|
// ③ 取消选中 / 改变选中集之后颜色与阴影要自动恢复,不必等悬停来顺手重解析;
|
|
14
14
|
// ④ 同配方不同尺寸的贴图符号:借来的占位贴图不能被当成「自己烤好的那一份」(见问题 4)。
|
|
@@ -69,6 +69,8 @@
|
|
|
69
69
|
onClick: payload => clicks.push(payload),
|
|
70
70
|
onDblClick: payload => dblClicks.push(payload)
|
|
71
71
|
})
|
|
72
|
+
// edit 预设也会打开多选 / 取反;本页前半段验证普通单击的单选语义,这里显式关掉这两项
|
|
73
|
+
view.setFeatures({ ...view.getFeatures(), multiSelect: false, toggleSelect: false })
|
|
72
74
|
const canvas = view.canvas
|
|
73
75
|
const box = canvas.getBoundingClientRect()
|
|
74
76
|
const shot = async () => {
|
|
@@ -209,9 +211,9 @@
|
|
|
209
211
|
/* ---------- 问题 1:多选开关 ---------- */
|
|
210
212
|
await clickWorld(0, 0)
|
|
211
213
|
await clickWorld(140, 0)
|
|
212
|
-
check('
|
|
214
|
+
check('多选开关关闭:普通单击是单选(后点替换前点)', ids() === 'node-b', ids())
|
|
213
215
|
await clickWorld(240, -150)
|
|
214
|
-
view.
|
|
216
|
+
view.setFeatures({ ...view.getFeatures(), multiSelect: true })
|
|
215
217
|
const changesBeforeSwitch = changes.length
|
|
216
218
|
await clickWorld(0, 0)
|
|
217
219
|
await clickWorld(140, 0)
|
|
@@ -245,7 +247,7 @@
|
|
|
245
247
|
// 第一次点击是取反(与 Ctrl 点击同一套:不经过 onClick),第二次点击只派发点击与双击
|
|
246
248
|
check('多选开关打开:双击照常派发 onClick / onDblClick', dblClicks.length === dblBefore + 1 && clicks.length === clicksBeforeDbl + 1, `${dblClicks.length - dblBefore} / ${clicks.length - clicksBeforeDbl}`)
|
|
247
249
|
await clickWorld(240, -150)
|
|
248
|
-
view.
|
|
250
|
+
view.setFeatures({ ...view.getFeatures(), multiSelect: false })
|
|
249
251
|
await clickWorld(0, 0)
|
|
250
252
|
await clickWorld(140, 0)
|
|
251
253
|
check('多选开关关回去:又是单选', ids() === 'node-b', ids())
|
|
@@ -314,9 +316,9 @@
|
|
|
314
316
|
await ckClick(0, 82, { ctrlKey: true })
|
|
315
317
|
await ckClick(0, -82, { ctrlKey: true })
|
|
316
318
|
check('selectionKinds 三类全开:一次 Ctrl 多选可混合累加节点 / 线路 / 通道', ckInfo().pointCount === 1 && ckInfo().lineCount === 2 && ckInfo().channelCount === 1 && ckView.isSelected('ck-a') && ckView.isSelected('ck-solo') && ckView.isSelected('ck-ch-line'), JSON.stringify({ points: ckInfo().pointCount, lines: ckInfo().lineCount, channels: ckInfo().channelCount, ids: ckInfo().ids }))
|
|
317
|
-
ckView.updateOptions({ selectionKinds: 'all' })
|
|
318
|
-
ckView.selectInBox({ x: 0, y: 0, width: ckBox.width, height: ckBox.height })
|
|
319
|
-
const ckBoxedInfo = ckView.getSelectionData()
|
|
319
|
+
ckView.updateOptions({ selectionKinds: 'all' })
|
|
320
|
+
ckView.selectInBox({ x: 0, y: 0, width: ckBox.width, height: ckBox.height })
|
|
321
|
+
const ckBoxedInfo = ckView.getSelectionData()
|
|
320
322
|
check('selectInBox:线路框选与通道摊开沿用同一份判定(整框一次收下节点 / 独立线路 / 通道回线)', ckBoxedInfo.count === 4 && ckBoxedInfo.pointCount === 2 && ckBoxedInfo.lineCount === 2 && ckBoxedInfo.channelCount === 1, JSON.stringify({ items: ckBoxedInfo.count, points: ckBoxedInfo.pointCount, lines: ckBoxedInfo.lineCount, channels: ckBoxedInfo.channelCount }))
|
|
321
323
|
ckView.destroy()
|
|
322
324
|
ckHost.remove()
|
|
@@ -371,6 +373,40 @@
|
|
|
371
373
|
epView.destroy()
|
|
372
374
|
epHost.remove()
|
|
373
375
|
|
|
376
|
+
/* ---------- 框选只认路径实际沾框:包围盒相交但几何不沾框的 U 形线路 / 通道不能误选 ---------- */
|
|
377
|
+
const bxHost = document.createElement('div')
|
|
378
|
+
bxHost.style.cssText = 'width:400px;height:320px'
|
|
379
|
+
document.body.append(bxHost)
|
|
380
|
+
const bxView = createGisView(bxHost, {
|
|
381
|
+
points: [
|
|
382
|
+
{ id: 'bx-a', x: -120, y: -120, size: 10 },
|
|
383
|
+
{ id: 'bx-b', x: 120, y: -120, size: 10 }
|
|
384
|
+
],
|
|
385
|
+
lines: [
|
|
386
|
+
{ id: 'bx-hit', path: [[-15, 0], [15, 0]], width: 8 },
|
|
387
|
+
{ id: 'bx-u', path: [[-120, -120], [-120, 120], [120, 120], [120, -120]], width: 8 },
|
|
388
|
+
{ id: 'bx-ch-line', from: 'bx-a', to: 'bx-b', width: 8 }
|
|
389
|
+
],
|
|
390
|
+
channels: [{ id: 'bx-ch', from: 'bx-a', to: 'bx-b', path: [[-120, 120], [120, 120]], lineIds: ['bx-ch-line'] }],
|
|
391
|
+
features: 'view',
|
|
392
|
+
selectionKinds: ['line', 'channel'],
|
|
393
|
+
channelSelectMode: 'channel',
|
|
394
|
+
showGrid: false,
|
|
395
|
+
fitOnInit: false,
|
|
396
|
+
initialView: { center: [0, 0], scale: 1 },
|
|
397
|
+
width: 400,
|
|
398
|
+
height: 320
|
|
399
|
+
})
|
|
400
|
+
await settle(120)
|
|
401
|
+
const bxBox = bxView.canvas.getBoundingClientRect()
|
|
402
|
+
bxView.selectInBox({ x: bxBox.width / 2 - 20, y: bxBox.height / 2 - 20, width: 40, height: 40 }, { selectionKinds: ['line', 'channel'] })
|
|
403
|
+
const bxInfo = bxView.getSelectionData()
|
|
404
|
+
check('框选只认路径实际沾框:包围盒相交但不在框内的 U 形线路 / 通道不选中',
|
|
405
|
+
bxInfo.lineCount === 1 && bxInfo.channelCount === 0 && bxView.isSelected('bx-hit') && !bxView.isSelected('bx-u') && !bxView.isSelected('bx-ch-line'),
|
|
406
|
+
JSON.stringify({ lines: bxInfo.lineCount, channels: bxInfo.channelCount, ids: bxInfo.ids }))
|
|
407
|
+
bxView.destroy()
|
|
408
|
+
bxHost.remove()
|
|
409
|
+
|
|
374
410
|
/* ---------- 本轮:框选保留、整框拖动、DOM 样式与手动关闭 ---------- */
|
|
375
411
|
const persistHost = document.createElement('div')
|
|
376
412
|
persistHost.style.cssText = 'width:400px;height:260px'
|
|
@@ -644,6 +680,8 @@
|
|
|
644
680
|
onSelectChange: payload => { gpChanges.push(payload); gpOrder.push('selectChange') },
|
|
645
681
|
onHover: payload => gpHovers.push(payload)
|
|
646
682
|
})
|
|
683
|
+
// 这一段验证普通点击的派发与单选载荷:同样先关掉 edit 预设里的多选 / 取反
|
|
684
|
+
gpView.setFeatures({ ...gpView.getFeatures(), multiSelect: false, toggleSelect: false })
|
|
647
685
|
await settle(140)
|
|
648
686
|
const gpBox = gpView.canvas.getBoundingClientRect()
|
|
649
687
|
const gpLine = gpView.getLine('gp-l1')
|
|
@@ -739,7 +777,7 @@
|
|
|
739
777
|
],
|
|
740
778
|
pointStyle: { color: '#2438cc', size: 28 },
|
|
741
779
|
pointHoverStyle: { color: '#1f9d3a' },
|
|
742
|
-
|
|
780
|
+
features: { hover: true, select: true },
|
|
743
781
|
showGrid: false,
|
|
744
782
|
width: 360,
|
|
745
783
|
height: 200
|
|
@@ -986,7 +1024,8 @@
|
|
|
986
1024
|
await triggerClick(120, 0)
|
|
987
1025
|
check('selectTrigger 运行时改回 click 立刻生效', triggerIds() === 'trigger-b', triggerIds())
|
|
988
1026
|
|
|
989
|
-
triggerView.updateOptions({ selectTrigger: 'dblClick'
|
|
1027
|
+
triggerView.updateOptions({ selectTrigger: 'dblClick' })
|
|
1028
|
+
triggerView.setFeatures({ ...triggerView.getFeatures(), multiSelect: true })
|
|
990
1029
|
triggerView.selectFeatures(null)
|
|
991
1030
|
triggerClicks.length = 0
|
|
992
1031
|
triggerDblClicks.length = 0
|
|
@@ -1001,7 +1040,8 @@
|
|
|
1001
1040
|
check('selectTrigger: dblClick + multiSelect:双击已选节点是取消', triggerIds() === 'trigger-b' && triggerClicks.at(-1)?.action?.type === 'toggleSelect', triggerIds())
|
|
1002
1041
|
|
|
1003
1042
|
/* toggleSelect:再次选中即取消,缺省关;单击 / 双击两种触发方式与 Ctrl 先选后点同一口径 */
|
|
1004
|
-
triggerView.updateOptions({ selectTrigger: 'click'
|
|
1043
|
+
triggerView.updateOptions({ selectTrigger: 'click' })
|
|
1044
|
+
triggerView.setFeatures({ ...triggerView.getFeatures(), multiSelect: false })
|
|
1005
1045
|
triggerView.selectFeatures(null)
|
|
1006
1046
|
await settle(360)
|
|
1007
1047
|
triggerClicks.length = 0
|
|
@@ -1012,7 +1052,7 @@
|
|
|
1012
1052
|
await triggerClick(0, 0)
|
|
1013
1053
|
check('toggleSelect 缺省关:隔开两次普通单击仍保持选中', triggerIds() === 'trigger-a' && triggerChanges.length === 1 && triggerChanges.at(-1)?.action?.type === 'select', `${triggerIds()} / ${triggerChanges.at(-1)?.action?.type}`)
|
|
1014
1054
|
|
|
1015
|
-
triggerView.
|
|
1055
|
+
triggerView.setFeatures({ ...triggerView.getFeatures(), toggleSelect: true })
|
|
1016
1056
|
await settle(360)
|
|
1017
1057
|
const toggleOffClicks = triggerClicks.length
|
|
1018
1058
|
const toggleOffChanges = triggerChanges.length
|
|
@@ -1086,8 +1126,7 @@
|
|
|
1086
1126
|
},
|
|
1087
1127
|
{ id: 'tl-ch2', from: 'tl-c', to: 'tl-d', lineIds: ['tl-other'] }
|
|
1088
1128
|
],
|
|
1089
|
-
features: { select: true },
|
|
1090
|
-
toggleSelect: true,
|
|
1129
|
+
features: { select: true, toggleSelect: true },
|
|
1091
1130
|
selectionKinds: 'all',
|
|
1092
1131
|
showGrid: false,
|
|
1093
1132
|
fitOnInit: false,
|
|
@@ -1190,4 +1229,4 @@
|
|
|
1190
1229
|
document.title = results.some(text => text.startsWith('FAIL') || text.startsWith('ERROR')) ? 'FAIL' : 'PASS'
|
|
1191
1230
|
</script>
|
|
1192
1231
|
</body>
|
|
1193
|
-
</html>
|
|
1232
|
+
</html>
|
|
@@ -73,10 +73,7 @@ export const createFullView = (target, options = {}) => {
|
|
|
73
73
|
minimap: { width: 180, height: 130 },
|
|
74
74
|
// 这一步就是完整组件本身:工具栏要能点节点加通道、按住节点拖、Shift 框选、Ctrl 点击加拐点——
|
|
75
75
|
// 功能开关缺省全关(见 src/gis-view/features.js),演示页把要用的逐项显式打开
|
|
76
|
-
|
|
77
|
-
boxSelect: true,
|
|
78
|
-
waypointEditable: true,
|
|
79
|
-
features: { pan: true, zoom: true, hover: true, select: true, contextMenu: true, keyboard: true, channelDraft: true },
|
|
76
|
+
features: { pan: true, zoom: true, hover: true, select: true, contextMenu: true, keyboard: true, channelDraft: true, drag: true, boxSelect: true, waypoint: true },
|
|
80
77
|
// 组件的回调都带载荷:type / index / item 就是「当前是哪个元素」,world 是光标处的世界坐标
|
|
81
78
|
onHover: payload => forward.onHover?.(payload),
|
|
82
79
|
onClick: payload => forward.onClick?.(payload),
|
|
@@ -133,10 +133,7 @@ export const createActionView = (target, options = {}) => {
|
|
|
133
133
|
statsInterval: 250,
|
|
134
134
|
// 这一步演示的全是交互(拖节点 / Shift 框选 / Ctrl 加拐点 / 通道草稿与通道右键):
|
|
135
135
|
// 功能开关缺省全关(见 src/gis-view/features.js),演示页把要用的逐项显式打开
|
|
136
|
-
|
|
137
|
-
boxSelect: true,
|
|
138
|
-
waypointEditable: true,
|
|
139
|
-
features: { pan: true, zoom: true, hover: true, select: true, contextMenu: true, keyboard: true, channelDraft: true },
|
|
136
|
+
features: { pan: true, zoom: true, hover: true, select: true, contextMenu: true, keyboard: true, channelDraft: true, drag: true, boxSelect: true, waypoint: true },
|
|
140
137
|
// 下面五条是同一条路:每个回调先报一句判读,再交给页面自己那一条(日志、草稿读数都还在)
|
|
141
138
|
onPointerDown: payload => {
|
|
142
139
|
report(describeAction(payload, '按下'))
|
package/package.json
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "gis-view-webgl2",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "WebGL2 矢量视图:点、线与 GeoJSON / 图片背景层,可选鹰眼图与图例,点击 / 双击 / 拖拽可配置",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "vite",
|
|
8
|
-
"build": "tsc && vite build",
|
|
9
|
-
"build:lib": "tsc && node scripts/clean-dist.mjs && vite build --config vite.config.lib.js && node scripts/obfuscate-dist.mjs && node scripts/copy-types.mjs",
|
|
10
|
-
"prepack": "npm run build:lib",
|
|
11
|
-
"pack:lib": "npm pack --dry-run",
|
|
12
|
-
"preview": "vite preview",
|
|
13
|
-
"check:docs": "node docs/steps/check-doc-coverage.mjs && node docs/steps/check-doc-truth.mjs && node docs/steps/check-sample-fields.mjs && node docs/steps/check-doc-center.mjs"
|
|
14
|
-
},
|
|
15
|
-
"main": "./dist/index.cjs",
|
|
16
|
-
"module": "./dist/index.js",
|
|
17
|
-
"types": "./dist/index.d.ts",
|
|
18
|
-
"exports": {
|
|
19
|
-
".": {
|
|
20
|
-
"types": "./dist/index.d.ts",
|
|
21
|
-
"import": "./dist/index.js",
|
|
22
|
-
"require": "./dist/index.cjs",
|
|
23
|
-
"default": "./dist/index.js"
|
|
24
|
-
},
|
|
25
|
-
"./style.css": "./dist/gis-view.css"
|
|
26
|
-
},
|
|
27
|
-
"files": [
|
|
28
|
-
"dist",
|
|
29
|
-
"README.md",
|
|
30
|
-
"docs"
|
|
31
|
-
],
|
|
32
|
-
"sideEffects": [
|
|
33
|
-
"**/*.css"
|
|
34
|
-
],
|
|
35
|
-
"devDependencies": {
|
|
36
|
-
"@vitejs/plugin-vue": "^6.0.5",
|
|
37
|
-
"javascript-obfuscator": "^5.6.0",
|
|
38
|
-
"typescript": "~6.0.2",
|
|
39
|
-
"vite": "^8.2.2",
|
|
40
|
-
"vite-plugin-lib-inject-css": "^2.2.2",
|
|
41
|
-
"vue": "^3.5.32"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "gis-view-webgl2",
|
|
3
|
+
"version": "0.1.15",
|
|
4
|
+
"description": "WebGL2 矢量视图:点、线与 GeoJSON / 图片背景层,可选鹰眼图与图例,点击 / 双击 / 拖拽可配置",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "vite",
|
|
8
|
+
"build": "tsc && vite build",
|
|
9
|
+
"build:lib": "tsc && node scripts/clean-dist.mjs && vite build --config vite.config.lib.js && node scripts/obfuscate-dist.mjs && node scripts/copy-types.mjs",
|
|
10
|
+
"prepack": "npm run build:lib",
|
|
11
|
+
"pack:lib": "npm pack --dry-run",
|
|
12
|
+
"preview": "vite preview",
|
|
13
|
+
"check:docs": "node docs/steps/check-doc-coverage.mjs && node docs/steps/check-doc-truth.mjs && node docs/steps/check-sample-fields.mjs && node docs/steps/check-doc-center.mjs"
|
|
14
|
+
},
|
|
15
|
+
"main": "./dist/index.cjs",
|
|
16
|
+
"module": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"import": "./dist/index.js",
|
|
22
|
+
"require": "./dist/index.cjs",
|
|
23
|
+
"default": "./dist/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./style.css": "./dist/gis-view.css"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"README.md",
|
|
30
|
+
"docs"
|
|
31
|
+
],
|
|
32
|
+
"sideEffects": [
|
|
33
|
+
"**/*.css"
|
|
34
|
+
],
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@vitejs/plugin-vue": "^6.0.5",
|
|
37
|
+
"javascript-obfuscator": "^5.6.0",
|
|
38
|
+
"typescript": "~6.0.2",
|
|
39
|
+
"vite": "^8.2.2",
|
|
40
|
+
"vite-plugin-lib-inject-css": "^2.2.2",
|
|
41
|
+
"vue": "^3.5.32"
|
|
42
|
+
}
|
|
43
|
+
}
|