@jupytergis/schema 0.1.6 → 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.
@@ -344,6 +344,53 @@
344
344
  "multipleOf": 0.1,
345
345
  "minimum": 0,
346
346
  "maximum": 1
347
+ },
348
+ "symbologyState": {
349
+ "type": "object",
350
+ "description": "The state of the symbology panel options",
351
+ "required": [
352
+ "renderType"
353
+ ],
354
+ "properties": {
355
+ "renderType": {
356
+ "type": "string",
357
+ "enum": [
358
+ "Single Symbol",
359
+ "Graduated",
360
+ "Categorized"
361
+ ]
362
+ },
363
+ "value": {
364
+ "type": "string"
365
+ },
366
+ "method": {
367
+ "type": "string",
368
+ "enum": [
369
+ "color",
370
+ "radius"
371
+ ]
372
+ },
373
+ "colorRamp": {
374
+ "type": "string",
375
+ "default": "cool"
376
+ },
377
+ "nClasses": {
378
+ "type": "string",
379
+ "default": "9"
380
+ },
381
+ "mode": {
382
+ "type": "string",
383
+ "default": "equal interval",
384
+ "enum": [
385
+ "quantile",
386
+ "equal interval",
387
+ "jenks",
388
+ "pretty",
389
+ "logarithmic"
390
+ ]
391
+ }
392
+ },
393
+ "additionalProperties": false
347
394
  }
348
395
  }
349
396
  },
@@ -491,6 +538,52 @@
491
538
  }
492
539
  ],
493
540
  "description": "The color of the the object"
541
+ },
542
+ "symbologyState": {
543
+ "type": "object",
544
+ "description": "The state of the symbology panel options",
545
+ "required": [
546
+ "renderType",
547
+ "band",
548
+ "interpolation",
549
+ "colorRamp",
550
+ "nClasses",
551
+ "mode"
552
+ ],
553
+ "properties": {
554
+ "renderType": {
555
+ "type": "string"
556
+ },
557
+ "band": {
558
+ "type": "number"
559
+ },
560
+ "interpolation": {
561
+ "type": "string",
562
+ "enum": [
563
+ "discrete",
564
+ "linear",
565
+ "exact"
566
+ ]
567
+ },
568
+ "colorRamp": {
569
+ "type": "string",
570
+ "default": "cool"
571
+ },
572
+ "nClasses": {
573
+ "type": "string",
574
+ "default": "9"
575
+ },
576
+ "mode": {
577
+ "type": "string",
578
+ "default": "equal interval",
579
+ "enum": [
580
+ "continuous",
581
+ "equal interval",
582
+ "quantile"
583
+ ]
584
+ }
585
+ },
586
+ "additionalProperties": false
494
587
  }
495
588
  }
496
589
  },
