gis-view-webgl2 0.1.2 → 0.1.4

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/README.md +21 -14
  2. package/dist/gis-view.css +1 -1
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +421 -76
  5. package/dist/index.js +1 -1
  6. package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +151 -0
  7. package/docs/GisView.md +4 -4
  8. 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 +137 -0
  9. package/docs/api/index.html +23 -9
  10. package/docs/demos/ApiCoverageDemo.vue +644 -0
  11. package/docs/demos/ChannelDemo.vue +14 -12
  12. package/docs/demos/ClusterDemo.vue +251 -0
  13. package/docs/demos/CopyMergeDemo.vue +3 -4
  14. package/docs/demos/EventDemo.vue +3 -3
  15. package/docs/demos/ExtensionDemo.vue +69 -12
  16. package/docs/demos/GisViewDemo.vue +64 -8809
  17. package/docs/demos/SearchFilterDemo.vue +13 -11
  18. package/docs/demos/api-index.js +58 -47
  19. package/docs/demos/demos.js +34 -17
  20. package/docs/demos/gis-view-demo/GisViewDemoCardHeader.vue +29 -0
  21. package/docs/demos/gis-view-demo/GisViewDemoDialogs.vue +82 -0
  22. package/docs/demos/gis-view-demo/GisViewDemoFooter.vue +16 -0
  23. package/docs/demos/gis-view-demo/GisViewDemoHeading.vue +16 -0
  24. package/docs/demos/gis-view-demo/GisViewDemoPanelStack.vue +71 -0
  25. package/docs/demos/gis-view-demo/GisViewDemoStage.vue +219 -0
  26. package/docs/demos/gis-view-demo/demo.css +1230 -0
  27. package/docs/demos/gis-view-demo/demoContext.js +12 -0
  28. package/docs/demos/gis-view-demo/panels/DataPanels.vue +303 -0
  29. package/docs/demos/gis-view-demo/panels/OpsPanels.vue +174 -0
  30. package/docs/demos/gis-view-demo/panels/StylePanels.vue +561 -0
  31. package/docs/demos/gis-view-demo/panels/ViewPanels.vue +396 -0
  32. package/docs/demos/gis-view-demo/useGisViewDemo.js +6188 -0
  33. package/docs/format/07-/344/272/213/344/273/266/350/275/275/350/215/267/344/270/216/347/244/272/344/276/213/346/225/260/346/215/256.md +3 -2
  34. package/docs/index.html +41 -4
  35. package/docs/internals/16-03-/344/274/230/345/214/226/344/270/216/345/217/226/350/210/215-/344/270/213.md +1 -1
  36. package/docs/manual/02-/345/235/220/346/240/207/344/270/216/346/225/260/346/215/256.md +3 -2
  37. package/docs/manual/03-/351/205/215/347/275/256/351/241/271.md +104 -16
  38. package/docs/manual/04-/344/272/213/344/273/266/344/270/216/345/233/236/350/260/203.md +15 -14
  39. 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 +40 -3
  40. package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +50 -3
  41. package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +6 -2
  42. 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 +39 -7
  43. package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +13 -4
  44. package/docs/manual/13-/345/212/250/346/225/210/344/270/216/345/233/276/345/205/203.md +3 -0
  45. package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +121 -49
  46. package/docs/manual/15-/345/257/274/345/207/272/344/270/216/351/233/206/346/210/220.md +37 -3
  47. package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +17 -8
  48. package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +45 -25
  49. package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +91 -20
  50. package/docs/manual/19-/350/257/273/346/225/260/344/270/216/346/213/226/346/213/275/351/242/204/350/247/210.md +3 -3
  51. package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +25 -1
  52. 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 +11 -8
  53. package/docs/steps/README.md +17 -11
  54. package/docs/steps/selftest-actions.html +3 -5
  55. package/docs/steps/selftest-demo.html +27 -18
  56. package/docs/steps/selftest-demos.html +409 -32
  57. package/docs/steps/selftest-docs.html +33 -4
  58. package/docs/steps/selftest-effects.html +200 -0
  59. package/docs/steps/selftest-features.html +603 -21
  60. package/docs/steps/selftest-labels.html +74 -0
  61. package/docs/steps/selftest-perf.html +293 -20
  62. package/docs/steps/selftest-scale.html +150 -29
  63. package/docs/steps/selftest-select.html +90 -0
  64. package/docs/steps/step-10-full.js +1 -1
  65. package/docs/steps/step-12-events.js +1 -1
  66. package/package.json +1 -1
