@mcp-b/geo-support 0.2.0

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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/dist/base/geo-map-element.d.ts +60 -0
  3. package/dist/base/geo-map-element.d.ts.map +1 -0
  4. package/dist/base/geo-map-element.js +100 -0
  5. package/dist/base/geo-map-element.js.map +1 -0
  6. package/dist/classification/algorithms.d.ts +26 -0
  7. package/dist/classification/algorithms.d.ts.map +1 -0
  8. package/dist/classification/algorithms.js +101 -0
  9. package/dist/classification/algorithms.js.map +1 -0
  10. package/dist/classification/channel.d.ts +16 -0
  11. package/dist/classification/channel.d.ts.map +1 -0
  12. package/dist/classification/channel.js +18 -0
  13. package/dist/classification/channel.js.map +1 -0
  14. package/dist/classification/classify-style.d.ts +25 -0
  15. package/dist/classification/classify-style.d.ts.map +1 -0
  16. package/dist/classification/classify-style.js +70 -0
  17. package/dist/classification/classify-style.js.map +1 -0
  18. package/dist/classification/color-schemes.d.ts +18 -0
  19. package/dist/classification/color-schemes.d.ts.map +1 -0
  20. package/dist/classification/color-schemes.js +193 -0
  21. package/dist/classification/color-schemes.js.map +1 -0
  22. package/dist/classification/index.d.ts +5 -0
  23. package/dist/classification/index.d.ts.map +1 -0
  24. package/dist/classification/index.js +5 -0
  25. package/dist/classification/index.js.map +1 -0
  26. package/dist/components/classify-panel/classify-panel.d.ts +70 -0
  27. package/dist/components/classify-panel/classify-panel.d.ts.map +1 -0
  28. package/dist/components/classify-panel/classify-panel.js +273 -0
  29. package/dist/components/classify-panel/classify-panel.js.map +1 -0
  30. package/dist/components/classify-panel/classify-panel.styles.d.ts +3 -0
  31. package/dist/components/classify-panel/classify-panel.styles.d.ts.map +1 -0
  32. package/dist/components/classify-panel/classify-panel.styles.js +96 -0
  33. package/dist/components/classify-panel/classify-panel.styles.js.map +1 -0
  34. package/dist/components/legend/legend.d.ts +49 -0
  35. package/dist/components/legend/legend.d.ts.map +1 -0
  36. package/dist/components/legend/legend.js +129 -0
  37. package/dist/components/legend/legend.js.map +1 -0
  38. package/dist/components/legend/legend.styles.d.ts +3 -0
  39. package/dist/components/legend/legend.styles.d.ts.map +1 -0
  40. package/dist/components/legend/legend.styles.js +76 -0
  41. package/dist/components/legend/legend.styles.js.map +1 -0
  42. package/dist/docs/custom-elements.json +1796 -0
  43. package/dist/events/classify.d.ts +23 -0
  44. package/dist/events/classify.d.ts.map +1 -0
  45. package/dist/events/classify.js +12 -0
  46. package/dist/events/classify.js.map +1 -0
  47. package/dist/events/feature.d.ts +21 -0
  48. package/dist/events/feature.d.ts.map +1 -0
  49. package/dist/events/feature.js +17 -0
  50. package/dist/events/feature.js.map +1 -0
  51. package/dist/events/index.d.ts +5 -0
  52. package/dist/events/index.d.ts.map +1 -0
  53. package/dist/events/index.js +5 -0
  54. package/dist/events/index.js.map +1 -0
  55. package/dist/events/layer.d.ts +17 -0
  56. package/dist/events/layer.d.ts.map +1 -0
  57. package/dist/events/layer.js +15 -0
  58. package/dist/events/layer.js.map +1 -0
  59. package/dist/events/map.d.ts +42 -0
  60. package/dist/events/map.d.ts.map +1 -0
  61. package/dist/events/map.js +43 -0
  62. package/dist/events/map.js.map +1 -0
  63. package/dist/index.d.ts +7 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +7 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/styles/map-host.styles.d.ts +4 -0
  68. package/dist/styles/map-host.styles.d.ts.map +1 -0
  69. package/dist/styles/map-host.styles.js +17 -0
  70. package/dist/styles/map-host.styles.js.map +1 -0
  71. package/dist/types/coordinates.d.ts +13 -0
  72. package/dist/types/coordinates.d.ts.map +1 -0
  73. package/dist/types/coordinates.js +2 -0
  74. package/dist/types/coordinates.js.map +1 -0
  75. package/dist/types/geojson.d.ts +18 -0
  76. package/dist/types/geojson.d.ts.map +1 -0
  77. package/dist/types/geojson.js +3 -0
  78. package/dist/types/geojson.js.map +1 -0
  79. package/dist/types/index.d.ts +5 -0
  80. package/dist/types/index.d.ts.map +1 -0
  81. package/dist/types/index.js +5 -0
  82. package/dist/types/index.js.map +1 -0
  83. package/dist/types/map.d.ts +17 -0
  84. package/dist/types/map.d.ts.map +1 -0
  85. package/dist/types/map.js +2 -0
  86. package/dist/types/map.js.map +1 -0
  87. package/dist/types/style.d.ts +48 -0
  88. package/dist/types/style.d.ts.map +1 -0
  89. package/dist/types/style.js +2 -0
  90. package/dist/types/style.js.map +1 -0
  91. package/package.json +103 -0