@@ -0,0 +1,387 @@
1
+ /* tslint:disable */
2
+ /**
3
+ * This file was automatically generated by json-schema-to-typescript.
4
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
5
+ * and run json-schema-to-typescript to regenerate this file.
6
+ */
7
+
8
+ export type GeoJSON =
9
+ | GeoJSONPoint
10
+ | GeoJSONLineString
11
+ | GeoJSONPolygon
12
+ | GeoJSONMultiPoint
13
+ | GeoJSONMultiLineString
14
+ | GeoJSONMultiPolygon
15
+ | GeoJSONGeometryCollection
16
+ | GeoJSONFeature
17
+ | GeoJSONFeatureCollection;
18
+
19
+ export interface GeoJSONPoint {
20
+ type: "Point";
21
+ coordinates: [number, number, ...number[]];
22
+ bbox?: [number, number, number, number, ...number[]];
23
+ [k: string]: any;
24
+ }
25
+ export interface GeoJSONLineString {
26
+ type: "LineString";
27
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
28
+ bbox?: [number, number, number, number, ...number[]];
29
+ [k: string]: any;
30
+ }
31
+ export interface GeoJSONPolygon {
32
+ type: "Polygon";
33
+ coordinates: [
34
+ [number, number, ...number[]],
35
+ [number, number, ...number[]],
36
+ [number, number, ...number[]],
37
+ [number, number, ...number[]],
38
+ ...[number, number, ...number[]][]
39
+ ][];
40
+ bbox?: [number, number, number, number, ...number[]];
41
+ [k: string]: any;
42
+ }
43
+ export interface GeoJSONMultiPoint {
44
+ type: "MultiPoint";
45
+ coordinates: [number, number, ...number[]][];
46
+ bbox?: [number, number, number, number, ...number[]];
47
+ [k: string]: any;
48
+ }
49
+ export interface GeoJSONMultiLineString {
50
+ type: "MultiLineString";
51
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
52
+ bbox?: [number, number, number, number, ...number[]];
53
+ [k: string]: any;
54
+ }
55
+ export interface GeoJSONMultiPolygon {
56
+ type: "MultiPolygon";
57
+ coordinates: [
58
+ [number, number, ...number[]],
59
+ [number, number, ...number[]],
60
+ [number, number, ...number[]],
61
+ [number, number, ...number[]],
62
+ ...[number, number, ...number[]][]
63
+ ][][];
64
+ bbox?: [number, number, number, number, ...number[]];
65
+ [k: string]: any;
66
+ }
67
+ export interface GeoJSONGeometryCollection {
68
+ type: "GeometryCollection";
69
+ geometries: (
70
+ | GeoJSONPoint1
71
+ | GeoJSONLineString1
72
+ | GeoJSONPolygon1
73
+ | GeoJSONMultiPoint1
74
+ | GeoJSONMultiLineString1
75
+ | GeoJSONMultiPolygon1
76
+ )[];
77
+ bbox?: [number, number, number, number, ...number[]];
78
+ [k: string]: any;
79
+ }
80
+ export interface GeoJSONPoint1 {
81
+ type: "Point";
82
+ coordinates: [number, number, ...number[]];
83
+ bbox?: [number, number, number, number, ...number[]];
84
+ [k: string]: any;
85
+ }
86
+ export interface GeoJSONLineString1 {
87
+ type: "LineString";
88
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
89
+ bbox?: [number, number, number, number, ...number[]];
90
+ [k: string]: any;
91
+ }
92
+ export interface GeoJSONPolygon1 {
93
+ type: "Polygon";
94
+ coordinates: [
95
+ [number, number, ...number[]],
96
+ [number, number, ...number[]],
97
+ [number, number, ...number[]],
98
+ [number, number, ...number[]],
99
+ ...[number, number, ...number[]][]
100
+ ][];
101
+ bbox?: [number, number, number, number, ...number[]];
102
+ [k: string]: any;
103
+ }
104
+ export interface GeoJSONMultiPoint1 {
105
+ type: "MultiPoint";
106
+ coordinates: [number, number, ...number[]][];
107
+ bbox?: [number, number, number, number, ...number[]];
108
+ [k: string]: any;
109
+ }
110
+ export interface GeoJSONMultiLineString1 {
111
+ type: "MultiLineString";
112
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
113
+ bbox?: [number, number, number, number, ...number[]];
114
+ [k: string]: any;
115
+ }
116
+ export interface GeoJSONMultiPolygon1 {
117
+ type: "MultiPolygon";
118
+ coordinates: [
119
+ [number, number, ...number[]],
120
+ [number, number, ...number[]],
121
+ [number, number, ...number[]],
122
+ [number, number, ...number[]],
123
+ ...[number, number, ...number[]][]
124
+ ][][];
125
+ bbox?: [number, number, number, number, ...number[]];
126
+ [k: string]: any;
127
+ }
128
+ export interface GeoJSONFeature {
129
+ type: "Feature";
130
+ id?: number | string;
131
+ properties: null | {
132
+ [k: string]: any;
133
+ };
134
+ geometry:
135
+ | null
136
+ | GeoJSONPoint2
137
+ | GeoJSONLineString2
138
+ | GeoJSONPolygon2
139
+ | GeoJSONMultiPoint2
140
+ | GeoJSONMultiLineString2
141
+ | GeoJSONMultiPolygon2
142
+ | GeoJSONGeometryCollection1;
143
+ bbox?: [number, number, number, number, ...number[]];
144
+ [k: string]: any;
145
+ }
146
+ export interface GeoJSONPoint2 {
147
+ type: "Point";
148
+ coordinates: [number, number, ...number[]];
149
+ bbox?: [number, number, number, number, ...number[]];
150
+ [k: string]: any;
151
+ }
152
+ export interface GeoJSONLineString2 {
153
+ type: "LineString";
154
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
155
+ bbox?: [number, number, number, number, ...number[]];
156
+ [k: string]: any;
157
+ }
158
+ export interface GeoJSONPolygon2 {
159
+ type: "Polygon";
160
+ coordinates: [
161
+ [number, number, ...number[]],
162
+ [number, number, ...number[]],
163
+ [number, number, ...number[]],
164
+ [number, number, ...number[]],
165
+ ...[number, number, ...number[]][]
166
+ ][];
167
+ bbox?: [number, number, number, number, ...number[]];
168
+ [k: string]: any;
169
+ }
170
+ export interface GeoJSONMultiPoint2 {
171
+ type: "MultiPoint";
172
+ coordinates: [number, number, ...number[]][];
173
+ bbox?: [number, number, number, number, ...number[]];
174
+ [k: string]: any;
175
+ }
176
+ export interface GeoJSONMultiLineString2 {
177
+ type: "MultiLineString";
178
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
179
+ bbox?: [number, number, number, number, ...number[]];
180
+ [k: string]: any;
181
+ }
182
+ export interface GeoJSONMultiPolygon2 {
183
+ type: "MultiPolygon";
184
+ coordinates: [
185
+ [number, number, ...number[]],
186
+ [number, number, ...number[]],
187
+ [number, number, ...number[]],
188
+ [number, number, ...number[]],
189
+ ...[number, number, ...number[]][]
190
+ ][][];
191
+ bbox?: [number, number, number, number, ...number[]];
192
+ [k: string]: any;
193
+ }
194
+ export interface GeoJSONGeometryCollection1 {
195
+ type: "GeometryCollection";
196
+ geometries: (
197
+ | GeoJSONPoint3
198
+ | GeoJSONLineString3
199
+ | GeoJSONPolygon3
200
+ | GeoJSONMultiPoint3
201
+ | GeoJSONMultiLineString3
202
+ | GeoJSONMultiPolygon3
203
+ )[];
204
+ bbox?: [number, number, number, number, ...number[]];
205
+ [k: string]: any;
206
+ }
207
+ export interface GeoJSONPoint3 {
208
+ type: "Point";
209
+ coordinates: [number, number, ...number[]];
210
+ bbox?: [number, number, number, number, ...number[]];
211
+ [k: string]: any;
212
+ }
213
+ export interface GeoJSONLineString3 {
214
+ type: "LineString";
215
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
216
+ bbox?: [number, number, number, number, ...number[]];
217
+ [k: string]: any;
218
+ }
219
+ export interface GeoJSONPolygon3 {
220
+ type: "Polygon";
221
+ coordinates: [
222
+ [number, number, ...number[]],
223
+ [number, number, ...number[]],
224
+ [number, number, ...number[]],
225
+ [number, number, ...number[]],
226
+ ...[number, number, ...number[]][]
227
+ ][];
228
+ bbox?: [number, number, number, number, ...number[]];
229
+ [k: string]: any;
230
+ }
231
+ export interface GeoJSONMultiPoint3 {
232
+ type: "MultiPoint";
233
+ coordinates: [number, number, ...number[]][];
234
+ bbox?: [number, number, number, number, ...number[]];
235
+ [k: string]: any;
236
+ }
237
+ export interface GeoJSONMultiLineString3 {
238
+ type: "MultiLineString";
239
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
240
+ bbox?: [number, number, number, number, ...number[]];
241
+ [k: string]: any;
242
+ }
243
+ export interface GeoJSONMultiPolygon3 {
244
+ type: "MultiPolygon";
245
+ coordinates: [
246
+ [number, number, ...number[]],
247
+ [number, number, ...number[]],
248
+ [number, number, ...number[]],
249
+ [number, number, ...number[]],
250
+ ...[number, number, ...number[]][]
251
+ ][][];
252
+ bbox?: [number, number, number, number, ...number[]];
253
+ [k: string]: any;
254
+ }
255
+ export interface GeoJSONFeatureCollection {
256
+ type: "FeatureCollection";
257
+ features: GeoJSONFeature1[];
258
+ bbox?: [number, number, number, number, ...number[]];
259
+ [k: string]: any;
260
+ }
261
+ export interface GeoJSONFeature1 {
262
+ type: "Feature";
263
+ id?: number | string;
264
+ properties: null | {
265
+ [k: string]: any;
266
+ };
267
+ geometry:
268
+ | null
269
+ | GeoJSONPoint4
270
+ | GeoJSONLineString4
271
+ | GeoJSONPolygon4
272
+ | GeoJSONMultiPoint4
273
+ | GeoJSONMultiLineString4
274
+ | GeoJSONMultiPolygon4
275
+ | GeoJSONGeometryCollection2;
276
+ bbox?: [number, number, number, number, ...number[]];
277
+ [k: string]: any;
278
+ }
279
+ export interface GeoJSONPoint4 {
280
+ type: "Point";
281
+ coordinates: [number, number, ...number[]];
282
+ bbox?: [number, number, number, number, ...number[]];
283
+ [k: string]: any;
284
+ }
285
+ export interface GeoJSONLineString4 {
286
+ type: "LineString";
287
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
288
+ bbox?: [number, number, number, number, ...number[]];
289
+ [k: string]: any;
290
+ }
291
+ export interface GeoJSONPolygon4 {
292
+ type: "Polygon";
293
+ coordinates: [
294
+ [number, number, ...number[]],
295
+ [number, number, ...number[]],
296
+ [number, number, ...number[]],
297
+ [number, number, ...number[]],
298
+ ...[number, number, ...number[]][]
299
+ ][];
300
+ bbox?: [number, number, number, number, ...number[]];
301
+ [k: string]: any;
302
+ }
303
+ export interface GeoJSONMultiPoint4 {
304
+ type: "MultiPoint";
305
+ coordinates: [number, number, ...number[]][];
306
+ bbox?: [number, number, number, number, ...number[]];
307
+ [k: string]: any;
308
+ }
309
+ export interface GeoJSONMultiLineString4 {
310
+ type: "MultiLineString";
311
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
312
+ bbox?: [number, number, number, number, ...number[]];
313
+ [k: string]: any;
314
+ }
315
+ export interface GeoJSONMultiPolygon4 {
316
+ type: "MultiPolygon";
317
+ coordinates: [
318
+ [number, number, ...number[]],
319
+ [number, number, ...number[]],
320
+ [number, number, ...number[]],
321
+ [number, number, ...number[]],
322
+ ...[number, number, ...number[]][]
323
+ ][][];
324
+ bbox?: [number, number, number, number, ...number[]];
325
+ [k: string]: any;
326
+ }
327
+ export interface GeoJSONGeometryCollection2 {
328
+ type: "GeometryCollection";
329
+ geometries: (
330
+ | GeoJSONPoint5
331
+ | GeoJSONLineString5
332
+ | GeoJSONPolygon5
333
+ | GeoJSONMultiPoint5
334
+ | GeoJSONMultiLineString5
335
+ | GeoJSONMultiPolygon5
336
+ )[];
337
+ bbox?: [number, number, number, number, ...number[]];
338
+ [k: string]: any;
339
+ }
340
+ export interface GeoJSONPoint5 {
341
+ type: "Point";
342
+ coordinates: [number, number, ...number[]];
343
+ bbox?: [number, number, number, number, ...number[]];
344
+ [k: string]: any;
345
+ }
346
+ export interface GeoJSONLineString5 {
347
+ type: "LineString";
348
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]];
349
+ bbox?: [number, number, number, number, ...number[]];
350
+ [k: string]: any;
351
+ }
352
+ export interface GeoJSONPolygon5 {
353
+ type: "Polygon";
354
+ coordinates: [
355
+ [number, number, ...number[]],
356
+ [number, number, ...number[]],
357
+ [number, number, ...number[]],
358
+ [number, number, ...number[]],
359
+ ...[number, number, ...number[]][]
360
+ ][];
361
+ bbox?: [number, number, number, number, ...number[]];
362
+ [k: string]: any;
363
+ }
364
+ export interface GeoJSONMultiPoint5 {
365
+ type: "MultiPoint";
366
+ coordinates: [number, number, ...number[]][];
367
+ bbox?: [number, number, number, number, ...number[]];
368
+ [k: string]: any;
369
+ }
370
+ export interface GeoJSONMultiLineString5 {
371
+ type: "MultiLineString";
372
+ coordinates: [[number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][]][];
373
+ bbox?: [number, number, number, number, ...number[]];
374
+ [k: string]: any;
375
+ }
376
+ export interface GeoJSONMultiPolygon5 {
377
+ type: "MultiPolygon";
378
+ coordinates: [
379
+ [number, number, ...number[]],
380
+ [number, number, ...number[]],
381
+ [number, number, ...number[]],
382
+ [number, number, ...number[]],
383
+ ...[number, number, ...number[]][]
384
+ ][][];
385
+ bbox?: [number, number, number, number, ...number[]];
386
+ [k: string]: any;
387
+ }
@@ -45,6 +45,13 @@ export interface IJGISContent {
45
45
  sources: IJGISSources;
46
46
  layerTree?: IJGISLayerTree;
47
47
  options?: IJGISOptions;
48
+ metadata?: {
49
+ /**
50
+ * This interface was referenced by `undefined`'s JSON-Schema definition
51
+ * via the `patternProperty` "^.*$".
52
+ */
53
+ [k: string]: string;
54
+ };
48
55
  }