@@ -0,0 +1,1230 @@
1
+ /* GisViewDemo 全部样式:统一挂在 .gis-view-demo 下,避免影响其他演示。 */
2
+ .gis-view-demo .demo-stage {
3
+ grid-column: 1;
4
+ grid-row: 2;
5
+ position: relative;
6
+ /*
7
+ * 宿主缩放:CSS zoom 加在这一层上 —— 宽度是百分比、浏览器会按缩放补偿,视觉尺寸不变;
8
+ * 高度是绝对长度,除回去让这一层在父级布局里仍占原来那么多。组件量到的 displayScale 就是它。
9
+ */
10
+ zoom: var(--demo-host-zoom, 1);
11
+ height: calc(var(--demo-stage-height) / var(--demo-host-zoom, 1));
12
+ }
13
+
14
+ .gis-view-demo .demo-canvas {
15
+ height: 100%;
16
+ border: 1px solid #e2e9f2;
17
+ border-radius: 10px;
18
+ background: #f7fafd;
19
+ overflow: hidden;
20
+ }
21
+
22
+ /* 布局:左边画布、右边一组可折叠的配置;窄屏在文件末尾的媒体查询里退回单列 */
23
+ .gis-view-demo .demo-card {
24
+ display: grid;
25
+ grid-template-columns: minmax(0, 1fr) clamp(360px, 22vw, 520px);
26
+ gap: 0 16px;
27
+ align-items: start;
28
+ /*
29
+ * 画布高度跟着窗口走:小窗保底 440px、大屏一路长到 1400px(再高也没意义)。
30
+ * 460px 是画布之外那一叠固定高度:页头 + 卡片说明 + 画布下面的两行事件读数 + 页面留白。
31
+ * 面板列用同一份高度,两边的滚动条因此对得上,页面本身只在内容真的放不下时才滚。
32
+ */
33
+ --demo-stage-height: clamp(440px, calc(100vh - 460px), 1400px);
34
+ }
35
+
36
+ .gis-view-demo .demo-card-header {
37
+ grid-column: 1 / -1;
38
+ }
39
+
40
+ .gis-view-demo .gis-demo-event {
41
+ grid-column: 1;
42
+ grid-row: 3;
43
+ }
44
+
45
+ /* 全屏:舞台铺满屏幕,画布用浏览器给的尺寸(退出后再 resize() 同步一次) */
46
+ .gis-view-demo .demo-stage:fullscreen {
47
+ position: fixed;
48
+ inset: 0;
49
+ width: 100%;
50
+ height: 100%;
51
+ border-radius: 0;
52
+ background: #eef3fa;
53
+ }
54
+
55
+ .gis-view-demo .demo-stage:fullscreen .demo-canvas {
56
+ height: 100%;
57
+ border: none;
58
+ border-radius: 0;
59
+ }
60
+
61
+ .gis-view-demo .demo-stage-toolbar {
62
+ position: absolute;
63
+ top: 12px;
64
+ right: 12px;
65
+ z-index: 5;
66
+ display: flex;
67
+ gap: 6px;
68
+ padding: 4px;
69
+ border: 1px solid rgba(214, 226, 240, 0.9);
70
+ border-radius: 8px;
71
+ background: rgba(255, 255, 255, 0.9);
72
+ box-shadow: 0 10px 26px rgba(31, 62, 105, 0.14);
73
+ backdrop-filter: blur(6px);
74
+ }
75
+
76
+ .gis-view-demo .demo-stage-toolbar button {
77
+ padding: 4px 10px;
78
+ font-size: 11px;
79
+ }
80
+
81
+ /*
82
+ * 面板分页:控件按主题分成三页,一页只显示当前这一组;
83
+ * 面板列自己在画布右侧滚动,画布高度不被长列表推走。
84
+ */
85
+ .gis-view-demo .demo-panel-stack {
86
+ grid-column: 2;
87
+ grid-row: 2;
88
+ display: flex;
89
+ flex-direction: column;
90
+ gap: 8px;
91
+ max-height: var(--demo-stage-height);
92
+ overflow: auto;
93
+ padding-right: 2px;
94
+ }
95
+
96
+ .gis-view-demo .demo-tabs {
97
+ position: sticky;
98
+ top: 0;
99
+ z-index: 2;
100
+ display: flex;
101
+ gap: 4px;
102
+ padding: 4px;
103
+ border: 1px solid #e5ecf5;
104
+ border-radius: 8px;
105
+ background: #fff;
106
+ }
107
+
108
+ .gis-view-demo .demo-tabs button {
109
+ flex: 1;
110
+ padding: 6px 4px;
111
+ border: none;
112
+ border-radius: 6px;
113
+ background: transparent;
114
+ color: #55708f;
115
+ font-size: 11px;
116
+ font-weight: 700;
117
+ cursor: pointer;
118
+ }
119
+
120
+ .gis-view-demo .demo-tabs button:hover {
121
+ background: #f2f7ff;
122
+ }
123
+
124
+ .gis-view-demo .demo-tabs button.is-active {
125
+ background: #e8f1ff;
126
+ color: #1d5fb0;
127
+ }
128
+ /* 面板按钮:两列网格,每一格占满宽度;左边是主题名,右边明确标出展开 / 收起 */
129
+ .gis-view-demo .demo-panel-buttons {
130
+ display: grid;
131
+ grid-template-columns: repeat(2, minmax(0, 1fr));
132
+ gap: 6px;
133
+ }
134
+
135
+ .gis-view-demo .demo-panel-buttons button {
136
+ display: flex;
137
+ align-items: center;
138
+ justify-content: space-between;
139
+ gap: 8px;
140
+ width: 100%;
141
+ min-height: 32px;
142
+ padding: 7px 10px;
143
+ border: 1px solid rgba(190, 208, 230, 0.95);
144
+ border-radius: 8px;
145
+ background: #f7faff;
146
+ color: #33517b;
147
+ font-size: 11px;
148
+ text-align: left;
149
+ cursor: pointer;
150
+ transition: border-color 0.16s ease, background-color 0.16s ease, color 0.16s ease;
151
+ }
152
+
153
+ .gis-view-demo .demo-panel-buttons button:hover {
154
+ border-color: #8fb4dd;
155
+ background: #eef5ff;
156
+ }
157
+
158
+ .gis-view-demo .demo-panel-buttons button.is-active {
159
+ border-color: #2f6fd0;
160
+ background: #2f6fd0;
161
+ color: #fff;
162
+ box-shadow: 0 4px 12px rgba(47, 111, 208, 0.2);
163
+ }
164
+
165
+ .gis-view-demo .demo-panel-button-mark {
166
+ display: grid;
167
+ flex: none;
168
+ place-items: center;
169
+ width: 18px;
170
+ height: 18px;
171
+ border-radius: 50%;
172
+ background: rgba(47, 111, 208, 0.08);
173
+ color: #6484ab;
174
+ font-size: 14px;
175
+ line-height: 1;
176
+ }
177
+
178
+ .gis-view-demo .demo-panel-buttons button.is-active .demo-panel-button-mark {
179
+ background: rgba(255, 255, 255, 0.2);
180
+ color: #fff;
181
+ }
182
+
183
+ /* 面板就在按钮下方展开,保持普通文档流;只有面板内容自己滚,画布不会跟着长高 */
184
+ .gis-view-demo .demo-panel-inline {
185
+ display: flex;
186
+ flex-direction: column;
187
+ min-height: 0;
188
+ overflow: hidden;
189
+ border: 1px solid rgba(208, 222, 239, 0.96);
190
+ border-radius: 10px;
191
+ background: #fff;
192
+ box-shadow: 0 8px 22px rgba(35, 70, 116, 0.08);
193
+ color: #33517b;
194
+ font-size: 11px;
195
+ }
196
+
197
+ .gis-view-demo .demo-panel-inline-head {
198
+ display: flex;
199
+ align-items: flex-start;
200
+ justify-content: space-between;
201
+ gap: 10px;
202
+ padding: 10px 12px;
203
+ border-bottom: 1px solid rgba(214, 226, 240, 0.9);
204
+ background: linear-gradient(180deg, #f8fbff 0%, #f3f8ff 100%);
205
+ }
206
+
207
+ .gis-view-demo .demo-panel-inline-head > div {
208
+ display: flex;
209
+ flex-direction: column;
210
+ gap: 3px;
211
+ min-width: 0;
212
+ }
213
+
214
+ .gis-view-demo .demo-panel-inline-head strong {
215
+ color: #1d5fb0;
216
+ font-size: 12px;
217
+ }
218
+
219
+ .gis-view-demo .demo-panel-inline-head span {
220
+ color: #7386a1;
221
+ line-height: 1.45;
222
+ }
223
+
224
+ .gis-view-demo .demo-panel-inline-head button {
225
+ flex: none;
226
+ padding: 3px 8px;
227
+ border: 1px solid rgba(47, 111, 208, 0.28);
228
+ border-radius: 6px;
229
+ background: #fff;
230
+ color: #2f6fd0;
231
+ font-size: 11px;
232
+ cursor: pointer;
233
+ }
234
+
235
+ .gis-view-demo .demo-panel-inline-head button:hover {
236
+ border-color: #2f6fd0;
237
+ background: #eaf2ff;
238
+ }
239
+
240
+ .gis-view-demo .demo-panel-inline-body {
241
+ min-height: 0;
242
+ max-height: clamp(200px, calc(var(--demo-stage-height) - 250px), 960px);
243
+ overflow: auto;
244
+ overscroll-behavior: contain;
245
+ }
246
+
247
+ .gis-view-demo .demo-panel-inline .demo-controls {
248
+ margin: 8px 10px;
249
+ }
250
+
251
+ .gis-view-demo .demo-panel-inline .demo-controls:last-child {
252
+ margin-bottom: 10px;
253
+ }
254
+
255
+ .gis-view-demo .demo-panel-inline .demo-controls--rules,
256
+ .gis-view-demo .demo-panel-inline .demo-controls--shape {
257
+ display: block;
258
+ }
259
+
260
+ /* 没展开时给一句轻提示,右栏不至于只剩一排按钮 */
261
+ .gis-view-demo .demo-panel-empty {
262
+ display: flex;
263
+ flex-direction: column;
264
+ gap: 5px;
265
+ padding: 12px;
266
+ border: 1px dashed rgba(176, 198, 224, 0.95);
267
+ border-radius: 10px;
268
+ background: linear-gradient(180deg, #fbfdff 0%, #f6faff 100%);
269
+ color: #7386a1;
270
+ font-size: 11px;
271
+ line-height: 1.55;
272
+ }
273
+
274
+ .gis-view-demo .demo-panel-empty strong {
275
+ color: #3b597e;
276
+ font-size: 12px;
277
+ }
278
+
279
+ /* 实例方法速查:一排按钮换行摆,返回值用等宽块显示 */
280
+ .gis-view-demo .demo-api-actions {
281
+ flex-wrap: wrap;
282
+ gap: 4px;
283
+ }
284
+
285
+ /* API 速查:搜索行 + 分组清单 + 逐条详情 + 求值框(清单是 gen-api-index.mjs 生成的) */
286
+ .gis-view-demo .demo-api-search {
287
+ align-items: center;
288
+ gap: 6px;
289
+ }
290
+
291
+ .gis-view-demo .demo-api-search input[type='search'] {
292
+ flex: 1 1 220px;
293
+ min-width: 160px;
294
+ padding: 4px 8px;
295
+ border: 1px solid #cfd9e8;
296
+ border-radius: 6px;
297
+ color: #33517b;
298
+ font-size: 12px;
299
+ }
300
+
301
+ .gis-view-demo .demo-api-search select {
302
+ padding: 4px 6px;
303
+ border: 1px solid #cfd9e8;
304
+ border-radius: 6px;
305
+ color: #33517b;
306
+ font-size: 12px;
307
+ }
308
+
309
+ .gis-view-demo .demo-api-list {
310
+ max-height: 240px;
311
+ overflow: auto;
312
+ padding: 6px 8px;
313
+ border: 1px solid #cfd9e8;
314
+ border-radius: 6px;
315
+ background: #fbfdff;
316
+ }
317
+
318
+ .gis-view-demo .demo-api-list--options {
319
+ max-height: 180px;
320
+ margin-top: 6px;
321
+ }
322
+
323
+ .gis-view-demo .demo-api-group-title {
324
+ margin: 6px 0 3px;
325
+ color: #7c8da6;
326
+ font-size: 11px;
327
+ }
328
+
329
+ .gis-view-demo .demo-api-group:first-child .demo-api-group-title {
330
+ margin-top: 0;
331
+ }
332
+
333
+ .gis-view-demo .demo-api-item {
334
+ display: flex;
335
+ justify-content: space-between;
336
+ gap: 8px;
337
+ width: 100%;
338
+ padding: 2px 6px;
339
+ border: 1px solid transparent;
340
+ border-radius: 5px;
341
+ background: none;
342
+ color: #33517b;
343
+ font-size: 11px;
344
+ text-align: left;
345
+ cursor: pointer;
346
+ }
347
+
348
+ .gis-view-demo .demo-api-item:hover {
349
+ background: #eef5ff;
350
+ }
351
+
352
+ .gis-view-demo .demo-api-item.is-picked {
353
+ border-color: #2f6fd0;
354
+ background: #eaf2ff;
355
+ }
356
+
357
+ .gis-view-demo .demo-api-item b {
358
+ font-weight: 600;
359
+ }
360
+
361
+ .gis-view-demo .demo-api-item span {
362
+ overflow: hidden;
363
+ color: #8a97a8;
364
+ font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
365
+ text-overflow: ellipsis;
366
+ white-space: nowrap;
367
+ }
368
+
369
+ .gis-view-demo .demo-api-detail {
370
+ flex-direction: column;
371
+ align-items: flex-start;
372
+ gap: 2px;
373
+ padding: 6px 8px;
374
+ border-radius: 6px;
375
+ background: #f2f7ff;
376
+ }
377
+
378
+ .gis-view-demo .demo-api-eval {
379
+ align-items: center;
380
+ gap: 6px;
381
+ }
382
+
383
+ .gis-view-demo .demo-api-eval input[type='text'] {
384
+ flex: 1 1 auto;
385
+ width: auto;
386
+ min-width: 180px;
387
+ font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
388
+ }
389
+
390
+ .gis-view-demo .demo-api-search code,
391
+ .gis-view-demo .demo-api-eval code {
392
+ font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
393
+ }
394
+
395
+ .gis-view-demo .demo-canvas-menu {
396
+ width: 320px;
397
+ }
398
+
399
+
400
+ .gis-view-demo .demo-controls textarea {
401
+ width: 100%;
402
+ min-height: 126px;
403
+ padding: 6px 8px;
404
+ border: 1px solid #cfd9e8;
405
+ border-radius: 6px;
406
+ color: #33517b;
407
+ font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
408
+ font-size: 11px;
409
+ line-height: 1.5;
410
+ resize: vertical;
411
+ }
412
+
413
+ /* 说明段落:默认收起,只留标题旁边这个开关 */
414
+ .gis-view-demo .demo-notes-toggle {
415
+ margin: 6px 0 0 8px;
416
+ padding: 3px 9px;
417
+ border: 1px dashed #cfd9e8;
418
+ border-radius: 999px;
419
+ background: #f7faff;
420
+ color: #4b6b93;
421
+ font-size: 11px;
422
+ font-weight: 600;
423
+ cursor: pointer;
424
+ }
425
+
426
+ .gis-view-demo .demo-notes--closed p {
427
+ display: none;
428
+ }
429
+
430
+ /* 始终露在画布上的鹰眼图说明收成两行,详细信息在文档里 */
431
+ .gis-view-demo .demo-minimap-hint {
432
+ max-width: 336px;
433
+ max-height: 30px;
434
+ line-height: 1.5;
435
+ overflow: hidden;
436
+ }
437
+
438
+ /* 小图的工具条按内容收缩,说明文字不再把整块撑到画布中间 */
439
+ .gis-view-demo .demo-minimap {
440
+ max-width: 352px;
441
+ }
442
+
443
+ /* 设置默认收起来:画布上只留一个摘要条,需要调的时候再展开 */
444
+ .gis-view-demo .demo-minimap-settings > summary {
445
+ display: flex;
446
+ align-items: center;
447
+ gap: 6px;
448
+ padding: 3px 6px;
449
+ border-radius: 6px;
450
+ color: #3c5c85;
451
+ font-size: 11px;
452
+ font-weight: 700;
453
+ list-style: none;
454
+ cursor: pointer;
455
+ }
456
+
457
+ .gis-view-demo .demo-minimap-settings > summary::-webkit-details-marker {
458
+ display: none;
459
+ }
460
+
461
+ .gis-view-demo .demo-minimap-settings > summary::before {
462
+ content: '▸';
463
+ color: #8fb4dd;
464
+ font-size: 10px;
465
+ }
466
+
467
+ .gis-view-demo .demo-minimap-settings[open] > summary::before {
468
+ content: '▾';
469
+ }
470
+
471
+ .gis-view-demo .demo-minimap-settings > summary em {
472
+ margin-left: auto;
473
+ color: #7c93b0;
474
+ font-size: 10px;
475
+ font-style: normal;
476
+ font-weight: 500;
477
+ }
478
+
479
+ .gis-view-demo .demo-minimap-settings[open] > summary {
480
+ margin-bottom: 2px;
481
+ }
482
+
483
+ @media (max-width: 980px) {
484
+ .gis-view-demo .demo-card {
485
+ grid-template-columns: minmax(0, 1fr);
486
+ }
487
+
488
+ .gis-view-demo .demo-card-header,
489
+ .gis-view-demo .demo-stage,
490
+ .gis-view-demo .demo-panel-stack,
491
+ .gis-view-demo .gis-demo-event {
492
+ grid-column: 1;
493
+ }
494
+
495
+ .gis-view-demo .demo-stage {
496
+ height: clamp(380px, 68vh, 620px);
497
+ }
498
+
499
+ .gis-view-demo .demo-panel-stack {
500
+ grid-row: auto;
501
+ max-height: none;
502
+ overflow: visible;
503
+ }
504
+
505
+ .gis-view-demo .demo-panel-inline-body {
506
+ max-height: min(60vh, 620px);
507
+ }
508
+
509
+ .gis-view-demo .demo-minimap-hint {
510
+ -webkit-line-clamp: 3;
511
+ }
512
+ }
513
+
514
+ .gis-view-demo .demo-overlay {
515
+ position: absolute;
516
+ top: 12px;
517
+ left: 12px;
518
+ width: 208px;
519
+ padding: 10px 12px;
520
+ border: 1px solid rgba(214, 226, 240, 0.9);
521
+ border-radius: 10px;
522
+ background: rgba(255, 255, 255, 0.88);
523
+ box-shadow: 0 10px 26px rgba(31, 62, 105, 0.14);
524
+ color: #3b5675;
525
+ font-size: 11px;
526
+ pointer-events: none;
527
+ backdrop-filter: blur(6px);
528
+ }
529
+
530
+ .gis-view-demo .demo-overlay-title {
531
+ margin: 0 0 8px;
532
+ padding-bottom: 6px;
533
+ border-bottom: 1px solid rgba(214, 226, 240, 0.8);
534
+ color: #2f6fd0;
535
+ font-size: 11px;
536
+ font-weight: 700;
537
+ letter-spacing: 0.04em;
538
+ }
539
+
540
+ .gis-view-demo .demo-overlay dl {
541
+ display: grid;
542
+ gap: 4px;
543
+ margin: 0;
544
+ }
545
+
546
+ .gis-view-demo .demo-overlay dl > div {
547
+ display: flex;
548
+ align-items: baseline;
549
+ justify-content: space-between;
550
+ gap: 10px;
551
+ }
552
+
553
+ .gis-view-demo .demo-overlay dt {
554
+ color: #7c8da6;
555
+ }
556
+
557
+ .gis-view-demo .demo-overlay dd {
558
+ margin: 0;
559
+ color: #25395c;
560
+ font-variant-numeric: tabular-nums;
561
+ font-weight: 600;
562
+ }
563
+
564
+ .gis-view-demo .demo-minimap {
565
+ position: absolute;
566
+ left: 12px;
567
+ bottom: 12px;
568
+ display: flex;
569
+ flex-direction: column;
570
+ gap: 4px;
571
+ padding: 6px 6px 4px;
572
+ border: 1px solid rgba(214, 226, 240, 0.9);
573
+ border-radius: 10px;
574
+ background: rgba(255, 255, 255, 0.9);
575
+ box-shadow: 0 10px 26px rgba(31, 62, 105, 0.14);
576
+ backdrop-filter: blur(6px);
577
+ }
578
+
579
+ .gis-view-demo .demo-minimap-toolbar {
580
+ display: flex;
581
+ align-items: center;
582
+ flex-wrap: wrap;
583
+ gap: 4px;
584
+ max-width: 336px;
585
+ }
586
+
587
+ .gis-view-demo .demo-minimap-toolbar select {
588
+ padding: 2px 4px;
589
+ border: 1px solid #cfd9e8;
590
+ border-radius: 6px;
591
+ color: #33517b;
592
+ font-size: 11px;
593
+ }
594
+
595
+ .gis-view-demo .demo-minimap-toolbar input[type='color'] {
596
+ width: 26px;
597
+ height: 18px;
598
+ padding: 0 1px;
599
+ border: 1px solid #cfd9e8;
600
+ border-radius: 6px;
601
+ background: #fff;
602
+ cursor: pointer;
603
+ }
604
+
605
+ .gis-view-demo .demo-minimap-toolbar input[type='number'] {
606
+ width: 42px;
607
+ padding: 2px 4px;
608
+ border: 1px solid #cfd9e8;
609
+ border-radius: 6px;
610
+ color: #33517b;
611
+ font-size: 11px;
612
+ }
613
+
614
+ .gis-view-demo .demo-minimap-toolbar button {
615
+ min-width: 22px;
616
+ padding: 2px 6px;
617
+ border: 1px solid #cfd9e8;
618
+ border-radius: 6px;
619
+ background: #fff;
620
+ color: #33517b;
621
+ font-size: 11px;
622
+ line-height: 1.4;
623
+ cursor: pointer;
624
+ }
625
+
626
+ .gis-view-demo .demo-minimap-toolbar button:hover {
627
+ border-color: #8fb4dd;
628
+ background: #f2f7ff;
629
+ }
630
+
631
+ .gis-view-demo .demo-minimap-switch {
632
+ display: inline-flex;
633
+ align-items: center;
634
+ gap: 4px;
635
+ color: #526b8d;
636
+ font-size: 11px;
637
+ }
638
+
639
+ .gis-view-demo .demo-minimap-hint {
640
+ color: #8191a8;
641
+ font-size: 10px;
642
+ text-align: center;
643
+ }
644
+
645
+ .gis-view-demo .demo-slider {
646
+ display: inline-flex;
647
+ align-items: center;
648
+ gap: 6px;
649
+ color: #526b8d;
650
+ /* 下拉的选项一长,不折行、不压缩,放不下就整行换到下一行(不然文字会被挤成一列) */
651
+ white-space: nowrap;
652
+ flex-shrink: 0;
653
+ }
654
+
655
+ .gis-view-demo .demo-slider input[type='range'] {
656
+ width: 96px;
657
+ margin: 0;
658
+ accent-color: #3678bf;
659
+ }
660
+
661
+ .gis-view-demo .demo-slider input[type='range']:disabled {
662
+ opacity: 0.4;
663
+ }
664
+
665
+ .gis-view-demo .demo-slider span {
666
+ min-width: 44px;
667
+ color: #8191a8;
668
+ font-variant-numeric: tabular-nums;
669
+ }
670
+
671
+ .gis-view-demo .demo-slider select {
672
+ padding: 3px 6px;
673
+ border: 1px solid #cfd9e8;
674
+ border-radius: 6px;
675
+ color: #33517b;
676
+ font-size: 12px;
677
+ }
678
+
679
+ .gis-view-demo .demo-controls input[type='text'] {
680
+ width: 120px;
681
+ padding: 3px 6px;
682
+ border: 1px solid #cfd9e8;
683
+ border-radius: 6px;
684
+ color: #33517b;
685
+ font-size: 12px;
686
+ }
687
+
688
+ .gis-view-demo .demo-controls button {
689
+ border-color: #cfd9e8;
690
+ background: #fff;
691
+ color: #33517b;
692
+ }
693
+
694
+ .gis-view-demo .demo-controls button:hover {
695
+ border-color: #8fb4dd;
696
+ background: #f2f7ff;
697
+ }
698
+
699
+ .gis-view-demo .demo-members {
700
+ display: flex;
701
+ flex: 1 1 100%;
702
+ flex-direction: column;
703
+ gap: 4px;
704
+ padding: 6px 8px;
705
+ border-radius: 6px;
706
+ background: #f7f9fc;
707
+ }
708
+
709
+ .gis-view-demo .demo-member-row {
710
+ display: flex;
711
+ flex-wrap: wrap;
712
+ align-items: center;
713
+ gap: 6px;
714
+ color: #526b8d;
715
+ font-size: 12px;
716
+ }
717
+
718
+ .gis-view-demo .demo-member-title {
719
+ min-width: 54px;
720
+ color: #33517b;
721
+ font-weight: 600;
722
+ }
723
+
724
+ .gis-view-demo .demo-member-row input[type='text'] {
725
+ width: 132px;
726
+ }
727
+
728
+ .gis-view-demo .demo-member-row input[type='number'] {
729
+ width: 76px;
730
+ padding: 3px 6px;
731
+ border: 1px solid #cfd9e8;
732
+ border-radius: 6px;
733
+ color: #33517b;
734
+ font-size: 12px;
735
+ }
736
+
737
+ .gis-view-demo .demo-member-row input[type='color'] {
738
+ width: 30px;
739
+ height: 22px;
740
+ padding: 0;
741
+ border: 1px solid #cfd9e8;
742
+ border-radius: 4px;
743
+ background: #fff;
744
+ }
745
+
746
+ .gis-view-demo .gis-demo-event {
747
+ margin: 12px 0 0;
748
+ padding: 8px 10px;
749
+ border-radius: 6px;
750
+ background: #f3f7fc;
751
+ color: #4a648a;
752
+ font-size: 12px;
753
+ line-height: 1.5;
754
+ }
755
+
756
+ .gis-view-demo .demo-groups {
757
+ margin: 6px 0 0;
758
+ padding: 8px 10px;
759
+ max-height: 168px;
760
+ overflow: auto;
761
+ border-radius: 6px;
762
+ background: #f7f9fc;
763
+ color: #3f5878;
764
+ font-size: 11px;
765
+ line-height: 1.5;
766
+ white-space: pre;
767
+ }
768
+
769
+ /* 面板里的长说明:默认折成一行「说明」,点开才铺开 —— 面板就不会被几段参数说明撑长 */
770
+ .gis-view-demo .demo-hint-more {
771
+ flex: 1 1 100%;
772
+ }
773
+
774
+ .gis-view-demo .demo-hint-more > summary {
775
+ color: #8191a8;
776
+ font-size: 11px;
777
+ cursor: pointer;
778
+ list-style: none;
779
+ }
780
+
781
+ .gis-view-demo .demo-hint-more > summary::-webkit-details-marker {
782
+ display: none;
783
+ }
784
+
785
+ .gis-view-demo .demo-hint-more > summary::before {
786
+ content: '▸ 说明';
787
+ }
788
+
789
+ .gis-view-demo .demo-hint-more[open] > summary::before {
790
+ content: '▾ 说明';
791
+ }
792
+
793
+ .gis-view-demo .demo-hint-more .demo-control-hint {
794
+ display: block;
795
+ margin: 4px 0 0;
796
+ line-height: 1.6;
797
+ }
798
+
799
+ /* 「数据格式」面板:一条结构一块,块里是标题 + 字段说明 + 从当前数据里取的真实样例 */
800
+ .gis-view-demo .demo-panel .demo-controls--shape {
801
+ display: block;
802
+ }
803
+
804
+ .gis-view-demo .demo-shape {
805
+ margin-bottom: 8px;
806
+ padding: 8px 10px;
807
+ border: 1px solid #e5ecf5;
808
+ border-radius: 8px;
809
+ background: #fff;
810
+ }
811
+
812
+ .gis-view-demo .demo-shape:last-child {
813
+ margin-bottom: 0;
814
+ }
815
+
816
+ .gis-view-demo .demo-shape-title {
817
+ margin: 0;
818
+ color: #33517b;
819
+ font-size: 12px;
820
+ font-weight: 600;
821
+ }
822
+
823
+ .gis-view-demo .demo-shape-fields {
824
+ display: block;
825
+ margin-top: 4px;
826
+ color: #6b7f9c;
827
+ font-size: 11px;
828
+ line-height: 1.6;
829
+ }
830
+
831
+ .gis-view-demo .demo-shape-note {
832
+ display: block;
833
+ margin-top: 4px;
834
+ color: #8191a8;
835
+ font-size: 11px;
836
+ }
837
+
838
+ .gis-view-demo .demo-shape .demo-groups {
839
+ margin-top: 4px;
840
+ max-height: 132px;
841
+ white-space: pre-wrap;
842
+ }
843
+
844
+ .gis-view-demo .demo-channel-menu {
845
+ position: absolute;
846
+ z-index: 6;
847
+ width: 340px;
848
+ padding: 10px 12px;
849
+ border: 1px solid rgba(214, 226, 240, 0.95);
850
+ border-radius: 10px;
851
+ background: rgba(255, 255, 255, 0.97);
852
+ box-shadow: 0 16px 34px rgba(31, 62, 105, 0.22);
853
+ color: #3b5675;
854
+ font-size: 11px;
855
+ backdrop-filter: blur(6px);
856
+ }
857
+
858
+ .gis-view-demo .demo-point-menu {
859
+ width: 280px;
860
+ }
861
+
862
+ .gis-view-demo .demo-point-menu .demo-channel-menu-actions button {
863
+ padding: 4px 9px;
864
+ border: 1px solid rgba(190, 208, 230, 0.95);
865
+ border-radius: 6px;
866
+ background: #f5f8fc;
867
+ color: #3b5675;
868
+ cursor: pointer;
869
+ }
870
+
871
+ .gis-view-demo .demo-point-menu .demo-channel-menu-actions button:disabled {
872
+ cursor: not-allowed;
873
+ opacity: 0.5;
874
+ }
875
+
876
+
877
+ .gis-view-demo .demo-channel-menu-head {
878
+ display: flex;
879
+ align-items: center;
880
+ gap: 8px;
881
+ padding-bottom: 6px;
882
+ border-bottom: 1px solid rgba(214, 226, 240, 0.8);
883
+ }
884
+
885
+ .gis-view-demo .demo-channel-menu-head strong {
886
+ color: #2f6fd0;
887
+ font-size: 12px;
888
+ }
889
+
890
+ .gis-view-demo .demo-channel-menu-head span {
891
+ flex: 1;
892
+ color: #6a86a8;
893
+ }
894
+
895
+ .gis-view-demo .demo-channel-menu-head button {
896
+ border: none;
897
+ background: none;
898
+ color: #90a5bf;
899
+ font-size: 14px;
900
+ line-height: 1;
901
+ cursor: pointer;
902
+ }
903
+
904
+ .gis-view-demo .demo-channel-menu-groups {
905
+ margin: 6px 0;
906
+ padding: 0;
907
+ display: grid;
908
+ gap: 4px;
909
+ max-height: 132px;
910
+ overflow: auto;
911
+ list-style: none;
912
+ }
913
+
914
+ .gis-view-demo .demo-channel-menu-groups li {
915
+ display: flex;
916
+ justify-content: space-between;
917
+ gap: 8px;
918
+ padding: 4px 6px;
919
+ border-radius: 6px;
920
+ background: #f5f8fc;
921
+ cursor: pointer;
922
+ }
923
+
924
+ .gis-view-demo .demo-channel-menu-groups li.is-current {
925
+ background: #e4efff;
926
+ color: #2f6fd0;
927
+ font-weight: 600;
928
+ }
929
+
930
+ .gis-view-demo .demo-channel-menu-actions {
931
+ display: flex;
932
+ flex-wrap: wrap;
933
+ gap: 6px;
934
+ }
935
+
936
+ .gis-view-demo .demo-channel-menu-lines {
937
+ margin: 6px 0 8px;
938
+ padding-top: 6px;
939
+ border-top: 1px dashed rgba(214, 226, 240, 0.9);
940
+ }
941
+
942
+ .gis-view-demo .demo-channel-menu-subtitle {
943
+ margin: 0 0 5px;
944
+ color: #6a86a8;
945
+ line-height: 1.5;
946
+ }
947
+
948
+ .gis-view-demo .demo-channel-menu-lines ul {
949
+ margin: 0;
950
+ padding: 0;
951
+ display: grid;
952
+ gap: 4px;
953
+ max-height: 120px;
954
+ overflow: auto;
955
+ list-style: none;
956
+ }
957
+
958
+ .gis-view-demo .demo-channel-menu-lines li {
959
+ display: flex;
960
+ align-items: center;
961
+ gap: 6px;
962
+ min-width: 0;
963
+ padding: 3px 5px;
964
+ border-radius: 6px;
965
+ background: #f5f8fc;
966
+ }
967
+
968
+ .gis-view-demo .demo-channel-menu-line-id {
969
+ flex: 1;
970
+ min-width: 0;
971
+ overflow: hidden;
972
+ text-overflow: ellipsis;
973
+ white-space: nowrap;
974
+ color: #3b5675;
975
+ }
976
+
977
+ .gis-view-demo .demo-channel-menu-target {
978
+ /* flex 项默认按内容撑开:不给 min-width: 0,选项一长整行就顶出弹框 */
979
+ flex: 0 1 auto;
980
+ min-width: 0;
981
+ max-width: 148px;
982
+ padding: 2px 4px;
983
+ border: 1px solid rgba(47, 111, 208, 0.35);
984
+ border-radius: 6px;
985
+ background: #ffffff;
986
+ color: #2f6fd0;
987
+ font-size: 11px;
988
+ }
989
+
990
+ .gis-view-demo .demo-channel-menu-assign {
991
+ flex: 0 0 auto;
992
+ padding: 3px 8px;
993
+ border: 1px solid rgba(47, 111, 208, 0.35);
994
+ border-radius: 6px;
995
+ background: #e4efff;
996
+ color: #2f6fd0;
997
+ font-size: 11px;
998
+ cursor: pointer;
999
+ }
1000
+
1001
+ .gis-view-demo .demo-channel-menu-actions button {
1002
+ padding: 3px 8px;
1003
+ border: 1px solid rgba(47, 111, 208, 0.35);
1004
+ border-radius: 6px;
1005
+ background: #ffffff;
1006
+ color: #2f6fd0;
1007
+ font-size: 11px;
1008
+ cursor: pointer;
1009
+ }
1010
+
1011
+ .gis-view-demo .demo-channel-menu-actions button:disabled {
1012
+ border-color: rgba(150, 170, 195, 0.4);
1013
+ background: #f4f7fb;
1014
+ color: #9db0c8;
1015
+ cursor: not-allowed;
1016
+ }
1017
+
1018
+ .gis-view-demo .demo-channel-menu-hint {
1019
+ margin: 8px 0 0;
1020
+ color: #6a86a8;
1021
+ line-height: 1.5;
1022
+ }
1023
+
1024
+ .gis-view-demo .demo-merge-mask {
1025
+ position: fixed;
1026
+ inset: 0;
1027
+ z-index: 40;
1028
+ display: flex;
1029
+ align-items: center;
1030
+ justify-content: center;
1031
+ background: rgba(12, 24, 40, 0.34);
1032
+ }
1033
+
1034
+ .gis-view-demo .demo-merge-dialog {
1035
+ width: min(380px, calc(100% - 32px));
1036
+ padding: 16px 18px;
1037
+ border: 1px solid rgba(47, 111, 208, 0.28);
1038
+ border-radius: 12px;
1039
+ background: #ffffff;
1040
+ box-shadow: 0 18px 44px rgba(12, 30, 56, 0.24);
1041
+ color: #16324f;
1042
+ }
1043
+
1044
+ .gis-view-demo .demo-merge-dialog h4 {
1045
+ margin: 0 0 6px;
1046
+ font-size: 14px;
1047
+ }
1048
+
1049
+ .gis-view-demo .demo-merge-dialog p {
1050
+ margin: 0;
1051
+ color: #55708f;
1052
+ font-size: 12px;
1053
+ line-height: 1.6;
1054
+ }
1055
+
1056
+ .gis-view-demo .demo-station-grid {
1057
+ display: grid;
1058
+ grid-template-columns: 1fr 1fr;
1059
+ gap: 8px 10px;
1060
+ margin: 10px 0 4px;
1061
+ }
1062
+
1063
+ .gis-view-demo .demo-station-grid label {
1064
+ display: flex;
1065
+ flex-direction: column;
1066
+ gap: 3px;
1067
+ color: #55708f;
1068
+ font-size: 12px;
1069
+ }
1070
+
1071
+ .gis-view-demo .demo-station-grid input,
1072
+ .gis-view-demo .demo-station-grid select {
1073
+ padding: 4px 6px;
1074
+ border: 1px solid rgba(47, 111, 208, 0.32);
1075
+ border-radius: 6px;
1076
+ background: #fbfdff;
1077
+ color: #16324f;
1078
+ font: inherit;
1079
+ }
1080
+
1081
+ .gis-view-demo .demo-station-error {
1082
+ margin: 4px 0 0;
1083
+ color: #c0392b;
1084
+ }
1085
+
1086
+ .gis-view-demo .demo-merge-pair {
1087
+ display: flex;
1088
+ align-items: center;
1089
+ gap: 10px;
1090
+ margin: 10px 0 6px;
1091
+ font-size: 13px;
1092
+ }
1093
+
1094
+ .gis-view-demo .demo-merge-pair b {
1095
+ color: #2f6fd0;
1096
+ }
1097
+
1098
+ .gis-view-demo .demo-merge-detail {
1099
+ color: #6a86a8;
1100
+ }
1101
+
1102
+ .gis-view-demo .demo-merge-actions {
1103
+ display: flex;
1104
+ flex-wrap: wrap;
1105
+ gap: 8px;
1106
+ margin-top: 14px;
1107
+ }
1108
+
1109
+ .gis-view-demo .demo-merge-actions button {
1110
+ padding: 5px 10px;
1111
+ border: 1px solid rgba(47, 111, 208, 0.35);
1112
+ border-radius: 8px;
1113
+ background: #ffffff;
1114
+ color: #2f6fd0;
1115
+ font-size: 12px;
1116
+ cursor: pointer;
1117
+ }
1118
+
1119
+ .gis-view-demo .demo-merge-actions button.is-primary {
1120
+ border-color: #2f6fd0;
1121
+ background: #2f6fd0;
1122
+ color: #ffffff;
1123
+ }
1124
+
1125
+ /* 删除确认框里「要删什么」的清单:左边是要删的要素、右边是它的归属 / 连带影响 */
1126
+ .gis-view-demo .demo-remove-list {
1127
+ display: flex;
1128
+ flex-direction: column;
1129
+ gap: 4px;
1130
+ max-height: 180px;
1131
+ margin: 10px 0 0;
1132
+ padding: 0;
1133
+ overflow: auto;
1134
+ list-style: none;
1135
+ }
1136
+
1137
+ .gis-view-demo .demo-remove-list li {
1138
+ display: flex;
1139
+ justify-content: space-between;
1140
+ gap: 10px;
1141
+ padding: 5px 7px;
1142
+ border: 1px solid rgba(47, 111, 208, 0.18);
1143
+ border-radius: 8px;
1144
+ color: #29486c;
1145
+ font-size: 12px;
1146
+ }
1147
+
1148
+ .gis-view-demo .demo-remove-list span {
1149
+ color: #6a86a8;
1150
+ }
1151
+ .gis-view-demo .gis-demo-events {
1152
+ display: flex;
1153
+ flex-wrap: wrap;
1154
+ gap: 6px 16px;
1155
+ margin: 6px 0 0;
1156
+ padding: 8px 10px;
1157
+ border-radius: 6px;
1158
+ background: #f7fafd;
1159
+ color: #4a648a;
1160
+ font-size: 12px;
1161
+ }
1162
+
1163
+ /* 功能开关:18 个复选框按两列铺开(勾选 = 强制打开、取消 = 强制关闭) */
1164
+ .gis-view-demo .demo-features {
1165
+ display: grid;
1166
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1167
+ gap: 2px 10px;
1168
+ min-height: 0;
1169
+ margin-top: -2px;
1170
+ }
1171
+
1172
+ .gis-view-demo .demo-feature-toggle {
1173
+ display: inline-flex;
1174
+ align-items: center;
1175
+ gap: 5px;
1176
+ color: #526b8d;
1177
+ font-size: 12px;
1178
+ cursor: pointer;
1179
+ }
1180
+
1181
+ /* 历史步骤与事件日志:一行一条,左边是名字、右边是读数 */
1182
+ .gis-view-demo .demo-step-list {
1183
+ display: flex;
1184
+ flex-direction: column;
1185
+ gap: 3px;
1186
+ max-height: 138px;
1187
+ margin: 8px 10px;
1188
+ padding: 0;
1189
+ overflow: auto;
1190
+ list-style: none;
1191
+ }
1192
+
1193
+ .gis-view-demo .demo-step-list li {
1194
+ display: flex;
1195
+ align-items: baseline;
1196
+ gap: 8px;
1197
+ padding: 4px 8px;
1198
+ border-radius: 6px;
1199
+ background: #f7f9fc;
1200
+ color: #4a648a;
1201
+ font-size: 11px;
1202
+ }
1203
+
1204
+ .gis-view-demo .demo-step-list li b {
1205
+ flex: none;
1206
+ color: #23405f;
1207
+ font-weight: 700;
1208
+ }
1209
+
1210
+ .gis-view-demo .demo-step-list li span {
1211
+ color: #7b8ca6;
1212
+ font-variant-numeric: tabular-nums;
1213
+ }
1214
+
1215
+ /* 事件日志的载荷文本可能很长:单行省略,鼠标悬停看全文 */
1216
+ .gis-view-demo .demo-step-list--events li span {
1217
+ overflow: hidden;
1218
+ white-space: nowrap;
1219
+ text-overflow: ellipsis;
1220
+ }
1221
+
1222
+ .gis-view-demo .gis-demo-events b {
1223
+ margin-right: 4px;
1224
+ color: #23405f;
1225
+ font-weight: 600;
1226
+ }
1227
+
1228
+ .gis-view-demo .gis-demo-events span {
1229
+ font-variant-numeric: tabular-nums;
1230
+ }