@jupytergis/schema 0.1.7 → 0.2.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.
@@ -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
package/lib/doc.d.ts CHANGED
@@ -37,6 +37,14 @@ export declare class JupyterGISDoc extends YDocument<IJupyterGISDocChange> imple
37
37
  updateSource(id: string, value: any): void;
38
38
  getOption(key: keyof IJGISOptions): IDict | undefined;
39
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>;
40
48
  static create(): IJupyterGISDoc;
41
49
  editable: boolean;
42
50
  private _getLayerAsYMap;
@@ -45,12 +53,15 @@ export declare class JupyterGISDoc extends YDocument<IJupyterGISDocChange> imple
45
53
  private _layerTreeObserver;
46
54
  private _sourcesObserver;
47
55
  private _optionsObserver;
56
+ private _metaObserver;
48
57
  private _layers;
49
58
  private _layerTree;
50
59
  private _sources;
51
60
  private _options;
61
+ private _metadata;
52
62
  private _optionsChanged;
53
63
  private _layersChanged;
54
64
  private _layerTreeChanged;
55
65
  private _sourcesChanged;
66
+ private _metadataChanged;
56
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,20 +28,22 @@ 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));
26
32
  }
27
33
  getSource() {
28
34
  const layers = this._layers.toJSON();
29
35
  const layerTree = this._layerTree.toJSON();
30
36
  const options = this._options.toJSON();
31
37
  const sources = this._sources.toJSON();
32
- return { layers, layerTree, sources, options };
38
+ const metadata = this._metadata.toJSON();
39
+ return { layers, layerTree, sources, options, metadata };
33
40
  }
34
41
  setSource(value) {
35
42
  if (!value) {
36
43
  return;
37
44
  }
38
45
  this.transact(() => {
39
- var _a, _b, _c, _d;
46
+ var _a, _b, _c, _d, _e;
40
47
  const layers = (_a = value['layers']) !== null && _a !== void 0 ? _a : {};
41
48
  Object.entries(layers).forEach(([key, val]) => this._layers.set(key, val));
42
49
  const layerTree = (_b = value['layerTree']) !== null && _b !== void 0 ? _b : [];
@@ -47,6 +54,8 @@ export class JupyterGISDoc extends YDocument {
47
54
  Object.entries(options).forEach(([key, val]) => this._options.set(key, val));
48
55
  const sources = (_d = value['sources']) !== null && _d !== void 0 ? _d : {};
49
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));
50
59
  });
51
60
  }