49
56
  /**
50
57
  * This interface was referenced by `IJGISContent`'s JSON-Schema
@@ -31,4 +31,15 @@ export interface IVectorLayer {
31
31
  * The opacity of the the object
32
32
  */
33
33
  opacity?: number;
34
+ /**
35
+ * The state of the symbology panel options
36
+ */
37
+ symbologyState?: {
38
+ renderType: "Single Symbol" | "Graduated" | "Categorized";
39
+ value?: string;
40
+ method?: "color" | "radius";
41
+ colorRamp?: string;
42
+ nClasses?: string;
43
+ mode?: "quantile" | "equal interval" | "jenks" | "pretty" | "logarithmic";
44
+ };
34
45
  }
@@ -21,4 +21,15 @@ export interface IWebGlLayer {
21
21
  * The color of the the object
22
22
  */
23
23
  color?: string | number | (string | number | (number | string | (number | string)[])[])[];
24
+ /**
25
+ * The state of the symbology panel options
26
+ */
27
+ symbologyState?: {
28
+ renderType: string;
29
+ band: number;
30
+ interpolation: "discrete" | "linear" | "exact";
31
+ colorRamp: string;
32
+ nClasses: string;
33
+ mode: "continuous" | "equal interval" | "quantile";
34
+ };
24
35
  }
