leaflet-polydraw 1.3.2 → 2.0.0-alpha.1

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 (39) hide show
  1. package/README.md +1 -1
  2. package/dist/icons/icon-grip-vertical.svg +8 -0
  3. package/dist/icons/icon-layer-toggle.svg +6 -0
  4. package/dist/leaflet-polydraw.css +1 -1
  5. package/dist/polydraw.es.js +4597 -10003
  6. package/dist/polydraw.es.js.map +1 -1
  7. package/dist/polydraw.umd.min.js +1 -1
  8. package/dist/polydraw.umd.min.js.map +1 -1
  9. package/dist/styles/polydraw.css +357 -0
  10. package/dist/types/buttons.d.ts.map +1 -1
  11. package/dist/types/config.d.ts.map +1 -1
  12. package/dist/types/coordinate-utils.d.ts.map +1 -1
  13. package/dist/types/guards/config-deprecation-guard.d.ts +3 -0
  14. package/dist/types/guards/config-deprecation-guard.d.ts.map +1 -0
  15. package/dist/types/guards/config-runtime-fallback-guard.d.ts +3 -0
  16. package/dist/types/guards/config-runtime-fallback-guard.d.ts.map +1 -0
  17. package/dist/types/managers/event-manager.d.ts +45 -0
  18. package/dist/types/managers/event-manager.d.ts.map +1 -1
  19. package/dist/types/managers/history-manager.d.ts +16 -3
  20. package/dist/types/managers/history-manager.d.ts.map +1 -1
  21. package/dist/types/managers/layer-manager.d.ts +79 -0
  22. package/dist/types/managers/layer-manager.d.ts.map +1 -0
  23. package/dist/types/managers/polygon-draw-manager.d.ts +1 -0
  24. package/dist/types/managers/polygon-draw-manager.d.ts.map +1 -1
  25. package/dist/types/managers/polygon-interaction-manager.d.ts +27 -0
  26. package/dist/types/managers/polygon-interaction-manager.d.ts.map +1 -1
  27. package/dist/types/managers/polygon-mutation-manager.d.ts +33 -2
  28. package/dist/types/managers/polygon-mutation-manager.d.ts.map +1 -1
  29. package/dist/types/polydraw.d.ts +157 -7
  30. package/dist/types/polydraw.d.ts.map +1 -1
  31. package/dist/types/transform/transform-overlay.d.ts +2 -0
  32. package/dist/types/transform/transform-overlay.d.ts.map +1 -1
  33. package/dist/types/turf-helper.d.ts +5 -6
  34. package/dist/types/turf-helper.d.ts.map +1 -1
  35. package/dist/types/types/polydraw-interfaces.d.ts +224 -111
  36. package/dist/types/types/polydraw-interfaces.d.ts.map +1 -1
  37. package/dist/types/ui/layer-panel.d.ts +13 -0
  38. package/dist/types/ui/layer-panel.d.ts.map +1 -0
  39. package/package.json +11 -5
@@ -506,6 +506,77 @@ body {
506
506
  user-select: none;
507
507
  }
508
508
 
