@pacem/pacem 1.0.0-abel → 1.0.0-amaldi

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/browser/pacem-2d.js +3 -3
  2. package/dist/browser/pacem-2d.js.map +0 -5
  3. package/dist/browser/pacem-2d.min.js +3 -3
  4. package/dist/browser/pacem-2d.min.js.map +0 -5
  5. package/dist/browser/pacem-3d.js +341 -341
  6. package/dist/browser/pacem-3d.js.map +1 -6
  7. package/dist/browser/pacem-3d.min.js +3 -3
  8. package/dist/browser/pacem-3d.min.js.map +1 -6
  9. package/dist/browser/pacem-charts.js +3 -3
  10. package/dist/browser/pacem-charts.js.map +0 -5
  11. package/dist/browser/pacem-charts.min.js +3 -3
  12. package/dist/browser/pacem-charts.min.js.map +0 -5
  13. package/dist/browser/pacem-cms.js +107 -107
  14. package/dist/browser/pacem-cms.js.map +1 -6
  15. package/dist/browser/pacem-cms.min.js +3 -3
  16. package/dist/browser/pacem-cms.min.js.map +1 -6
  17. package/dist/browser/pacem-core.js +21 -7
  18. package/dist/browser/pacem-core.js.map +1 -6
  19. package/dist/browser/pacem-core.min.js +4 -4
  20. package/dist/browser/pacem-core.min.js.map +1 -6
  21. package/dist/browser/pacem-foundation.js +3 -3
  22. package/dist/browser/pacem-foundation.js.map +0 -5
  23. package/dist/browser/pacem-foundation.min.js +3 -3
  24. package/dist/browser/pacem-foundation.min.js.map +0 -5
  25. package/dist/browser/pacem-fx.js +19 -19
  26. package/dist/browser/pacem-fx.js.map +1 -6
  27. package/dist/browser/pacem-fx.min.js +3 -3
  28. package/dist/browser/pacem-fx.min.js.map +1 -6
  29. package/dist/browser/pacem-logging.js +3 -3
  30. package/dist/browser/pacem-logging.js.map +0 -5
  31. package/dist/browser/pacem-logging.min.js +3 -3
  32. package/dist/browser/pacem-logging.min.js.map +0 -5
  33. package/dist/browser/pacem-maps.js +3 -3
  34. package/dist/browser/pacem-maps.js.map +0 -5
  35. package/dist/browser/pacem-maps.min.js +3 -3
  36. package/dist/browser/pacem-maps.min.js.map +0 -5
  37. package/dist/browser/pacem-media.js +3 -3
  38. package/dist/browser/pacem-media.js.map +0 -5
  39. package/dist/browser/pacem-media.min.js +3 -3
  40. package/dist/browser/pacem-media.min.js.map +0 -5
  41. package/dist/browser/pacem-networking.js +3 -3
  42. package/dist/browser/pacem-networking.js.map +0 -5
  43. package/dist/browser/pacem-networking.min.js +3 -3
  44. package/dist/browser/pacem-networking.min.js.map +0 -5
  45. package/dist/browser/pacem-numerical.js +3 -3
  46. package/dist/browser/pacem-numerical.js.map +0 -5
  47. package/dist/browser/pacem-numerical.min.js +3 -3
  48. package/dist/browser/pacem-numerical.min.js.map +0 -5
  49. package/dist/browser/pacem-plus.js +77 -77
  50. package/dist/browser/pacem-plus.js.map +1 -6
  51. package/dist/browser/pacem-plus.min.js +3 -3
  52. package/dist/browser/pacem-plus.min.js.map +1 -6
  53. package/dist/browser/pacem-scaffolding.js +11 -8
  54. package/dist/browser/pacem-scaffolding.js.map +1 -6
  55. package/dist/browser/pacem-scaffolding.min.js +4 -4
  56. package/dist/browser/pacem-scaffolding.min.js.map +1 -6
  57. package/dist/browser/pacem-ui.js +37 -26
  58. package/dist/browser/pacem-ui.js.map +1 -6
  59. package/dist/browser/pacem-ui.min.js +4 -4
  60. package/dist/browser/pacem-ui.min.js.map +1 -6
  61. package/dist/bundle/pacem.min.mjs +40 -38
  62. package/dist/bundle/pacem.mjs +58 -32
  63. package/dist/bundle/pacem.mjs.map +2 -7
  64. package/dist/typings/index.d.ts +5 -3
  65. package/dist/vscode.html-custom.json +4834 -0
  66. package/package.json +9 -8