package/lib/doc.d.ts CHANGED
@@ -1,9 +1,12 @@
1
1
  import { MapChange, YDocument } from '@jupyter/ydoc';
2
+ import { JSONObject } from '@lumino/coreutils';
2
3
  import { ISignal } from '@lumino/signaling';
3
4
  import { IJGISLayer, IJGISLayerItem, IJGISLayerTree, IJGISLayers, IJGISOptions, IJGISSource, IJGISSources } from './_interface/jgis';
4
5
  import { IDict, IJGISLayerDocChange, IJGISLayerTreeDocChange, IJGISSourceDocChange, IJupyterGISDoc, IJupyterGISDocChange } from './interfaces';
5
6
  export declare class JupyterGISDoc extends YDocument<IJupyterGISDocChange> implements IJupyterGISDoc {
6
7
  constructor();
8
+ getSource(): JSONObject;
9
+ setSource(value: JSONObject): void;
7
10
  dispose(): void;
8
11
  get version(): string;
9
12
  get layers(): IJGISLayers;
@@ -13,7 +16,7 @@ export declare class JupyterGISDoc extends YDocument<IJupyterGISDocChange> imple
13
16
  get layerTree(): IJGISLayerTree;
14
17
  set layerTree(layerTree: IJGISLayerTree);
15
18
  getLayer(id: string): IJGISLayer | undefined;
16
- getSource(id: string): IJGISSource | undefined;
19
+ getLayerSource(id: string): IJGISSource | undefined;
17
20
  set options(options: IJGISOptions);
18
21
  get options(): IJGISOptions;
19
22
  get layersChanged(): ISignal<IJupyterGISDoc, IJGISLayerDocChange>;
@@ -34,6 +37,14 @@ export declare class JupyterGISDoc extends YDocument<IJupyterGISDocChange> imple
34
37
  updateSource(id: string, value: any): void;
35
38
  getOption(key: keyof IJGISOptions): IDict | undefined;
36
39
  setOption(key: keyof IJGISOptions, value: IDict): void;
40
+ getMetadata(key: string): string | undefined;
41
+ setMetadata(key: string, value: string): void;
42
+ removeMetadata(key: string): void;
43
+ get metadata(): JSONObject;
44
+ set metadata(metadata: {
45
+ [k: string]: string;
46
+ });
47
+ get metadataChanged(): ISignal<IJupyterGISDoc, MapChange>;
37
48
  static create(): IJupyterGISDoc;
38
49
  editable: boolean;
39
50
  private _getLayerAsYMap;
@@ -42,12 +53,15 @@ export declare class JupyterGISDoc extends YDocument<IJupyterGISDocChange> imple
42
53
  private _layerTreeObserver;
43
54
  private _sourcesObserver;
44
55
  private _optionsObserver;
56
+ private _metaObserver;
45
57
  private _layers;
46
58
  private _layerTree;
47
59
  private _sources;
48
60
  private _options;
61
+ private _metadata;
49
62
  private _optionsChanged;
50
63
  private _layersChanged;
51
64
  private _layerTreeChanged;
52
65
  private _sourcesChanged;
66
+ private _metadataChanged;
53
67
  }