52
61
  dispose() {
@@ -197,6 +206,30 @@ export class JupyterGISDoc extends YDocument {
197
206
  setOption(key, value) {
198
207
  this.transact(() => void this._options.set(key, value));
199
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
+ }
200
233
  static create() {
201
234
  return new JupyterGISDoc();
202
235
  }
@@ -1,15 +1,28 @@
1
- import { ICollaborativeDrive } from '@jupyter/collaborative-drive';
2
1
  import { Delta, DocumentChange, MapChange, StateChange, YDocument } from '@jupyter/ydoc';
3
2
  import { IWidgetTracker } from '@jupyterlab/apputils';
4
3
  import { IChangedArgs } from '@jupyterlab/coreutils';
5
4
  import { DocumentRegistry, IDocumentWidget } from '@jupyterlab/docregistry';
6
- import { User } from '@jupyterlab/services';
5
+ import { Contents, User } from '@jupyterlab/services';
7
6
  import { ISignal, Signal } from '@lumino/signaling';
8
7
  import { SplitPanel } from '@lumino/widgets';
9
8
  import { GeoJSON } from './_interface/geojsonsource';
10
9
  import { IJGISContent, IJGISLayer, IJGISLayerGroup, IJGISLayerItem, IJGISLayers, IJGISLayerTree, IJGISOptions, IJGISSource, IJGISSources, SourceType } from './_interface/jgis';
11
10
  import { IRasterSource } from './_interface/rastersource';
12
11
  export { IGeoJSONSource } from './_interface/geojsonsource';
12
+ export type JgisCoordinates = {
13
+ x: number;
14
+ y: number;
15
+ };
16
+ export interface IViewPortState {
17
+ coordinates: JgisCoordinates;
18
+ zoom: number;
19
+ }
20
+ export type Pointer = {
21
+ coordinates: {
22
+ x: number;
23
+ y: number;
24
+ };
25
+ };
13
26
  export interface IDict<T = any> {
14
27
  [key: string]: T;
15
28
  }
@@ -41,6 +54,18 @@ export interface IJupyterGISClientState {
41
54
  };
42
55
  emitter?: string | null;
43
56
  };
57
+ viewportState: {
58
+ value?: IViewPortState;
59
+ emitter?: string | null;
60
+ };
61
+ pointer: {
62
+ value?: Pointer;
63
+ emitter?: string | null;
64
+ };
65
+ identifiedFeatures: {
66
+ value?: any;
67
+ emitter?: string | null;
68
+ };
44
69
  user: User.IIdentity;
45
70
  remoteUser?: number;
46
71
  toolbarForm?: IDict;
@@ -50,6 +75,7 @@ export interface IJupyterGISDoc extends YDocument<IJupyterGISDocChange> {
50
75
  layers: IJGISLayers;
51
76
  sources: IJGISSources;
52
77
  layerTree: IJGISLayerTree;
78
+ metadata: any;
53
79
  readonly editable: boolean;
54
80
  readonly toJGISEndpoint?: string;
55
81
  layerExists(id: string): boolean;
@@ -68,10 +94,14 @@ export interface IJupyterGISDoc extends YDocument<IJupyterGISDocChange> {
68
94
  getObject(id: string): IJGISLayer | IJGISSource | undefined;
69
95
  getOption(key: keyof IJGISOptions): IDict | undefined;
70
96
  setOption(key: keyof IJGISOptions, value: IDict): void;
97
+ getMetadata(key: string): string | undefined;
98
+ setMetadata(key: string, value: string): void;
99
+ removeMetadata(key: string): void;
71
100
  optionsChanged: ISignal<IJupyterGISDoc, MapChange>;
72
101
  layersChanged: ISignal<IJupyterGISDoc, IJGISLayerDocChange>;
73
102
  sourcesChanged: ISignal<IJupyterGISDoc, IJGISSourceDocChange>;
74
103
  layerTreeChanged: ISignal<IJupyterGISDoc, IJGISLayerTreeDocChange>;
104
+ metadataChanged: ISignal<IJupyterGISDoc, MapChange>;
75
105
  }
76
106
  export interface IJupyterGISDocChange extends DocumentChange {
77
107
  contextChange?: MapChange;
@@ -89,13 +119,16 @@ export interface IJupyterGISModel extends DocumentRegistry.IModel {
89
119
  isDisposed: boolean;
90
120
  sharedModel: IJupyterGISDoc;
91
121
  localState: IJupyterGISClientState | null;
122
+ annotationModel?: IAnnotationModel;
92
123
  themeChanged: Signal<IJupyterGISModel, IChangedArgs<string, string | null, string>>;
93
124
  clientStateChanged: ISignal<IJupyterGISModel, Map<number, IJupyterGISClientState>>;
94
125
  sharedOptionsChanged: ISignal<IJupyterGISDoc, MapChange>;
95
126
  sharedLayersChanged: ISignal<IJupyterGISDoc, IJGISLayerDocChange>;
96
127
  sharedLayerTreeChanged: ISignal<IJupyterGISDoc, IJGISLayerTreeDocChange>;
97
128
  sharedSourcesChanged: ISignal<IJupyterGISDoc, IJGISSourceDocChange>;
98
- setDrive(value: ICollaborativeDrive, filePath: string): void;
129
+ sharedMetadataChanged: ISignal<IJupyterGISModel, MapChange>;
130
+ zoomToAnnotationSignal: ISignal<IJupyterGISModel, string>;
131
+ setContentsManager(value: Contents.IManager | undefined, filePath: string): void;
99
132
  getContent(): IJGISContent;
100
133
  getLayers(): IJGISLayers;
101
134
  getLayer(id: string): IJGISLayer | undefined;
@@ -118,11 +151,19 @@ export interface IJupyterGISModel extends DocumentRegistry.IModel {
118
151
  addNewLayerGroup(selected: {
119
152
  [key: string]: ISelection;
120
153
  }, group: IJGISLayerGroup): void;
154
+ syncViewport(viewport?: IViewPortState, emitter?: string): void;
121
155
  syncSelected(value: {
122
156
  [key: string]: ISelection;
123
157
  }, emitter?: string): void;
158
+ syncPointer(pointer?: Pointer, emitter?: string): void;
159
+ syncIdentifiedFeatures(features: IDict<any>, emitter?: string): void;
124
160
  setUserToFollow(userId?: number): void;
125
161
  getClientId(): number;
162
+ addMetadata(key: string, value: string): void;
163
+ removeMetadata(key: string): void;
164
+ centerOnAnnotation(id: string): void;
165
+ toggleIdentify(): void;
166
+ isIdentifying: boolean;
126
167
  disposed: ISignal<any, void>;
127
168
  }
128
169
  export interface IUserData {
@@ -183,3 +224,29 @@ export interface IJGISLayerBrowserRegistry {
183
224
  removeRegistryLayer(name: string): void;
184
225
  clearRegistry(): void;
185
226
  }
227
+ export interface IAnnotationModel {
228
+ updateSignal: ISignal<this, null>;
229
+ user: User.IIdentity | undefined;
230
+ context: DocumentRegistry.IContext<IJupyterGISModel> | undefined;
231
+ contextChanged: ISignal<this, void>;
232
+ update(): void;
233
+ getAnnotation(id: string): IAnnotation | undefined;
234
+ getAnnotationIds(): string[];
235
+ addAnnotation(key: string, value: IAnnotation): void;
236
+ removeAnnotation(key: string): void;
237
+ addContent(id: string, value: string): void;
238
+ }
239
+ export interface IAnnotationContent {
240
+ user?: User.IIdentity;
241
+ value: string;
242
+ }
243
+ export interface IAnnotation {
244
+ label: string;
245
+ position: {
246
+ x: number;
247
+ y: number;
248
+ };
249
+ zoom: number;
250
+ contents: IAnnotationContent[];
251
+ parent: string;
252
+ }