@@ -0,0 +1,4834 @@
1
+ {
2
+ "version": 1.1,
3
+ "tags": [
4
+ {
5
+ "name": "pacem-2d",
6
+ "description": {
7
+ "kind": "markdown",
8
+ "value": "**@pacem/pacem-2d**"
9
+ },
10
+ "attributes": [
11
+ {
12
+ "name": "adapter"
13
+ },
14
+ {
15
+ "name": "viewbox"
16
+ },
17
+ {
18
+ "name": "aspect-ratio"
19
+ },
20
+ {
21
+ "name": "datasource"
22
+ },
23
+ {
24
+ "name": "options"
25
+ },
26
+ {
27
+ "name": "zoom"
28
+ }
29
+ ]
30
+ },
31
+ {
32
+ "name": "pacem-2d-canvas-adapter",
33
+ "description": {
34
+ "kind": "markdown",
35
+ "value": "**@pacem/pacem-2d**\n\nImplementation postponed. Focus on SVG adapter."
36
+ }
37
+ },
38
+ {
39
+ "name": "pacem-2d-circle",
40
+ "description": {
41
+ "kind": "markdown",
42
+ "value": "**@pacem/pacem-2d**"
43
+ },
44
+ "attributes": [
45
+ {
46
+ "name": "center"
47
+ },
48
+ {
49
+ "name": "radius"
50
+ },
51
+ {
52
+ "name": "start"
53
+ },
54
+ {
55
+ "name": "end"
56
+ }
57
+ ]
58
+ },
59
+ {
60
+ "name": "pacem-2d-ellipse",
61
+ "description": {
62
+ "kind": "markdown",
63
+ "value": "**@pacem/pacem-2d**"
64
+ },
65
+ "attributes": [
66
+ {
67
+ "name": "center"
68
+ },
69
+ {
70
+ "name": "rx"
71
+ },
72
+ {
73
+ "name": "ry"
74
+ },
75
+ {
76
+ "name": "start"
77
+ },
78
+ {
79
+ "name": "end"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "name": "pacem-2d-group",
85
+ "description": {
86
+ "kind": "markdown",
87
+ "value": "**@pacem/pacem-2d**"
88
+ },
89
+ "attributes": [
90
+ {
91
+ "name": "datasource"
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "name": "pacem-2d-image",
97
+ "description": {
98
+ "kind": "markdown",
99
+ "value": "**@pacem/pacem-2d**"
100
+ },
101
+ "attributes": [
102
+ {
103
+ "name": "src"
104
+ },
105
+ {
106
+ "name": "x"
107
+ },
108
+ {
109
+ "name": "y"
110
+ },
111
+ {
112
+ "name": "width"
113
+ },
114
+ {
115
+ "name": "height"
116
+ }
117
+ ]
118
+ },
119
+ {
120
+ "name": "pacem-2d-line",
121
+ "description": {
122
+ "kind": "markdown",
123
+ "value": "**@pacem/pacem-2d**"
124
+ },
125
+ "attributes": [
126
+ {
127
+ "name": "from"
128
+ },
129
+ {
130
+ "name": "to"
131
+ }
132
+ ]
133
+ },
134
+ {
135
+ "name": "pacem-2d-path",
136
+ "description": {
137
+ "kind": "markdown",
138
+ "value": "**@pacem/pacem-2d**"
139
+ },
140
+ "attributes": [
141
+ {
142
+ "name": "d"
143
+ }
144
+ ]
145
+ },
146
+ {
147
+ "name": "pacem-2d-polygon",
148
+ "description": {
149
+ "kind": "markdown",
150
+ "value": "**@pacem/pacem-2d**"
151
+ },
152
+ "attributes": [
153
+ {
154
+ "name": "sides"
155
+ },
156
+ {
157
+ "name": "radius",
158
+ "description": "The circumradius of the polygon."
159
+ },
160
+ {
161
+ "name": "center"
162
+ },
163
+ {
164
+ "name": "star-indent"
165
+ }
166
+ ]
167
+ },
168
+ {
169
+ "name": "pacem-2d-polyline",
170
+ "description": {
171
+ "kind": "markdown",
172
+ "value": "**@pacem/pacem-2d**"
173
+ },
174
+ "attributes": [
175
+ {
176
+ "name": "points"
177
+ },
178
+ {
179
+ "name": "closed",
180
+ "values": [
181
+ {
182
+ "name": "true"
183
+ },
184
+ {
185
+ "name": "false"
186
+ }
187
+ ]
188
+ }
189
+ ]
190
+ },
191
+ {
192
+ "name": "pacem-2d-rect",
193
+ "description": {
194
+ "kind": "markdown",
195
+ "value": "**@pacem/pacem-2d**"
196
+ },
197
+ "attributes": [
198
+ {
199
+ "name": "x"
200
+ },
201
+ {
202
+ "name": "y"
203
+ },
204
+ {
205
+ "name": "w"
206
+ },
207
+ {
208
+ "name": "h"
209
+ },
210
+ {
211
+ "name": "r"
212
+ },
213
+ {
214
+ "name": "corner-type"
215
+ }
216
+ ]
217
+ },
218
+ {
219
+ "name": "pacem-2d-svg-adapter",
220
+ "description": {
221
+ "kind": "markdown",
222
+ "value": "**@pacem/pacem-2d**"
223
+ }
224
+ },
225
+ {
226
+ "name": "pacem-2d-text",
227
+ "description": {
228
+ "kind": "markdown",
229
+ "value": "**@pacem/pacem-2d**"
230
+ },
231
+ "attributes": [
232
+ {
233
+ "name": "text"
234
+ },
235
+ {
236
+ "name": "color"
237
+ },
238
+ {
239
+ "name": "font-family"
240
+ },
241
+ {
242
+ "name": "font-size"
243
+ },
244
+ {
245
+ "name": "font-weight"
246
+ },
247
+ {
248
+ "name": "font-style"
249
+ },
250
+ {
251
+ "name": "anchor"
252
+ },
253
+ {
254
+ "name": "text-anchor"
255
+ }
256
+ ]
257
+ },
258
+ {
259
+ "name": "pacem-3d",
260
+ "description": {
261
+ "kind": "markdown",
262
+ "value": "**@pacem/pacem-3d**"
263
+ },
264
+ "attributes": [
265
+ {
266
+ "name": "interactive",
267
+ "values": [
268
+ {
269
+ "name": "true"
270
+ },
271
+ {
272
+ "name": "false"
273
+ }
274
+ ]
275
+ },
276
+ {
277
+ "name": "transparent",
278
+ "values": [
279
+ {
280
+ "name": "true"
281
+ },
282
+ {
283
+ "name": "false"
284
+ }
285
+ ]
286
+ },
287
+ {
288
+ "name": "background"
289
+ },
290
+ {
291
+ "name": "adapter"
292
+ },
293
+ {
294
+ "name": "datasource"
295
+ },
296
+ {
297
+ "name": "orbit",
298
+ "description": "@deprecated",
299
+ "values": [
300
+ {
301
+ "name": "true"
302
+ },
303
+ {
304
+ "name": "false"
305
+ }
306
+ ]
307
+ }
308
+ ]
309
+ },
310
+ {
311
+ "name": "pacem-3d-orbit-camera",
312
+ "description": {
313
+ "kind": "markdown",
314
+ "value": "**@pacem/pacem-3d**"
315
+ },
316
+ "attributes": [
317
+ {
318
+ "name": "max-azimuth"
319
+ },
320
+ {
321
+ "name": "max-polar"
322
+ },
323
+ {
324
+ "name": "min-azimuth"
325
+ },
326
+ {
327
+ "name": "min-polar"
328
+ },
329
+ {
330
+ "name": "zoom-control"
331
+ },
332
+ {
333
+ "name": "rotation-control"
334
+ },
335
+ {
336
+ "name": "pan-control"
337
+ },
338
+ {
339
+ "name": "inertia"
340
+ }
341
+ ]
342
+ },
343
+ {
344
+ "name": "pacem-3d-primitive-box",
345
+ "description": {
346
+ "kind": "markdown",
347
+ "value": "**@pacem/pacem-3d**"
348
+ },
349
+ "attributes": [
350
+ {
351
+ "name": "width"
352
+ },
353
+ {
354
+ "name": "height"
355
+ },
356
+ {
357
+ "name": "depth"
358
+ },
359
+ {
360
+ "name": "width-segments"
361
+ },
362
+ {
363
+ "name": "height-segments"
364
+ },
365
+ {
366
+ "name": "depth-segments"
367
+ }
368
+ ]
369
+ },
370
+ {
371
+ "name": "pacem-3d-primitive-cone",
372
+ "description": {
373
+ "kind": "markdown",
374
+ "value": "**@pacem/pacem-3d**"
375
+ },
376
+ "attributes": [
377
+ {
378
+ "name": "radius"
379
+ },
380
+ {
381
+ "name": "height"
382
+ },
383
+ {
384
+ "name": "sides"
385
+ },
386
+ {
387
+ "name": "height-segments"
388
+ },
389
+ {
390
+ "name": "cap-segments"
391
+ }
392
+ ]
393
+ },
394
+ {
395
+ "name": "pacem-3d-primitive-cylinder",
396
+ "description": {
397
+ "kind": "markdown",
398
+ "value": "**@pacem/pacem-3d**"
399
+ },
400
+ "attributes": [
401
+ {
402
+ "name": "radius"
403
+ },
404
+ {
405
+ "name": "height"
406
+ },
407
+ {
408
+ "name": "sides"
409
+ },
410
+ {
411
+ "name": "height-segments"
412
+ },
413
+ {
414
+ "name": "cap-segments"
415
+ }
416
+ ]
417
+ },
418
+ {
419
+ "name": "pacem-3d-primitive-dodecahedron",
420
+ "description": {
421
+ "kind": "markdown",
422
+ "value": "**@pacem/pacem-3d**"
423
+ }
424
+ },
425
+ {
426
+ "name": "pacem-3d-primitive-hexahedron",
427
+ "description": {
428
+ "kind": "markdown",
429
+ "value": "**@pacem/pacem-3d**"
430
+ }
431
+ },
432
+ {
433
+ "name": "pacem-3d-primitive-icosahedron",
434
+ "description": {
435
+ "kind": "markdown",
436
+ "value": "**@pacem/pacem-3d**"
437
+ }
438
+ },
439
+ {
440
+ "name": "pacem-3d-primitive-line",
441
+ "description": {
442
+ "kind": "markdown",
443
+ "value": "**@pacem/pacem-3d**"
444
+ },
445
+ "attributes": [
446
+ {
447
+ "name": "positions"
448
+ }
449
+ ]
450
+ },
451
+ {
452
+ "name": "pacem-3d-primitive-octahedron",
453
+ "description": {
454
+ "kind": "markdown",
455
+ "value": "**@pacem/pacem-3d**"
456
+ }
457
+ },
458
+ {
459
+ "name": "pacem-3d-primitive-plane",
460
+ "description": {
461
+ "kind": "markdown",
462
+ "value": "**@pacem/pacem-3d**"
463
+ },
464
+ "attributes": [
465
+ {
466
+ "name": "width"
467
+ },
468
+ {
469
+ "name": "length"
470
+ },
471
+ {
472
+ "name": "width-segments"
473
+ },
474
+ {
475
+ "name": "length-segments"
476
+ }
477
+ ]
478
+ },
479
+ {
480
+ "name": "pacem-3d-primitive-sphere",
481
+ "description": {
482
+ "kind": "markdown",
483
+ "value": "**@pacem/pacem-3d**"
484
+ },
485
+ "attributes": [
486
+ {
487
+ "name": "radius"
488
+ },
489
+ {
490
+ "name": "segments"
491
+ }
492
+ ]
493
+ },
494
+ {
495
+ "name": "pacem-3d-primitive-tetrahedron",
496
+ "description": {
497
+ "kind": "markdown",
498
+ "value": "**@pacem/pacem-3d**"
499
+ }
500
+ },
501
+ {
502
+ "name": "pacem-3d-primitive-torus",
503
+ "description": {
504
+ "kind": "markdown",
505
+ "value": "**@pacem/pacem-3d**"
506
+ },
507
+ "attributes": [
508
+ {
509
+ "name": "radius"
510
+ },
511
+ {
512
+ "name": "inner-radius"
513
+ },
514
+ {
515
+ "name": "segments"
516
+ },
517
+ {
518
+ "name": "sides"
519
+ }
520
+ ]
521
+ },
522
+ {
523
+ "name": "pacem-3d-three-adapter",
524
+ "description": {
525
+ "kind": "markdown",
526
+ "value": "**@pacem/pacem-3d**"
527
+ },
528
+ "attributes": [
529
+ {
530
+ "name": "orbit",
531
+ "values": [
532
+ {
533
+ "name": "true"
534
+ },
535
+ {
536
+ "name": "false"
537
+ }
538
+ ]
539
+ }
540
+ ]
541
+ },
542
+ {
543
+ "name": "pacem-3d-webgpu-adapter",
544
+ "description": {
545
+ "kind": "markdown",
546
+ "value": "**@pacem/pacem-3d**"
547
+ },
548
+ "attributes": [
549
+ {
550
+ "name": "modifiers"
551
+ },
552
+ {
553
+ "name": "enable-validation",
554
+ "values": [
555
+ {
556
+ "name": "true"
557
+ },
558
+ {
559
+ "name": "false"
560
+ }
561
+ ]
562
+ }
563
+ ]
564
+ },
565
+ {
566
+ "name": "pacem-3d-wgsl-script",
567
+ "description": {
568
+ "kind": "markdown",
569
+ "value": "**@pacem/pacem-3d**"
570
+ },
571
+ "attributes": [
572
+ {
573
+ "name": "type"
574
+ },
575
+ {
576
+ "name": "wgsl"
577
+ }
578
+ ]
579
+ },
580
+ {
581
+ "name": "pacem-a",
582
+ "description": {
583
+ "kind": "markdown",
584
+ "value": "**@pacem/pacem-ui**"
585
+ },
586
+ "attributes": [
587
+ {
588
+ "name": "fetch-credentials"
589
+ },
590
+ {
591
+ "name": "fetch-headers"
592
+ },
593
+ {
594
+ "name": "href"
595
+ },
596
+ {
597
+ "name": "target"
598
+ },
599
+ {
600
+ "name": "download"
601
+ },
602
+ {
603
+ "name": "router"
604
+ }
605
+ ]
606
+ },
607
+ {
608
+ "name": "pacem-adapter",
609
+ "description": {
610
+ "kind": "markdown",
611
+ "value": "**@pacem/pacem-ui**"
612
+ },
613
+ "attributes": [
614
+ {
615
+ "name": "pausable",
616
+ "values": [
617
+ {
618
+ "name": "true"
619
+ },
620
+ {
621
+ "name": "false"
622
+ }
623
+ ]
624
+ },
625
+ {
626
+ "name": "interval"
627
+ },
628
+ {
629
+ "name": "orientation"
630
+ },
631
+ {
632
+ "name": "interactive",
633
+ "values": [
634
+ {
635
+ "name": "true"
636
+ },
637
+ {
638
+ "name": "false"
639
+ }
640
+ ]
641
+ },
642
+ {
643
+ "name": "swipe-enabled",
644
+ "description": "Gets or sets whether swipe gesture is enabled for navigation (also depends on the 'interactive' flag being set to 'true')",
645
+ "values": [
646
+ {
647
+ "name": "true"
648
+ },
649
+ {
650
+ "name": "false"
651
+ }
652
+ ]
653
+ },
654
+ {
655
+ "name": "deselectable",
656
+ "description": "Gets or sets whether swipe gesture is enabled for navigation (also depends on the 'interactive' flag being set to 'true') */ @Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Boolean }) swipeEnabled: boolean = true; /** Gets or sets whether, by selecting twice an item, you will de-select it and obtain an overall unselected state.",
657
+ "values": [
658
+ {
659
+ "name": "true"
660
+ },
661
+ {
662
+ "name": "false"
663
+ }
664
+ ]
665
+ },
666
+ {
667
+ "name": "loop",
668
+ "values": [
669
+ {
670
+ "name": "true"
671
+ },
672
+ {
673
+ "name": "false"
674
+ }
675
+ ]
676
+ },
677
+ {
678
+ "name": "label-callback"
679
+ }
680
+ ]
681
+ },
682
+ {
683
+ "name": "pacem-agenda",
684
+ "description": {
685
+ "kind": "markdown",
686
+ "value": "**@pacem/pacem-ui**"
687
+ },
688
+ "attributes": [
689
+ {
690
+ "name": "time"
691
+ }
692
+ ]
693
+ },
694
+ {
695
+ "name": "pacem-annihilator",
696
+ "description": {
697
+ "kind": "markdown",
698
+ "value": "**@pacem/pacem-core**"
699
+ }
700
+ },
701
+ {
702
+ "name": "pacem-async-validator",
703
+ "description": {
704
+ "kind": "markdown",
705
+ "value": "**@pacem/pacem-scaffolding**"
706
+ },
707
+ "attributes": [
708
+ {
709
+ "name": "parameters"
710
+ },
711
+ {
712
+ "name": "fetch-credentials"
713
+ },
714
+ {
715
+ "name": "fetch-headers"
716
+ },
717
+ {
718
+ "name": "url"
719
+ },
720
+ {
721
+ "name": "method"
722
+ }
723
+ ]
724
+ },
725
+ {
726
+ "name": "pacem-audio",
727
+ "description": {
728
+ "kind": "markdown",
729
+ "value": "**@pacem/pacem-media**"
730
+ },
731
+ "attributes": [
732
+ {
733
+ "name": "src"
734
+ },
735
+ {
736
+ "name": "stream",
737
+ "values": [
738
+ {
739
+ "name": "true"
740
+ },
741
+ {
742
+ "name": "false"
743
+ }
744
+ ]
745
+ },
746
+ {
747
+ "name": "autoplay",
748
+ "values": [
749
+ {
750
+ "name": "true"
751
+ },
752
+ {
753
+ "name": "false"
754
+ }
755
+ ]
756
+ },
757
+ {
758
+ "name": "duration",
759
+ "values": [
760
+ {
761
+ "name": "true"
762
+ },
763
+ {
764
+ "name": "false"
765
+ }
766
+ ]
767
+ }
768
+ ]
769
+ },
770
+ {
771
+ "name": "pacem-balloon",
772
+ "description": {
773
+ "kind": "markdown",
774
+ "value": "**@pacem/pacem-ui**"
775
+ },
776
+ "attributes": [
777
+ {
778
+ "name": "target"
779
+ },
780
+ {
781
+ "name": "options"
782
+ }
783
+ ]
784
+ },
785
+ {
786
+ "name": "pacem-beforeunload",
787
+ "description": {
788
+ "kind": "markdown",
789
+ "value": "**@pacem/pacem-core**"
790
+ },
791
+ "attributes": [
792
+ {
793
+ "name": "message"
794
+ },
795
+ {
796
+ "name": "active",
797
+ "values": [
798
+ {
799
+ "name": "true"
800
+ },
801
+ {
802
+ "name": "false"
803
+ }
804
+ ]
805
+ }
806
+ ]
807
+ },
808
+ {
809
+ "name": "pacem-binary-validator",
810
+ "description": {
811
+ "kind": "markdown",
812
+ "value": "**@pacem/pacem-scaffolding**"
813
+ },
814
+ "attributes": [
815
+ {
816
+ "name": "pattern"
817
+ },
818
+ {
819
+ "name": "max-size"
820
+ }
821
+ ]
822
+ },
823
+ {
824
+ "name": "pacem-binder",
825
+ "description": {
826
+ "kind": "markdown",
827
+ "value": "**@pacem/pacem-ui**"
828
+ },
829
+ "attributes": [
830
+ {
831
+ "name": "from"
832
+ },
833
+ {
834
+ "name": "to"
835
+ },
836
+ {
837
+ "name": "from-anchor"
838
+ },
839
+ {
840
+ "name": "to-anchor"
841
+ },
842
+ {
843
+ "name": "from-end"
844
+ },
845
+ {
846
+ "name": "to-end"
847
+ },
848
+ {
849
+ "name": "tension"
850
+ },
851
+ {
852
+ "name": "color"
853
+ },
854
+ {
855
+ "name": "interactive",
856
+ "values": [
857
+ {
858
+ "name": "true"
859
+ },
860
+ {
861
+ "name": "false"
862
+ }
863
+ ]
864
+ }
865
+ ]
866
+ },
867
+ {
868
+ "name": "pacem-blade",
869
+ "description": {
870
+ "kind": "markdown",
871
+ "value": "**@pacem/pacem-ui**"
872
+ },
873
+ "attributes": [
874
+ {
875
+ "name": "open",
876
+ "values": [
877
+ {
878
+ "name": "true"
879
+ },
880
+ {
881
+ "name": "false"
882
+ }
883
+ ]
884
+ }
885
+ ]
886
+ },
887
+ {
888
+ "name": "pacem-body-proxy",
889
+ "description": {
890
+ "kind": "markdown",
891
+ "value": "**@pacem/pacem-core**\n\nMoves its content to the document body and eventually removes it when disconnected."
892
+ }
893
+ },
894
+ {
895
+ "name": "pacem-bottom-sheet",
896
+ "description": {
897
+ "kind": "markdown",
898
+ "value": "**@pacem/pacem-ui**"
899
+ },
900
+ "attributes": [
901
+ {
902
+ "name": "open",
903
+ "values": [
904
+ {
905
+ "name": "true"
906
+ },
907
+ {
908
+ "name": "false"
909
+ }
910
+ ]
911
+ }
912
+ ]
913
+ },
914
+ {
915
+ "name": "pacem-bottom-sheet-handle",
916
+ "description": {
917
+ "kind": "markdown",
918
+ "value": "**@pacem/pacem-ui**"
919
+ },
920
+ "attributes": [
921
+ {
922
+ "name": "icon-glyph"
923
+ }
924
+ ]
925
+ },
926
+ {
927
+ "name": "pacem-broadcastchannel-proxy",
928
+ "description": {
929
+ "kind": "markdown",
930
+ "value": "**@pacem/pacem-core**"
931
+ },
932
+ "attributes": [
933
+ {
934
+ "name": "message"
935
+ },
936
+ {
937
+ "name": "result",
938
+ "description": "@readonly"
939
+ },
940
+ {
941
+ "name": "channel-name"
942
+ },
943
+ {
944
+ "name": "autosend",
945
+ "values": [
946
+ {
947
+ "name": "true"
948
+ },
949
+ {
950
+ "name": "false"
951
+ }
952
+ ]
953
+ }
954
+ ]
955
+ },
956
+ {
957
+ "name": "pacem-browser-detect",
958
+ "description": {
959
+ "kind": "markdown",
960
+ "value": "**@pacem/pacem-core**"
961
+ },
962
+ "attributes": [
963
+ {
964
+ "name": "user-agent"
965
+ }
966
+ ]
967
+ },
968
+ {
969
+ "name": "pacem-button",
970
+ "description": {
971
+ "kind": "markdown",
972
+ "value": "**@pacem/pacem-ui**"
973
+ },
974
+ "attributes": [
975
+ {
976
+ "name": "icon-glyph"
977
+ },
978
+ {
979
+ "name": "icon-url"
980
+ },
981
+ {
982
+ "name": "command-name"
983
+ },
984
+ {
985
+ "name": "command-argument"
986
+ },
987
+ {
988
+ "name": "confirmation-message"
989
+ },
990
+ {
991
+ "name": "confirmation-dialog"
992
+ }
993
+ ]
994
+ },
995
+ {
996
+ "name": "pacem-buttonset",
997
+ "description": {
998
+ "kind": "markdown",
999
+ "value": "**@pacem/pacem-ui**"
1000
+ }
1001
+ },
1002
+ {
1003
+ "name": "pacem-calendar",
1004
+ "description": {
1005
+ "kind": "markdown",
1006
+ "value": "**@pacem/pacem-ui**"
1007
+ },
1008
+ "attributes": [
1009
+ {
1010
+ "name": "date"
1011
+ },
1012
+ {
1013
+ "name": "day-label-formatter",
1014
+ "description": "Gets or sets the format for the first day of each month."
1015
+ }
1016
+ ]
1017
+ },
1018
+ {
1019
+ "name": "pacem-calendar-daysofweek-rule",
1020
+ "description": {
1021
+ "kind": "markdown",
1022
+ "value": "**@pacem/pacem-ui**"
1023
+ },
1024
+ "attributes": [
1025
+ {
1026
+ "name": "days"
1027
+ }
1028
+ ]
1029
+ },
1030
+ {
1031
+ "name": "pacem-calendar-event",
1032
+ "description": {
1033
+ "kind": "markdown",
1034
+ "value": "**@pacem/pacem-ui**"
1035
+ },
1036
+ "attributes": [
1037
+ {
1038
+ "name": "start"
1039
+ },
1040
+ {
1041
+ "name": "end"
1042
+ },
1043
+ {
1044
+ "name": "caption"
1045
+ },
1046
+ {
1047
+ "name": "place"
1048
+ },
1049
+ {
1050
+ "name": "all-day",
1051
+ "values": [
1052
+ {
1053
+ "name": "true"
1054
+ },
1055
+ {
1056
+ "name": "false"
1057
+ }
1058
+ ]
1059
+ }
1060
+ ]
1061
+ },
1062
+ {
1063
+ "name": "pacem-calendar-month-picker",
1064
+ "description": {
1065
+ "kind": "markdown",
1066
+ "value": "**@pacem/pacem-scaffolding**"
1067
+ },
1068
+ "attributes": [
1069
+ {
1070
+ "name": "month"
1071
+ },
1072
+ {
1073
+ "name": "view-year"
1074
+ }
1075
+ ]
1076
+ },
1077
+ {
1078
+ "name": "pacem-calendar-picker",
1079
+ "description": {
1080
+ "kind": "markdown",
1081
+ "value": "**@pacem/pacem-scaffolding**"
1082
+ },
1083
+ "attributes": [
1084
+ {
1085
+ "name": "format"
1086
+ },
1087
+ {
1088
+ "name": "disabled-ranges"
1089
+ },
1090
+ {
1091
+ "name": "week-start"
1092
+ },
1093
+ {
1094
+ "name": "viewmode"
1095
+ }
1096
+ ]
1097
+ },
1098
+ {
1099
+ "name": "pacem-calendar-year-picker",
1100
+ "description": {
1101
+ "kind": "markdown",
1102
+ "value": "**@pacem/pacem-scaffolding**"
1103
+ },
1104
+ "attributes": [
1105
+ {
1106
+ "name": "year"
1107
+ },
1108
+ {
1109
+ "name": "view-year"
1110
+ }
1111
+ ]
1112
+ },
1113
+ {
1114
+ "name": "pacem-carousel",
1115
+ "description": {
1116
+ "kind": "markdown",
1117
+ "value": "**@pacem/pacem-plus**\n\n@deprecated"
1118
+ },
1119
+ "attributes": [
1120
+ {
1121
+ "name": "interval"
1122
+ },
1123
+ {
1124
+ "name": "pausable",
1125
+ "values": [
1126
+ {
1127
+ "name": "true"
1128
+ },
1129
+ {
1130
+ "name": "false"
1131
+ }
1132
+ ]
1133
+ }
1134
+ ]
1135
+ },
1136
+ {
1137
+ "name": "pacem-char-count",
1138
+ "description": {
1139
+ "kind": "markdown",
1140
+ "value": "**@pacem/pacem-scaffolding**"
1141
+ },
1142
+ "attributes": [
1143
+ {
1144
+ "name": "minlength"
1145
+ },
1146
+ {
1147
+ "name": "maxlength"
1148
+ },
1149
+ {
1150
+ "name": "string"
1151
+ }
1152
+ ]
1153
+ },
1154
+ {
1155
+ "name": "pacem-chart",
1156
+ "description": {
1157
+ "kind": "markdown",
1158
+ "value": "**@pacem/pacem-charts**"
1159
+ },
1160
+ "attributes": [
1161
+ {
1162
+ "name": "type"
1163
+ },
1164
+ {
1165
+ "name": "aspect-ratio",
1166
+ "description": "Gets or sets how aspect ratio between x- and y-axis must be handled (considered only when xAxisType is `numeric`). Default is `adapt`."
1167
+ },
1168
+ {
1169
+ "name": "hover-mode"
1170
+ }
1171
+ ]
1172
+ },
1173
+ {
1174
+ "name": "pacem-chart-series",
1175
+ "description": {
1176
+ "kind": "markdown",
1177
+ "value": "**@pacem/pacem-charts**"
1178
+ },
1179
+ "attributes": [
1180
+ {
1181
+ "name": "datasource",
1182
+ "description": "Gets or sets the - already sorted - set of chart data items."
1183
+ },
1184
+ {
1185
+ "name": "label",
1186
+ "description": "Gets or sets the - already sorted - set of chart data items. */ @Watch({ emit: true, converter: PropertyConverters.Json }) datasource: ChartDataItem[]; /** Gets or sets the series label."
1187
+ },
1188
+ {
1189
+ "name": "color"
1190
+ },
1191
+ {
1192
+ "name": "datapoints",
1193
+ "values": [
1194
+ {
1195
+ "name": "true"
1196
+ },
1197
+ {
1198
+ "name": "false"
1199
+ }
1200
+ ]
1201
+ },
1202
+ {
1203
+ "name": "_ui-elements",
1204
+ "description": "Gets or sets the - already sorted - set of chart data items. */ @Watch({ emit: true, converter: PropertyConverters.Json }) datasource: ChartDataItem[]; /** Gets or sets the series label. */ @Watch({ emit: true, converter: PropertyConverters.String }) label: string; @Watch({ emit: true, converter: PropertyConverters.String }) color: string; @Watch({ emit: true, converter: PropertyConverters.Boolean }) datapoints: boolean; get values() { return this.datasource; } /** @internal The elements that visually 'reflect' each ChartDataItem."
1205
+ }
1206
+ ]
1207
+ },
1208
+ {
1209
+ "name": "pacem-checkbox",
1210
+ "description": {
1211
+ "kind": "markdown",
1212
+ "value": "**@pacem/pacem-scaffolding**"
1213
+ },
1214
+ "attributes": [
1215
+ {
1216
+ "name": "caption"
1217
+ },
1218
+ {
1219
+ "name": "true-value"
1220
+ },
1221
+ {
1222
+ "name": "false-value"
1223
+ },
1224
+ {
1225
+ "name": "selected",
1226
+ "values": [
1227
+ {
1228
+ "name": "true"
1229
+ },
1230
+ {
1231
+ "name": "false"
1232
+ }
1233
+ ]
1234
+ }
1235
+ ]
1236
+ },
1237
+ {
1238
+ "name": "pacem-checkbox-list",
1239
+ "description": {
1240
+ "kind": "markdown",
1241
+ "value": "**@pacem/pacem-scaffolding**"
1242
+ }
1243
+ },
1244
+ {
1245
+ "name": "pacem-childform",
1246
+ "description": {
1247
+ "kind": "markdown",
1248
+ "value": "**@pacem/pacem-scaffolding**\n\nFor internal use ONLY! */ @CustomElement({ tagName: P + '-childform-propagator' }) export class PacemChildFormPropagatorElement extends PacemEventTarget { @Watch({ emit: true /* mandatory twoway binding */ }) model: any; /** Entity property replicated on @see model. */ @Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true }) property: string; @Watch({ emit: false }) watch: any; propertyChangedCallback(name: string, old, val, first?: boolean) { super.propertyChangedCallback(name, old, val, first); if (!first) { const prop = this.property, value = this.watch, hasPropDefined = !Utils.isNullOrEmpty(prop), hasModelDefined = !Utils.isNull(this.model); if (name === 'watch' || name === 'property' || (name === 'model' && hasPropDefined && hasModelDefined && Utils.isArray(val) && val.some(i => !(prop in i) || i[prop] !== value)) || (name === 'model' && hasPropDefined && hasModelDefined && !Utils.isArray(val) && (!(prop in val) || val[prop] !== value)) ) { this._synchronize(); } } } viewActivatedCallback() { super.viewActivatedCallback(); this._synchronize(); } private _synchronize() { const model = this.model, propagate = this.property, value = this.watch; if (Utils.isNullOrEmpty(model) || Utils.isNullOrEmpty(propagate)) { return; } if (Utils.isArray(model)) { for (let item of model) { item[propagate] = value; } // trigger change this.model = model.slice(0); } else { model[propagate] = value; // trigger change this.model = Utils.extend({}, model); } } } /** Represents a sub-form for automatic generation of editing fields for sub-entities."
1249
+ },
1250
+ "attributes": [
1251
+ {
1252
+ "name": "fetch-credentials"
1253
+ },
1254
+ {
1255
+ "name": "fetch-headers"
1256
+ },
1257
+ {
1258
+ "name": "mode"
1259
+ },
1260
+ {
1261
+ "name": "lock-items",
1262
+ "values": [
1263
+ {
1264
+ "name": "true"
1265
+ },
1266
+ {
1267
+ "name": "false"
1268
+ }
1269
+ ]
1270
+ },
1271
+ {
1272
+ "name": "metadata"
1273
+ }
1274
+ ]
1275
+ },
1276
+ {
1277
+ "name": "pacem-childform-propagator",
1278
+ "description": {
1279
+ "kind": "markdown",
1280
+ "value": "**@pacem/pacem-scaffolding**\n\nFor internal use ONLY!"
1281
+ },
1282
+ "attributes": [
1283
+ {
1284
+ "name": "model"
1285
+ },
1286
+ {
1287
+ "name": "property",
1288
+ "description": "Entity property replicated on @see model."
1289
+ },
1290
+ {
1291
+ "name": "watch"
1292
+ }
1293
+ ]
1294
+ },
1295
+ {
1296
+ "name": "pacem-clock",
1297
+ "description": {
1298
+ "kind": "markdown",
1299
+ "value": "**@pacem/pacem-ui**"
1300
+ },
1301
+ "attributes": [
1302
+ {
1303
+ "name": "now"
1304
+ }
1305
+ ]
1306
+ },
1307
+ {
1308
+ "name": "pacem-collapse",
1309
+ "description": {
1310
+ "kind": "markdown",
1311
+ "value": "**@pacem/pacem-ui**"
1312
+ },
1313
+ "attributes": [
1314
+ {
1315
+ "name": "collapse",
1316
+ "values": [
1317
+ {
1318
+ "name": "true"
1319
+ },
1320
+ {
1321
+ "name": "false"
1322
+ }
1323
+ ]
1324
+ },
1325
+ {
1326
+ "name": "horizontal",
1327
+ "values": [
1328
+ {
1329
+ "name": "true"
1330
+ },
1331
+ {
1332
+ "name": "false"
1333
+ }
1334
+ ]
1335
+ }
1336
+ ]
1337
+ },
1338
+ {
1339
+ "name": "pacem-color-animation",
1340
+ "description": {
1341
+ "kind": "markdown",
1342
+ "value": "**@pacem/pacem-core**"
1343
+ },
1344
+ "attributes": [
1345
+ {
1346
+ "name": "from"
1347
+ },
1348
+ {
1349
+ "name": "to"
1350
+ }
1351
+ ]
1352
+ },
1353
+ {
1354
+ "name": "pacem-column-chart",
1355
+ "description": {
1356
+ "kind": "markdown",
1357
+ "value": "**@pacem/pacem-charts**"
1358
+ },
1359
+ "attributes": [
1360
+ {
1361
+ "name": "type"
1362
+ },
1363
+ {
1364
+ "name": "group-width",
1365
+ "description": "Set a value between 0 and 1, for the columns' stack/cluster horizontal size (percentage of the available space)."
1366
+ }
1367
+ ]
1368
+ },
1369
+ {
1370
+ "name": "pacem-compare-validator",
1371
+ "description": {
1372
+ "kind": "markdown",
1373
+ "value": "**@pacem/pacem-scaffolding**"
1374
+ },
1375
+ "attributes": [
1376
+ {
1377
+ "name": "operator"
1378
+ },
1379
+ {
1380
+ "name": "to"
1381
+ }
1382
+ ]
1383
+ },
1384
+ {
1385
+ "name": "pacem-console",
1386
+ "description": {
1387
+ "kind": "markdown",
1388
+ "value": "**@pacem/pacem-logging**"
1389
+ },
1390
+ "attributes": [
1391
+ {
1392
+ "name": "configuration"
1393
+ }
1394
+ ]
1395
+ },
1396
+ {
1397
+ "name": "pacem-contenteditable",
1398
+ "description": {
1399
+ "kind": "markdown",
1400
+ "value": "**@pacem/pacem-scaffolding**"
1401
+ },
1402
+ "attributes": [
1403
+ {
1404
+ "name": "range"
1405
+ }
1406
+ ]
1407
+ },
1408
+ {
1409
+ "name": "pacem-contenteditable-aligncommand",
1410
+ "description": {
1411
+ "kind": "markdown",
1412
+ "value": "**@pacem/pacem-scaffolding**"
1413
+ },
1414
+ "attributes": [
1415
+ {
1416
+ "name": "align"
1417
+ }
1418
+ ]
1419
+ },
1420
+ {
1421
+ "name": "pacem-contenteditable-execcommand",
1422
+ "description": {
1423
+ "kind": "markdown",
1424
+ "value": "**@pacem/pacem-scaffolding**"
1425
+ },
1426
+ "attributes": [
1427
+ {
1428
+ "name": "command"
1429
+ },
1430
+ {
1431
+ "name": "argument"
1432
+ }
1433
+ ]
1434
+ },
1435
+ {
1436
+ "name": "pacem-contenteditable-historycommand",
1437
+ "description": {
1438
+ "kind": "markdown",
1439
+ "value": "**@pacem/pacem-scaffolding**"
1440
+ },
1441
+ "attributes": [
1442
+ {
1443
+ "name": "command"
1444
+ }
1445
+ ]
1446
+ },
1447
+ {
1448
+ "name": "pacem-contenteditable-imagecommand",
1449
+ "description": {
1450
+ "kind": "markdown",
1451
+ "value": "**@pacem/pacem-scaffolding**"
1452
+ }
1453
+ },
1454
+ {
1455
+ "name": "pacem-contenteditable-linkcommand",
1456
+ "description": {
1457
+ "kind": "markdown",
1458
+ "value": "**@pacem/pacem-scaffolding**"
1459
+ },
1460
+ "attributes": [
1461
+ {
1462
+ "name": "target"
1463
+ }
1464
+ ]
1465
+ },
1466
+ {
1467
+ "name": "pacem-contenteditable-placeholder",
1468
+ "description": {
1469
+ "kind": "markdown",
1470
+ "value": "**@pacem/pacem-scaffolding**"
1471
+ },
1472
+ "attributes": [
1473
+ {
1474
+ "name": "datasource"
1475
+ }
1476
+ ]
1477
+ },
1478
+ {
1479
+ "name": "pacem-contenteditable-selectable",
1480
+ "description": {
1481
+ "kind": "markdown",
1482
+ "value": "**@pacem/pacem-scaffolding**"
1483
+ }
1484
+ },
1485
+ {
1486
+ "name": "pacem-contenteditable-wrapcommand",
1487
+ "description": {
1488
+ "kind": "markdown",
1489
+ "value": "**@pacem/pacem-scaffolding**"
1490
+ },
1491
+ "attributes": [
1492
+ {
1493
+ "name": "tagname"
1494
+ }
1495
+ ]
1496
+ },
1497
+ {
1498
+ "name": "pacem-context-menu",
1499
+ "description": {
1500
+ "kind": "markdown",
1501
+ "value": "**@pacem/pacem-plus**"
1502
+ },
1503
+ "attributes": [
1504
+ {
1505
+ "name": "command-argument"
1506
+ },
1507
+ {
1508
+ "name": "icon",
1509
+ "description": "@deprecated Provide your own content within the 'trigger' slot."
1510
+ }
1511
+ ]
1512
+ },
1513
+ {
1514
+ "name": "pacem-context-menuitem-command",
1515
+ "description": {
1516
+ "kind": "markdown",
1517
+ "value": "**@pacem/pacem-plus**"
1518
+ },
1519
+ "attributes": [
1520
+ {
1521
+ "name": "command-name"
1522
+ },
1523
+ {
1524
+ "name": "caption"
1525
+ },
1526
+ {
1527
+ "name": "tooltip"
1528
+ },
1529
+ {
1530
+ "name": "icon-glyph"
1531
+ },
1532
+ {
1533
+ "name": "button-css-class"
1534
+ },
1535
+ {
1536
+ "name": "confirmation-message"
1537
+ },
1538
+ {
1539
+ "name": "confirmation-dialog"
1540
+ },
1541
+ {
1542
+ "name": "command-argument"
1543
+ }
1544
+ ]
1545
+ },
1546
+ {
1547
+ "name": "pacem-context-menuitem-separator",
1548
+ "description": {
1549
+ "kind": "markdown",
1550
+ "value": "**@pacem/pacem-plus**"
1551
+ }
1552
+ },
1553
+ {
1554
+ "name": "pacem-custom-validator",
1555
+ "description": {
1556
+ "kind": "markdown",
1557
+ "value": "**@pacem/pacem-scaffolding**"
1558
+ },
1559
+ "attributes": [
1560
+ {
1561
+ "name": "is-valid",
1562
+ "values": [
1563
+ {
1564
+ "name": "true"
1565
+ },
1566
+ {
1567
+ "name": "false"
1568
+ }
1569
+ ]
1570
+ }
1571
+ ]
1572
+ },
1573
+ {
1574
+ "name": "pacem-data",
1575
+ "description": {
1576
+ "kind": "markdown",
1577
+ "value": "**@pacem/pacem-core**"
1578
+ },
1579
+ "attributes": [
1580
+ {
1581
+ "name": "model"
1582
+ },
1583
+ {
1584
+ "name": "persist-as"
1585
+ },
1586
+ {
1587
+ "name": "debounce",
1588
+ "description": "Debounces the model change"
1589
+ },
1590
+ {
1591
+ "name": "throttle",
1592
+ "description": "Debounces the model change */ @Watch({ emit: false, converter: PropertyConverters.Number }) debounce: number; /** Throttles the model change if debounce is > 0",
1593
+ "values": [
1594
+ {
1595
+ "name": "true"
1596
+ },
1597
+ {
1598
+ "name": "false"
1599
+ }
1600
+ ]
1601
+ }
1602
+ ]
1603
+ },
1604
+ {
1605
+ "name": "pacem-data-item",
1606
+ "description": {
1607
+ "kind": "markdown",
1608
+ "value": "**@pacem/pacem-scaffolding**"
1609
+ },
1610
+ "attributes": [
1611
+ {
1612
+ "name": "value"
1613
+ },
1614
+ {
1615
+ "name": "label"
1616
+ },
1617
+ {
1618
+ "name": "disabled",
1619
+ "values": [
1620
+ {
1621
+ "name": "true"
1622
+ },
1623
+ {
1624
+ "name": "false"
1625
+ }
1626
+ ]
1627
+ }
1628
+ ]
1629
+ },
1630
+ {
1631
+ "name": "pacem-datacell",
1632
+ "description": {
1633
+ "kind": "markdown",
1634
+ "value": "**@pacem/pacem-plus**"
1635
+ },
1636
+ "attributes": [
1637
+ {
1638
+ "name": "dataitem"
1639
+ },
1640
+ {
1641
+ "name": "rowindex"
1642
+ }
1643
+ ]
1644
+ },
1645
+ {
1646
+ "name": "pacem-datacolumn",
1647
+ "description": {
1648
+ "kind": "markdown",
1649
+ "value": "**@pacem/pacem-plus**"
1650
+ },
1651
+ "attributes": [
1652
+ {
1653
+ "name": "field"
1654
+ },
1655
+ {
1656
+ "name": "label"
1657
+ },
1658
+ {
1659
+ "name": "resizable",
1660
+ "values": [
1661
+ {
1662
+ "name": "true"
1663
+ },
1664
+ {
1665
+ "name": "false"
1666
+ }
1667
+ ]
1668
+ },
1669
+ {
1670
+ "name": "togglable",
1671
+ "values": [
1672
+ {
1673
+ "name": "true"
1674
+ },
1675
+ {
1676
+ "name": "false"
1677
+ }
1678
+ ]
1679
+ },
1680
+ {
1681
+ "name": "sortable",
1682
+ "values": [
1683
+ {
1684
+ "name": "true"
1685
+ },
1686
+ {
1687
+ "name": "false"
1688
+ }
1689
+ ]
1690
+ },
1691
+ {
1692
+ "name": "order"
1693
+ },
1694
+ {
1695
+ "name": "format"
1696
+ }
1697
+ ]
1698
+ },
1699
+ {
1700
+ "name": "pacem-datagrid",
1701
+ "description": {
1702
+ "kind": "markdown",
1703
+ "value": "**@pacem/pacem-plus**"
1704
+ },
1705
+ "attributes": [
1706
+ {
1707
+ "name": "metadata"
1708
+ },
1709
+ {
1710
+ "name": "options"
1711
+ },
1712
+ {
1713
+ "name": "state"
1714
+ },
1715
+ {
1716
+ "name": "datasource"
1717
+ }
1718
+ ]
1719
+ },
1720
+ {
1721
+ "name": "pacem-datetime-picker",
1722
+ "description": {
1723
+ "kind": "markdown",
1724
+ "value": "**@pacem/pacem-scaffolding**"
1725
+ },
1726
+ "attributes": [
1727
+ {
1728
+ "name": "date-value"
1729
+ },
1730
+ {
1731
+ "name": "min"
1732
+ },
1733
+ {
1734
+ "name": "max"
1735
+ },
1736
+ {
1737
+ "name": "precision"
1738
+ },
1739
+ {
1740
+ "name": "format"
1741
+ }
1742
+ ]
1743
+ },
1744
+ {
1745
+ "name": "pacem-dialog",
1746
+ "description": {
1747
+ "kind": "markdown",
1748
+ "value": "**@pacem/pacem-ui**"
1749
+ },
1750
+ "attributes": [
1751
+ {
1752
+ "name": "buttons"
1753
+ },
1754
+ {
1755
+ "name": "ok-caption"
1756
+ },
1757
+ {
1758
+ "name": "yes-caption"
1759
+ },
1760
+ {
1761
+ "name": "no-caption"
1762
+ },
1763
+ {
1764
+ "name": "cancel-caption"
1765
+ }
1766
+ ]
1767
+ },
1768
+ {
1769
+ "name": "pacem-divider",
1770
+ "description": {
1771
+ "kind": "markdown",
1772
+ "value": "**@pacem/pacem-ui**"
1773
+ },
1774
+ "attributes": [
1775
+ {
1776
+ "name": "orientation"
1777
+ }
1778
+ ]
1779
+ },
1780
+ {
1781
+ "name": "pacem-dock",
1782
+ "description": {
1783
+ "kind": "markdown",
1784
+ "value": "**@pacem/pacem-core**\n\n@deprecated"
1785
+ },
1786
+ "attributes": [
1787
+ {
1788
+ "name": "mode"
1789
+ },
1790
+ {
1791
+ "name": "dock",
1792
+ "values": [
1793
+ {
1794
+ "name": "true"
1795
+ },
1796
+ {
1797
+ "name": "false"
1798
+ }
1799
+ ]
1800
+ },
1801
+ {
1802
+ "name": "target"
1803
+ },
1804
+ {
1805
+ "name": "delay"
1806
+ },
1807
+ {
1808
+ "name": "transition-duration"
1809
+ }
1810
+ ]
1811
+ },
1812
+ {
1813
+ "name": "pacem-drag-drop",
1814
+ "description": {
1815
+ "kind": "markdown",
1816
+ "value": "**@pacem/pacem-core**\n\nClass to whom delegate the window-relevant events (in a possible future, distopic, multi-pointer scenario) / class DragElementDelegate { constructor(initArgs: DragElementDelegateInitParams , private _logFn: (level: LogLevel, message: string, category?: string) => void) { this._dragDropper = initArgs.dragDrop; Utils.addClass(this._element = initArgs.element, PCSS + '-drag-lock'); window.addEventListener('mouseup', this._endHandler, false); window.addEventListener('touchend', this._endHandler, false); window.addEventListener('mousemove', this._moveHandler, false); document.addEventListener('wheel', this._moveHandler, false); window.addEventListener('touchmove', this._moveHandler, { capture: true, passive: false }); this._dragDropper.dropTargets.forEach(t => { t.addEventListener('mouseenter', this._enterHandler, false); t.addEventListener('mouseleave', this._leaveHandler, false); }); // is `_element` a dynamic one belonging to a repeater item? var repItem = <PacemRepeaterItem>Repeater.findItemContext(this._element, 0, null); if (repItem) { if (repItem.dom && repItem.dom.length === 1 && repItem.dom[0] === this._element) { this._repeaterItem = repItem; } this._sourceRepeater = repItem.repeater; } // this._bootstrap(initArgs.placeholder, initArgs.data); } private _dragDropper: DragDropper; private _element: DraggableElement; private _currentTarget: Element; private _currentHover: Node; private _repeaterItem: RepeaterItem; private _sourceRepeater: PacemRepeaterElement; private _started = false; // #region PRIVATE UTILS private _getLogicalData(node: Node | RepeaterItem): any { if (node instanceof RepeaterItem) return node.item; if (node instanceof HTMLElement) return node.dataset; return node; } private _getPhysicalData(node: Node): Node[] { if (node instanceof PacemRepeaterItem) return node.dom; return [node]; } private _createFloater(src: Element, origin: Point): Element { const dragger = this._dragDropper; let floater = src; if (dragger.mode != DragDataMode.Self) { floater = <HTMLElement | SVGElement>floater.cloneNode(true); CustomElementUtils.stripObservedAttributes(floater); if (floater instanceof HTMLElement || floater instanceof SVGElement) { Utils.addClass(floater, PCSS + '-drag-floater'); CustomElementUtils.findAncestorShell(this._element).appendChild(floater); floater.style.position = 'absolute'; let pos = { left: origin.x + floater.clientWidth / 2, top: origin.y - floater.clientHeight / 2 }; // if cloned the original element then preserve dimensions if (src === this._element || src.classList.contains('drag-floater-resize')) { let size = Utils.offset(this._element); floater.style.boxSizing = 'border-box'; floater.style.width = size.width + 'px'; floater.style.height = size.height + 'px'; pos = { left: size.left, top: size.top }; } // positioning floater.style.left = `${pos.left}px`; floater.style.top = `${pos.top}px`; } } if (floater instanceof HTMLElement || floater instanceof SVGElement) { floater.style.pointerEvents = 'none'; } return floater; } private _findTargetRepeaterItem(dropTarget: Element, nextSibling: Element): { repeater: PacemRepeaterElement, index: number } { var repItem = <PacemRepeaterItem>Repeater.findItemContext(nextSibling, 0, null); if (!Utils.isNull(repItem)) { return { repeater: repItem.repeater, index: repItem.index }; } else { var repeater: PacemRepeaterElement = null, index = -1; // if (dropTarget instanceof PacemRepeaterElement) repeater = dropTarget; else repeater = CustomElementUtils.findAncestorOfType(dropTarget, PacemRepeaterElement); // if (!Utils.isNull(repeater)) return { repeater: repeater, index: (repeater.datasource && repeater.datasource.length) || 0 }; } return null; } /** Finds the physical next sibling given a container and dragging event arguments. @param target Container @param args Event arguments / private _findNextSibling(target: Element, args: DragDropEventArgs): Element { var lastX: number = 0, lastY: number = 0; const children = Array.from(target.children), length = children.length; // first hit tested element const hover = document.elementFromPoint(args.currentPosition.x - Utils.scrollLeft, args.currentPosition.y - Utils.scrollTop); // hit tested sibling (to spot) let hoverElement: Element; // 1. hit tested element is the drop target (container) if (hover === target) { this._currentHover = hoverElement = args.placeholder; return hoverElement.parentElement === target ? hoverElement.nextElementSibling : null; } // loop until the parent element is the drop target var hoverSibling = hover; while (hoverSibling.parentElement != target && hoverSibling.parentElement != null) { hoverSibling = hoverSibling.parentElement; } // 2. hit tested element is the moving placeholder or is outside a drop target if (hoverSibling.parentElement != target || hoverSibling === args.placeholder) { this._currentHover = hoverElement = args.placeholder; return hoverElement.nextElementSibling; } // 3. hit tested element has changed if (hoverSibling != this._currentHover) { hoverElement = <Element>this._currentHover; const from = children.indexOf(hoverElement), to = children.indexOf(hoverSibling); this._currentHover = hoverSibling; return from > to ? hoverSibling : hoverSibling.nextElementSibling; } // 4. just return something return hoverSibling; } /** This method is computationally heavy due to forced reflow! / private _insertChild(targetContainer: Element, args: DragDropEventArgs) { const drag: Node = args.placeholder || args.element, drop: Element = args.target, nextSibling = this._findNextSibling(drop, args) ; if (drag.nextSibling != nextSibling || drag.parentElement != drop) { if (Utils.isNull(nextSibling) || nextSibling.parentElement == targetContainer) { // TODO: change logic (try to move elements around with css transforms) targetContainer.insertBefore(drag, nextSibling); this._logFn(LogLevel.Info, `Positioned before ${(nextSibling && (nextSibling.id || nextSibling.constructor.name)) || \"null\"} for drop`); } } } // #endregion private _enterHandler = (evt: Event) => { this._currentTarget = <Element>evt.target; }; private _leaveHandler = (evt: Event) => { this._currentTarget = null; }; private _bootstrap(placeholder, dataObj) { var el = this._element, dragger = this._dragDropper, origin: Point, args: DragDropEventArgs; if (!Utils.isNull(origin = GET_VAL(el, MOUSE_DOWN))) { this._started = false; DEL_VAL(el, MOUSE_DOWN); Utils.addClass(el, PCSS + '-dragging'); let style = getComputedStyle(el), initialDelta = { x: 0, y: 0 }, css = Utils.deserializeTransform(style); // initialDelta.x += css.e; initialDelta.y += css.f; // === floater (first) let floater = this._createFloater(dragger.floater || el, origin); // === placeholder (then) if (Utils.isNull(placeholder)) { switch (dragger.mode) { case DragDataMode.Alias: placeholder = <HTMLElement>el; break; case DragDataMode.Copy: placeholder = <HTMLElement>el.cloneNode(true); break; } } // add peculiar css class if (!Utils.isNull(placeholder)) { Utils.addClass(placeholder, 'drag-placeholder'); } // inside a repeater? freeze the item if (!Utils.isNull(this._repeaterItem) && !Utils.isNull(placeholder)) { CustomElementUtils.freezeObservedAttributes(placeholder); } const data = dataObj || this._getLogicalData(this._repeaterItem || el); // setup args args = { element: el, placeholder: placeholder || el, data, startTime: Date.now(), origin, initialDelta, currentPosition: origin, floater }; SET_VAL(el, DRAGGING, args); } } private _revertTrackedTarget: Element = null; private _moveHandler = (evt: MouseEvent | TouchEvent | WheelEvent) => { if (evt.type !== 'wheel') { avoidHandler(evt); } var el = this._element, dragger = this._dragDropper, currentPosition: Point, args: DragDropEventArgs = GET_VAL(el, DRAGGING); // function getCurrentPosition() { return currentPosition = currentPosition || (evt instanceof MouseEvent ? { x: evt.pageX, y: evt.pageY } : { x: evt.touches[0].pageX, y: evt.touches[0].pageY }); } // start if (!this._started) { this._logFn(LogLevel.Info, 'Dragging act started'); this._started = true; // starting from a container/drop-target? if (dragger.dropBehavior === DropBehavior.InsertChild) { var container: Element = el; do { // could have nested containers, // keep navigating up the dom tree container = container.parentElement; } while (container && dragger.dropTargets.indexOf(container) == -1); this._currentTarget = container; } dragger.dispatchEvent(new DragDropEvent(DragDropEventType.Start, DragDropEventArgsClass.fromArgs(args), {}, evt)); } // move if (!Utils.isNull(args)) { this._logFn(LogLevel.Debug, 'Dragging act ongoing'); const isMouseFlag = evt instanceof MouseEvent; //if (evt.type !== 'wheel') // Pacem.avoidHandler(evt); Utils.addClass(CustomElementUtils.findAncestorShell(el), PCSS + '-dragging'); const pos = args.currentPosition = getCurrentPosition(); let floater = args.floater; let moveEvt = new DragDropEvent(DragDropEventType.Drag, DragDropEventArgsClass.fromArgs(args), { cancelable: true }, evt); // dispatch move event dragger.dispatchEvent(moveEvt); if (!moveEvt.defaultPrevented // obey the - eventual - canceling feedback && (floater instanceof HTMLElement || floater instanceof SVGElement)) { // move let delta = { x: moveEvt.detail.delta.x, y: moveEvt.detail.delta.y }; floater.style.transform = `translate3d(${delta.x}px, ${delta.y}px, 0)`; } // what am I over? var hover = this._currentTarget; if (!isMouseFlag && dragger.dropTargets.length > 0) { hover = document .elementsFromPoint(args.currentPosition.x - Utils.scrollLeft, args.currentPosition.y - Utils.scrollTop) .find(e => dragger.dropTargets.indexOf(e) >= 0); } // changed hover element since last time? var oldTarget = args.target; if (hover !== oldTarget) { if (!Utils.isNull(oldTarget)) { Utils.removeClass(<HTMLElement | SVGElement>oldTarget, PCSS + '-dropping'); dragger.dispatchEvent(new DragDropEvent(DragDropEventType.Out, DragDropEventArgsClass.fromArgs(args), {}, evt)); this._logFn(LogLevel.Info, `Drop area left (${(oldTarget['id'] || oldTarget.constructor.name)})`); } if (dragger.dropTargets.indexOf(hover) != -1) { args.target = hover; this._logFn(LogLevel.Info, `Drop area entering (${(args.target['id'] || args.target.constructor.name)})`); let evt0 = new DragDropEvent(DragDropEventType.Over, DragDropEventArgsClass.fromArgs(args), { cancelable: true }, evt); dragger.dispatchEvent(evt0); if (evt0.defaultPrevented) { delete args.target; } else { Utils.addClass(<HTMLElement | SVGElement>args.target, PCSS + '-dropping'); this._logFn(LogLevel.Info, `Drop area entered (${(args.target['id'] || args.target.constructor.name)})`); } } else { delete args.target; } } this._revertTrackedTarget = args.target || oldTarget; // positioning if (!Utils.isNull(args.target) && dragger.dropBehavior === DropBehavior.InsertChild) { this._insertChild(hover, args); } else // if spilling out from a drop target, avoid undesired `copy` of an element. if (Utils.isNull(args.target) && dragger.mode === DragDataMode.Copy) { const ph = args.placeholder; if (ph instanceof Element) ph.remove(); } } } private _endHandler = (evt: MouseEvent | TouchEvent) => { var el = this._element, shell = CustomElementUtils.findAncestorShell(el), dragger = this._dragDropper, args: DragDropEventArgs; if (!Utils.isNull(args = GET_VAL(el, DRAGGING))) { if (evt instanceof MouseEvent) avoidHandler(evt); // #region dispose fn let fnDispose = () => { let floater = args.floater; if (floater instanceof HTMLElement || floater instanceof SVGElement) { floater.style.pointerEvents = ''; } if (dragger.mode !== DragDataMode.Self) { args.floater.remove(); } Utils.removeClass(el, PCSS + '-dragging'); Utils.removeClass(el, PCSS + '-drag-lock'); DEL_VAL(el, DRAGGING); if (!Utils.isNull(args.placeholder)) { Utils.removeClass(<HTMLElement | SVGElement>args.placeholder, PCSS + '-dragging'); Utils.removeClass(<HTMLElement | SVGElement>args.placeholder, 'drag-placeholder'); Utils.removeClass(<HTMLElement | SVGElement>args.placeholder, PCSS + '-drag-lock'); DEL_VAL(args.placeholder, DRAGGING); } // === drop const dropping = !Utils.isNull(args.target); if (dropping) { dragger.dispatchEvent(new DragDropEvent(DragDropEventType.Drop, DragDropEventArgsClass.fromArgs(args), {}, evt)); Utils.removeClass(<HTMLElement>args.target, PCSS + '-dropping'); } // === cleanup const data = args.data, dropTargets = dragger.dropTargets, placeholder = args.placeholder, repItem = this._repeaterItem, sourceRepeater = this._sourceRepeater, isDraggingRepeaterItem = !Utils.isNull(repItem), targetRepItem = placeholder && this._findTargetRepeaterItem(args.placeholder.parentElement, args.placeholder.nextElementSibling), targetRepeater = targetRepItem && targetRepItem.repeater, isCopying = dragger.mode === DragDataMode.Copy, // is dropping onto a repeater item? // true if // - is effectively dropping onto a repeater // - AND the target repeater doesn't equal the source one when a whole repeaterItem is involved. isDroppingRepeaterItem = dropping && !Utils.isNull(targetRepeater) && !(Utils.isNull(repItem) && sourceRepeater === targetRepeater); // refresh origin datasource and, eventually, target datasource if (isDraggingRepeaterItem && !isCopying && dropping) { sourceRepeater.removeItem(repItem.index); } if (isDroppingRepeaterItem) { args.placeholder.remove(); if (targetRepeater === sourceRepeater && !isCopying) { let from = repItem.index, to = targetRepItem.index; if (to > from) { // tweak to--; } sourceRepeater.datasource.moveWithin(from, to); } else { if (!isCopying) { sourceRepeater && sourceRepeater.datasource.splice(repItem.index, 1); } targetRepeater && (targetRepeater.datasource = targetRepeater.datasource || []).splice(targetRepItem.index, 0, data); } } // Check spill behavior if (!dropping && !Utils.isNullOrEmpty(dragger.dropTargets) && dragger.spillBehavior === DropTargetMissedBehavior.Remove // if mode is 'copy' then don't remove the source && !isCopying) { if (isDraggingRepeaterItem) { sourceRepeater.datasource.splice(repItem.index, 1) } else { el.remove(); } } // === end dragger.dispatchEvent(new DragDropEvent(DragDropEventType.End, DragDropEventArgsClass.fromArgs(args), {}, evt)); // Utils.removeClass(shell, PCSS + '-dragging'); } // #endregion // animate to target position const drag = args.placeholder || args.element if (args.floater != drag) { let floater = <HTMLElement>args.floater; var m = Utils.deserializeTransform(getComputedStyle(floater)); // dropping or reverting? if (!Utils.isNull(args.target) || dragger.spillBehavior === DropTargetMissedBehavior.Revert || (dragger.dropBehavior === DropBehavior.InsertChild && dragger.spillBehavior !== DropTargetMissedBehavior.Remove)) { // overlap to placeholder const tgetPos = Utils.offset(drag), srcPos = Utils.offset(floater); floater.style.transition = 'transform .2s ease-in-out'; m = Matrix2D.translate(m, { x: tgetPos.left - srcPos.left, y: tgetPos.top - srcPos.top }); } else { floater.style.transition = 'transform .2s ease-in, opacity .2s linear'; // scale down to 0 m = Matrix2D.scale(m, 0.1); floater.style.opacity = '0'; } Utils.addAnimationEndCallback(floater, fnDispose, 300); floater.style.transform = `matrix(${m.a},${m.b},${m.c},${m.d},${m.e},${m.f})`; } else { fnDispose(); } } Utils.removeClass(el, PCSS + '-drag-lock'); // dispose this.dispose(); this._logFn(LogLevel.Info, 'Dragging act disposed'); } dispose() { this._dragDropper.dropTargets.forEach(t => { t.removeEventListener('mouseenter', this._enterHandler, false); t.removeEventListener('mouseleave', this._leaveHandler, false); }); window.removeEventListener('mouseup', this._endHandler, false); window.removeEventListener('touchend', this._endHandler, false); window.removeEventListener('mousemove', this._moveHandler, false); document.removeEventListener('wheel', this._moveHandler, false); window.removeEventListener('touchmove', this._moveHandler, { capture: true }); } } /** Pacem Drag & Drop element adapter."
1817
+ },
1818
+ "attributes": [
1819
+ {
1820
+ "name": "lock-timeout",
1821
+ "description": "Gets or sets the amount of milliseconds to wait, while pressing on the draggable object, until the object itself must be considered \"locked to drag\"."
1822
+ },
1823
+ {
1824
+ "name": "drop-targets",
1825
+ "description": "Gets or sets the amount of milliseconds to wait, while pressing on the draggable object, until the object itself must be considered \"locked to drag\". */ @Watch({ emit: false, converter: PropertyConverters.Number }) lockTimeout: number = 100; /** Gets or sets the drop targets (array of elements)."
1826
+ },
1827
+ {
1828
+ "name": "mode",
1829
+ "description": "Gets or sets the amount of milliseconds to wait, while pressing on the draggable object, until the object itself must be considered \"locked to drag\". */ @Watch({ emit: false, converter: PropertyConverters.Number }) lockTimeout: number = 100; /** Gets or sets the drop targets (array of elements). */ @Watch({ emit: false }) dropTargets: Element[] = []; /** Gets or sets the drag mode (\"self\", \"alias\", \"copy\")."
1830
+ },
1831
+ {
1832
+ "name": "floater",
1833
+ "description": "Gets or sets the amount of milliseconds to wait, while pressing on the draggable object, until the object itself must be considered \"locked to drag\". */ @Watch({ emit: false, converter: PropertyConverters.Number }) lockTimeout: number = 100; /** Gets or sets the drop targets (array of elements). */ @Watch({ emit: false }) dropTargets: Element[] = []; /** Gets or sets the drag mode (\"self\", \"alias\", \"copy\"). */ @Watch({ emit: false, converter: PropertyConverters.String }) mode: DragDataMode = DragDataMode.Self; /** Gets or sets the floating element while dragging around."
1834
+ },
1835
+ {
1836
+ "name": "drop-behavior",
1837
+ "description": "Gets or sets the amount of milliseconds to wait, while pressing on the draggable object, until the object itself must be considered \"locked to drag\". */ @Watch({ emit: false, converter: PropertyConverters.Number }) lockTimeout: number = 100; /** Gets or sets the drop targets (array of elements). */ @Watch({ emit: false }) dropTargets: Element[] = []; /** Gets or sets the drag mode (\"self\", \"alias\", \"copy\"). */ @Watch({ emit: false, converter: PropertyConverters.String }) mode: DragDataMode = DragDataMode.Self; /** Gets or sets the floating element while dragging around. */ @Watch({ emit: false, converter: PropertyConverters.Element }) floater: Element; /** Gets or sets the drop mode (\"insert\", \"none\")."
1838
+ },
1839
+ {
1840
+ "name": "spill-behavior",
1841
+ "description": "Gets or sets the amount of milliseconds to wait, while pressing on the draggable object, until the object itself must be considered \"locked to drag\". */ @Watch({ emit: false, converter: PropertyConverters.Number }) lockTimeout: number = 100; /** Gets or sets the drop targets (array of elements). */ @Watch({ emit: false }) dropTargets: Element[] = []; /** Gets or sets the drag mode (\"self\", \"alias\", \"copy\"). */ @Watch({ emit: false, converter: PropertyConverters.String }) mode: DragDataMode = DragDataMode.Self; /** Gets or sets the floating element while dragging around. */ @Watch({ emit: false, converter: PropertyConverters.Element }) floater: Element; /** Gets or sets the drop mode (\"insert\", \"none\"). */ @Watch({ emit: false, converter: PropertyConverters.String }) dropBehavior: DropBehavior; /** Gets or sets the spill behavior (\"revert\", \"remove\", \"none\")"
1842
+ },
1843
+ {
1844
+ "name": "handle-selector",
1845
+ "description": "Gets or sets the amount of milliseconds to wait, while pressing on the draggable object, until the object itself must be considered \"locked to drag\". */ @Watch({ emit: false, converter: PropertyConverters.Number }) lockTimeout: number = 100; /** Gets or sets the drop targets (array of elements). */ @Watch({ emit: false }) dropTargets: Element[] = []; /** Gets or sets the drag mode (\"self\", \"alias\", \"copy\"). */ @Watch({ emit: false, converter: PropertyConverters.String }) mode: DragDataMode = DragDataMode.Self; /** Gets or sets the floating element while dragging around. */ @Watch({ emit: false, converter: PropertyConverters.Element }) floater: Element; /** Gets or sets the drop mode (\"insert\", \"none\"). */ @Watch({ emit: false, converter: PropertyConverters.String }) dropBehavior: DropBehavior; /** Gets or sets the spill behavior (\"revert\", \"remove\", \"none\") */ @Watch({ emit: false, converter: PropertyConverters.String }) spillBehavior: DropTargetMissedBehavior; /** Gets or sets the handle selector to be matched when starting the drop gesture."
1846
+ }
1847
+ ]
1848
+ },
1849
+ {
1850
+ "name": "pacem-edit",
1851
+ "description": {
1852
+ "kind": "markdown",
1853
+ "value": "**@pacem/pacem-plus**"
1854
+ },
1855
+ "attributes": [
1856
+ {
1857
+ "name": "key"
1858
+ },
1859
+ {
1860
+ "name": "type"
1861
+ },
1862
+ {
1863
+ "name": "target"
1864
+ },
1865
+ {
1866
+ "name": "image-upload-url"
1867
+ },
1868
+ {
1869
+ "name": "image-set"
1870
+ },
1871
+ {
1872
+ "name": "max-image-width"
1873
+ },
1874
+ {
1875
+ "name": "max-image-height"
1876
+ },
1877
+ {
1878
+ "name": "allow-snapshot",
1879
+ "values": [
1880
+ {
1881
+ "name": "true"
1882
+ },
1883
+ {
1884
+ "name": "false"
1885
+ }
1886
+ ]
1887
+ }
1888
+ ]
1889
+ },
1890
+ {
1891
+ "name": "pacem-edit-image",
1892
+ "description": {
1893
+ "kind": "markdown",
1894
+ "value": "**@pacem/pacem-scaffolding**"
1895
+ },
1896
+ "attributes": [
1897
+ {
1898
+ "name": "upload-url"
1899
+ },
1900
+ {
1901
+ "name": "hint"
1902
+ },
1903
+ {
1904
+ "name": "image-set"
1905
+ },
1906
+ {
1907
+ "name": "value"
1908
+ },
1909
+ {
1910
+ "name": "max-width"
1911
+ },
1912
+ {
1913
+ "name": "max-height"
1914
+ },
1915
+ {
1916
+ "name": "max-thumbnail-width"
1917
+ },
1918
+ {
1919
+ "name": "max-thumbnail-height"
1920
+ },
1921
+ {
1922
+ "name": "allow-snapshot",
1923
+ "values": [
1924
+ {
1925
+ "name": "true"
1926
+ },
1927
+ {
1928
+ "name": "false"
1929
+ }
1930
+ ]
1931
+ }
1932
+ ]
1933
+ },
1934
+ {
1935
+ "name": "pacem-element-picker",
1936
+ "description": {
1937
+ "kind": "markdown",
1938
+ "value": "**@pacem/pacem-cms**"
1939
+ }
1940
+ },
1941
+ {
1942
+ "name": "pacem-element-proxy",
1943
+ "description": {
1944
+ "kind": "markdown",
1945
+ "value": "**@pacem/pacem-core**\n\nMoves its content to the document body and eventually removes it when disconnected. */ @CustomElement({ tagName: P + '-body-proxy' }) export class PacemBodyProxyElement extends PacemTransferProxyElement { protected get proxy(): HTMLElement { return document.body; } } /** Moves its content to the closest shell and eventually removes it when disconnected. */ @CustomElement({ tagName: P + '-shell-proxy' }) export class PacemShellProxyElement extends PacemTransferProxyElement { protected get proxy(): HTMLElement { return CustomElementUtils.findAncestorShell(this); } } /** Moves its content to the provided target element."
1946
+ },
1947
+ "attributes": [
1948
+ {
1949
+ "name": "target"
1950
+ }
1951
+ ]
1952
+ },
1953
+ {
1954
+ "name": "pacem-event-proxy",
1955
+ "description": {
1956
+ "kind": "markdown",
1957
+ "value": "**@pacem/pacem-core**"
1958
+ },
1959
+ "attributes": [
1960
+ {
1961
+ "name": "target"
1962
+ },
1963
+ {
1964
+ "name": "event"
1965
+ },
1966
+ {
1967
+ "name": "capture",
1968
+ "values": [
1969
+ {
1970
+ "name": "true"
1971
+ },
1972
+ {
1973
+ "name": "false"
1974
+ }
1975
+ ]
1976
+ }
1977
+ ]
1978
+ },
1979
+ {
1980
+ "name": "pacem-expression",
1981
+ "description": {
1982
+ "kind": "markdown",
1983
+ "value": "**@pacem/pacem-cms**"
1984
+ },
1985
+ "attributes": [
1986
+ {
1987
+ "name": "converter"
1988
+ }
1989
+ ]
1990
+ },
1991
+ {
1992
+ "name": "pacem-fetch",
1993
+ "description": {
1994
+ "kind": "markdown",
1995
+ "value": "**@pacem/pacem-core**"
1996
+ },
1997
+ "attributes": [
1998
+ {
1999
+ "name": "url"
2000
+ },
2001
+ {
2002
+ "name": "method"
2003
+ },
2004
+ {
2005
+ "name": "parameters"
2006
+ },
2007
+ {
2008
+ "name": "headers"
2009
+ },
2010
+ {
2011
+ "name": "credentials"
2012
+ },
2013
+ {
2014
+ "name": "mode"
2015
+ },
2016
+ {
2017
+ "name": "cache"
2018
+ },
2019
+ {
2020
+ "name": "fetching",
2021
+ "values": [
2022
+ {
2023
+ "name": "true"
2024
+ },
2025
+ {
2026
+ "name": "false"
2027
+ }
2028
+ ]
2029
+ },
2030
+ {
2031
+ "name": "autofetch",
2032
+ "description": "Gets or sets whether to trigger a fetch whenever a significant property has changed (default: true).",
2033
+ "values": [
2034
+ {
2035
+ "name": "true"
2036
+ },
2037
+ {
2038
+ "name": "false"
2039
+ }
2040
+ ]
2041
+ },
2042
+ {
2043
+ "name": "as"
2044
+ },
2045
+ {
2046
+ "name": "type"
2047
+ },
2048
+ {
2049
+ "name": "debounce"
2050
+ },
2051
+ {
2052
+ "name": "throttle"
2053
+ },
2054
+ {
2055
+ "name": "diff-by-values",
2056
+ "description": "Gets or sets whether to trigger a fetch whenever a significant property has changed (default: true). */ @Watch({ reflectBack: true, converter: PropertyConverters.Boolean }) autofetch: boolean = true; @Watch({ emit: false, converter: PropertyConverters.String }) as: 'object' | 'text' | 'blob' | 'image'; @Watch({ emit: false, converter: PropertyConverters.String }) type: 'json' | 'raw'; @Watch({ reflectBack: true, converter: PropertyConverters.Number }) debounce: number = 100; @Watch({ emit: false, reflectBack: true, converter: PropertyConverters.Number }) throttle: boolean; /** Gets or sets whether to compare parameter and header single values prior to trigger a new fetch execution (default false).",
2057
+ "values": [
2058
+ {
2059
+ "name": "true"
2060
+ },
2061
+ {
2062
+ "name": "false"
2063
+ }
2064
+ ]
2065
+ },
2066
+ {
2067
+ "name": "result"
2068
+ }
2069
+ ]
2070
+ },
2071
+ {
2072
+ "name": "pacem-form",
2073
+ "description": {
2074
+ "kind": "markdown",
2075
+ "value": "**@pacem/pacem-scaffolding**"
2076
+ },
2077
+ "attributes": [
2078
+ {
2079
+ "name": "fetcher"
2080
+ },
2081
+ {
2082
+ "name": "fetch-credentials"
2083
+ },
2084
+ {
2085
+ "name": "fetch-headers"
2086
+ },
2087
+ {
2088
+ "name": "method"
2089
+ },
2090
+ {
2091
+ "name": "submit-caption"
2092
+ },
2093
+ {
2094
+ "name": "reset-caption"
2095
+ },
2096
+ {
2097
+ "name": "valid",
2098
+ "values": [
2099
+ {
2100
+ "name": "true"
2101
+ },
2102
+ {
2103
+ "name": "false"
2104
+ }
2105
+ ]
2106
+ },
2107
+ {
2108
+ "name": "dirty",
2109
+ "values": [
2110
+ {
2111
+ "name": "true"
2112
+ },
2113
+ {
2114
+ "name": "false"
2115
+ }
2116
+ ]
2117
+ },
2118
+ {
2119
+ "name": "readonly",
2120
+ "values": [
2121
+ {
2122
+ "name": "true"
2123
+ },
2124
+ {
2125
+ "name": "false"
2126
+ }
2127
+ ]
2128
+ },
2129
+ {
2130
+ "name": "success",
2131
+ "values": [
2132
+ {
2133
+ "name": "true"
2134
+ },
2135
+ {
2136
+ "name": "false"
2137
+ }
2138
+ ]
2139
+ },
2140
+ {
2141
+ "name": "fail",
2142
+ "values": [
2143
+ {
2144
+ "name": "true"
2145
+ },
2146
+ {
2147
+ "name": "false"
2148
+ }
2149
+ ]
2150
+ },
2151
+ {
2152
+ "name": "entity"
2153
+ },
2154
+ {
2155
+ "name": "entity-name"
2156
+ },
2157
+ {
2158
+ "name": "metadata"
2159
+ },
2160
+ {
2161
+ "name": "autogenerate",
2162
+ "values": [
2163
+ {
2164
+ "name": "true"
2165
+ },
2166
+ {
2167
+ "name": "false"
2168
+ }
2169
+ ]
2170
+ },
2171
+ {
2172
+ "name": "sudden-validation",
2173
+ "description": "Gets the 'submit' and 'reset' form buttons. */ get formButtons() { return this._buttons; } #fetching: boolean = false; get fetching(): boolean { return this.#fetching; } private _keyupHandler = (evt: KeyboardEvent) => { if (evt.keyCode === /* Enter */13 // no modifiers && !evt.shiftKey && !evt.ctrlKey && !evt.altKey && !evt.metaKey) { let btn: ComponentsUI.UI.PacemButtonElement = (<HTMLElement>evt.currentTarget).querySelector(P + '-button[type=submit]'); if (!Utils.isNull(btn) && Utils.isVisible(btn) && !btn.disabled) { btn.click(); } } }; private _submit = (fetcher: Components.PacemFetchElement, evt?: Event) => { if (!Utils.isNull(evt)) { avoidHandler(evt); } Promise.all(this._validateAllFields()).then(p => { if (p.findIndex(f => f === false) === -1) { this.submit(fetcher).then(_ => { // successful submission here this.setPristine(); }, _ => { // catch rejected/canceled }); } }); } /** Submits the form data via a provided fetcher. @param fetcher The fetching delegate. / submit(fetcher: Net.Fetcher): PromiseLike<any> { return new Promise<any>((resolve, reject) => { if (Utils.isNull(fetcher)) { reject(`Fetcher cannot be null while submitting a form.`); } this._submitInternally(fetcher).then(result => { this.dispatchEvent(new CustomEvent(\"success\", { detail: result })); resolve(result); }, err => { if (err !== SUBMIT_CANCELLATION_TOKEN) { this.dispatchEvent(new CustomEvent(\"fail\", { detail: err })); } reject(err); }); }); } /** Resets the form to its pristine values. */ reset() { this._reset(); } private _submitInternally(fetcher: Net.Fetcher, args?: FormSubmitEventArgs): PromiseLike<any> { if (Utils.isNull(fetcher)) throw `Fetcher cannot be null while submitting a form.`; var deferred = DeferPromise.defer(); const entity = this.entity, entityName = this.entityName; var model = {}; if (!Utils.isNullOrEmpty(entityName)) { model[entityName] = entity; } else { model = entity; } var args: FormSubmitEventArgs = { parameters: model, fields: this._getAllFields() }; // allow to inject some logic while submitting... var submitEvt = new FormSubmitEvent(args); this.dispatchEvent(submitEvt); if (submitEvt.defaultPrevented) { // rejection using `false` identifies a canceled submission. deferred.reject(SUBMIT_CANCELLATION_TOKEN); } else { // ...use the output parameters fetcher.parameters = Utils.extend({}, submitEvt.detail.parameters); // a) fetcher 'success' event listener const fnSuccess = (evt: CustomEvent<Response>) => { fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false); fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false); const r = evt.detail, empty = Net.Fetcher.isEmpty(r); if (empty) { // if no content gets fetched (e.g. '204') then resolve right here (because it won't enter 'fnResult') fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false); this.success = true; deferred.resolve({}); } switch (r.status) { case 205 /*'Reset Content'*/: this._reset(); break; } }; // b) fetcher 'fetchresult' event listener const fnResult = (evt: CustomEvent) => { // remove listeners (others have already been removed in 'fnSuccess') fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false); // var result = evt.detail; if (typeof (result) === 'object' && (<object>result).hasOwnProperty('success')) { // DEPRECATED code branch if (result.success === true) { this.success = true; deferred.resolve(result.result || {}); } else { this.fail = true; deferred.reject(result.error); } } else { this.success = true; deferred.resolve(result); } }; // c) fetcher 'error' event listener const fnError = (evt: CustomEvent) => { // remove listeners fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false); fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false); fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false); this.fail = true; const response = evt.detail; deferred.reject(response); }; // fetcher propertychange event listener const fnPropChange = (evt: PropertyChangeEvent) => { switch (evt.detail.propertyName) { case 'fetching': if (evt.detail.currentValue === true) { Utils.addClass(this, PCSS + '-fetching'); this.#fetching = true; this.dispatchEvent(new PropertyChangeEvent({ currentValue: true, oldValue: false, propertyName: 'fetching' })); } else { this.#fetching = false; this.dispatchEvent(new PropertyChangeEvent({ currentValue: false, oldValue: true, propertyName: 'fetching' })); Utils.removeClass(this, PCSS + '-fetching'); fetcher.removeEventListener(PropertyChangeEventName, fnPropChange, false); } break; } }; fetcher.addEventListener(PropertyChangeEventName, fnPropChange, false); fetcher.addEventListener(Net.FetchSuccessEventName, fnSuccess, false); fetcher.addEventListener(Net.FetchResultEventName, fnResult, false); fetcher.addEventListener(Net.FetchErrorEventName, fnError, false); if (!Utils.isNullOrEmpty(this.action)) { fetcher.url = this.action; } // is it an 'inert' PacemFetchElement? if (fetcher instanceof Components.PacemFetchElement && !fetcher.autofetch) { fetcher.fetch(); } this.success = this.fail = false; } // return deferred.promise; } private _getAllFields(accumulator: { [name: string]: PacemModel } = {}) { Utils.extend(accumulator, this._fields); for (var form of this._subForms) { form._getAllFields(accumulator); } return accumulator; } private _reset = (evt?: Event) => { if (!Utils.isNull(evt)) avoidHandler(evt); var resetEvt = new FormResetEvent(); this.dispatchEvent(resetEvt); if (resetEvt.defaultPrevented) { return; } // reset // fields first for (var field in this._fields) { var fld = this._fields[field]; if (fld instanceof PacemModelElement) fld.reset(); } // then sub-forms for (var form of this._subForms) { form._reset(); } }; /** Modifies the state of the current entity programmatically. */ apply(state: { [key: string]: any }) { if (Utils.isNullOrEmpty(state)) { return; } this.entity = Utils.extend({}, this.entity, state); for (let name in state) { this.setDirty(name); } } /** Sets the current form (or the fields of it having the specified names) in a pristine state. */ setPristine(...names: string[]) { this._setAs(false, ...names); } /** Sets the current form (or the fields of it having the specified names) in a dirty state. */ setDirty(...names: string[]) { this._setAs(true, ...names); } private _setAs(dirty: boolean, ...names: string[]) { const hasNames = !Utils.isEmpty(names); for (let field in this._fields) { if (!hasNames || names.indexOf(field) >= 0) { const fld = this._fields[field]; if (fld instanceof PacemModelElement) { dirty ? fld.setDirty() : fld.setPristine(); } } } for (let form of this._subForms) { dirty ? form.setDirty(...names) : form.setPristine(...names); } } private _fields: { [name: string]: PacemModel } = {}; private _validators: { [name: string]: Validator[] } = {}; private _subForms: PacemFormElement[] = []; private _fieldPropertyChanged = (evt?: PropertyChangeEvent) => { switch (evt.detail.propertyName) { case 'value': // validate: let model = <PacemModelElement>evt.target; this._checkFieldValidity(model.name); break; case 'dirty': this._checkDirtyness(); break; case 'valid': this._checkValidity(); break; } }; private _validatorPropertyChanged = (evt?: PropertyChangeEvent) => { const validator = <PacemBaseValidatorElement>evt.target, name = validator.watch; if (evt.detail.propertyName === 'invalid') { let model = this._fields[validator.watch]; if (validator.invalid) model.valid = false; else this._checkFieldValidity(name); } else { this._checkFieldValidity(name); } }; private _checkFieldValidity(name): Promise<boolean | null> { if (!this.suddenValidation) { return Promise.resolve(null); } if (name in this._fields) { return this._validateField(name, false); } return Promise.resolve(false); } // @Concurrent() validate(name?: string): PromiseLike<boolean> { if (!Utils.isNullOrEmpty(name)) { return this._validateField(name, false); } else { return Promise.all(this._validateAllFields()).then(b => !b.some(b0 => b0 === false)); } } private _validateAllFields(setAsDirty = true) { const tasks: PromiseLike<boolean>[] = []; for (let field in this._fields) { tasks.push(this._validateField(field, setAsDirty)); } for (let sub of this._subForms) { Array.prototype.push.apply(tasks, sub._validateAllFields(setAsDirty)); } return tasks; } // Remove Concurrent from here, better check the closure for params in @Concurrent //@Concurrent() private _validateField(name: string, setAsDirty: boolean) { return new Promise<boolean>((resolve, _) => { var model: PacemModel = this._fields[name]; if (model) { var validators = this._validators[model.name]; if (validators && validators.length > 0) { this.log(Logging.LogLevel.Log, `Computing \"${model.name}\" validity.`); Promise.all( validators.map(v => v.validate(model.value) .then(_ => !(v.invalid = !_)) ) ) .then(results => { let valid = true; for (var result of results) { if (result === false) { valid = false; // set dirty only when not valid if (setAsDirty) { model.setDirty(); } break; } } this.log(Logging.LogLevel.Log, `Property \"${model.name}\" turns out to be ${(valid ? '' : 'not ')}valid.`); resolve(model.valid = valid); }); } else { this.log(Logging.LogLevel.Log, `Property \"${model.name}\" has no validators.`); resolve(model.valid = true); } } else { this.log(Logging.LogLevel.Log, `Property \"${name}\" has no fields in this form.`); resolve(true); } }); } // #region FORM HIERARCHY validity/dirtyness private _checkDirtyness() { let dirty = false; for (var model in this._fields) { if (this._fields[model].dirty === true) { dirty = true; break; } } if (/* still */dirty === false) { for (var form of this._subForms) { if (form.dirty) { dirty = true; break; } } } this.dirty = dirty; }; private _checkValidity() { let valid = true; for (var model in this._fields) { this.log(Logging.LogLevel.Log, `Checking \"${model}\" validity.`); if (this._fields[model].valid === false) { this.log(Logging.LogLevel.Log, `\"${model}\" is not valid.`); valid = false; break; } } if (/* still */valid === true) { for (var form of this._subForms) { if (!form.valid) { valid = false; break; } } } this.valid = valid; }; registerSubForm(form: PacemFormElement) { let arr = this._subForms; if (arr.indexOf(form) == -1) { form.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false); arr.push(form); this._checkValidity(); this._checkDirtyness(); } } unregisterSubForm(form: PacemFormElement) { let arr = this._subForms, ndx = arr.indexOf(form); if (ndx >= 0) { form.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false); arr.splice(ndx, 1); this._checkValidity(); this._checkDirtyness(); } } registerField(name: string, model: PacemModel) { var container = this._fields; if (container[name] != model) { this.unregisterField(name, false); container[name] = model; this.log(Logging.LogLevel.Log, `Registering \"${name}\" field.`); if (model instanceof HTMLElement) { model.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false); } this._checkFieldValidity(name); this._checkDirtyness(); } } unregisterField(name: string, check: boolean = true) { var container = this._fields, current = container[name]; if (current instanceof HTMLElement) { current.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false); } delete container[name]; if (current && check === true) { this._checkValidity(); this._checkDirtyness(); } } registerValidator(name: string, validator: Validator) { var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator); if (index == -1) { container.push(validator); if (validator instanceof HTMLElement) { validator.addEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false); } this.log(Logging.LogLevel.Log, `Calling \"${name}\" validity check after validator registration.`); // most likely, at this point, the corresponding field isn't available yet. this._checkFieldValidity(name); } } unregisterValidator(name: string, validator: Validator) { this._unregisterValidator(name, validator, true); } private _unregisterValidator(name: string, validator: Validator, check: boolean) { var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator); if (index >= 0) { if (validator instanceof HTMLElement) { validator.removeEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false); } container.splice(index, 1); if (check) { this._checkFieldValidity(name); } } } // #endregion @Watch({ reflectBack: true, converter: PropertyConverters.Boolean }) valid: boolean; @Watch({ reflectBack: true, converter: PropertyConverters.Boolean }) dirty: boolean; @Watch({ reflectBack: true, converter: PropertyConverters.Boolean }) readonly: boolean; @Watch({ converter: PropertyConverters.Boolean }) success: boolean; @Watch({ converter: PropertyConverters.Boolean }) fail: boolean; @Watch({ converter: PropertyConverters.Json }) entity: any; @Watch({ emit: false, converter: PropertyConverters.String }) entityName: string; @Watch() metadata: TypeMetadata | PropertyMetadata[]; @Watch({ emit: false, converter: PropertyConverters.Boolean }) autogenerate: boolean; /** Gets or sets whether to hint invalid fields even if still pristine (default 'true'). When 'true' - and form is autogenerated - the submit button status is tightly bound to the form valid state.",
2174
+ "values": [
2175
+ {
2176
+ "name": "true"
2177
+ },
2178
+ {
2179
+ "name": "false"
2180
+ }
2181
+ ]
2182
+ },
2183
+ {
2184
+ "name": "resettable",
2185
+ "description": "Gets the 'submit' and 'reset' form buttons. */ get formButtons() { return this._buttons; } #fetching: boolean = false; get fetching(): boolean { return this.#fetching; } private _keyupHandler = (evt: KeyboardEvent) => { if (evt.keyCode === /* Enter */13 // no modifiers && !evt.shiftKey && !evt.ctrlKey && !evt.altKey && !evt.metaKey) { let btn: ComponentsUI.UI.PacemButtonElement = (<HTMLElement>evt.currentTarget).querySelector(P + '-button[type=submit]'); if (!Utils.isNull(btn) && Utils.isVisible(btn) && !btn.disabled) { btn.click(); } } }; private _submit = (fetcher: Components.PacemFetchElement, evt?: Event) => { if (!Utils.isNull(evt)) { avoidHandler(evt); } Promise.all(this._validateAllFields()).then(p => { if (p.findIndex(f => f === false) === -1) { this.submit(fetcher).then(_ => { // successful submission here this.setPristine(); }, _ => { // catch rejected/canceled }); } }); } /** Submits the form data via a provided fetcher. @param fetcher The fetching delegate. / submit(fetcher: Net.Fetcher): PromiseLike<any> { return new Promise<any>((resolve, reject) => { if (Utils.isNull(fetcher)) { reject(`Fetcher cannot be null while submitting a form.`); } this._submitInternally(fetcher).then(result => { this.dispatchEvent(new CustomEvent(\"success\", { detail: result })); resolve(result); }, err => { if (err !== SUBMIT_CANCELLATION_TOKEN) { this.dispatchEvent(new CustomEvent(\"fail\", { detail: err })); } reject(err); }); }); } /** Resets the form to its pristine values. */ reset() { this._reset(); } private _submitInternally(fetcher: Net.Fetcher, args?: FormSubmitEventArgs): PromiseLike<any> { if (Utils.isNull(fetcher)) throw `Fetcher cannot be null while submitting a form.`; var deferred = DeferPromise.defer(); const entity = this.entity, entityName = this.entityName; var model = {}; if (!Utils.isNullOrEmpty(entityName)) { model[entityName] = entity; } else { model = entity; } var args: FormSubmitEventArgs = { parameters: model, fields: this._getAllFields() }; // allow to inject some logic while submitting... var submitEvt = new FormSubmitEvent(args); this.dispatchEvent(submitEvt); if (submitEvt.defaultPrevented) { // rejection using `false` identifies a canceled submission. deferred.reject(SUBMIT_CANCELLATION_TOKEN); } else { // ...use the output parameters fetcher.parameters = Utils.extend({}, submitEvt.detail.parameters); // a) fetcher 'success' event listener const fnSuccess = (evt: CustomEvent<Response>) => { fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false); fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false); const r = evt.detail, empty = Net.Fetcher.isEmpty(r); if (empty) { // if no content gets fetched (e.g. '204') then resolve right here (because it won't enter 'fnResult') fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false); this.success = true; deferred.resolve({}); } switch (r.status) { case 205 /*'Reset Content'*/: this._reset(); break; } }; // b) fetcher 'fetchresult' event listener const fnResult = (evt: CustomEvent) => { // remove listeners (others have already been removed in 'fnSuccess') fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false); // var result = evt.detail; if (typeof (result) === 'object' && (<object>result).hasOwnProperty('success')) { // DEPRECATED code branch if (result.success === true) { this.success = true; deferred.resolve(result.result || {}); } else { this.fail = true; deferred.reject(result.error); } } else { this.success = true; deferred.resolve(result); } }; // c) fetcher 'error' event listener const fnError = (evt: CustomEvent) => { // remove listeners fetcher.removeEventListener(Net.FetchSuccessEventName, fnSuccess, false); fetcher.removeEventListener(Net.FetchResultEventName, fnResult, false); fetcher.removeEventListener(Net.FetchErrorEventName, fnError, false); this.fail = true; const response = evt.detail; deferred.reject(response); }; // fetcher propertychange event listener const fnPropChange = (evt: PropertyChangeEvent) => { switch (evt.detail.propertyName) { case 'fetching': if (evt.detail.currentValue === true) { Utils.addClass(this, PCSS + '-fetching'); this.#fetching = true; this.dispatchEvent(new PropertyChangeEvent({ currentValue: true, oldValue: false, propertyName: 'fetching' })); } else { this.#fetching = false; this.dispatchEvent(new PropertyChangeEvent({ currentValue: false, oldValue: true, propertyName: 'fetching' })); Utils.removeClass(this, PCSS + '-fetching'); fetcher.removeEventListener(PropertyChangeEventName, fnPropChange, false); } break; } }; fetcher.addEventListener(PropertyChangeEventName, fnPropChange, false); fetcher.addEventListener(Net.FetchSuccessEventName, fnSuccess, false); fetcher.addEventListener(Net.FetchResultEventName, fnResult, false); fetcher.addEventListener(Net.FetchErrorEventName, fnError, false); if (!Utils.isNullOrEmpty(this.action)) { fetcher.url = this.action; } // is it an 'inert' PacemFetchElement? if (fetcher instanceof Components.PacemFetchElement && !fetcher.autofetch) { fetcher.fetch(); } this.success = this.fail = false; } // return deferred.promise; } private _getAllFields(accumulator: { [name: string]: PacemModel } = {}) { Utils.extend(accumulator, this._fields); for (var form of this._subForms) { form._getAllFields(accumulator); } return accumulator; } private _reset = (evt?: Event) => { if (!Utils.isNull(evt)) avoidHandler(evt); var resetEvt = new FormResetEvent(); this.dispatchEvent(resetEvt); if (resetEvt.defaultPrevented) { return; } // reset // fields first for (var field in this._fields) { var fld = this._fields[field]; if (fld instanceof PacemModelElement) fld.reset(); } // then sub-forms for (var form of this._subForms) { form._reset(); } }; /** Modifies the state of the current entity programmatically. */ apply(state: { [key: string]: any }) { if (Utils.isNullOrEmpty(state)) { return; } this.entity = Utils.extend({}, this.entity, state); for (let name in state) { this.setDirty(name); } } /** Sets the current form (or the fields of it having the specified names) in a pristine state. */ setPristine(...names: string[]) { this._setAs(false, ...names); } /** Sets the current form (or the fields of it having the specified names) in a dirty state. */ setDirty(...names: string[]) { this._setAs(true, ...names); } private _setAs(dirty: boolean, ...names: string[]) { const hasNames = !Utils.isEmpty(names); for (let field in this._fields) { if (!hasNames || names.indexOf(field) >= 0) { const fld = this._fields[field]; if (fld instanceof PacemModelElement) { dirty ? fld.setDirty() : fld.setPristine(); } } } for (let form of this._subForms) { dirty ? form.setDirty(...names) : form.setPristine(...names); } } private _fields: { [name: string]: PacemModel } = {}; private _validators: { [name: string]: Validator[] } = {}; private _subForms: PacemFormElement[] = []; private _fieldPropertyChanged = (evt?: PropertyChangeEvent) => { switch (evt.detail.propertyName) { case 'value': // validate: let model = <PacemModelElement>evt.target; this._checkFieldValidity(model.name); break; case 'dirty': this._checkDirtyness(); break; case 'valid': this._checkValidity(); break; } }; private _validatorPropertyChanged = (evt?: PropertyChangeEvent) => { const validator = <PacemBaseValidatorElement>evt.target, name = validator.watch; if (evt.detail.propertyName === 'invalid') { let model = this._fields[validator.watch]; if (validator.invalid) model.valid = false; else this._checkFieldValidity(name); } else { this._checkFieldValidity(name); } }; private _checkFieldValidity(name): Promise<boolean | null> { if (!this.suddenValidation) { return Promise.resolve(null); } if (name in this._fields) { return this._validateField(name, false); } return Promise.resolve(false); } // @Concurrent() validate(name?: string): PromiseLike<boolean> { if (!Utils.isNullOrEmpty(name)) { return this._validateField(name, false); } else { return Promise.all(this._validateAllFields()).then(b => !b.some(b0 => b0 === false)); } } private _validateAllFields(setAsDirty = true) { const tasks: PromiseLike<boolean>[] = []; for (let field in this._fields) { tasks.push(this._validateField(field, setAsDirty)); } for (let sub of this._subForms) { Array.prototype.push.apply(tasks, sub._validateAllFields(setAsDirty)); } return tasks; } // Remove Concurrent from here, better check the closure for params in @Concurrent //@Concurrent() private _validateField(name: string, setAsDirty: boolean) { return new Promise<boolean>((resolve, _) => { var model: PacemModel = this._fields[name]; if (model) { var validators = this._validators[model.name]; if (validators && validators.length > 0) { this.log(Logging.LogLevel.Log, `Computing \"${model.name}\" validity.`); Promise.all( validators.map(v => v.validate(model.value) .then(_ => !(v.invalid = !_)) ) ) .then(results => { let valid = true; for (var result of results) { if (result === false) { valid = false; // set dirty only when not valid if (setAsDirty) { model.setDirty(); } break; } } this.log(Logging.LogLevel.Log, `Property \"${model.name}\" turns out to be ${(valid ? '' : 'not ')}valid.`); resolve(model.valid = valid); }); } else { this.log(Logging.LogLevel.Log, `Property \"${model.name}\" has no validators.`); resolve(model.valid = true); } } else { this.log(Logging.LogLevel.Log, `Property \"${name}\" has no fields in this form.`); resolve(true); } }); } // #region FORM HIERARCHY validity/dirtyness private _checkDirtyness() { let dirty = false; for (var model in this._fields) { if (this._fields[model].dirty === true) { dirty = true; break; } } if (/* still */dirty === false) { for (var form of this._subForms) { if (form.dirty) { dirty = true; break; } } } this.dirty = dirty; }; private _checkValidity() { let valid = true; for (var model in this._fields) { this.log(Logging.LogLevel.Log, `Checking \"${model}\" validity.`); if (this._fields[model].valid === false) { this.log(Logging.LogLevel.Log, `\"${model}\" is not valid.`); valid = false; break; } } if (/* still */valid === true) { for (var form of this._subForms) { if (!form.valid) { valid = false; break; } } } this.valid = valid; }; registerSubForm(form: PacemFormElement) { let arr = this._subForms; if (arr.indexOf(form) == -1) { form.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false); arr.push(form); this._checkValidity(); this._checkDirtyness(); } } unregisterSubForm(form: PacemFormElement) { let arr = this._subForms, ndx = arr.indexOf(form); if (ndx >= 0) { form.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false); arr.splice(ndx, 1); this._checkValidity(); this._checkDirtyness(); } } registerField(name: string, model: PacemModel) { var container = this._fields; if (container[name] != model) { this.unregisterField(name, false); container[name] = model; this.log(Logging.LogLevel.Log, `Registering \"${name}\" field.`); if (model instanceof HTMLElement) { model.addEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false); } this._checkFieldValidity(name); this._checkDirtyness(); } } unregisterField(name: string, check: boolean = true) { var container = this._fields, current = container[name]; if (current instanceof HTMLElement) { current.removeEventListener(PropertyChangeEventName, this._fieldPropertyChanged, false); } delete container[name]; if (current && check === true) { this._checkValidity(); this._checkDirtyness(); } } registerValidator(name: string, validator: Validator) { var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator); if (index == -1) { container.push(validator); if (validator instanceof HTMLElement) { validator.addEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false); } this.log(Logging.LogLevel.Log, `Calling \"${name}\" validity check after validator registration.`); // most likely, at this point, the corresponding field isn't available yet. this._checkFieldValidity(name); } } unregisterValidator(name: string, validator: Validator) { this._unregisterValidator(name, validator, true); } private _unregisterValidator(name: string, validator: Validator, check: boolean) { var container = this._validators[name] = this._validators[name] || [], index = container.indexOf(validator); if (index >= 0) { if (validator instanceof HTMLElement) { validator.removeEventListener(PropertyChangeEventName, this._validatorPropertyChanged, false); } container.splice(index, 1); if (check) { this._checkFieldValidity(name); } } } // #endregion @Watch({ reflectBack: true, converter: PropertyConverters.Boolean }) valid: boolean; @Watch({ reflectBack: true, converter: PropertyConverters.Boolean }) dirty: boolean; @Watch({ reflectBack: true, converter: PropertyConverters.Boolean }) readonly: boolean; @Watch({ converter: PropertyConverters.Boolean }) success: boolean; @Watch({ converter: PropertyConverters.Boolean }) fail: boolean; @Watch({ converter: PropertyConverters.Json }) entity: any; @Watch({ emit: false, converter: PropertyConverters.String }) entityName: string; @Watch() metadata: TypeMetadata | PropertyMetadata[]; @Watch({ emit: false, converter: PropertyConverters.Boolean }) autogenerate: boolean; /** Gets or sets whether to hint invalid fields even if still pristine (default 'true'). When 'true' - and form is autogenerated - the submit button status is tightly bound to the form valid state. */ @Watch({ converter: PropertyConverters.Boolean }) suddenValidation: boolean = true; /** Gets or sets whether the form should show - when autogenerated - the reset button.",
2186
+ "values": [
2187
+ {
2188
+ "name": "true"
2189
+ },
2190
+ {
2191
+ "name": "false"
2192
+ }
2193
+ ]
2194
+ },
2195
+ {
2196
+ "name": "action"
2197
+ }
2198
+ ]
2199
+ },
2200
+ {
2201
+ "name": "pacem-form-field",
2202
+ "description": {
2203
+ "kind": "markdown",
2204
+ "value": "**@pacem/pacem-scaffolding**"
2205
+ },
2206
+ "attributes": [
2207
+ {
2208
+ "name": "metadata"
2209
+ },
2210
+ {
2211
+ "name": "fetch-headers"
2212
+ },
2213
+ {
2214
+ "name": "fetch-credentials"
2215
+ },
2216
+ {
2217
+ "name": "readonly",
2218
+ "values": [
2219
+ {
2220
+ "name": "true"
2221
+ },
2222
+ {
2223
+ "name": "false"
2224
+ }
2225
+ ]
2226
+ },
2227
+ {
2228
+ "name": "entity"
2229
+ }
2230
+ ]
2231
+ },
2232
+ {
2233
+ "name": "pacem-fps",
2234
+ "description": {
2235
+ "kind": "markdown",
2236
+ "value": "**@pacem/pacem-logging**"
2237
+ }
2238
+ },
2239
+ {
2240
+ "name": "pacem-fx-fancy",
2241
+ "description": {
2242
+ "kind": "markdown",
2243
+ "value": "**@pacem/pacem-fx**"
2244
+ },
2245
+ "attributes": [
2246
+ {
2247
+ "name": "fancify",
2248
+ "values": [
2249
+ {
2250
+ "name": "true"
2251
+ },
2252
+ {
2253
+ "name": "false"
2254
+ }
2255
+ ]
2256
+ },
2257
+ {
2258
+ "name": "delay"
2259
+ },
2260
+ {
2261
+ "name": "gap"
2262
+ }
2263
+ ]
2264
+ },
2265
+ {
2266
+ "name": "pacem-fx-gradient",
2267
+ "description": {
2268
+ "kind": "markdown",
2269
+ "value": "**@pacem/pacem-fx**"
2270
+ },
2271
+ "attributes": [
2272
+ {
2273
+ "name": "target"
2274
+ },
2275
+ {
2276
+ "name": "mode"
2277
+ }
2278
+ ]
2279
+ },
2280
+ {
2281
+ "name": "pacem-fx-gradient-linear",
2282
+ "description": {
2283
+ "kind": "markdown",
2284
+ "value": "**@pacem/pacem-fx**"
2285
+ },
2286
+ "attributes": [
2287
+ {
2288
+ "name": "angle",
2289
+ "description": "Angle in degrees."
2290
+ }
2291
+ ]
2292
+ },
2293
+ {
2294
+ "name": "pacem-fx-gradient-radial",
2295
+ "description": {
2296
+ "kind": "markdown",
2297
+ "value": "**@pacem/pacem-fx**"
2298
+ },
2299
+ "attributes": [
2300
+ {
2301
+ "name": "shape",
2302
+ "description": "Either 'circle' or 'ellipse' (default)."
2303
+ },
2304
+ {
2305
+ "name": "center",
2306
+ "description": "Either 'circle' or 'ellipse' (default). */ @Watch({ emit: false, converter: PropertyConverters.String }) shape: 'circle' | 'ellipse'; /** Gradient's origin in normalized coordinates."
2307
+ },
2308
+ {
2309
+ "name": "size",
2310
+ "description": "Either 'circle' or 'ellipse' (default). */ @Watch({ emit: false, converter: PropertyConverters.String }) shape: 'circle' | 'ellipse'; /** Gradient's origin in normalized coordinates. */ @Watch({ emit: false, converter: PropertyConverters.Point }) center: Point; /** Gradient's diametral size in normalized lengths, or absolute pixels (circular gradients only)."
2311
+ }
2312
+ ]
2313
+ },
2314
+ {
2315
+ "name": "pacem-fx-gradient-stop",
2316
+ "description": {
2317
+ "kind": "markdown",
2318
+ "value": "**@pacem/pacem-fx**"
2319
+ },
2320
+ "attributes": [
2321
+ {
2322
+ "name": "offset"
2323
+ },
2324
+ {
2325
+ "name": "color"
2326
+ },
2327
+ {
2328
+ "name": "opacity"
2329
+ }
2330
+ ]
2331
+ },
2332
+ {
2333
+ "name": "pacem-fx-hero",
2334
+ "description": {
2335
+ "kind": "markdown",
2336
+ "value": "**@pacem/pacem-fx**"
2337
+ },
2338
+ "attributes": [
2339
+ {
2340
+ "name": "hero",
2341
+ "values": [
2342
+ {
2343
+ "name": "true"
2344
+ },
2345
+ {
2346
+ "name": "false"
2347
+ }
2348
+ ]
2349
+ },
2350
+ {
2351
+ "name": "to"
2352
+ },
2353
+ {
2354
+ "name": "from"
2355
+ },
2356
+ {
2357
+ "name": "duration"
2358
+ }
2359
+ ]
2360
+ },
2361
+ {
2362
+ "name": "pacem-fx-list",
2363
+ "description": {
2364
+ "kind": "markdown",
2365
+ "value": "**@pacem/pacem-fx**"
2366
+ }
2367
+ },
2368
+ {
2369
+ "name": "pacem-fx-pulse",
2370
+ "description": {
2371
+ "kind": "markdown",
2372
+ "value": "**@pacem/pacem-fx**"
2373
+ }
2374
+ },
2375
+ {
2376
+ "name": "pacem-fx-ripple",
2377
+ "description": {
2378
+ "kind": "markdown",
2379
+ "value": "**@pacem/pacem-fx**"
2380
+ }
2381
+ },
2382
+ {
2383
+ "name": "pacem-gallery",
2384
+ "description": {
2385
+ "kind": "markdown",
2386
+ "value": "**@pacem/pacem-plus**"
2387
+ },
2388
+ "attributes": [
2389
+ {
2390
+ "name": "caption-template"
2391
+ },
2392
+ {
2393
+ "name": "caption-property"
2394
+ },
2395
+ {
2396
+ "name": "image-property"
2397
+ }
2398
+ ]
2399
+ },
2400
+ {
2401
+ "name": "pacem-geolocate",
2402
+ "description": {
2403
+ "kind": "markdown",
2404
+ "value": "**@pacem/pacem-scaffolding**"
2405
+ },
2406
+ "attributes": [
2407
+ {
2408
+ "name": "adapter"
2409
+ },
2410
+ {
2411
+ "name": "map"
2412
+ },
2413
+ {
2414
+ "name": "icon"
2415
+ }
2416
+ ]
2417
+ },
2418
+ {
2419
+ "name": "pacem-headcell",
2420
+ "description": {
2421
+ "kind": "markdown",
2422
+ "value": "**@pacem/pacem-plus**"
2423
+ }
2424
+ },
2425
+ {
2426
+ "name": "pacem-hierarchy",
2427
+ "description": {
2428
+ "kind": "markdown",
2429
+ "value": "**@pacem/pacem-scaffolding**"
2430
+ },
2431
+ "attributes": [
2432
+ {
2433
+ "name": "datasource"
2434
+ },
2435
+ {
2436
+ "name": "value-property"
2437
+ },
2438
+ {
2439
+ "name": "text-property"
2440
+ },
2441
+ {
2442
+ "name": "disabled-property"
2443
+ },
2444
+ {
2445
+ "name": "unlink-caption"
2446
+ },
2447
+ {
2448
+ "name": "itemtemplate"
2449
+ },
2450
+ {
2451
+ "name": "parents-property"
2452
+ }
2453
+ ]
2454
+ },
2455
+ {
2456
+ "name": "pacem-history",
2457
+ "description": {
2458
+ "kind": "markdown",
2459
+ "value": "**@pacem/pacem-core**"
2460
+ },
2461
+ "attributes": [
2462
+ {
2463
+ "name": "state"
2464
+ },
2465
+ {
2466
+ "name": "maxlength"
2467
+ },
2468
+ {
2469
+ "name": "can-undo",
2470
+ "description": "@readonly",
2471
+ "values": [
2472
+ {
2473
+ "name": "true"
2474
+ },
2475
+ {
2476
+ "name": "false"
2477
+ }
2478
+ ]
2479
+ },
2480
+ {
2481
+ "name": "can-redo",
2482
+ "description": "@readonly*/ @Watch({ emit: true, converter: PropertyConverters.Boolean }) canUndo: boolean; /** @readonly",
2483
+ "values": [
2484
+ {
2485
+ "name": "true"
2486
+ },
2487
+ {
2488
+ "name": "false"
2489
+ }
2490
+ ]
2491
+ }
2492
+ ]
2493
+ },
2494
+ {
2495
+ "name": "pacem-html-proxy",
2496
+ "description": {
2497
+ "kind": "markdown",
2498
+ "value": "**@pacem/pacem-core**"
2499
+ },
2500
+ "attributes": [
2501
+ {
2502
+ "name": "attr"
2503
+ },
2504
+ {
2505
+ "name": "value"
2506
+ }
2507
+ ]
2508
+ },
2509
+ {
2510
+ "name": "pacem-hub-listener",
2511
+ "description": {
2512
+ "kind": "markdown",
2513
+ "value": "**@pacem/pacem-networking**"
2514
+ },
2515
+ "attributes": [
2516
+ {
2517
+ "name": "method",
2518
+ "description": "The method that the listener should subscribe to."
2519
+ },
2520
+ {
2521
+ "name": "stream",
2522
+ "description": "The method that the listener should subscribe to. */ @Watch({ emit: false, converter: PropertyConverters.String }) method: string; /** Whether it is listening to a streaming hub (`true`), or not (`false`, default).",
2523
+ "values": [
2524
+ {
2525
+ "name": "true"
2526
+ },
2527
+ {
2528
+ "name": "false"
2529
+ }
2530
+ ]
2531
+ },
2532
+ {
2533
+ "name": "arguments",
2534
+ "description": "The method that the listener should subscribe to. */ @Watch({ emit: false, converter: PropertyConverters.String }) method: string; /** Whether it is listening to a streaming hub (`true`), or not (`false`, default). */ @Watch({ emit: false, converter: PropertyConverters.Boolean }) stream: boolean; /** Method arguments."
2535
+ }
2536
+ ]
2537
+ },
2538
+ {
2539
+ "name": "pacem-hub-proxy",
2540
+ "description": {
2541
+ "kind": "markdown",
2542
+ "value": "**@pacem/pacem-networking**"
2543
+ },
2544
+ "attributes": [
2545
+ {
2546
+ "name": "url"
2547
+ },
2548
+ {
2549
+ "name": "accesstoken"
2550
+ },
2551
+ {
2552
+ "name": "connected",
2553
+ "values": [
2554
+ {
2555
+ "name": "true"
2556
+ },
2557
+ {
2558
+ "name": "false"
2559
+ }
2560
+ ]
2561
+ }
2562
+ ]
2563
+ },
2564
+ {
2565
+ "name": "pacem-icon",
2566
+ "description": {
2567
+ "kind": "markdown",
2568
+ "value": "**@pacem/pacem-ui**"
2569
+ },
2570
+ "attributes": [
2571
+ {
2572
+ "name": "icon"
2573
+ }
2574
+ ]
2575
+ },
2576
+ {
2577
+ "name": "pacem-if",
2578
+ "description": {
2579
+ "kind": "markdown",
2580
+ "value": "**@pacem/pacem-core**"
2581
+ },
2582
+ "attributes": [
2583
+ {
2584
+ "name": "match",
2585
+ "values": [
2586
+ {
2587
+ "name": "true"
2588
+ },
2589
+ {
2590
+ "name": "false"
2591
+ }
2592
+ ]
2593
+ }
2594
+ ]
2595
+ },
2596
+ {
2597
+ "name": "pacem-img",
2598
+ "description": {
2599
+ "kind": "markdown",
2600
+ "value": "**@pacem/pacem-ui**"
2601
+ },
2602
+ "attributes": [
2603
+ {
2604
+ "name": "adapt"
2605
+ },
2606
+ {
2607
+ "name": "src"
2608
+ },
2609
+ {
2610
+ "name": "size"
2611
+ },
2612
+ {
2613
+ "name": "loading",
2614
+ "values": [
2615
+ {
2616
+ "name": "true"
2617
+ },
2618
+ {
2619
+ "name": "false"
2620
+ }
2621
+ ]
2622
+ }
2623
+ ]
2624
+ },
2625
+ {
2626
+ "name": "pacem-infinite-scroller",
2627
+ "description": {
2628
+ "kind": "markdown",
2629
+ "value": "**@pacem/pacem-ui**"
2630
+ },
2631
+ "attributes": [
2632
+ {
2633
+ "name": "container"
2634
+ },
2635
+ {
2636
+ "name": "threshold"
2637
+ }
2638
+ ]
2639
+ },
2640
+ {
2641
+ "name": "pacem-input-chars",
2642
+ "description": {
2643
+ "kind": "markdown",
2644
+ "value": "**@pacem/pacem-scaffolding**"
2645
+ },
2646
+ "attributes": [
2647
+ {
2648
+ "name": "char-count"
2649
+ },
2650
+ {
2651
+ "name": "input-transform"
2652
+ }
2653
+ ]
2654
+ },
2655
+ {
2656
+ "name": "pacem-input-color",
2657
+ "description": {
2658
+ "kind": "markdown",
2659
+ "value": "**@pacem/pacem-scaffolding**"
2660
+ }
2661
+ },
2662
+ {
2663
+ "name": "pacem-input-email",
2664
+ "description": {
2665
+ "kind": "markdown",
2666
+ "value": "**@pacem/pacem-scaffolding**"
2667
+ }
2668
+ },
2669
+ {
2670
+ "name": "pacem-input-hidden",
2671
+ "description": {
2672
+ "kind": "markdown",
2673
+ "value": "**@pacem/pacem-scaffolding**"
2674
+ }
2675
+ },
2676
+ {
2677
+ "name": "pacem-input-image",
2678
+ "description": {
2679
+ "kind": "markdown",
2680
+ "value": "**@pacem/pacem-scaffolding**"
2681
+ },
2682
+ "attributes": [
2683
+ {
2684
+ "name": "upload-url"
2685
+ },
2686
+ {
2687
+ "name": "image-set"
2688
+ },
2689
+ {
2690
+ "name": "max-width"
2691
+ },
2692
+ {
2693
+ "name": "max-height"
2694
+ },
2695
+ {
2696
+ "name": "max-thumbnail-width"
2697
+ },
2698
+ {
2699
+ "name": "max-thumbnail-height"
2700
+ },
2701
+ {
2702
+ "name": "allow-snapshot",
2703
+ "values": [
2704
+ {
2705
+ "name": "true"
2706
+ },
2707
+ {
2708
+ "name": "false"
2709
+ }
2710
+ ]
2711
+ }
2712
+ ]
2713
+ },
2714
+ {
2715
+ "name": "pacem-input-number",
2716
+ "description": {
2717
+ "kind": "markdown",
2718
+ "value": "**@pacem/pacem-scaffolding**"
2719
+ },
2720
+ "attributes": [
2721
+ {
2722
+ "name": "format"
2723
+ }
2724
+ ]
2725
+ },
2726
+ {
2727
+ "name": "pacem-input-password",
2728
+ "description": {
2729
+ "kind": "markdown",
2730
+ "value": "**@pacem/pacem-scaffolding**"
2731
+ }
2732
+ },
2733
+ {
2734
+ "name": "pacem-input-search",
2735
+ "description": {
2736
+ "kind": "markdown",
2737
+ "value": "**@pacem/pacem-scaffolding**"
2738
+ }
2739
+ },
2740
+ {
2741
+ "name": "pacem-input-tel",
2742
+ "description": {
2743
+ "kind": "markdown",
2744
+ "value": "**@pacem/pacem-scaffolding**"
2745
+ }
2746
+ },
2747
+ {
2748
+ "name": "pacem-input-text",
2749
+ "description": {
2750
+ "kind": "markdown",
2751
+ "value": "**@pacem/pacem-scaffolding**"
2752
+ }
2753
+ },
2754
+ {
2755
+ "name": "pacem-input-url",
2756
+ "description": {
2757
+ "kind": "markdown",
2758
+ "value": "**@pacem/pacem-scaffolding**"
2759
+ }
2760
+ },
2761
+ {
2762
+ "name": "pacem-latlng",
2763
+ "description": {
2764
+ "kind": "markdown",
2765
+ "value": "**@pacem/pacem-scaffolding**"
2766
+ },
2767
+ "attributes": [
2768
+ {
2769
+ "name": "options"
2770
+ }
2771
+ ]
2772
+ },
2773
+ {
2774
+ "name": "pacem-layout-proxy",
2775
+ "description": {
2776
+ "kind": "markdown",
2777
+ "value": "**@pacem/pacem-core**"
2778
+ },
2779
+ "attributes": [
2780
+ {
2781
+ "name": "attr"
2782
+ },
2783
+ {
2784
+ "name": "value"
2785
+ }
2786
+ ]
2787
+ },
2788
+ {
2789
+ "name": "pacem-length-validator",
2790
+ "description": {
2791
+ "kind": "markdown",
2792
+ "value": "**@pacem/pacem-scaffolding**"
2793
+ },
2794
+ "attributes": [
2795
+ {
2796
+ "name": "min"
2797
+ },
2798
+ {
2799
+ "name": "max"
2800
+ }
2801
+ ]
2802
+ },
2803
+ {
2804
+ "name": "pacem-lightbox",
2805
+ "description": {
2806
+ "kind": "markdown",
2807
+ "value": "**@pacem/pacem-ui**"
2808
+ },
2809
+ "attributes": [
2810
+ {
2811
+ "name": "show",
2812
+ "values": [
2813
+ {
2814
+ "name": "true"
2815
+ },
2816
+ {
2817
+ "name": "false"
2818
+ }
2819
+ ]
2820
+ },
2821
+ {
2822
+ "name": "modal",
2823
+ "values": [
2824
+ {
2825
+ "name": "true"
2826
+ },
2827
+ {
2828
+ "name": "false"
2829
+ }
2830
+ ]
2831
+ },
2832
+ {
2833
+ "name": "behavior"
2834
+ }
2835
+ ]
2836
+ },
2837
+ {
2838
+ "name": "pacem-loader",
2839
+ "description": {
2840
+ "kind": "markdown",
2841
+ "value": "**@pacem/pacem-ui**"
2842
+ },
2843
+ "attributes": [
2844
+ {
2845
+ "name": "active",
2846
+ "values": [
2847
+ {
2848
+ "name": "true"
2849
+ },
2850
+ {
2851
+ "name": "false"
2852
+ }
2853
+ ]
2854
+ },
2855
+ {
2856
+ "name": "type"
2857
+ }
2858
+ ]
2859
+ },
2860
+ {
2861
+ "name": "pacem-map-adapter-azure",
2862
+ "description": {
2863
+ "kind": "markdown",
2864
+ "value": "**@pacem/pacem-maps**"
2865
+ },
2866
+ "attributes": [
2867
+ {
2868
+ "name": "subscription-key"
2869
+ },
2870
+ {
2871
+ "name": "language"
2872
+ }
2873
+ ]
2874
+ },
2875
+ {
2876
+ "name": "pacem-map-adapter-google",
2877
+ "description": {
2878
+ "kind": "markdown",
2879
+ "value": "**@pacem/pacem-maps**"
2880
+ },
2881
+ "attributes": [
2882
+ {
2883
+ "name": "api-key"
2884
+ },
2885
+ {
2886
+ "name": "version"
2887
+ },
2888
+ {
2889
+ "name": "language"
2890
+ },
2891
+ {
2892
+ "name": "region"
2893
+ },
2894
+ {
2895
+ "name": "default-options"
2896
+ },
2897
+ {
2898
+ "name": "libraries"
2899
+ }
2900
+ ]
2901
+ },
2902
+ {
2903
+ "name": "pacem-map-adapter-leaflet",
2904
+ "description": {
2905
+ "kind": "markdown",
2906
+ "value": "**@pacem/pacem-maps**"
2907
+ },
2908
+ "attributes": [
2909
+ {
2910
+ "name": "tiles"
2911
+ },
2912
+ {
2913
+ "name": "attribution"
2914
+ }
2915
+ ]
2916
+ },
2917
+ {
2918
+ "name": "pacem-map-geolocate",
2919
+ "description": {
2920
+ "kind": "markdown",
2921
+ "value": "**@pacem/pacem-maps**"
2922
+ },
2923
+ "attributes": [
2924
+ {
2925
+ "name": "position"
2926
+ },
2927
+ {
2928
+ "name": "permission"
2929
+ },
2930
+ {
2931
+ "name": "maximum-age"
2932
+ },
2933
+ {
2934
+ "name": "timeout"
2935
+ }
2936
+ ]
2937
+ },
2938
+ {
2939
+ "name": "pacem-markdown",
2940
+ "description": {
2941
+ "kind": "markdown",
2942
+ "value": "**@pacem/pacem-ui**"
2943
+ },
2944
+ "attributes": [
2945
+ {
2946
+ "name": "value"
2947
+ }
2948
+ ]
2949
+ },
2950
+ {
2951
+ "name": "pacem-marquee",
2952
+ "description": {
2953
+ "kind": "markdown",
2954
+ "value": "**@pacem/pacem-ui**"
2955
+ },
2956
+ "attributes": [
2957
+ {
2958
+ "name": "speed",
2959
+ "description": "seconds per 1920px"
2960
+ }
2961
+ ]
2962
+ },
2963
+ {
2964
+ "name": "pacem-media-query",
2965
+ "description": {
2966
+ "kind": "markdown",
2967
+ "value": "**@pacem/pacem-ui**"
2968
+ },
2969
+ "attributes": [
2970
+ {
2971
+ "name": "query"
2972
+ },
2973
+ {
2974
+ "name": "is-match",
2975
+ "description": "@readonly",
2976
+ "values": [
2977
+ {
2978
+ "name": "true"
2979
+ },
2980
+ {
2981
+ "name": "false"
2982
+ }
2983
+ ]
2984
+ }
2985
+ ]
2986
+ },
2987
+ {
2988
+ "name": "pacem-media-recorder",
2989
+ "description": {
2990
+ "kind": "markdown",
2991
+ "value": "**@pacem/pacem-media**"
2992
+ },
2993
+ "attributes": [
2994
+ {
2995
+ "name": "source"
2996
+ },
2997
+ {
2998
+ "name": "fps"
2999
+ },
3000
+ {
3001
+ "name": "mime-type"
3002
+ },
3003
+ {
3004
+ "name": "audio-bits-per-second"
3005
+ },
3006
+ {
3007
+ "name": "video-bits-per-second"
3008
+ },
3009
+ {
3010
+ "name": "state"
3011
+ },
3012
+ {
3013
+ "name": "output"
3014
+ }
3015
+ ]
3016
+ },
3017
+ {
3018
+ "name": "pacem-menu",
3019
+ "description": {
3020
+ "kind": "markdown",
3021
+ "value": "**@pacem/pacem-ui**"
3022
+ },
3023
+ "attributes": [
3024
+ {
3025
+ "name": "open",
3026
+ "values": [
3027
+ {
3028
+ "name": "true"
3029
+ },
3030
+ {
3031
+ "name": "false"
3032
+ }
3033
+ ]
3034
+ },
3035
+ {
3036
+ "name": "hide-hamburger-button",
3037
+ "values": [
3038
+ {
3039
+ "name": "true"
3040
+ },
3041
+ {
3042
+ "name": "false"
3043
+ }
3044
+ ]
3045
+ },
3046
+ {
3047
+ "name": "hide-back-button",
3048
+ "values": [
3049
+ {
3050
+ "name": "true"
3051
+ },
3052
+ {
3053
+ "name": "false"
3054
+ }
3055
+ ]
3056
+ },
3057
+ {
3058
+ "name": "outset",
3059
+ "values": [
3060
+ {
3061
+ "name": "true"
3062
+ },
3063
+ {
3064
+ "name": "false"
3065
+ }
3066
+ ]
3067
+ },
3068
+ {
3069
+ "name": "synchronize-shell",
3070
+ "values": [
3071
+ {
3072
+ "name": "true"
3073
+ },
3074
+ {
3075
+ "name": "false"
3076
+ }
3077
+ ]
3078
+ }
3079
+ ]
3080
+ },
3081
+ {
3082
+ "name": "pacem-menu-cursor",
3083
+ "description": {
3084
+ "kind": "markdown",
3085
+ "value": "**@pacem/pacem-ui**"
3086
+ }
3087
+ },
3088
+ {
3089
+ "name": "pacem-meta-proxy",
3090
+ "description": {
3091
+ "kind": "markdown",
3092
+ "value": "**@pacem/pacem-core**"
3093
+ },
3094
+ "attributes": [
3095
+ {
3096
+ "name": "name"
3097
+ },
3098
+ {
3099
+ "name": "itemprop"
3100
+ },
3101
+ {
3102
+ "name": "content"
3103
+ }
3104
+ ]
3105
+ },
3106
+ {
3107
+ "name": "pacem-modal-form",
3108
+ "description": {
3109
+ "kind": "markdown",
3110
+ "value": "**@pacem/pacem-plus**"
3111
+ },
3112
+ "attributes": [
3113
+ {
3114
+ "name": "sudden-validation",
3115
+ "values": [
3116
+ {
3117
+ "name": "true"
3118
+ },
3119
+ {
3120
+ "name": "false"
3121
+ }
3122
+ ]
3123
+ },
3124
+ {
3125
+ "name": "ok-caption"
3126
+ },
3127
+ {
3128
+ "name": "cancel-caption"
3129
+ },
3130
+ {
3131
+ "name": "method"
3132
+ },
3133
+ {
3134
+ "name": "metadata"
3135
+ },
3136
+ {
3137
+ "name": "action"
3138
+ },
3139
+ {
3140
+ "name": "loader-type"
3141
+ },
3142
+ {
3143
+ "name": "success",
3144
+ "values": [
3145
+ {
3146
+ "name": "true"
3147
+ },
3148
+ {
3149
+ "name": "false"
3150
+ }
3151
+ ]
3152
+ },
3153
+ {
3154
+ "name": "fail",
3155
+ "values": [
3156
+ {
3157
+ "name": "true"
3158
+ },
3159
+ {
3160
+ "name": "false"
3161
+ }
3162
+ ]
3163
+ },
3164
+ {
3165
+ "name": "readonly",
3166
+ "values": [
3167
+ {
3168
+ "name": "true"
3169
+ },
3170
+ {
3171
+ "name": "false"
3172
+ }
3173
+ ]
3174
+ },
3175
+ {
3176
+ "name": "fetch-headers"
3177
+ },
3178
+ {
3179
+ "name": "fetch-credentials"
3180
+ }
3181
+ ]
3182
+ },
3183
+ {
3184
+ "name": "pacem-namevalue-list",
3185
+ "description": {
3186
+ "kind": "markdown",
3187
+ "value": "**@pacem/pacem-scaffolding**"
3188
+ },
3189
+ "attributes": [
3190
+ {
3191
+ "name": "dictionary",
3192
+ "description": "Gets or sets whether the names should be unique",
3193
+ "values": [
3194
+ {
3195
+ "name": "true"
3196
+ },
3197
+ {
3198
+ "name": "false"
3199
+ }
3200
+ ]
3201
+ }
3202
+ ]
3203
+ },
3204
+ {
3205
+ "name": "pacem-number-animation",
3206
+ "description": {
3207
+ "kind": "markdown",
3208
+ "value": "**@pacem/pacem-core**"
3209
+ },
3210
+ "attributes": [
3211
+ {
3212
+ "name": "from"
3213
+ },
3214
+ {
3215
+ "name": "to"
3216
+ }
3217
+ ]
3218
+ },
3219
+ {
3220
+ "name": "pacem-online-status",
3221
+ "description": {
3222
+ "kind": "markdown",
3223
+ "value": "**@pacem/pacem-core**"
3224
+ },
3225
+ "attributes": [
3226
+ {
3227
+ "name": "online",
3228
+ "values": [
3229
+ {
3230
+ "name": "true"
3231
+ },
3232
+ {
3233
+ "name": "false"
3234
+ }
3235
+ ]
3236
+ }
3237
+ ]
3238
+ },
3239
+ {
3240
+ "name": "pacem-pager",
3241
+ "description": {
3242
+ "kind": "markdown",
3243
+ "value": "**@pacem/pacem-ui**"
3244
+ },
3245
+ "attributes": [
3246
+ {
3247
+ "name": "index"
3248
+ },
3249
+ {
3250
+ "name": "total"
3251
+ },
3252
+ {
3253
+ "name": "pages"
3254
+ },
3255
+ {
3256
+ "name": "size"
3257
+ },
3258
+ {
3259
+ "name": "mode"
3260
+ }
3261
+ ]
3262
+ },
3263
+ {
3264
+ "name": "pacem-panel",
3265
+ "description": {
3266
+ "kind": "markdown",
3267
+ "value": "**@pacem/pacem-core**"
3268
+ }
3269
+ },
3270
+ {
3271
+ "name": "pacem-picture",
3272
+ "description": {
3273
+ "kind": "markdown",
3274
+ "value": "**@pacem/pacem-ui**"
3275
+ },
3276
+ "attributes": [
3277
+ {
3278
+ "name": "src"
3279
+ },
3280
+ {
3281
+ "name": "current-src"
3282
+ }
3283
+ ]
3284
+ },
3285
+ {
3286
+ "name": "pacem-picture-source",
3287
+ "description": {
3288
+ "kind": "markdown",
3289
+ "value": "**@pacem/pacem-ui**"
3290
+ },
3291
+ "attributes": [
3292
+ {
3293
+ "name": "srcset"
3294
+ },
3295
+ {
3296
+ "name": "media"
3297
+ },
3298
+ {
3299
+ "name": "type"
3300
+ }
3301
+ ]
3302
+ },
3303
+ {
3304
+ "name": "pacem-pie-chart",
3305
+ "description": {
3306
+ "kind": "markdown",
3307
+ "value": "**@pacem/pacem-charts**"
3308
+ },
3309
+ "attributes": [
3310
+ {
3311
+ "name": "cutout",
3312
+ "description": "Set a value between 0 and 1, for doughnut appearance."
3313
+ },
3314
+ {
3315
+ "name": "target"
3316
+ },
3317
+ {
3318
+ "name": "mask-based-rendering",
3319
+ "values": [
3320
+ {
3321
+ "name": "true"
3322
+ },
3323
+ {
3324
+ "name": "false"
3325
+ }
3326
+ ]
3327
+ },
3328
+ {
3329
+ "name": "slice-padding",
3330
+ "description": "Set a value between 0 and 1, for doughnut appearance. */ @Watch({ converter: PropertyConverters.Number }) cutout: number = .0; @Watch({ converter: PropertyConverters.Element }) target: HTMLElement; @Watch({ converter: PropertyConverters.Boolean }) maskBasedRendering: boolean; /** Distance between two consecutive slices, in pixels."
3331
+ }
3332
+ ]
3333
+ },
3334
+ {
3335
+ "name": "pacem-pie-slice",
3336
+ "description": {
3337
+ "kind": "markdown",
3338
+ "value": "**@pacem/pacem-charts**"
3339
+ },
3340
+ "attributes": [
3341
+ {
3342
+ "name": "value"
3343
+ },
3344
+ {
3345
+ "name": "label"
3346
+ },
3347
+ {
3348
+ "name": "color"
3349
+ },
3350
+ {
3351
+ "name": "normalized-polar-coords"
3352
+ }
3353
+ ]
3354
+ },
3355
+ {
3356
+ "name": "pacem-point-animation",
3357
+ "description": {
3358
+ "kind": "markdown",
3359
+ "value": "**@pacem/pacem-core**"
3360
+ },
3361
+ "attributes": [
3362
+ {
3363
+ "name": "from"
3364
+ },
3365
+ {
3366
+ "name": "to"
3367
+ }
3368
+ ]
3369
+ },
3370
+ {
3371
+ "name": "pacem-progressbar",
3372
+ "description": {
3373
+ "kind": "markdown",
3374
+ "value": "**@pacem/pacem-ui**"
3375
+ },
3376
+ "attributes": [
3377
+ {
3378
+ "name": "caption"
3379
+ },
3380
+ {
3381
+ "name": "percentage"
3382
+ }
3383
+ ]
3384
+ },
3385
+ {
3386
+ "name": "pacem-property-picker",
3387
+ "description": {
3388
+ "kind": "markdown",
3389
+ "value": "**@pacem/pacem-scaffolding**"
3390
+ },
3391
+ "attributes": [
3392
+ {
3393
+ "name": "target"
3394
+ }
3395
+ ]
3396
+ },
3397
+ {
3398
+ "name": "pacem-radio",
3399
+ "description": {
3400
+ "kind": "markdown",
3401
+ "value": "**@pacem/pacem-scaffolding**"
3402
+ },
3403
+ "attributes": [
3404
+ {
3405
+ "name": "caption"
3406
+ },
3407
+ {
3408
+ "name": "selected",
3409
+ "values": [
3410
+ {
3411
+ "name": "true"
3412
+ },
3413
+ {
3414
+ "name": "false"
3415
+ }
3416
+ ]
3417
+ }
3418
+ ]
3419
+ },
3420
+ {
3421
+ "name": "pacem-radio-list",
3422
+ "description": {
3423
+ "kind": "markdown",
3424
+ "value": "**@pacem/pacem-scaffolding**"
3425
+ }
3426
+ },
3427
+ {
3428
+ "name": "pacem-range-validator",
3429
+ "description": {
3430
+ "kind": "markdown",
3431
+ "value": "**@pacem/pacem-scaffolding**"
3432
+ },
3433
+ "attributes": [
3434
+ {
3435
+ "name": "min"
3436
+ },
3437
+ {
3438
+ "name": "max"
3439
+ }
3440
+ ]
3441
+ },
3442
+ {
3443
+ "name": "pacem-regex-validator",
3444
+ "description": {
3445
+ "kind": "markdown",
3446
+ "value": "**@pacem/pacem-scaffolding**"
3447
+ },
3448
+ "attributes": [
3449
+ {
3450
+ "name": "pattern"
3451
+ }
3452
+ ]
3453
+ },
3454
+ {
3455
+ "name": "pacem-repeater",
3456
+ "description": {
3457
+ "kind": "markdown",
3458
+ "value": "**@pacem/pacem-core**\n\nGets the bubbling item's Event. */ get srcEvent() { return this._originalEvent; } } export class ItemCommandEvent extends ItemEvent<CommandEventArgs>{ constructor(evt: CommandEvent) { super(\"item\" + CommandEventName, evt.detail, evt); } } export class CustomItemCommandEvent extends ItemEvent<any> { constructor(evt: CommandEvent) { super(\"item\" + evt.detail.commandName.toLowerCase(), evt.detail.commandArgument, evt); } //constructor(type: string, args: any, evt: Event) { // super(\"item\"+ type.toLowerCase(), args, evt); //} } // /** <pacem-repeater datasource=\"[{id:'first', items:['a','b','c']}, ...]\"> <ol> <li> <template> <pacem-repeater datasource={{ ^item.items }}> <template> <pacem-span text=\"{{ ^^item.id+': ': ^item.toUpperCase() }}\"></pacem-span> </template> </pacem-repeater> </template> </li> </ol> </pacem-repeater>"
3459
+ },
3460
+ "attributes": [
3461
+ {
3462
+ "name": "datasource"
3463
+ }
3464
+ ]
3465
+ },
3466
+ {
3467
+ "name": "pacem-required-validator",
3468
+ "description": {
3469
+ "kind": "markdown",
3470
+ "value": "**@pacem/pacem-scaffolding**"
3471
+ }
3472
+ },
3473
+ {
3474
+ "name": "pacem-rescale",
3475
+ "description": {
3476
+ "kind": "markdown",
3477
+ "value": "**@pacem/pacem-core**"
3478
+ },
3479
+ "attributes": [
3480
+ {
3481
+ "name": "handles"
3482
+ },
3483
+ {
3484
+ "name": "min-width"
3485
+ },
3486
+ {
3487
+ "name": "max-width"
3488
+ },
3489
+ {
3490
+ "name": "min-height"
3491
+ },
3492
+ {
3493
+ "name": "max-height"
3494
+ },
3495
+ {
3496
+ "name": "keep-proportions",
3497
+ "values": [
3498
+ {
3499
+ "name": "true"
3500
+ },
3501
+ {
3502
+ "name": "false"
3503
+ }
3504
+ ]
3505
+ }
3506
+ ]
3507
+ },
3508
+ {
3509
+ "name": "pacem-resize",
3510
+ "description": {
3511
+ "kind": "markdown",
3512
+ "value": "**@pacem/pacem-core**"
3513
+ },
3514
+ "attributes": [
3515
+ {
3516
+ "name": "target"
3517
+ },
3518
+ {
3519
+ "name": "watch-position",
3520
+ "values": [
3521
+ {
3522
+ "name": "true"
3523
+ },
3524
+ {
3525
+ "name": "false"
3526
+ }
3527
+ ]
3528
+ }
3529
+ ]
3530
+ },
3531
+ {
3532
+ "name": "pacem-rotate",
3533
+ "description": {
3534
+ "kind": "markdown",
3535
+ "value": "**@pacem/pacem-core**"
3536
+ },
3537
+ "attributes": [
3538
+ {
3539
+ "name": "step"
3540
+ },
3541
+ {
3542
+ "name": "min-rotation"
3543
+ },
3544
+ {
3545
+ "name": "max-rotation"
3546
+ },
3547
+ {
3548
+ "name": "center"
3549
+ }
3550
+ ]
3551
+ },
3552
+ {
3553
+ "name": "pacem-router",
3554
+ "description": {
3555
+ "kind": "markdown",
3556
+ "value": "**@pacem/pacem-core**"
3557
+ },
3558
+ "attributes": [
3559
+ {
3560
+ "name": "template"
3561
+ },
3562
+ {
3563
+ "name": "state"
3564
+ },
3565
+ {
3566
+ "name": "path"
3567
+ }
3568
+ ]
3569
+ },
3570
+ {
3571
+ "name": "pacem-router-hash-state",
3572
+ "description": {
3573
+ "kind": "markdown",
3574
+ "value": "**@pacem/pacem-plus**"
3575
+ },
3576
+ "attributes": [
3577
+ {
3578
+ "name": "router"
3579
+ },
3580
+ {
3581
+ "name": "default"
3582
+ },
3583
+ {
3584
+ "name": "state"
3585
+ },
3586
+ {
3587
+ "name": "normalized-state"
3588
+ }
3589
+ ]
3590
+ },
3591
+ {
3592
+ "name": "pacem-schedule",
3593
+ "description": {
3594
+ "kind": "markdown",
3595
+ "value": "**@pacem/pacem-ui**"
3596
+ }
3597
+ },
3598
+ {
3599
+ "name": "pacem-scroll-aware",
3600
+ "description": {
3601
+ "kind": "markdown",
3602
+ "value": "**@pacem/pacem-core**\n\nManages scrolling interactions firing self-referenced ad-hoc events."
3603
+ },
3604
+ "attributes": [
3605
+ {
3606
+ "name": "target"
3607
+ },
3608
+ {
3609
+ "name": "offset"
3610
+ }
3611
+ ]
3612
+ },
3613
+ {
3614
+ "name": "pacem-search",
3615
+ "description": {
3616
+ "kind": "markdown",
3617
+ "value": "**@pacem/pacem-plus**"
3618
+ },
3619
+ "attributes": [
3620
+ {
3621
+ "name": "datasource"
3622
+ },
3623
+ {
3624
+ "name": "hint"
3625
+ },
3626
+ {
3627
+ "name": "url"
3628
+ },
3629
+ {
3630
+ "name": "method"
3631
+ },
3632
+ {
3633
+ "name": "hint-parameter"
3634
+ }
3635
+ ]
3636
+ },
3637
+ {
3638
+ "name": "pacem-select",
3639
+ "description": {
3640
+ "kind": "markdown",
3641
+ "value": "**@pacem/pacem-scaffolding**"
3642
+ },
3643
+ "attributes": [
3644
+ {
3645
+ "name": "empty-option",
3646
+ "values": [
3647
+ {
3648
+ "name": "true"
3649
+ },
3650
+ {
3651
+ "name": "false"
3652
+ }
3653
+ ]
3654
+ }
3655
+ ]
3656
+ },
3657
+ {
3658
+ "name": "pacem-serviceworker-proxy",
3659
+ "description": {
3660
+ "kind": "markdown",
3661
+ "value": "**@pacem/pacem-core**"
3662
+ },
3663
+ "attributes": [
3664
+ {
3665
+ "name": "registration",
3666
+ "description": "@readonly"
3667
+ },
3668
+ {
3669
+ "name": "push-subscription",
3670
+ "description": "@readonly */ @Watch() registration: ServiceWorkerRegistration; /** @readonly"
3671
+ },
3672
+ {
3673
+ "name": "src"
3674
+ },
3675
+ {
3676
+ "name": "public-key"
3677
+ }
3678
+ ]
3679
+ },
3680
+ {
3681
+ "name": "pacem-shell-proxy",
3682
+ "description": {
3683
+ "kind": "markdown",
3684
+ "value": "**@pacem/pacem-core**\n\nMoves its content to the document body and eventually removes it when disconnected. */ @CustomElement({ tagName: P + '-body-proxy' }) export class PacemBodyProxyElement extends PacemTransferProxyElement { protected get proxy(): HTMLElement { return document.body; } } /** Moves its content to the closest shell and eventually removes it when disconnected."
3685
+ }
3686
+ },
3687
+ {
3688
+ "name": "pacem-shortcut",
3689
+ "description": {
3690
+ "kind": "markdown",
3691
+ "value": "**@pacem/pacem-core**"
3692
+ },
3693
+ "attributes": [
3694
+ {
3695
+ "name": "combination"
3696
+ },
3697
+ {
3698
+ "name": "target"
3699
+ }
3700
+ ]
3701
+ },
3702
+ {
3703
+ "name": "pacem-sidebar",
3704
+ "description": {
3705
+ "kind": "markdown",
3706
+ "value": "**@pacem/pacem-ui**"
3707
+ },
3708
+ "attributes": [
3709
+ {
3710
+ "name": "open",
3711
+ "values": [
3712
+ {
3713
+ "name": "true"
3714
+ },
3715
+ {
3716
+ "name": "false"
3717
+ }
3718
+ ]
3719
+ },
3720
+ {
3721
+ "name": "synchronize-shell",
3722
+ "values": [
3723
+ {
3724
+ "name": "true"
3725
+ },
3726
+ {
3727
+ "name": "false"
3728
+ }
3729
+ ]
3730
+ }
3731
+ ]
3732
+ },
3733
+ {
3734
+ "name": "pacem-slide",
3735
+ "description": {
3736
+ "kind": "markdown",
3737
+ "value": "**@pacem/pacem-ui**"
3738
+ }
3739
+ },
3740
+ {
3741
+ "name": "pacem-slider",
3742
+ "description": {
3743
+ "kind": "markdown",
3744
+ "value": "**@pacem/pacem-scaffolding**"
3745
+ },
3746
+ "attributes": [
3747
+ {
3748
+ "name": "min"
3749
+ },
3750
+ {
3751
+ "name": "max"
3752
+ },
3753
+ {
3754
+ "name": "thumb-label",
3755
+ "values": [
3756
+ {
3757
+ "name": "true"
3758
+ },
3759
+ {
3760
+ "name": "false"
3761
+ }
3762
+ ]
3763
+ },
3764
+ {
3765
+ "name": "step"
3766
+ },
3767
+ {
3768
+ "name": "change-policy"
3769
+ },
3770
+ {
3771
+ "name": "format"
3772
+ }
3773
+ ]
3774
+ },
3775
+ {
3776
+ "name": "pacem-slideshow",
3777
+ "description": {
3778
+ "kind": "markdown",
3779
+ "value": "**@pacem/pacem-ui**"
3780
+ }
3781
+ },
3782
+ {
3783
+ "name": "pacem-snapshot",
3784
+ "description": {
3785
+ "kind": "markdown",
3786
+ "value": "**@pacem/pacem-scaffolding**"
3787
+ },
3788
+ "attributes": [
3789
+ {
3790
+ "name": "step"
3791
+ },
3792
+ {
3793
+ "name": "width"
3794
+ },
3795
+ {
3796
+ "name": "height"
3797
+ },
3798
+ {
3799
+ "name": "quality"
3800
+ }
3801
+ ]
3802
+ },
3803
+ {
3804
+ "name": "pacem-span",
3805
+ "description": {
3806
+ "kind": "markdown",
3807
+ "value": "**@pacem/pacem-core**"
3808
+ },
3809
+ "attributes": [
3810
+ {
3811
+ "name": "text"
3812
+ }
3813
+ ]
3814
+ },
3815
+ {
3816
+ "name": "pacem-sse-listener",
3817
+ "description": {
3818
+ "kind": "markdown",
3819
+ "value": "**@pacem/pacem-networking**"
3820
+ },
3821
+ "attributes": [
3822
+ {
3823
+ "name": "method",
3824
+ "description": "The method that the listener should subscribe to."
3825
+ }
3826
+ ]
3827
+ },
3828
+ {
3829
+ "name": "pacem-sse-proxy",
3830
+ "description": {
3831
+ "kind": "markdown",
3832
+ "value": "**@pacem/pacem-networking**"
3833
+ },
3834
+ "attributes": [
3835
+ {
3836
+ "name": "url"
3837
+ },
3838
+ {
3839
+ "name": "connected",
3840
+ "values": [
3841
+ {
3842
+ "name": "true"
3843
+ },
3844
+ {
3845
+ "name": "false"
3846
+ }
3847
+ ]
3848
+ }
3849
+ ]
3850
+ },
3851
+ {
3852
+ "name": "pacem-sticky-header",
3853
+ "description": {
3854
+ "kind": "markdown",
3855
+ "value": "**@pacem/pacem-ui**"
3856
+ },
3857
+ "attributes": [
3858
+ {
3859
+ "name": "threshold"
3860
+ },
3861
+ {
3862
+ "name": "offset"
3863
+ },
3864
+ {
3865
+ "name": "visible",
3866
+ "values": [
3867
+ {
3868
+ "name": "true"
3869
+ },
3870
+ {
3871
+ "name": "false"
3872
+ }
3873
+ ]
3874
+ },
3875
+ {
3876
+ "name": "visibility"
3877
+ }
3878
+ ]
3879
+ },
3880
+ {
3881
+ "name": "pacem-storyboard",
3882
+ "description": {
3883
+ "kind": "markdown",
3884
+ "value": "**@pacem/pacem-core**"
3885
+ },
3886
+ "attributes": [
3887
+ {
3888
+ "name": "autostart",
3889
+ "values": [
3890
+ {
3891
+ "name": "true"
3892
+ },
3893
+ {
3894
+ "name": "false"
3895
+ }
3896
+ ]
3897
+ },
3898
+ {
3899
+ "name": "duration",
3900
+ "description": "Extends or contracts the computed duration"
3901
+ },
3902
+ {
3903
+ "name": "datasource"
3904
+ }
3905
+ ]
3906
+ },
3907
+ {
3908
+ "name": "pacem-style-proxy",
3909
+ "description": {
3910
+ "kind": "markdown",
3911
+ "value": "**@pacem/pacem-core**"
3912
+ },
3913
+ "attributes": [
3914
+ {
3915
+ "name": "src"
3916
+ },
3917
+ {
3918
+ "name": "css-text"
3919
+ },
3920
+ {
3921
+ "name": "css-ready",
3922
+ "values": [
3923
+ {
3924
+ "name": "true"
3925
+ },
3926
+ {
3927
+ "name": "false"
3928
+ }
3929
+ ]
3930
+ }
3931
+ ]
3932
+ },
3933
+ {
3934
+ "name": "pacem-suggest",
3935
+ "description": {
3936
+ "kind": "markdown",
3937
+ "value": "**@pacem/pacem-scaffolding**"
3938
+ },
3939
+ "attributes": [
3940
+ {
3941
+ "name": "hint"
3942
+ },
3943
+ {
3944
+ "name": "max-suggestions",
3945
+ "description": "Default: 10 (i.e. assumed `10` when not defined)"
3946
+ },
3947
+ {
3948
+ "name": "allow-typing",
3949
+ "description": "Default: 10 (i.e. assumed `10` when not defined) */ @Watch({ emit: false, converter: PropertyConverters.Number }) maxSuggestions: number; /** Default: true (i.e. assumed `true` when not defined)",
3950
+ "values": [
3951
+ {
3952
+ "name": "true"
3953
+ },
3954
+ {
3955
+ "name": "false"
3956
+ }
3957
+ ]
3958
+ },
3959
+ {
3960
+ "name": "prevent-focus",
3961
+ "description": "Default: 10 (i.e. assumed `10` when not defined) */ @Watch({ emit: false, converter: PropertyConverters.Number }) maxSuggestions: number; /** Default: true (i.e. assumed `true` when not defined) */ @Watch({ converter: PropertyConverters.Boolean }) allowTyping: boolean; /** Relevant in a rich/plain text header dashboard, in order to avoid the editing control to lose focus.",
3962
+ "values": [
3963
+ {
3964
+ "name": "true"
3965
+ },
3966
+ {
3967
+ "name": "false"
3968
+ }
3969
+ ]
3970
+ },
3971
+ {
3972
+ "name": "itemtemplate"
3973
+ },
3974
+ {
3975
+ "name": "filter-fields",
3976
+ "description": "Default: 10 (i.e. assumed `10` when not defined) */ @Watch({ emit: false, converter: PropertyConverters.Number }) maxSuggestions: number; /** Default: true (i.e. assumed `true` when not defined) */ @Watch({ converter: PropertyConverters.Boolean }) allowTyping: boolean; /** Relevant in a rich/plain text header dashboard, in order to avoid the editing control to lose focus. */ @Watch({ emit: false, converter: PropertyConverters.Boolean }) preventFocus: boolean; @Watch({ emit: false, converter: PropertyConverters.Element }) itemtemplate: HTMLTemplateElement; /** Fields (in addition to 'textProperty') used to filter the datasource"
3977
+ },
3978
+ {
3979
+ "name": "allow-new",
3980
+ "description": "Default: 10 (i.e. assumed `10` when not defined) */ @Watch({ emit: false, converter: PropertyConverters.Number }) maxSuggestions: number; /** Default: true (i.e. assumed `true` when not defined) */ @Watch({ converter: PropertyConverters.Boolean }) allowTyping: boolean; /** Relevant in a rich/plain text header dashboard, in order to avoid the editing control to lose focus. */ @Watch({ emit: false, converter: PropertyConverters.Boolean }) preventFocus: boolean; @Watch({ emit: false, converter: PropertyConverters.Element }) itemtemplate: HTMLTemplateElement; /** Fields (in addition to 'textProperty') used to filter the datasource */ @Watch({ emit: false, converter: PropertyConverters.StringArray }) filterFields: string[]; /** Whether allow or not values not available in the suggestions. If set to `true`, works only for primitive values.",
3981
+ "values": [
3982
+ {
3983
+ "name": "true"
3984
+ },
3985
+ {
3986
+ "name": "false"
3987
+ }
3988
+ ]
3989
+ }
3990
+ ]
3991
+ },
3992
+ {
3993
+ "name": "pacem-swipe",
3994
+ "description": {
3995
+ "kind": "markdown",
3996
+ "value": "**@pacem/pacem-core**"
3997
+ },
3998
+ "attributes": [
3999
+ {
4000
+ "name": "snaps",
4001
+ "description": "No return point distance on the horizontal axis (defaults to half the device screen width)."
4002
+ },
4003
+ {
4004
+ "name": "direction"
4005
+ },
4006
+ {
4007
+ "name": "options"
4008
+ },
4009
+ {
4010
+ "name": "handle-selector",
4011
+ "description": "No return point distance on the horizontal axis (defaults to half the device screen width). */ @Watch({ emit: false, reflectBack: true, converter: { convert: (attr, _) => attr.match(/[-+]?[\\d\\.]+/g).map(i => parseFloat(i)), convertBack: (prop, _) => (<number[]>prop)?.join(' ') } }) snaps: number[]; @Watch({ emit: false, converter: PropertyConverters.String, reflectBack: true }) direction: 'horizontal' | 'vertical'; @Watch({ emit: false, converter: PropertyConverters.Json }) options: Partial<SwipeOptions>; /** Handle selector to be matched when starting the drag gesture."
4012
+ }
4013
+ ]
4014
+ },
4015
+ {
4016
+ "name": "pacem-tab",
4017
+ "description": {
4018
+ "kind": "markdown",
4019
+ "value": "**@pacem/pacem-ui**"
4020
+ },
4021
+ "attributes": [
4022
+ {
4023
+ "name": "label"
4024
+ },
4025
+ {
4026
+ "name": "key"
4027
+ }
4028
+ ]
4029
+ },
4030
+ {
4031
+ "name": "pacem-tabs",
4032
+ "description": {
4033
+ "kind": "markdown",
4034
+ "value": "**@pacem/pacem-ui**"
4035
+ },
4036
+ "attributes": [
4037
+ {
4038
+ "name": "orientation",
4039
+ "description": "Gets or sets the orientation of the default tabs adapter."
4040
+ }
4041
+ ]
4042
+ },
4043
+ {
4044
+ "name": "pacem-tag",
4045
+ "description": {
4046
+ "kind": "markdown",
4047
+ "value": "**@pacem/pacem-scaffolding**"
4048
+ },
4049
+ "attributes": [
4050
+ {
4051
+ "name": "tag"
4052
+ },
4053
+ {
4054
+ "name": "readonly",
4055
+ "values": [
4056
+ {
4057
+ "name": "true"
4058
+ },
4059
+ {
4060
+ "name": "false"
4061
+ }
4062
+ ]
4063
+ }
4064
+ ]
4065
+ },
4066
+ {
4067
+ "name": "pacem-tags",
4068
+ "description": {
4069
+ "kind": "markdown",
4070
+ "value": "**@pacem/pacem-scaffolding**"
4071
+ },
4072
+ "attributes": [
4073
+ {
4074
+ "name": "hint"
4075
+ },
4076
+ {
4077
+ "name": "allow-duplicates",
4078
+ "values": [
4079
+ {
4080
+ "name": "true"
4081
+ },
4082
+ {
4083
+ "name": "false"
4084
+ }
4085
+ ]
4086
+ },
4087
+ {
4088
+ "name": "allow-new",
4089
+ "values": [
4090
+ {
4091
+ "name": "true"
4092
+ },
4093
+ {
4094
+ "name": "false"
4095
+ }
4096
+ ]
4097
+ }
4098
+ ]
4099
+ },
4100
+ {
4101
+ "name": "pacem-template-proxy",
4102
+ "description": {
4103
+ "kind": "markdown",
4104
+ "value": "**@pacem/pacem-core**"
4105
+ },
4106
+ "attributes": [
4107
+ {
4108
+ "name": "target"
4109
+ }
4110
+ ]
4111
+ },
4112
+ {
4113
+ "name": "pacem-text",
4114
+ "description": {
4115
+ "kind": "markdown",
4116
+ "value": "**@pacem/pacem-core**"
4117
+ },
4118
+ "attributes": [
4119
+ {
4120
+ "name": "text",
4121
+ "description": "Gets or sets the plain text to display."
4122
+ }
4123
+ ]
4124
+ },
4125
+ {
4126
+ "name": "pacem-textarea",
4127
+ "description": {
4128
+ "kind": "markdown",
4129
+ "value": "**@pacem/pacem-scaffolding**"
4130
+ },
4131
+ "attributes": [
4132
+ {
4133
+ "name": "rows"
4134
+ },
4135
+ {
4136
+ "name": "cols"
4137
+ }
4138
+ ]
4139
+ },
4140
+ {
4141
+ "name": "pacem-textarea-markdown",
4142
+ "description": {
4143
+ "kind": "markdown",
4144
+ "value": "**@pacem/pacem-scaffolding**"
4145
+ },
4146
+ "attributes": [
4147
+ {
4148
+ "name": "rows"
4149
+ },
4150
+ {
4151
+ "name": "cols"
4152
+ }
4153
+ ]
4154
+ },
4155
+ {
4156
+ "name": "pacem-ticker",
4157
+ "description": {
4158
+ "kind": "markdown",
4159
+ "value": "**@pacem/pacem-ui**"
4160
+ }
4161
+ },
4162
+ {
4163
+ "name": "pacem-timer",
4164
+ "description": {
4165
+ "kind": "markdown",
4166
+ "value": "**@pacem/pacem-core**"
4167
+ },
4168
+ "attributes": [
4169
+ {
4170
+ "name": "interval"
4171
+ }
4172
+ ]
4173
+ },
4174
+ {
4175
+ "name": "pacem-title-proxy",
4176
+ "description": {
4177
+ "kind": "markdown",
4178
+ "value": "**@pacem/pacem-core**"
4179
+ },
4180
+ "attributes": [
4181
+ {
4182
+ "name": "value"
4183
+ }
4184
+ ]
4185
+ },
4186
+ {
4187
+ "name": "pacem-toast",
4188
+ "description": {
4189
+ "kind": "markdown",
4190
+ "value": "**@pacem/pacem-ui**"
4191
+ },
4192
+ "attributes": [
4193
+ {
4194
+ "name": "autohide",
4195
+ "values": [
4196
+ {
4197
+ "name": "true"
4198
+ },
4199
+ {
4200
+ "name": "false"
4201
+ }
4202
+ ]
4203
+ },
4204
+ {
4205
+ "name": "timeout"
4206
+ },
4207
+ {
4208
+ "name": "show",
4209
+ "values": [
4210
+ {
4211
+ "name": "true"
4212
+ },
4213
+ {
4214
+ "name": "false"
4215
+ }
4216
+ ]
4217
+ }
4218
+ ]
4219
+ },
4220
+ {
4221
+ "name": "pacem-toc",
4222
+ "description": {
4223
+ "kind": "markdown",
4224
+ "value": "**@pacem/pacem-ui**"
4225
+ },
4226
+ "attributes": [
4227
+ {
4228
+ "name": "selector"
4229
+ },
4230
+ {
4231
+ "name": "offset"
4232
+ },
4233
+ {
4234
+ "name": "target"
4235
+ },
4236
+ {
4237
+ "name": "router"
4238
+ },
4239
+ {
4240
+ "name": "has-content",
4241
+ "description": "@readonly",
4242
+ "values": [
4243
+ {
4244
+ "name": "true"
4245
+ },
4246
+ {
4247
+ "name": "false"
4248
+ }
4249
+ ]
4250
+ }
4251
+ ]
4252
+ },
4253
+ {
4254
+ "name": "pacem-tuner",
4255
+ "description": {
4256
+ "kind": "markdown",
4257
+ "value": "**@pacem/pacem-ui**"
4258
+ },
4259
+ "attributes": [
4260
+ {
4261
+ "name": "value"
4262
+ },
4263
+ {
4264
+ "name": "min"
4265
+ },
4266
+ {
4267
+ "name": "max"
4268
+ },
4269
+ {
4270
+ "name": "interactive",
4271
+ "values": [
4272
+ {
4273
+ "name": "true"
4274
+ },
4275
+ {
4276
+ "name": "false"
4277
+ }
4278
+ ]
4279
+ },
4280
+ {
4281
+ "name": "round"
4282
+ }
4283
+ ]
4284
+ },
4285
+ {
4286
+ "name": "pacem-tween",
4287
+ "description": {
4288
+ "kind": "markdown",
4289
+ "value": "**@pacem/pacem-core**"
4290
+ },
4291
+ "attributes": [
4292
+ {
4293
+ "name": "easing"
4294
+ },
4295
+ {
4296
+ "name": "from"
4297
+ },
4298
+ {
4299
+ "name": "to"
4300
+ },
4301
+ {
4302
+ "name": "duration"
4303
+ },
4304
+ {
4305
+ "name": "delay"
4306
+ },
4307
+ {
4308
+ "name": "start",
4309
+ "values": [
4310
+ {
4311
+ "name": "true"
4312
+ },
4313
+ {
4314
+ "name": "false"
4315
+ }
4316
+ ]
4317
+ },
4318
+ {
4319
+ "name": "value"
4320
+ }
4321
+ ]
4322
+ },
4323
+ {
4324
+ "name": "pacem-tweetembed",
4325
+ "description": {
4326
+ "kind": "markdown",
4327
+ "value": "**@pacem/pacem-ui**"
4328
+ },
4329
+ "attributes": [
4330
+ {
4331
+ "name": "tweetid"
4332
+ }
4333
+ ]
4334
+ },
4335
+ {
4336
+ "name": "pacem-upload",
4337
+ "description": {
4338
+ "kind": "markdown",
4339
+ "value": "**@pacem/pacem-scaffolding**\n\nPacemUploader Component"
4340
+ },
4341
+ "attributes": [
4342
+ {
4343
+ "name": "fetch-credentials"
4344
+ },
4345
+ {
4346
+ "name": "fetch-headers"
4347
+ },
4348
+ {
4349
+ "name": "undo-caption"
4350
+ },
4351
+ {
4352
+ "name": "retry-caption"
4353
+ },
4354
+ {
4355
+ "name": "clear-caption"
4356
+ },
4357
+ {
4358
+ "name": "pattern"
4359
+ },
4360
+ {
4361
+ "name": "url"
4362
+ },
4363
+ {
4364
+ "name": "max-image-width"
4365
+ },
4366
+ {
4367
+ "name": "parallelism"
4368
+ },
4369
+ {
4370
+ "name": "chunk-size"
4371
+ },
4372
+ {
4373
+ "name": "max-image-height"
4374
+ },
4375
+ {
4376
+ "name": "max-size",
4377
+ "description": "Gets or sets the max blob size in bytes."
4378
+ },
4379
+ {
4380
+ "name": "select-mode"
4381
+ },
4382
+ {
4383
+ "name": "uploading",
4384
+ "values": [
4385
+ {
4386
+ "name": "true"
4387
+ },
4388
+ {
4389
+ "name": "false"
4390
+ }
4391
+ ]
4392
+ },
4393
+ {
4394
+ "name": "size"
4395
+ },
4396
+ {
4397
+ "name": "percentage"
4398
+ },
4399
+ {
4400
+ "name": "complete",
4401
+ "values": [
4402
+ {
4403
+ "name": "true"
4404
+ },
4405
+ {
4406
+ "name": "false"
4407
+ }
4408
+ ]
4409
+ },
4410
+ {
4411
+ "name": "failed",
4412
+ "values": [
4413
+ {
4414
+ "name": "true"
4415
+ },
4416
+ {
4417
+ "name": "false"
4418
+ }
4419
+ ]
4420
+ },
4421
+ {
4422
+ "name": "invalid-file",
4423
+ "values": [
4424
+ {
4425
+ "name": "true"
4426
+ },
4427
+ {
4428
+ "name": "false"
4429
+ }
4430
+ ]
4431
+ }
4432
+ ]
4433
+ },
4434
+ {
4435
+ "name": "pacem-vibrate",
4436
+ "description": {
4437
+ "kind": "markdown",
4438
+ "value": "**@pacem/pacem-ui**"
4439
+ },
4440
+ "attributes": [
4441
+ {
4442
+ "name": "pattern"
4443
+ }
4444
+ ]
4445
+ },
4446
+ {
4447
+ "name": "pacem-view",
4448
+ "description": {
4449
+ "kind": "markdown",
4450
+ "value": "**@pacem/pacem-ui**"
4451
+ },
4452
+ "attributes": [
4453
+ {
4454
+ "name": "url"
4455
+ },
4456
+ {
4457
+ "name": "fetching"
4458
+ },
4459
+ {
4460
+ "name": "progress"
4461
+ },
4462
+ {
4463
+ "name": "render-errors",
4464
+ "values": [
4465
+ {
4466
+ "name": "true"
4467
+ },
4468
+ {
4469
+ "name": "false"
4470
+ }
4471
+ ]
4472
+ },
4473
+ {
4474
+ "name": "follow-redirects",
4475
+ "values": [
4476
+ {
4477
+ "name": "true"
4478
+ },
4479
+ {
4480
+ "name": "false"
4481
+ }
4482
+ ]
4483
+ },
4484
+ {
4485
+ "name": "debounce",
4486
+ "description": "use it to ensure animation"
4487
+ }
4488
+ ]
4489
+ },
4490
+ {
4491
+ "name": "pacem-viewport-aware",
4492
+ "description": {
4493
+ "kind": "markdown",
4494
+ "value": "**@pacem/pacem-core**\n\n@deprecated */ class PacemViewportOrchestrator { constructor(private _global: Window) { } viewports: PacemViewportAwareElement[] = []; register(vport: PacemViewportAwareElement) { const vports = this.viewports, win = this._global; if (vports.indexOf(vport) === -1) { vports.push(vport); if (vports.length === 1) { // TODO: check against overflow: 'auto' | 'scroll' elements with constrained heights/widths... win.addEventListener('resize', this._checkHandler, false); win.addEventListener('scroll', this._checkHandler, false); win.addEventListener('transitionend', this._checkHandler, false); win.addEventListener('animationend', this._checkHandler, false); } this._oncheck(); } } unregister(vport: PacemViewportAwareElement) { var ndx: number; const vports = this.viewports, win = this._global; if ((ndx = vports.indexOf(vport)) !== -1) { vports.splice(ndx, 1); if (vports.length === 0) { win.removeEventListener('resize', this._checkHandler, false); win.removeEventListener('scroll', this._checkHandler, false); win.removeEventListener('transitionend', this._checkHandler, false); win.removeEventListener('animationend', this._checkHandler, false); } this._oncheck(); } } private isElementVisible(el: Element, ignoreHorizontal: boolean) { const vportSize = Utils.windowSize; var doc = this._global.document, rect = el.getBoundingClientRect(), vWidth = vportSize.width, vHeight = vportSize.height, efp = function (x, y) { return document.elementFromPoint(x, y) }; return rect.bottom > 0 && rect.top < (0 + vHeight) && (ignoreHorizontal || (rect.left < (vWidth + 0) && rect.right > 0)); } private _checkHandler = (evt: Event) => { this._oncheck(evt); } @Debounce(100) private _oncheck(evt?: Event) { for (var el of this.viewports) { const tget = el.target || el; const newviz = this.isElementVisible(tget, el.ignoreHorizontal); if (newviz !== el.visible) { var visible = el.visible = newviz; if (visible) Utils.addClass(tget, PCSS + '-in-viewport'); else Utils.removeClass(tget, PCSS + '-in-viewport'); } } } } const ORCHESTRATOR = new PacemViewportOrchestrator(window); /** @deprecated"
4495
+ },
4496
+ "attributes": [
4497
+ {
4498
+ "name": "visible",
4499
+ "values": [
4500
+ {
4501
+ "name": "true"
4502
+ },
4503
+ {
4504
+ "name": "false"
4505
+ }
4506
+ ]
4507
+ },
4508
+ {
4509
+ "name": "target"
4510
+ },
4511
+ {
4512
+ "name": "ignore-horizontal",
4513
+ "values": [
4514
+ {
4515
+ "name": "true"
4516
+ },
4517
+ {
4518
+ "name": "false"
4519
+ }
4520
+ ]
4521
+ }
4522
+ ]
4523
+ },
4524
+ {
4525
+ "name": "pacem-webworker-proxy",
4526
+ "description": {
4527
+ "kind": "markdown",
4528
+ "value": "**@pacem/pacem-core**"
4529
+ },
4530
+ "attributes": [
4531
+ {
4532
+ "name": "message"
4533
+ },
4534
+ {
4535
+ "name": "result",
4536
+ "description": "@readonly"
4537
+ },
4538
+ {
4539
+ "name": "src"
4540
+ },
4541
+ {
4542
+ "name": "autosend",
4543
+ "values": [
4544
+ {
4545
+ "name": "true"
4546
+ },
4547
+ {
4548
+ "name": "false"
4549
+ }
4550
+ ]
4551
+ }
4552
+ ]
4553
+ },
4554
+ {
4555
+ "name": "pacem-widget-apimanifest",
4556
+ "description": {
4557
+ "kind": "markdown",
4558
+ "value": "**@pacem/pacem-cms**"
4559
+ },
4560
+ "attributes": [
4561
+ {
4562
+ "name": "url"
4563
+ },
4564
+ {
4565
+ "name": "usecache",
4566
+ "values": [
4567
+ {
4568
+ "name": "true"
4569
+ },
4570
+ {
4571
+ "name": "false"
4572
+ }
4573
+ ]
4574
+ },
4575
+ {
4576
+ "name": "manifest"
4577
+ }
4578
+ ]
4579
+ },
4580
+ {
4581
+ "name": "pacem-widget-clock",
4582
+ "description": {
4583
+ "kind": "markdown",
4584
+ "value": "**@pacem/pacem-cms**"
4585
+ },
4586
+ "attributes": [
4587
+ {
4588
+ "name": "interval"
4589
+ },
4590
+ {
4591
+ "name": "time"
4592
+ }
4593
+ ]
4594
+ },
4595
+ {
4596
+ "name": "pacem-widget-data",
4597
+ "description": {
4598
+ "kind": "markdown",
4599
+ "value": "**@pacem/pacem-cms**"
4600
+ },
4601
+ "attributes": [
4602
+ {
4603
+ "name": "model"
4604
+ }
4605
+ ]
4606
+ },
4607
+ {
4608
+ "name": "pacem-widget-datacolumn",
4609
+ "description": {
4610
+ "kind": "markdown",
4611
+ "value": "**@pacem/pacem-cms**"
4612
+ },
4613
+ "attributes": [
4614
+ {
4615
+ "name": "header"
4616
+ },
4617
+ {
4618
+ "name": "content"
4619
+ },
4620
+ {
4621
+ "name": "content-expression"
4622
+ }
4623
+ ]
4624
+ },
4625
+ {
4626
+ "name": "pacem-widget-datacolumns",
4627
+ "description": {
4628
+ "kind": "markdown",
4629
+ "value": "**@pacem/pacem-cms**"
4630
+ },
4631
+ "attributes": [
4632
+ {
4633
+ "name": "properties"
4634
+ }
4635
+ ]
4636
+ },
4637
+ {
4638
+ "name": "pacem-widget-datagrid",
4639
+ "description": {
4640
+ "kind": "markdown",
4641
+ "value": "**@pacem/pacem-cms**"
4642
+ },
4643
+ "attributes": [
4644
+ {
4645
+ "name": "columns"
4646
+ },
4647
+ {
4648
+ "name": "datasource"
4649
+ },
4650
+ {
4651
+ "name": "datarow-metadata"
4652
+ }
4653
+ ]
4654
+ },
4655
+ {
4656
+ "name": "pacem-widget-fetch",
4657
+ "description": {
4658
+ "kind": "markdown",
4659
+ "value": "**@pacem/pacem-cms**"
4660
+ },
4661
+ "attributes": [
4662
+ {
4663
+ "name": "manifest"
4664
+ },
4665
+ {
4666
+ "name": "endpoint"
4667
+ },
4668
+ {
4669
+ "name": "url"
4670
+ },
4671
+ {
4672
+ "name": "method"
4673
+ },
4674
+ {
4675
+ "name": "fields"
4676
+ },
4677
+ {
4678
+ "name": "parameters"
4679
+ },
4680
+ {
4681
+ "name": "result"
4682
+ },
4683
+ {
4684
+ "name": "fetching",
4685
+ "values": [
4686
+ {
4687
+ "name": "true"
4688
+ },
4689
+ {
4690
+ "name": "false"
4691
+ }
4692
+ ]
4693
+ },
4694
+ {
4695
+ "name": "success",
4696
+ "values": [
4697
+ {
4698
+ "name": "true"
4699
+ },
4700
+ {
4701
+ "name": "false"
4702
+ }
4703
+ ]
4704
+ },
4705
+ {
4706
+ "name": "failure",
4707
+ "values": [
4708
+ {
4709
+ "name": "true"
4710
+ },
4711
+ {
4712
+ "name": "false"
4713
+ }
4714
+ ]
4715
+ }
4716
+ ]
4717
+ },
4718
+ {
4719
+ "name": "pacem-widget-grid",
4720
+ "description": {
4721
+ "kind": "markdown",
4722
+ "value": "**@pacem/pacem-cms**"
4723
+ },
4724
+ "attributes": [
4725
+ {
4726
+ "name": "unit"
4727
+ },
4728
+ {
4729
+ "name": "margin-top"
4730
+ },
4731
+ {
4732
+ "name": "margin-bottom"
4733
+ },
4734
+ {
4735
+ "name": "columns"
4736
+ },
4737
+ {
4738
+ "name": "rows"
4739
+ },
4740
+ {
4741
+ "name": "min-rowheight"
4742
+ },
4743
+ {
4744
+ "name": "rowheight"
4745
+ },
4746
+ {
4747
+ "name": "row-gap"
4748
+ },
4749
+ {
4750
+ "name": "column-gap"
4751
+ }
4752
+ ]
4753
+ },
4754
+ {
4755
+ "name": "pacem-widget-picker",
4756
+ "description": {
4757
+ "kind": "markdown",
4758
+ "value": "**@pacem/pacem-cms**\n\nUI widget container that eases dragdrop-based enrollment into composite widgets."
4759
+ }
4760
+ },
4761
+ {
4762
+ "name": "pacem-widget-text",
4763
+ "description": {
4764
+ "kind": "markdown",
4765
+ "value": "**@pacem/pacem-cms**"
4766
+ },
4767
+ "attributes": [
4768
+ {
4769
+ "name": "text"
4770
+ }
4771
+ ]
4772
+ },
4773
+ {
4774
+ "name": "pacem-widget-toolbar",
4775
+ "description": {
4776
+ "kind": "markdown",
4777
+ "value": "**@pacem/pacem-cms**"
4778
+ },
4779
+ "attributes": [
4780
+ {
4781
+ "name": "target"
4782
+ }
4783
+ ]
4784
+ },
4785
+ {
4786
+ "name": "pacem-widget-translator",
4787
+ "description": {
4788
+ "kind": "markdown",
4789
+ "value": "**@pacem/pacem-cms**"
4790
+ }
4791
+ },
4792
+ {
4793
+ "name": "pacem-window",
4794
+ "description": {
4795
+ "kind": "markdown",
4796
+ "value": "**@pacem/pacem-ui**"
4797
+ },
4798
+ "attributes": [
4799
+ {
4800
+ "name": "caption"
4801
+ },
4802
+ {
4803
+ "name": "minimized",
4804
+ "values": [
4805
+ {
4806
+ "name": "true"
4807
+ },
4808
+ {
4809
+ "name": "false"
4810
+ }
4811
+ ]
4812
+ },
4813
+ {
4814
+ "name": "floating",
4815
+ "values": [
4816
+ {
4817
+ "name": "true"
4818
+ },
4819
+ {
4820
+ "name": "false"
4821
+ }
4822
+ ]
4823
+ }
4824
+ ]
4825
+ },
4826
+ {
4827
+ "name": "pacem-window-area",
4828
+ "description": {
4829
+ "kind": "markdown",
4830
+ "value": "**@pacem/pacem-ui**"
4831
+ }
4832
+ }
4833
+ ]
4834
+ }