package/lib/doc.js CHANGED
@@ -8,14 +8,19 @@ export class JupyterGISDoc extends YDocument {
8
8
  this._optionsObserver = (event) => {
9
9
  this._optionsChanged.emit(event.keys);
10
10
  };
11
+ this._metaObserver = (event) => {
12
+ this._metadataChanged.emit(event.keys);
13
+ };
11
14
  this._optionsChanged = new Signal(this);
12
15
  this._layersChanged = new Signal(this);
13
16
  this._layerTreeChanged = new Signal(this);
14
17
  this._sourcesChanged = new Signal(this);
18
+ this._metadataChanged = new Signal(this);
15
19
  this._options = this.ydoc.getMap('options');
16
20
  this._layers = this.ydoc.getMap('layers');
17
21
  this._layerTree = this.ydoc.getArray('layerTree');
18
22
  this._sources = this.ydoc.getMap('sources');
23
+ this._metadata = this.ydoc.getMap('metadata');
19
24
  this.undoManager.addToScope(this._layers);
20
25
  this.undoManager.addToScope(this._sources);
21
26
  this.undoManager.addToScope(this._layerTree);
@@ -23,6 +28,35 @@ export class JupyterGISDoc extends YDocument {
23
28
  this._layerTree.observe(this._layerTreeObserver.bind(this));
24
29
  this._sources.observeDeep(this._sourcesObserver.bind(this));
25
30
  this._options.observe(this._optionsObserver.bind(this));
31
+ this._metadata.observe(this._metaObserver.bind(this));
32
+ }
33
+ getSource() {
34
+ const layers = this._layers.toJSON();
35
+ const layerTree = this._layerTree.toJSON();
36
+ const options = this._options.toJSON();
37
+ const sources = this._sources.toJSON();
38
+ const metadata = this._metadata.toJSON();
39
+ return { layers, layerTree, sources, options, metadata };
40
+ }
41
+ setSource(value) {
42
+ if (!value) {
43
+ return;
44
+ }
45
+ this.transact(() => {
46
+ var _a, _b, _c, _d, _e;
47
+ const layers = (_a = value['layers']) !== null && _a !== void 0 ? _a : {};
48
+ Object.entries(layers).forEach(([key, val]) => this._layers.set(key, val));
49
+ const layerTree = (_b = value['layerTree']) !== null && _b !== void 0 ? _b : [];
50
+ layerTree.forEach(layer => {
51
+ this._layerTree.push([layer]);
52
+ });
53
+ const options = (_c = value['options']) !== null && _c !== void 0 ? _c : {};
54
+ Object.entries(options).forEach(([key, val]) => this._options.set(key, val));
55
+ const sources = (_d = value['sources']) !== null && _d !== void 0 ? _d : {};
56
+ Object.entries(sources).forEach(([key, val]) => this._sources.set(key, val));
57
+ const metadata = (_e = value['metadata']) !== null && _e !== void 0 ? _e : {};
58
+ Object.entries(metadata).forEach(([key, val]) => this._metadata.set(key, val));
59
+ });
26
60
  }
27
61
  dispose() {
28
62
  super.dispose();
@@ -65,7 +99,7 @@ export class JupyterGISDoc extends YDocument {
65
99
  }
66
100
  return JSONExt.deepCopy(this._layers.get(id));
67
101
  }
68
- getSource(id) {
102
+ getLayerSource(id) {
69
103
  if (!this._sources.has(id)) {
70
104
  return undefined;
71
105
  }
@@ -129,7 +163,7 @@ export class JupyterGISDoc extends YDocument {
129
163
  if (layer) {
130
164
  return layer;
131
165
  }
132
- const source = this.getSource(id);
166
+ const source = this.getLayerSource(id);
133
167
  if (source) {
134
168
  return source;
135
169
  }
@@ -140,7 +174,7 @@ export class JupyterGISDoc extends YDocument {
140
174
  layer.parameters = Object.assign(Object.assign({}, layer.parameters), value);
141
175
  this.updateLayer(id, layer);
142
176
  }
143
- const source = this.getSource(id);
177
+ const source = this.getLayerSource(id);
144
178
  if (source) {
145
179
  source.parameters = Object.assign(Object.assign({}, source.parameters), value);
146
180
  this.updateSource(id, source);
@@ -172,6 +206,30 @@ export class JupyterGISDoc extends YDocument {
172
206
  setOption(key, value) {
173
207
  this.transact(() => void this._options.set(key, value));
174
208
  }
209
+ getMetadata(key) {
210
+ return this._metadata.get(key);
211
+ }
212
+ setMetadata(key, value) {
213
+ this.transact(() => void this._metadata.set(key, value));
214
+ }
215
+ removeMetadata(key) {
216
+ if (this._metadata.has(key)) {
217
+ this._metadata.delete(key);
218
+ }
219
+ }
220
+ get metadata() {
221
+ return JSONExt.deepCopy(this._metadata.toJSON());
222
+ }
223
+ set metadata(metadata) {
224
+ this.transact(() => {
225
+ for (const [key, value] of Object.entries(metadata)) {
226
+ this._metadata.set(key, value);
227
+ }
228
+ });
229
+ }
230
+ get metadataChanged() {
231
+ return this._metadataChanged;
232
+ }
175
233
  static create() {
176
234
  return new JupyterGISDoc();
177
235
  }