@@ -0,0 +1,96 @@
1
+ import { css } from "lit";
2
+ export default css `
3
+ :host {
4
+ display: block;
5
+ font-family: var(--sigvelo-font-sans, sans-serif);
6
+ font-size: var(--sigvelo-control-text-sm, 0.8125rem);
7
+ color: var(--sigvelo-color-text, #1a1a1a);
8
+ }
9
+
10
+ .panel {
11
+ background: var(--sigvelo-color-surface, #fff);
12
+ border: 1px solid var(--sigvelo-color-neutral-border-muted, #ddd);
13
+ border-radius: var(--sigvelo-radius-md, 6px);
14
+ padding: 0.75rem;
15
+ box-shadow: var(--sigvelo-elevation-floating, 0 2px 8px rgb(0 0 0 / 0.12));
16
+ width: 240px;
17
+ }
18
+
19
+ .panel__header {
20
+ display: flex;
21
+ justify-content: space-between;
22
+ align-items: center;
23
+ cursor: pointer;
24
+ gap: 0.5rem;
25
+ user-select: none;
26
+ margin-bottom: 0.5rem;
27
+ }
28
+
29
+ .panel__title {
30
+ font-weight: 600;
31
+ white-space: nowrap;
32
+ }
33
+
34
+ .panel__chevron {
35
+ width: 16px;
36
+ height: 16px;
37
+ flex-shrink: 0;
38
+ transition: transform var(--sigvelo-motion-duration-interaction) ease;
39
+ fill: currentColor;
40
+ }
41
+
42
+ :host([collapsed]) .panel__chevron {
43
+ transform: rotate(-90deg);
44
+ }
45
+
46
+ .panel__fields {
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: 0.625rem;
50
+ }
51
+
52
+ .panel__field {
53
+ display: flex;
54
+ flex-direction: column;
55
+ gap: 0.125rem;
56
+ }
57
+
58
+ .panel__label {
59
+ font-weight: 500;
60
+ font-size: 0.75rem;
61
+ color: var(--sigvelo-color-text-muted, #666);
62
+ }
63
+
64
+ select {
65
+ appearance: none;
66
+ background: var(--sigvelo-color-surface, #fff);
67
+ border: 1px solid var(--sigvelo-color-neutral-border-muted, #ddd);
68
+ border-radius: var(--sigvelo-radius-sm, 4px);
69
+ padding: 0.25rem 1.5rem 0.25rem 0.5rem;
70
+ font: inherit;
71
+ color: inherit;
72
+ cursor: pointer;
73
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' fill='none' stroke='%23666' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
74
+ background-repeat: no-repeat;
75
+ background-position: right 0.375rem center;
76
+ }
77
+
78
+ select:focus-visible {
79
+ outline: var(--sigvelo-border-style, solid) 2px var(--sigvelo-color-focus, #4a97f4);
80
+ outline-offset: 1px;
81
+ }
82
+
83
+ .panel__color-bar {
84
+ display: flex;
85
+ gap: 1px;
86
+ margin-top: 0.25rem;
87
+ height: 12px;
88
+ border-radius: var(--sigvelo-radius-xs, 2px);
89
+ overflow: hidden;
90
+ }
91
+
92
+ .panel__color-bar-segment {
93
+ flex: 1;
94
+ }
95
+ `;
96
+ //# sourceMappingURL=classify-panel.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify-panel.styles.js","sourceRoot":"","sources":["../../../src/components/classify-panel/classify-panel.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6FjB,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { SigveloElement } from "@mcp-b/wc-support/base/sigvelo-element";
2
+ /**
3
+ * Displays a color-coded legend for classified/choropleth maps.
4
+ *
5
+ * When a `channel` attribute is set, the legend automatically updates
6
+ * from a sibling `<sigvelo-geo-classify-panel>` sharing the same channel.
7
+ *
8
+ * Place inside a `<sigvelo-*-control>` for on-map positioning, or
9
+ * anywhere in the DOM for external/sidebar mode.
10
+ *
11
+ * @tag sigvelo-geo-legend
12
+ *
13
+ * @csspart container - The outer legend container.
14
+ * @csspart title - The clickable title/header row.
15
+ * @csspart item - Each legend row (swatch + label).
16
+ * @csspart swatch - A color swatch square.
17
+ * @csspart label - A range label.
18
+ */
19
+ export declare class SigveloGeoLegend extends SigveloElement {
20
+ static styles: import("lit").CSSResult[];
21
+ /**
22
+ * Channel name for auto-syncing with a classify panel.
23
+ * When set, breaks, colors, and title update automatically.
24
+ */
25
+ channel: string;
26
+ /** Classification break points (numClasses + 1 values: [min, break1, ..., max]). */
27
+ breaks: number[];
28
+ /** Colors for each class (numClasses values). */
29
+ colors: string[];
30
+ /** Legend title (e.g., the property name being classified). */
31
+ title: string;
32
+ /** Whether the legend content is collapsed, showing only the title. */
33
+ collapsed: boolean;
34
+ /** @internal */
35
+ private _unsubscribe;
36
+ connectedCallback(): void;
37
+ disconnectedCallback(): void;
38
+ /** @internal */
39
+ private _subscribeChannel;
40
+ private _formatNumber;
41
+ private _toggleCollapsed;
42
+ render(): import("lit-html").TemplateResult<1>;
43
+ }
44
+ declare global {
45
+ interface HTMLElementTagNameMap {
46
+ "sigvelo-geo-legend": SigveloGeoLegend;
47
+ }
48
+ }
49
+ //# sourceMappingURL=legend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legend.d.ts","sourceRoot":"","sources":["../../../src/components/legend/legend.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAaxE;;;;;;;;;;;;;;;;GAgBG;AACH,qBACa,gBAAiB,SAAQ,cAAc;IAClD,MAAM,CAAC,MAAM,4BAAwB;IAErC;;;OAGG;IACS,OAAO,SAAM;IAEzB,oFAAoF;IACpD,MAAM,EAAE,MAAM,EAAE,CAAM;IAEtD,iDAAiD;IACjB,MAAM,EAAE,MAAM,EAAE,CAAM;IAEtD,+DAA+D;IACnD,KAAK,SAAM;IAEvB,uEAAuE;IAC3B,SAAS,UAAS;IAE9D,gBAAgB;IAChB,OAAO,CAAC,YAAY,CAA6B;IAEjD,iBAAiB;IAKjB,oBAAoB;IAMpB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IAIxB,MAAM;CA8BP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,gBAAgB,CAAC;KACxC;CACF"}
@@ -0,0 +1,129 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html, nothing } from "lit";
8
+ import { customElement, property } from "lit/decorators.js";
9
+ import { SigveloElement } from "@mcp-b/wc-support/base/sigvelo-element";
10
+ import hostStyles from "@mcp-b/wc-support/styles/host.styles";
11
+ import { subscribeClassify } from "../../classification/channel.js";
12
+ import styles from "./legend.styles.js";
13
+ const chevronSvg = html `
14
+ <svg class="legend__chevron" viewBox="0 0 16 16" aria-hidden="true">
15
+ <path
16
+ d="M4.94 2.94a1.5 1.5 0 0 1 2.12 0L12 7.88a.17.17 0 0 1 0 .24l-4.94 4.94a1.5 1.5 0 0 1-2.12-2.12L8.88 7l-.94-.94L4.94 5.06a1.5 1.5 0 0 1 0-2.12Z"
17
+ />
18
+ </svg>
19
+ `;
20
+ /**
21
+ * Displays a color-coded legend for classified/choropleth maps.
22
+ *
23
+ * When a `channel` attribute is set, the legend automatically updates
24
+ * from a sibling `<sigvelo-geo-classify-panel>` sharing the same channel.
25
+ *
26
+ * Place inside a `<sigvelo-*-control>` for on-map positioning, or
27
+ * anywhere in the DOM for external/sidebar mode.
28
+ *
29
+ * @tag sigvelo-geo-legend
30
+ *
31
+ * @csspart container - The outer legend container.
32
+ * @csspart title - The clickable title/header row.
33
+ * @csspart item - Each legend row (swatch + label).
34
+ * @csspart swatch - A color swatch square.
35
+ * @csspart label - A range label.
36
+ */
37
+ let SigveloGeoLegend = class SigveloGeoLegend extends SigveloElement {
38
+ constructor() {
39
+ super(...arguments);
40
+ /**
41
+ * Channel name for auto-syncing with a classify panel.
42
+ * When set, breaks, colors, and title update automatically.
43
+ */
44
+ this.channel = "";
45
+ /** Classification break points (numClasses + 1 values: [min, break1, ..., max]). */
46
+ this.breaks = [];
47
+ /** Colors for each class (numClasses values). */
48
+ this.colors = [];
49
+ /** Legend title (e.g., the property name being classified). */
50
+ this.title = "";
51
+ /** Whether the legend content is collapsed, showing only the title. */
52
+ this.collapsed = false;
53
+ /** @internal */
54
+ this._unsubscribe = null;
55
+ }
56
+ connectedCallback() {
57
+ super.connectedCallback();
58
+ this._subscribeChannel();
59
+ }
60
+ disconnectedCallback() {
61
+ super.disconnectedCallback();
62
+ this._unsubscribe?.();
63
+ this._unsubscribe = null;
64
+ }
65
+ /** @internal */
66
+ _subscribeChannel() {
67
+ this._unsubscribe?.();
68
+ if (!this.channel)
69
+ return;
70
+ this._unsubscribe = subscribeClassify(this.channel, (detail) => {
71
+ this.breaks = detail.breaks;
72
+ this.colors = detail.colors;
73
+ this.title = detail.property;
74
+ });
75
+ }
76
+ _formatNumber(n) {
77
+ return n.toLocaleString(undefined, { maximumSignificantDigits: 4 });
78
+ }
79
+ _toggleCollapsed() {
80
+ this.collapsed = !this.collapsed;
81
+ }
82
+ render() {
83
+ const items = !this.collapsed && this.colors.length > 0 && this.breaks.length > this.colors.length
84
+ ? html `
85
+ <div class="legend__items">
86
+ ${this.colors.map((color, i) => html `
87
+ <div class="legend__item" part="item">
88
+ <span class="legend__swatch" part="swatch" style="background:${color}"></span>
89
+ <span class="legend__label" part="label">
90
+ ${this._formatNumber(this.breaks[i])} &ndash;
91
+ ${this._formatNumber(this.breaks[i + 1])}
92
+ </span>
93
+ </div>
94
+ `)}
95
+ </div>
96
+ `
97
+ : nothing;
98
+ return html `
99
+ <div class="legend" part="container">
100
+ <div class="legend__header" part="title" @click=${this._toggleCollapsed}>
101
+ <span class="legend__title">${this.title || "Legend"}</span>
102
+ ${chevronSvg}
103
+ </div>
104
+ ${items}
105
+ </div>
106
+ `;
107
+ }
108
+ };
109
+ SigveloGeoLegend.styles = [hostStyles, styles];
110
+ __decorate([
111
+ property()
112
+ ], SigveloGeoLegend.prototype, "channel", void 0);
113
+ __decorate([
114
+ property({ attribute: false })
115
+ ], SigveloGeoLegend.prototype, "breaks", void 0);
116
+ __decorate([
117
+ property({ attribute: false })
118
+ ], SigveloGeoLegend.prototype, "colors", void 0);
119
+ __decorate([
120
+ property()
121
+ ], SigveloGeoLegend.prototype, "title", void 0);
122
+ __decorate([
123
+ property({ type: Boolean, reflect: true })
124
+ ], SigveloGeoLegend.prototype, "collapsed", void 0);
125
+ SigveloGeoLegend = __decorate([
126
+ customElement("sigvelo-geo-legend")
127
+ ], SigveloGeoLegend);
128
+ export { SigveloGeoLegend };
129
+ //# sourceMappingURL=legend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legend.js","sourceRoot":"","sources":["../../../src/components/legend/legend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("lit").CSSResult;
2
+ export default _default;
3
+ //# sourceMappingURL=legend.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legend.styles.d.ts","sourceRoot":"","sources":["../../../src/components/legend/legend.styles.ts"],"names":[],"mappings":";AAEA,wBAyEE"}
@@ -0,0 +1,76 @@
1
+ import { css } from "lit";
2
+ export default css `
3
+ :host {
4
+ display: block;
5
+ font-family: var(--sigvelo-font-sans, sans-serif);
6
+ font-size: var(--sigvelo-control-text-sm, 0.8125rem);
7
+ color: var(--sigvelo-color-text, #1a1a1a);
8
+ }
9
+
10
+ .legend {
11
+ background: var(--sigvelo-color-surface, #fff);
12
+ border: 1px solid var(--sigvelo-color-neutral-border-muted, #ddd);
13
+ border-radius: var(--sigvelo-radius-md, 6px);
14
+ padding: 0.5rem 0.75rem;
15
+ box-shadow: var(--sigvelo-elevation-floating, 0 2px 8px rgb(0 0 0 / 0.12));
16
+ min-width: 140px;
17
+ max-width: 220px;
18
+ }
19
+
20
+ .legend__header {
21
+ display: flex;
22
+ justify-content: space-between;
23
+ align-items: center;
24
+ cursor: pointer;
25
+ gap: 0.5rem;
26
+ user-select: none;
27
+ }
28
+
29
+ .legend__title {
30
+ font-weight: 600;
31
+ white-space: nowrap;
32
+ overflow: hidden;
33
+ text-overflow: ellipsis;
34
+ }
35
+
36
+ .legend__chevron {
37
+ width: 16px;
38
+ height: 16px;
39
+ flex-shrink: 0;
40
+ transition: transform var(--sigvelo-motion-duration-interaction) ease;
41
+ fill: currentColor;
42
+ }
43
+
44
+ :host([collapsed]) .legend__chevron {
45
+ transform: rotate(-90deg);
46
+ }
47
+
48
+ .legend__items {
49
+ margin-top: 0.375rem;
50
+ display: flex;
51
+ flex-direction: column;
52
+ gap: 0.125rem;
53
+ }
54
+
55
+ .legend__item {
56
+ display: flex;
57
+ align-items: center;
58
+ gap: 0.5rem;
59
+ padding: 0.0625rem 0;
60
+ }
61
+
62
+ .legend__swatch {
63
+ width: 18px;
64
+ height: 18px;
65
+ border-radius: var(--sigvelo-radius-xs, 2px);
66
+ flex-shrink: 0;
67
+ border: 1px solid var(--sigvelo-color-neutral-border-subtle, #e5e5e5);
68
+ }
69
+
70
+ .legend__label {
71
+ white-space: nowrap;
72
+ overflow: hidden;
73
+ text-overflow: ellipsis;
74
+ }
75
+ `;
76
+ //# sourceMappingURL=legend.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legend.styles.js","sourceRoot":"","sources":["../../../src/components/legend/legend.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEjB,CAAC"}