509
+ /* Custom tooltips for Polydraw toolbar buttons */
510
+ .leaflet-control.leaflet-bar a[data-tooltip] {
511
+ position: relative;
512
+ }
513
+
514
+ .leaflet-control.leaflet-bar a[data-tooltip]::after,
515
+ .leaflet-control.leaflet-bar a[data-tooltip]::before {
516
+ opacity: 0;
517
+ visibility: hidden;
518
+ pointer-events: none;
519
+ position: absolute;
520
+ top: 50%;
521
+ transform: translateY(-50%);
522
+ transition:
523
+ opacity 0.12s ease,
524
+ transform 0.12s ease;
525
+ transition-delay: 0s;
526
+ z-index: 2000;
527
+ }
528
+
529
+ .leaflet-control.leaflet-bar a[data-tooltip]::after {
530
+ content: attr(data-tooltip);
531
+ background: var(--polydraw-tooltip-bg, #645d5d);
532
+ color: var(--polydraw-tooltip-color, #ffffff);
533
+ padding: 4px 8px;
534
+ border-radius: 4px;
535
+ font-size: 12px;
536
+ line-height: 1.2;
537
+ white-space: nowrap;
538
+ }
539
+
540
+ .leaflet-control.leaflet-bar a[data-tooltip]::before {
541
+ content: '';
542
+ border-top: 6px solid transparent;
543
+ border-bottom: 6px solid transparent;
544
+ }
545
+
546
+ .leaflet-control.leaflet-bar[data-tooltip-direction='left'] a[data-tooltip]::after,
547
+ .leaflet-control.leaflet-bar:not([data-tooltip-direction]) a[data-tooltip]::after {
548
+ right: calc(100% + 10px);
549
+ }
550
+
551
+ .leaflet-control.leaflet-bar[data-tooltip-direction='left'] a[data-tooltip]::before,
552
+ .leaflet-control.leaflet-bar:not([data-tooltip-direction]) a[data-tooltip]::before {
553
+ right: calc(100% + 4px);
554
+ border-left: 6px solid var(--polydraw-tooltip-bg, #645d5d);
555
+ }
556
+
557
+ .leaflet-control.leaflet-bar[data-tooltip-direction='right'] a[data-tooltip]::after {
558
+ left: calc(100% + 10px);
559
+ }
560
+
561
+ .leaflet-control.leaflet-bar[data-tooltip-direction='right'] a[data-tooltip]::before {
562
+ left: calc(100% + 4px);
563
+ border-right: 6px solid var(--polydraw-tooltip-bg, #645d5d);
564
+ }
565
+
566
+ .leaflet-control.leaflet-bar a[data-tooltip]:hover::after,
567
+ .leaflet-control.leaflet-bar a[data-tooltip]:hover::before,
568
+ .leaflet-control.leaflet-bar a[data-tooltip]:focus-visible::after,
569
+ .leaflet-control.leaflet-bar a[data-tooltip]:focus-visible::before {
570
+ opacity: 1;
571
+ visibility: visible;
572
+ transition-delay: var(--polydraw-tooltip-delay, 500ms);
573
+ }
574
+
575
+ .leaflet-control.leaflet-bar[data-tooltip-enabled='false'] a[data-tooltip]::after,
576
+ .leaflet-control.leaflet-bar[data-tooltip-enabled='false'] a[data-tooltip]::before {
577
+ display: none;
578
+ }
579
+
509
580
  /* Firefox-specific fixes for touch event handling */
510
581
  @-moz-document url-prefix() {
511
582
  .leaflet-control.leaflet-bar {
@@ -546,3 +617,289 @@ body {
546
617
  justify-content: center;
547
618
  }
548
619
  }
620
+
621
+ /* Layer panel styles */
622
+ .polydraw-layer-panel {
623
+ width: 206px;
624
+ min-width: 206px;
625
+ max-width: 206px;
626
+ z-index: 900 !important;
627
+ background: #fff;
628
+ border: 1px solid #ccc;
629
+ border-radius: 8px;
630
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
631
+ padding: 0;
632
+ font-family:
633
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
634
+ font-size: 12px;
635
+ line-height: 1.2;
636
+ color: #333;
637
+ pointer-events: auto;
638
+ overflow: hidden;
639
+ }
640
+
641
+ .leaflet-top.leaflet-right .polydraw-layer-panel.leaflet-control {
642
+ clear: none;
643
+ margin-right: 4px;
644
+ }
645
+
646
+ .polydraw-layer-header {
647
+ height: 30px;
648
+ box-sizing: border-box;
649
+ display: flex;
650
+ align-items: center;
651
+ border-bottom: 1px solid #e0e0e0;
652
+ background: #fff;
653
+ padding-left: 6px;
654
+ }
655
+
656
+ .polydraw-layer-header-title {
657
+ font-size: 11px;
658
+ font-weight: 600;
659
+ letter-spacing: 0.02em;
660
+ color: #444;
661
+ }
662
+
663
+ .polydraw-layer-header-count {
664
+ min-width: 16px;
665
+ height: 16px;
666
+ margin-left: 6px;
667
+ padding: 0 4px;
668
+ border-radius: 999px;
669
+ border: 1px solid #d7d7d7;
670
+ color: #666;
671
+ font-size: 10px;
672
+ display: inline-flex;
673
+ align-items: center;
674
+ justify-content: center;
675
+ }
676
+
677
+ .polydraw-layer-header-toggle {
678
+ margin-left: auto;
679
+ width: 30px;
680
+ height: 30px;
681
+ border: none;
682
+ background: transparent;
683
+ border-radius: 0;
684
+ cursor: pointer;
685
+ color: #333;
686
+ display: inline-flex;
687
+ align-items: center;
688
+ justify-content: center;
689
+ }
690
+
691
+ .polydraw-layer-header-toggle:hover {
692
+ background: #f0f0f0;
693
+ }
694
+
695
+ .polydraw-layer-header-toggle:focus-visible {
696
+ outline: none;
697
+ box-shadow: inset 0 0 0 2px rgba(33, 150, 243, 0.35);
698
+ }
699
+
700
+ .polydraw-layer-header-toggle svg {
701
+ width: 24px;
702
+ height: 24px;
703
+ fill: none;
704
+ stroke: currentColor;
705
+ transition: transform 0.18s ease;
706
+ }
707
+
708
+ .polydraw-layer-header-toggle.is-collapsed svg {
709
+ transform: rotate(180deg);
710
+ }
711
+
712
+ .polydraw-layer-panel-collapsed {
713
+ width: 30px;
714
+ min-width: 30px;
715
+ max-width: 30px;
716
+ }
717
+
718
+ .polydraw-layer-panel-collapsed .polydraw-layer-header {
719
+ border-bottom: none;
720
+ padding-left: 0;
721
+ }
722
+
723
+ .polydraw-layer-panel-collapsed .polydraw-layer-header-title,
724
+ .polydraw-layer-panel-collapsed .polydraw-layer-header-count {
725
+ display: none;
726
+ }
727
+
728
+ .polydraw-layer-row {
729
+ display: flex;
730
+ align-items: center;
731
+ gap: 4px;
732
+ height: 30px;
733
+ min-height: 30px;
734
+ padding: 0 4px;
735
+ background: #fff;
736
+ border-bottom: 1px solid #e0e0e0;
737
+ transition: background 0.2s;
738
+ user-select: none;
739
+ outline: none;
740
+ }
741
+
742
+ .polydraw-layer-row:hover {
743
+ background: #f9f9f9;
744
+ }
745
+
746
+ .polydraw-layer-row[draggable='true'] {
747
+ cursor: move;
748
+ }
749
+
750
+ .polydraw-layer-row[draggable='false'] {
751
+ cursor: pointer;
752
+ }
753
+
754
+ .polydraw-layer-row:focus-visible {
755
+ box-shadow: inset 0 0 0 2px rgba(33, 150, 243, 0.35);
756
+ }
757
+
758
+ .polydraw-layer-row-active {
759
+ background: #eef5ff;
760
+ }
761
+
762
+ .polydraw-layer-row-active:hover {
763
+ background: #e6f0ff;
764
+ }
765
+
766
+ .polydraw-layer-row-dragging {
767
+ opacity: 0.5;
768
+ }
769
+
770
+ .polydraw-layer-row-drag-over {
771
+ border-top: 2px solid #2196f3;
772
+ }
773
+
774
+ .polydraw-layer-grip {
775
+ width: 18px;
776
+ height: 18px;
777
+ padding: 2px;
778
+ display: inline-flex;
779
+ align-items: center;
780
+ justify-content: center;
781
+ border-radius: 4px;
782
+ cursor: grab;
783
+ transition: background 0.2s;
784
+ }
785
+
786
+ .polydraw-layer-grip:hover {
787
+ background: #e0e0e0;
788
+ }
789
+
790
+ .polydraw-layer-grip svg {
791
+ width: 12px;
792
+ height: 12px;
793
+ fill: none;
794
+ stroke: #666;
795
+ stroke-width: 2;
796
+ stroke-linecap: round;
797
+ stroke-linejoin: round;
798
+ }
799
+
800
+ .polydraw-layer-grip-spacer {
801
+ width: 18px;
802
+ height: 18px;
803
+ padding: 2px;
804
+ display: inline-flex;
805
+ align-items: center;
806
+ justify-content: center;
807
+ flex-shrink: 0;
808
+ }
809
+
810
+ .polydraw-layer-color-indicator {
811
+ width: 12px;
812
+ height: 12px;
813
+ border-radius: 50%;
814
+ border: 1px solid #ccc;
815
+ flex-shrink: 0;
816
+ }
817
+
818
+ .polydraw-layer-name {
819
+ flex: 1;
820
+ overflow: hidden;
821
+ text-overflow: ellipsis;
822
+ white-space: nowrap;
823
+ color: #333;
824
+ font-size: 11.5px;
825
+ }
826
+
827
+ .polydraw-layer-btn {
828
+ width: 30px;
829
+ height: 30px;
830
+ background: transparent;
831
+ border: none;
832
+ padding: 0;
833
+ cursor: pointer;
834
+ display: flex;
835
+ align-items: center;
836
+ justify-content: center;
837
+ border-radius: 4px;
838
+ flex-shrink: 0;
839
+ transition: background 0.2s;
840
+ }
841
+
842
+ .polydraw-layer-btn svg {
843
+ width: 24px;
844
+ height: 24px;
845
+ }
846
+
847
+ .polydraw-layer-visibility {
848
+ color: #333;
849
+ }
850
+
851
+ .polydraw-layer-visibility svg {
852
+ width: 20px;
853
+ height: 20px;
854
+ }
855
+
856
+ .polydraw-layer-btn:hover {
857
+ background: #e0e0e0;
858
+ }
859
+
860
+ .polydraw-layer-delete {
861
+ border: none !important;
862
+ box-shadow: none !important;
863
+ }
864
+
865
+ .polydraw-layer-btn:focus-visible {
866
+ outline: none;
867
+ box-shadow: 0 0 0 2px rgba(33, 150, 243, 0.35);
868
+ }
869
+
870
+ .polydraw-layer-btn-spacer {
871
+ width: 30px;
872
+ height: 30px;
873
+ flex-shrink: 0;
874
+ }
875
+
876
+ .polydraw-layer-visibility-hidden {
877
+ color: #999;
878
+ }
879
+
880
+ .polydraw-layer-hidden .polydraw-layer-name {
881
+ opacity: 0.65;
882
+ }
883
+
884
+ @media (max-width: 768px) {
885
+ .polydraw-layer-panel {
886
+ width: 196px;
887
+ min-width: 196px;
888
+ max-width: 196px;
889
+ }
890
+
891
+ .polydraw-layer-row {
892
+ height: 30px;
893
+ min-height: 30px;
894
+ padding: 0 4px;
895
+ }
896
+
897
+ .polydraw-layer-name {
898
+ font-size: 11.5px;
899
+ }
900
+
901
+ .polydraw-layer-btn {
902
+ width: 30px;
903
+ height: 30px;
904
+ }
905
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../src/buttons.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAa7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAmBjE;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,WAAW,EACtB,YAAY,EAAE,WAAW,EACzB,MAAM,EAAE,cAAc,EACtB,gBAAgB,EAAE,MAAM,IAAI,EAC5B,WAAW,EAAE,MAAM,IAAI,EACvB,eAAe,EAAE,MAAM,IAAI,EAC3B,YAAY,EAAE,MAAM,IAAI,EACxB,YAAY,EAAE,MAAM,IAAI,EACxB,mBAAmB,EAAE,MAAM,IAAI,EAC/B,2BAA2B,EAAE,MAAM,IAAI,EACvC,WAAW,EAAE,MAAM,IAAI,EACvB,WAAW,EAAE,MAAM,IAAI,EACvB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,QAwK/B"}
1
+ {"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../src/buttons.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAa7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAwBjE;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,WAAW,EACtB,YAAY,EAAE,WAAW,EACzB,MAAM,EAAE,cAAc,EACtB,gBAAgB,EAAE,MAAM,IAAI,EAC5B,WAAW,EAAE,MAAM,IAAI,EACvB,eAAe,EAAE,MAAM,IAAI,EAC3B,YAAY,EAAE,MAAM,IAAI,EACxB,YAAY,EAAE,MAAM,IAAI,EACxB,mBAAmB,EAAE,MAAM,IAAI,EAC/B,2BAA2B,EAAE,MAAM,IAAI,EACvC,WAAW,EAAE,MAAM,IAAI,EACvB,WAAW,EAAE,MAAM,IAAI,EACvB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,QAwK/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,eAAO,MAAM,aAAa,EAAE,cAqR3B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,eAAO,MAAM,aAAa,EAAE,cAqP3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"coordinate-utils.d.ts","sourceRoot":"","sources":["../../src/coordinate-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE,EAAE,EAAE;IAiD1F;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAC7B,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,EAAE,EAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,CAAC,CAAC,aAAa,EAAE,EAAE;IAItB;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,GAAG,MAAM;IAI3D;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM;IA8IrD;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE;CAKvE"}
1
+ {"version":3,"file":"coordinate-utils.d.ts","sourceRoot":"","sources":["../../src/coordinate-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE,EAAE,EAAE;IAiD1F;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAC7B,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,EAAE,EAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,CAAC,CAAC,aAAa,EAAE,EAAE;IAItB;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,GAAG,MAAM;IAI3D;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM;IAuJrD;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE;CAKvE"}
@@ -0,0 +1,3 @@
1
+ import type { PolydrawConfig } from '../types/polydraw-interfaces';
2
+ export declare function warnIfUsingDeprecatedConfiguration(config: Partial<PolydrawConfig>): void;
3
+ //# sourceMappingURL=config-deprecation-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-deprecation-guard.d.ts","sourceRoot":"","sources":["../../../src/guards/config-deprecation-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAoBnE,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAiYxF"}
@@ -0,0 +1,3 @@
1
+ import type { PolydrawConfig } from '../types/polydraw-interfaces';
2
+ export declare function applyRuntimeConfigFallbacks(config: PolydrawConfig): void;
3
+ //# sourceMappingURL=config-runtime-fallback-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-runtime-fallback-guard.d.ts","sourceRoot":"","sources":["../../../src/guards/config-runtime-fallback-guard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AA8BnE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAgBxE"}
@@ -50,6 +50,19 @@ export type PolydrawEventPayloads = {
50
50
  operation?: string;
51
51
  allowMerge?: boolean;
52
52
  optimizationLevel?: number;
53
+ originalOptimizationLevel?: number;
54
+ featureId?: string;
55
+ featureMetadata?: Record<string, unknown>;
56
+ sourceFeatureIds?: string[];
57
+ featureInteractionOverride?: 'editable' | 'readonly' | 'static';
58
+ featureStyleOverrides?: {
59
+ color?: string;
60
+ fillColor?: string;
61
+ fillOpacity?: number;
62
+ weight?: number;
63
+ };
64
+ featureCreatedAt?: string;
65
+ featureLastModified?: string;
53
66
  };
54
67
  'polydraw:polygon:deleted': undefined;
55
68
  'polydraw:mode:change': {
@@ -82,6 +95,38 @@ export type PolydrawEventPayloads = {
82
95
  canUndo: boolean;
83
96
  canRedo: boolean;
84
97
  };
98
+ 'polydraw:layer:created': {
99
+ layerId: string;
100
+ color: string;
101
+ };
102
+ 'polydraw:layer:deleted': {
103
+ layerId: string;
104
+ removedFeatureGroups: FeatureGroup[];
105
+ };
106
+ 'polydraw:layer:activated': {
107
+ layerId: string;
108
+ previousLayerId: string;
109
+ };
110
+ 'polydraw:layer:visibility': {
111
+ layerId: string;
112
+ visible: boolean;
113
+ };
114
+ 'polydraw:layer:colorChanged': {
115
+ layerId: string;
116
+ color: string;
117
+ };
118
+ 'polydraw:layer:delete-requested': {
119
+ layerId: string;
120
+ };
121
+ 'polydraw:layer:reorder-requested': {
122
+ layerId: string;
123
+ targetLayerId: string;
124
+ };
125
+ 'polydraw:layer:reordered': {
126
+ layerId: string;
127
+ targetLayerId: string;
128
+ orderedLayerIds: string[];
129
+ };
85
130
  };
86
131
  export type PolydrawEvent = keyof PolydrawEventPayloads;
87
132
  export type PolydrawEventCallback<T extends PolydrawEvent = PolydrawEvent> = (data: PolydrawEventPayloads[T]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"event-manager.d.ts","sourceRoot":"","sources":["../../../src/managers/event-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-manager.d.ts","sourceRoot":"","sources":["../../../src/managers/event-manager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { Feature, Polygon, MultiPolygon } from 'geojson';
2
2
  import type { EventManager } from './event-manager';
3
+ import type { FeatureMetadataSnapshotEntry, LayerSnapshot } from '../types/polydraw-interfaces';
4
+ import type { LayerManager } from './layer-manager';
3
5
  import * as L from 'leaflet';
4
6
  /**
5
7
  * Represents a snapshot of the entire drawing state
@@ -21,6 +23,14 @@ export interface HistorySnapshot {
21
23
  * Approximate serialized size in bytes at save time.
22
24
  */
23
25
  size?: number;
26
+ /**
27
+ * Optional layer snapshot for restoring layer assignments
28
+ */
29
+ layerSnapshot?: LayerSnapshot;
30
+ /**
31
+ * Optional per-feature metadata snapshot aligned with `features` order.
32
+ */
33
+ featureMetadataSnapshot?: FeatureMetadataSnapshotEntry[];
24
34
  }
25
35
  /**
26
36
  * HistoryManager handles undo/redo functionality for polygon operations.
@@ -36,12 +46,14 @@ export declare class HistoryManager {
36
46
  private eventManager;
37
47
  private isRestoring;
38
48
  constructor(eventManager: EventManager, maxHistorySize?: number);
49
+ setMaxHistorySize(maxHistorySize: number): void;
39
50
  /**
40
51
  * Save the current state to the undo stack
41
52
  * @param featureGroups - Array of Leaflet feature groups to save
42
53
  * @param action - Optional description of the action
54
+ * @param layerManager - Optional layer manager for capturing layer state
43
55
  */
44
- saveState(featureGroups: L.FeatureGroup[], action?: string): void;
56
+ saveState(featureGroups: L.FeatureGroup[], action?: string, layerManager?: LayerManager): void;
45
57
  /**
46
58
  * Calculate the approximate size of a snapshot in bytes
47
59
  */
@@ -59,13 +71,13 @@ export declare class HistoryManager {
59
71
  * @param featureGroups - Current array of feature groups
60
72
  * @returns The snapshot to restore, or null if undo stack is empty
61
73
  */
62
- undo(featureGroups: L.FeatureGroup[]): HistorySnapshot | null;
74
+ undo(featureGroups: L.FeatureGroup[], layerManager?: LayerManager): HistorySnapshot | null;
63
75
  /**
64
76
  * Redo the last undone action
65
77
  * @param featureGroups - Current array of feature groups
66
78
  * @returns The snapshot to restore, or null if redo stack is empty
67
79
  */
68
- redo(featureGroups: L.FeatureGroup[]): HistorySnapshot | null;
80
+ redo(featureGroups: L.FeatureGroup[], layerManager?: LayerManager): HistorySnapshot | null;
69
81
  /**
70
82
  * Check if undo is available
71
83
  */
@@ -86,6 +98,7 @@ export declare class HistoryManager {
86
98
  * Create a snapshot from feature groups
87
99
  */
88
100
  private createSnapshot;
101
+ private captureFeatureMetadataSnapshot;
89
102
  private getSnapshotSize;
90
103
  }
91
104
  //# sourceMappingURL=history-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"history-manager.d.ts","sourceRoot":"","sources":["../../../src/managers/history-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC;IAE5C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,YAAY,EAAE,YAAY,EAAE,cAAc,GAAE,MAAW;IAKnE;;;;OAIG;IACH,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAmCjE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;;OAIG;IACH,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,eAAe,GAAG,IAAI;IAgC7D;;;;OAIG;IACH,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,eAAe,GAAG,IAAI;IAmC7D;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAIxC;;OAEG;IACH,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,eAAe;CAQxB"}
1
+ {"version":3,"file":"history-manager.d.ts","sourceRoot":"","sources":["../../../src/managers/history-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EACV,4BAA4B,EAC5B,aAAa,EAGd,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC;IAE5C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,uBAAuB,CAAC,EAAE,4BAA4B,EAAE,CAAC;CAC1D;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,YAAY,EAAE,YAAY,EAAE,cAAc,GAAE,MAAW;IAKnE,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAS/C;;;;;OAKG;IACH,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;IAmC9F;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;;OAIG;IACH,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI;IAgC1F;;;;OAIG;IACH,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI;IAmC1F;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAIxC;;OAEG;IACH,OAAO,CAAC,cAAc;IAiDtB,OAAO,CAAC,8BAA8B;IAgDtC,OAAO,CAAC,eAAe;CAQxB"}
@@ -0,0 +1,79 @@
1
+ import * as L from 'leaflet';
2
+ import type { EventManager } from './event-manager';
3
+ import type { LayerSnapshot, LayerInteraction, LayerPanelVisibility } from '../types/polydraw-interfaces';
4
+ export interface LayerState {
5
+ id: string;
6
+ label?: string;
7
+ color: string;
8
+ visible: boolean;
9
+ interaction: LayerInteraction;
10
+ panel: LayerPanelVisibility;
11
+ metadata: Record<string, unknown>;
12
+ featureGroups: L.FeatureGroup[];
13
+ }
14
+ export interface LayerCreateOptions {
15
+ label?: string;
16
+ color?: string;
17
+ visible?: boolean;
18
+ interaction?: LayerInteraction;
19
+ panel?: LayerPanelVisibility;
20
+ metadata?: Record<string, unknown>;
21
+ }
22
+ export type SetActiveLayerResult = 'activated' | 'already-active' | 'not-found' | 'not-visible';
23
+ /**
24
+ * Manages polygon layers and feature-group assignments.
25
+ * Keeps a default layer and supports active-layer scoping for interactions.
26
+ */
27
+ export declare class LayerManager {
28
+ private readonly eventManager;
29
+ private layers;
30
+ private featureGroupToLayer;
31
+ private activeLayerId;
32
+ private defaultColor;
33
+ constructor(eventManager: EventManager, defaultColor: string);
34
+ getLayerCount(): number;
35
+ getAllLayers(): LayerState[];
36
+ getPanelLayers(): LayerState[];
37
+ getPanelLayerCount(): number;
38
+ getLayer(layerId: string): LayerState | undefined;
39
+ getActiveLayerId(): string;
40
+ getActiveLayer(): LayerState | undefined;
41
+ getOrCreateLayer(layerId: string, colorOrOptions?: string | LayerCreateOptions): LayerState;
42
+ setActiveLayer(layerId: string): boolean;
43
+ setActiveLayerWithResult(layerId: string): SetActiveLayerResult;
44
+ setLayerVisibility(layerId: string, visible: boolean): boolean;
45
+ setLayerColor(layerId: string, color: string): boolean;
46
+ setLayerLabel(layerId: string, label?: string): boolean;
47
+ setLayerInteraction(layerId: string, interaction: LayerInteraction): boolean;
48
+ setLayerPanelVisibility(layerId: string, panel: LayerPanelVisibility): boolean;
49
+ setLayerMetadata(layerId: string, metadata?: Record<string, unknown>): boolean;
50
+ isLayerEditable(layerId: string): boolean;
51
+ isFeatureGroupEditable(featureGroup: L.FeatureGroup): boolean;
52
+ /**
53
+ * Reorder layers by moving layerId to the drop index of targetLayerId.
54
+ * This mirrors list drag/drop behavior used in the layer panel.
55
+ */
56
+ moveLayer(layerId: string, targetLayerId: string): boolean;
57
+ assignFeatureGroupToLayer(featureGroup: L.FeatureGroup, layerId: string): boolean;
58
+ removeFeatureGroupFromLayer(featureGroup: L.FeatureGroup): void;
59
+ getLayerForFeatureGroup(featureGroup: L.FeatureGroup): string | undefined;
60
+ getFeatureGroupsForLayer(layerId: string): L.FeatureGroup[];
61
+ isInActiveLayer(featureGroup: L.FeatureGroup): boolean;
62
+ deleteLayer(layerId: string): L.FeatureGroup[];
63
+ clear(defaultColor?: string): void;
64
+ captureLayerSnapshot(featureGroups: L.FeatureGroup[]): LayerSnapshot;
65
+ restoreFromLayerSnapshot(snapshot: LayerSnapshot, featureGroups: L.FeatureGroup[]): void;
66
+ private ensureDefaultLayer;
67
+ private getFirstVisibleLayerId;
68
+ private normalizeLayerId;
69
+ private cloneLayerState;
70
+ private normalizeInteraction;
71
+ private normalizePanel;
72
+ private cloneMetadata;
73
+ /**
74
+ * Normalize hex colors to "#rrggbb".
75
+ * Accepts "f00", "#f00", "ff0000", "#ff0000". Returns fallback when invalid.
76
+ */
77
+ static normalizeColor(input: string, fallback?: string): string;
78
+ }
79
+ //# sourceMappingURL=layer-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer-manager.d.ts","sourceRoot":"","sources":["../../../src/managers/layer-manager.ts"],"names":[],"mappings":"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"}
@@ -121,5 +121,6 @@ export declare class PolygonDrawManager {
121
121
  * Handle marker hover for edge deletion feedback
122
122
  */
123
123
  private onMarkerHoverForEdgeDeletion;
124
+ private detachMarkerModifierHandler;
124
125
  }
125
126
  //# sourceMappingURL=polygon-draw-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"polygon-draw-manager.d.ts","sourceRoot":"","sources":["../../../src/managers/polygon-draw-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAa;IAG3B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,sBAAsB,CAA+C;gBAEjE,YAAY,EAAE,8BAA8B;IAUxD;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAI;IAcxD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAyDhF;;OAEG;IACH;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAI5C,OAAO,CAAC,4BAA4B;IAapC;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI;IAuIpD;;OAEG;IACH,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,GAAG,IAAI;IAoB/C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAgBxC;;OAEG;IACH,2BAA2B,IAAI,IAAI;IAoEnC;;OAEG;IACH,yBAAyB,IAAI,IAAI;IASjC;;OAEG;IACH,eAAe,IAAI,IAAI;IAMvB;;OAEG;IACH,WAAW,IAAI,IAAI;IAYnB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,aAAa,IAAI,CAAC,CAAC,MAAM,EAAE;IAK3B;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAM/B;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAM9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyDxB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAqBnC;;OAEG;IACI,qBAAqB,IAAI,IAAI;IAKpC;;OAEG;IACH,OAAO,CAAC,4BAA4B;CAiDrC"}
1
+ {"version":3,"file":"polygon-draw-manager.d.ts","sourceRoot":"","sources":["../../../src/managers/polygon-draw-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAa;IAG3B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,sBAAsB,CAA+C;gBAEjE,YAAY,EAAE,8BAA8B;IAUxD;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAI;IAcxD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAyDhF;;OAEG;IACH;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAI5C,OAAO,CAAC,4BAA4B;IAapC;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI;IA+IpD;;OAEG;IACH,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,GAAG,IAAI;IAoB/C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAgBxC;;OAEG;IACH,2BAA2B,IAAI,IAAI;IAoEnC;;OAEG;IACH,yBAAyB,IAAI,IAAI;IASjC;;OAEG;IACH,eAAe,IAAI,IAAI;IAavB;;OAEG;IACH,WAAW,IAAI,IAAI;IAYnB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,aAAa,IAAI,CAAC,CAAC,MAAM,EAAE;IAK3B;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAM/B;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAM9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyDxB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAqBnC;;OAEG;IACI,qBAAqB,IAAI,IAAI;IAKpC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA8CpC,OAAO,CAAC,2BAA2B;CAepC"}