@jupytergis/base 0.11.1 → 0.12.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.
- package/lib/commands/BaseCommandIDs.d.ts +1 -0
- package/lib/commands/BaseCommandIDs.js +1 -0
- package/lib/commands/index.js +52 -0
- package/lib/constants.d.ts +3 -2
- package/lib/constants.js +3 -0
- package/lib/dialogs/symbology/hooks/useGetBandInfo.d.ts +0 -6
- package/lib/dialogs/symbology/hooks/useGetBandInfo.js +2 -2
- package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.js +4 -4
- package/lib/formbuilder/objectform/StoryEditorForm.d.ts +3 -2
- package/lib/formbuilder/objectform/StoryEditorForm.js +24 -1
- package/lib/mainview/mainView.d.ts +18 -0
- package/lib/mainview/mainView.js +243 -18
- package/lib/panelview/{components/filter-panel → filter-panel}/Filter.js +1 -1
- package/lib/panelview/leftpanel.js +26 -17
- package/lib/panelview/rightpanel.d.ts +2 -0
- package/lib/panelview/rightpanel.js +22 -14
- package/lib/panelview/{components/story-maps → story-maps}/PreviewModeSwitch.js +3 -2
- package/lib/panelview/story-maps/StoryEditorPanel.d.ts +9 -0
- package/lib/panelview/story-maps/StoryEditorPanel.js +34 -0
- package/lib/panelview/{components/story-maps → story-maps}/StoryNavBar.d.ts +2 -1
- package/lib/panelview/{components/story-maps → story-maps}/StoryNavBar.js +3 -3
- package/lib/panelview/story-maps/StoryViewerPanel.d.ts +13 -0
- package/lib/panelview/{components/story-maps → story-maps}/StoryViewerPanel.js +37 -24
- package/lib/panelview/story-maps/components/StoryContentSection.d.ts +6 -0
- package/lib/panelview/story-maps/components/StoryContentSection.js +10 -0
- package/lib/panelview/story-maps/components/StoryImageSection.d.ts +15 -0
- package/lib/panelview/story-maps/components/StoryImageSection.js +13 -0
- package/lib/panelview/story-maps/components/StorySubtitleSection.d.ts +11 -0
- package/lib/panelview/story-maps/components/StorySubtitleSection.js +9 -0
- package/lib/panelview/story-maps/components/StoryTitleSection.d.ts +12 -0
- package/lib/panelview/story-maps/components/StoryTitleSection.js +8 -0
- package/lib/shared/components/Combobox.d.ts +21 -0
- package/lib/shared/components/Combobox.js +32 -0
- package/lib/shared/components/Command.js +10 -10
- package/lib/shared/components/Input.d.ts +3 -0
- package/lib/shared/components/Input.js +18 -0
- package/lib/shared/components/Pagination.js +3 -2
- package/lib/shared/components/Select.d.ts +19 -0
- package/lib/shared/components/Select.js +28 -0
- package/lib/shared/components/SingleDatePicker.d.ts +11 -0
- package/lib/shared/components/SingleDatePicker.js +16 -0
- package/lib/stacBrowser/components/StacPanel.d.ts +9 -1
- package/lib/stacBrowser/components/StacPanel.js +53 -9
- package/lib/stacBrowser/components/filter-extension/QueryableComboBox.d.ts +9 -0
- package/lib/stacBrowser/components/filter-extension/QueryableComboBox.js +179 -0
- package/lib/stacBrowser/components/filter-extension/QueryableRow.d.ts +16 -0
- package/lib/stacBrowser/components/filter-extension/QueryableRow.js +16 -0
- package/lib/stacBrowser/components/filter-extension/StacFilterExtensionPanel.d.ts +7 -0
- package/lib/stacBrowser/components/filter-extension/StacFilterExtensionPanel.js +49 -0
- package/lib/stacBrowser/components/filter-extension/StacQueryableFilters.d.ts +11 -0
- package/lib/stacBrowser/components/filter-extension/StacQueryableFilters.js +19 -0
- package/lib/stacBrowser/components/{StacFilterSection.d.ts → geodes/StacFilterSection.d.ts} +1 -1
- package/lib/stacBrowser/components/{StacFilterSection.js → geodes/StacFilterSection.js} +3 -3
- package/lib/stacBrowser/components/geodes/StacGeodesFilterPanel.d.ts +7 -0
- package/lib/stacBrowser/components/geodes/StacGeodesFilterPanel.js +69 -0
- package/lib/stacBrowser/components/shared/StacPanelResults.d.ts +3 -0
- package/lib/stacBrowser/components/shared/StacPanelResults.js +68 -0
- package/lib/stacBrowser/components/shared/StacSpatialExtent.d.ts +8 -0
- package/lib/stacBrowser/components/shared/StacSpatialExtent.js +10 -0
- package/lib/stacBrowser/components/shared/StacTemporalExtent.d.ts +9 -0
- package/lib/stacBrowser/components/shared/StacTemporalExtent.js +9 -0
- package/lib/stacBrowser/context/StacResultsContext.d.ts +33 -0
- package/lib/stacBrowser/context/StacResultsContext.js +269 -0
- package/lib/stacBrowser/hooks/useGeodesSearch.d.ts +24 -0
- package/lib/stacBrowser/hooks/useGeodesSearch.js +178 -0
- package/lib/stacBrowser/hooks/useStacFilterExtension.d.ts +30 -0
- package/lib/stacBrowser/hooks/useStacFilterExtension.js +262 -0
- package/lib/stacBrowser/hooks/useStacSearch.d.ts +5 -16
- package/lib/stacBrowser/hooks/useStacSearch.js +30 -184
- package/lib/stacBrowser/types/types.d.ts +86 -3
- package/lib/toolbar/widget.d.ts +5 -0
- package/lib/toolbar/widget.js +23 -2
- package/lib/tools.d.ts +2 -8
- package/lib/tools.js +67 -18
- package/package.json +2 -3
- package/style/base.css +54 -11
- package/style/shared/button.css +5 -4
- package/style/shared/calendar.css +7 -1
- package/style/shared/combobox.css +75 -0
- package/style/shared/command.css +178 -0
- package/style/shared/input.css +59 -0
- package/style/shared/pagination.css +1 -1
- package/style/shared/popover.css +1 -0
- package/style/shared/tabs.css +1 -7
- package/style/shared/toggle.css +1 -1
- package/style/stacBrowser.css +169 -16
- package/style/statusBar.css +1 -0
- package/style/storyPanel.css +122 -3
- package/style/tabPanel.css +0 -86
- package/lib/panelview/components/story-maps/StoryEditorPanel.d.ts +0 -7
- package/lib/panelview/components/story-maps/StoryEditorPanel.js +0 -29
- package/lib/panelview/components/story-maps/StoryViewerPanel.d.ts +0 -7
- package/lib/stacBrowser/components/StacPanelFilters.d.ts +0 -14
- package/lib/stacBrowser/components/StacPanelFilters.js +0 -81
- package/lib/stacBrowser/components/StacPanelResults.d.ts +0 -13
- package/lib/stacBrowser/components/StacPanelResults.js +0 -48
- /package/lib/panelview/{components/filter-panel → filter-panel}/Filter.d.ts +0 -0
- /package/lib/panelview/{components/filter-panel → filter-panel}/FilterRow.d.ts +0 -0
- /package/lib/panelview/{components/filter-panel → filter-panel}/FilterRow.js +0 -0
- /package/lib/panelview/{components/identify-panel → identify-panel}/IdentifyPanel.d.ts +0 -0
- /package/lib/panelview/{components/identify-panel → identify-panel}/IdentifyPanel.js +0 -0
- /package/lib/panelview/{components/story-maps → story-maps}/PreviewModeSwitch.d.ts +0 -0
package/lib/toolbar/widget.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare class Separator extends Widget {
|
|
|
13
13
|
export declare class ToolbarWidget extends ReactiveToolbar {
|
|
14
14
|
private _model;
|
|
15
15
|
private _newSubMenu;
|
|
16
|
+
private _hasSetSpectaVisibility;
|
|
16
17
|
constructor(options: ToolbarWidget.IOptions);
|
|
17
18
|
/**
|
|
18
19
|
* Updates the story segment menu item based on settings
|
|
@@ -22,6 +23,10 @@ export declare class ToolbarWidget extends ReactiveToolbar {
|
|
|
22
23
|
* Handles settings changes
|
|
23
24
|
*/
|
|
24
25
|
private _onSettingsChanged;
|
|
26
|
+
/**
|
|
27
|
+
* Handles story changes to update Specta mode visibility
|
|
28
|
+
*/
|
|
29
|
+
private _onSpectaModeChanged;
|
|
25
30
|
dispose(): void;
|
|
26
31
|
}
|
|
27
32
|
export declare namespace ToolbarWidget {
|
package/lib/toolbar/widget.js
CHANGED
|
@@ -40,6 +40,7 @@ export class ToolbarWidget extends ReactiveToolbar {
|
|
|
40
40
|
constructor(options) {
|
|
41
41
|
super();
|
|
42
42
|
this._newSubMenu = null;
|
|
43
|
+
this._hasSetSpectaVisibility = false;
|
|
43
44
|
/**
|
|
44
45
|
* Handles settings changes
|
|
45
46
|
*/
|
|
@@ -48,8 +49,22 @@ export class ToolbarWidget extends ReactiveToolbar {
|
|
|
48
49
|
this._updateStorySegmentMenuItem();
|
|
49
50
|
}
|
|
50
51
|
};
|
|
52
|
+
/**
|
|
53
|
+
* Handles story changes to update Specta mode visibility
|
|
54
|
+
*/
|
|
55
|
+
this._onSpectaModeChanged = (args) => {
|
|
56
|
+
if (!this._hasSetSpectaVisibility) {
|
|
57
|
+
this.setHidden(this._model.isSpectaMode());
|
|
58
|
+
this._hasSetSpectaVisibility = true;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
51
61
|
this._model = options.model;
|
|
52
62
|
this.addClass('jGIS-toolbar-widget');
|
|
63
|
+
// Listen for settings changes
|
|
64
|
+
this._model.settingsChanged.connect(this._onSettingsChanged, this);
|
|
65
|
+
// Listen for options change because it's the dependable signal
|
|
66
|
+
// Update Specta mode visibility
|
|
67
|
+
this._model.sharedModel.optionsChanged.connect(this._onSpectaModeChanged, this);
|
|
53
68
|
if (options.commands) {
|
|
54
69
|
const openLayersBrowserButton = new CommandToolbarButton({
|
|
55
70
|
id: CommandIDs.openLayerBrowser,
|
|
@@ -70,8 +85,6 @@ export class ToolbarWidget extends ReactiveToolbar {
|
|
|
70
85
|
submenu: vectorSubMenu(options.commands),
|
|
71
86
|
});
|
|
72
87
|
this._updateStorySegmentMenuItem();
|
|
73
|
-
// Listen for settings changes
|
|
74
|
-
this._model.settingsChanged.connect(this._onSettingsChanged, this);
|
|
75
88
|
const NewEntryButton = new ToolbarButton({
|
|
76
89
|
icon: addIcon,
|
|
77
90
|
noFocusOnClick: false,
|
|
@@ -115,6 +128,13 @@ export class ToolbarWidget extends ReactiveToolbar {
|
|
|
115
128
|
});
|
|
116
129
|
this.addItem('addMarker', addMarkerButton);
|
|
117
130
|
addMarkerButton.node.dataset.testid = 'add-marker-controller-button';
|
|
131
|
+
const storyModePresentationToggleButton = new CommandToolbarButton({
|
|
132
|
+
id: CommandIDs.toggleStoryPresentationMode,
|
|
133
|
+
label: '',
|
|
134
|
+
commands: options.commands,
|
|
135
|
+
});
|
|
136
|
+
this.addItem('toggleStoryPresentationMode', storyModePresentationToggleButton);
|
|
137
|
+
identifyButton.node.dataset.testid = 'toggleStoryPresentationMode-button';
|
|
118
138
|
this.addItem('separator2', new Separator());
|
|
119
139
|
const toggleConsoleButton = new CommandToolbarButton({
|
|
120
140
|
id: CommandIDs.toggleConsole,
|
|
@@ -163,6 +183,7 @@ export class ToolbarWidget extends ReactiveToolbar {
|
|
|
163
183
|
dispose() {
|
|
164
184
|
if (this._model) {
|
|
165
185
|
this._model.settingsChanged.disconnect(this._onSettingsChanged, this);
|
|
186
|
+
this._model.sharedModel.storyMapsChanged.disconnect(this._onSpectaModeChanged, this);
|
|
166
187
|
}
|
|
167
188
|
super.dispose();
|
|
168
189
|
}
|
package/lib/tools.d.ts
CHANGED
|
@@ -5,7 +5,8 @@ export declare const debounce: (func: CallableFunction, timeout?: number) => Cal
|
|
|
5
5
|
export declare function throttle<T extends (...args: any[]) => void>(callback: T, delay?: number): T;
|
|
6
6
|
export declare function getElementFromProperty(filePath?: string | null, prop?: string | null): HTMLElement | undefined | null;
|
|
7
7
|
export declare function nearest(n: number, tol: number): number;
|
|
8
|
-
|
|
8
|
+
/** Read a CSS variable from the document root and return the value. */
|
|
9
|
+
export declare function getCssVarAsColor(cssVar: string): string;
|
|
9
10
|
/**
|
|
10
11
|
* Call the API extension
|
|
11
12
|
*
|
|
@@ -109,13 +110,6 @@ export declare const MIME_TYPES: {
|
|
|
109
110
|
* @returns A string representing the MIME type.
|
|
110
111
|
*/
|
|
111
112
|
export declare const getMimeType: (filename: string) => string;
|
|
112
|
-
/**
|
|
113
|
-
* Helper to convert a string (base64) to ArrayBuffer.
|
|
114
|
-
*
|
|
115
|
-
* @param content - File content as a base64 string.
|
|
116
|
-
* @returns An ArrayBuffer.
|
|
117
|
-
*/
|
|
118
|
-
export declare const stringToArrayBuffer: (content: string) => Promise<ArrayBuffer>;
|
|
119
113
|
export declare const getFeatureAttributes: <T>(featureProperties: Record<string, Set<any>>, predicate?: (key: string, value: any) => boolean) => Record<string, Set<T>>;
|
|
120
114
|
/**
|
|
121
115
|
* Get attributes of the feature which are numeric.
|
package/lib/tools.js
CHANGED
|
@@ -2,7 +2,6 @@ import { showErrorMessage } from '@jupyterlab/apputils';
|
|
|
2
2
|
import { PathExt, URLExt } from '@jupyterlab/coreutils';
|
|
3
3
|
import { ServerConnection } from '@jupyterlab/services';
|
|
4
4
|
import { VectorTile } from '@mapbox/vector-tile';
|
|
5
|
-
import * as d3Color from 'd3-color';
|
|
6
5
|
import { compressors } from 'hyparquet-compressors';
|
|
7
6
|
import Protobuf from 'pbf';
|
|
8
7
|
import shp from 'shpjs';
|
|
@@ -53,9 +52,18 @@ export function nearest(n, tol) {
|
|
|
53
52
|
return n;
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
/** Read a CSS variable from the document root and return the value. */
|
|
56
|
+
export function getCssVarAsColor(cssVar) {
|
|
57
|
+
if (typeof document === 'undefined') {
|
|
58
|
+
return '';
|
|
59
|
+
}
|
|
60
|
+
const value = getComputedStyle(document.documentElement)
|
|
61
|
+
.getPropertyValue(cssVar)
|
|
62
|
+
.trim();
|
|
63
|
+
if (!value) {
|
|
64
|
+
return '';
|
|
65
|
+
}
|
|
66
|
+
return value;
|
|
59
67
|
}
|
|
60
68
|
/**
|
|
61
69
|
* Call the API extension
|
|
@@ -449,17 +457,40 @@ export const loadFile = async (fileInfo) => {
|
|
|
449
457
|
}
|
|
450
458
|
switch (type) {
|
|
451
459
|
case 'GeoJSONSource': {
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
460
|
+
switch (file.format) {
|
|
461
|
+
case 'base64': {
|
|
462
|
+
return JSON.parse(atob(file.content));
|
|
463
|
+
}
|
|
464
|
+
case 'text': {
|
|
465
|
+
return JSON.parse(file.content);
|
|
466
|
+
}
|
|
467
|
+
case 'json': {
|
|
468
|
+
return file.content;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
break;
|
|
455
472
|
}
|
|
456
473
|
case 'ShapefileSource': {
|
|
457
|
-
|
|
458
|
-
|
|
474
|
+
let buffer;
|
|
475
|
+
switch (file.format) {
|
|
476
|
+
case 'base64': {
|
|
477
|
+
buffer = await base64ToArrayBuffer(file.content);
|
|
478
|
+
break;
|
|
479
|
+
}
|
|
480
|
+
case 'text': {
|
|
481
|
+
buffer = await stringToArrayBuffer(file.content);
|
|
482
|
+
break;
|
|
483
|
+
}
|
|
484
|
+
case 'json':
|
|
485
|
+
default: {
|
|
486
|
+
throw new Error(`Invalid Shapefile format: ${file.format}.`);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
const geojson = await shp(buffer);
|
|
459
490
|
return geojson;
|
|
460
491
|
}
|
|
461
492
|
case 'ImageSource': {
|
|
462
|
-
if (
|
|
493
|
+
if (file.format === 'base64') {
|
|
463
494
|
const mimeType = getMimeType(filepath);
|
|
464
495
|
if (!mimeType.startsWith('image/')) {
|
|
465
496
|
throw new Error(`Invalid image file. MIME type: ${mimeType}`);
|
|
@@ -488,14 +519,23 @@ export const loadFile = async (fileInfo) => {
|
|
|
488
519
|
}
|
|
489
520
|
}
|
|
490
521
|
case 'GeoParquetSource': {
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
522
|
+
let buffer;
|
|
523
|
+
switch (file.format) {
|
|
524
|
+
case 'base64': {
|
|
525
|
+
buffer = await base64ToArrayBuffer(file.content);
|
|
526
|
+
break;
|
|
527
|
+
}
|
|
528
|
+
case 'text': {
|
|
529
|
+
buffer = await stringToArrayBuffer(file.content);
|
|
530
|
+
break;
|
|
531
|
+
}
|
|
532
|
+
case 'json':
|
|
533
|
+
default: {
|
|
534
|
+
throw new Error(`Invalid Geoparquet format: ${file.format}.`);
|
|
535
|
+
}
|
|
498
536
|
}
|
|
537
|
+
const { toGeoJson } = await import('geoparquet');
|
|
538
|
+
return await toGeoJson({ file: buffer, compressors });
|
|
499
539
|
}
|
|
500
540
|
default: {
|
|
501
541
|
throw new Error(`Unsupported source type: ${type}`);
|
|
@@ -697,10 +737,19 @@ export const getMimeType = (filename) => {
|
|
|
697
737
|
* @param content - File content as a base64 string.
|
|
698
738
|
* @returns An ArrayBuffer.
|
|
699
739
|
*/
|
|
700
|
-
|
|
740
|
+
const base64ToArrayBuffer = async (content) => {
|
|
701
741
|
const base64Response = await fetch(`data:application/octet-stream;base64,${content}`);
|
|
702
742
|
return await base64Response.arrayBuffer();
|
|
703
743
|
};
|
|
744
|
+
/**
|
|
745
|
+
* Helper to convert a raw string to ArrayBuffer.
|
|
746
|
+
*
|
|
747
|
+
* @param content - Raw string content.
|
|
748
|
+
* @returns An ArrayBuffer.
|
|
749
|
+
*/
|
|
750
|
+
const stringToArrayBuffer = async (content) => {
|
|
751
|
+
return new TextEncoder().encode(content).buffer;
|
|
752
|
+
};
|
|
704
753
|
export const getFeatureAttributes = (featureProperties, predicate = (key, value) => true) => {
|
|
705
754
|
const filteredRecord = {};
|
|
706
755
|
for (const [key, set] of Object.entries(featureProperties)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupytergis/base",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"description": "A JupyterLab extension for 3D modelling.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jupyter",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@jupyter/collaboration": "^4",
|
|
45
45
|
"@jupyter/react-components": "^0.16.6",
|
|
46
46
|
"@jupyter/ydoc": "^2.0.0 || ^3.0.0",
|
|
47
|
-
"@jupytergis/schema": "^0.
|
|
47
|
+
"@jupytergis/schema": "^0.12.1",
|
|
48
48
|
"@jupyterlab/application": "^4.3.0",
|
|
49
49
|
"@jupyterlab/apputils": "^4.3.0",
|
|
50
50
|
"@jupyterlab/completer": "^4.3.0",
|
|
@@ -80,7 +80,6 @@
|
|
|
80
80
|
"clsx": "^2.1.1",
|
|
81
81
|
"cmdk": "^1.1.1",
|
|
82
82
|
"colormap": "^2.3.2",
|
|
83
|
-
"d3-color": "^3.1.0",
|
|
84
83
|
"date-fns": "^4.1.0",
|
|
85
84
|
"gdal3.js": "^2.8.1",
|
|
86
85
|
"geojson-vt": "^4.0.2",
|
package/style/base.css
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
| Distributed under the terms of the Modified BSD License.
|
|
4
4
|
|---------------------------------------------------------------------------- */
|
|
5
5
|
|
|
6
|
+
@import url('ol/ol.css');
|
|
6
7
|
@import url('./dialog.css');
|
|
7
8
|
@import url('./layerBrowser.css');
|
|
8
9
|
@import url('./leftPanel.css');
|
|
@@ -11,8 +12,8 @@
|
|
|
11
12
|
@import url('./statusBar.css');
|
|
12
13
|
@import url('./temporalSlider.css');
|
|
13
14
|
@import url('./tabPanel.css');
|
|
15
|
+
@import url('./stacBrowser.css');
|
|
14
16
|
@import url('./storyPanel.css');
|
|
15
|
-
@import url('ol/ol.css');
|
|
16
17
|
@import url('./shared/button.css');
|
|
17
18
|
@import url('./shared/toggle.css');
|
|
18
19
|
@import url('./shared/tabs.css');
|
|
@@ -24,6 +25,10 @@
|
|
|
24
25
|
@import url('./shared/radioGroup.css');
|
|
25
26
|
@import url('./shared/dialog.css');
|
|
26
27
|
@import url('./shared/switch.css');
|
|
28
|
+
@import url('./shared/popover.css');
|
|
29
|
+
@import url('./shared/command.css');
|
|
30
|
+
@import url('./shared/combobox.css');
|
|
31
|
+
@import url('./shared/input.css');
|
|
27
32
|
|
|
28
33
|
.errors {
|
|
29
34
|
color: var(--jp-warn-color0);
|
|
@@ -90,22 +95,60 @@ button.jp-mod-styled.jp-mod-reject {
|
|
|
90
95
|
border-width: 0;
|
|
91
96
|
}
|
|
92
97
|
|
|
93
|
-
.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
right: 0px;
|
|
98
|
+
/* Height constrained to 0.5rem less than .jGIS-Mainview-Container */
|
|
99
|
+
.jgis-right-panel-container,
|
|
100
|
+
.jgis-left-panel-container {
|
|
97
101
|
position: absolute;
|
|
98
|
-
margin:
|
|
102
|
+
margin: 0.25rem;
|
|
99
103
|
z-index: 40;
|
|
104
|
+
max-height: calc(100% - 0.5rem);
|
|
105
|
+
overflow-y: auto;
|
|
106
|
+
border-radius: 8px;
|
|
107
|
+
box-shadow:
|
|
108
|
+
0 4px 8px 0 rgba(0, 0, 0, 0.2),
|
|
109
|
+
0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.jgis-right-panel-container {
|
|
113
|
+
width: 330px;
|
|
114
|
+
right: 0;
|
|
100
115
|
}
|
|
101
116
|
|
|
102
117
|
.jgis-left-panel-container {
|
|
103
|
-
position: absolute;
|
|
104
118
|
width: 250px;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
119
|
+
left: 0;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.jgis-icon-adjust {
|
|
123
|
+
padding-top: 5px;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.jgis-controls-toolbar {
|
|
127
|
+
width: 100%;
|
|
128
|
+
display: flex;
|
|
129
|
+
justify-content: flex-start;
|
|
130
|
+
align-items: flex-end;
|
|
131
|
+
gap: 0.5rem;
|
|
132
|
+
position: absolute;
|
|
133
|
+
bottom: 0.125rem;
|
|
134
|
+
z-index: 1000;
|
|
135
|
+
padding: 0 0.125rem;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.jgis-controls-toolbar .ol-control,
|
|
139
|
+
.jgis-controls-toolbar .ol-scale-line,
|
|
140
|
+
.jgis-controls-toolbar .ol-full-screen {
|
|
141
|
+
position: relative;
|
|
142
|
+
top: unset;
|
|
143
|
+
bottom: unset;
|
|
144
|
+
left: unset;
|
|
145
|
+
right: unset;
|
|
146
|
+
margin: 0;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.jgis-controls-toolbar .ol-zoom {
|
|
150
|
+
position: fixed;
|
|
151
|
+
right: 0.125rem;
|
|
109
152
|
}
|
|
110
153
|
|
|
111
154
|
@media (max-width: 768px) {
|
package/style/shared/button.css
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
.jgis-button {
|
|
2
|
+
box-sizing: border-box;
|
|
2
3
|
display: inline-flex;
|
|
3
4
|
align-items: center;
|
|
4
5
|
justify-content: center;
|
|
5
6
|
white-space: nowrap;
|
|
6
|
-
border-radius: 0.375rem;
|
|
7
|
+
border-radius: var(--jp-border-radius, 0.375rem);
|
|
7
8
|
font-size: 0.875rem;
|
|
8
9
|
font-weight: 600;
|
|
9
10
|
outline: none;
|
|
@@ -12,7 +13,7 @@
|
|
|
12
13
|
border: 0.0375rem solid
|
|
13
14
|
color-mix(in srgb, var(--jp-border-color1), transparent 20%);
|
|
14
15
|
transition: background-color 0.2s ease;
|
|
15
|
-
height: 2.
|
|
16
|
+
height: 2.25rem;
|
|
16
17
|
padding-left: 1rem;
|
|
17
18
|
padding-right: 1rem;
|
|
18
19
|
padding-top: 0.5rem;
|
|
@@ -146,14 +147,14 @@
|
|
|
146
147
|
/* sizing */
|
|
147
148
|
.jgis-button[data-size='sm'] {
|
|
148
149
|
height: 2.25rem;
|
|
149
|
-
border-radius: 0.375rem;
|
|
150
|
+
border-radius: var(--jp-border-radius, 0.375rem);
|
|
150
151
|
padding-left: 0.75rem;
|
|
151
152
|
padding-right: 0.75rem;
|
|
152
153
|
}
|
|
153
154
|
|
|
154
155
|
.jgis-button[data-size='lg'] {
|
|
155
156
|
height: 2.75rem;
|
|
156
|
-
border-radius: 0.375rem;
|
|
157
|
+
border-radius: var(--jp-border-radius, 0.375rem);
|
|
157
158
|
padding-left: 2rem;
|
|
158
159
|
padding-right: 2rem;
|
|
159
160
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.jgis-calendar-container {
|
|
2
2
|
padding: 0.75rem;
|
|
3
3
|
background-color: var(--jp-layout-color2);
|
|
4
|
-
border: 1px solid var(--jp-
|
|
4
|
+
border: 1px solid var(--jp-border-color0);
|
|
5
5
|
border-radius: var(--jp-border-radius);
|
|
6
6
|
}
|
|
7
7
|
|
|
@@ -272,3 +272,9 @@
|
|
|
272
272
|
height: 2.5rem;
|
|
273
273
|
align-items: center;
|
|
274
274
|
}
|
|
275
|
+
|
|
276
|
+
/* Unset width and border when popover contains calendar */
|
|
277
|
+
.jgis-popover-content:has(> .jgis-calendar-container) {
|
|
278
|
+
width: unset;
|
|
279
|
+
border: unset;
|
|
280
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/* Shared base styles for Select and Combobox buttons */
|
|
2
|
+
/* More specific selector to override button base styles */
|
|
3
|
+
.jgis-button.jgis-combobox-button,
|
|
4
|
+
.jgis-button.jgis-select-button {
|
|
5
|
+
display: flex;
|
|
6
|
+
justify-content: space-between;
|
|
7
|
+
align-items: center;
|
|
8
|
+
white-space: preserve-breaks;
|
|
9
|
+
padding: 1rem 0.5rem;
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
border-radius: var(--jp-border-radius, 0.375rem);
|
|
12
|
+
border: 1px solid var(--jp-border-color0);
|
|
13
|
+
background-color: var(--jp-layout-color0);
|
|
14
|
+
color: var(--jp-ui-font-color0);
|
|
15
|
+
font-size: 0.875rem;
|
|
16
|
+
/* min-height: 1.125rem; */
|
|
17
|
+
height: 1.5rem;
|
|
18
|
+
max-width: none;
|
|
19
|
+
gap: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.jgis-combobox-button-text,
|
|
23
|
+
.jgis-select-button-text {
|
|
24
|
+
flex: 1;
|
|
25
|
+
min-width: 0;
|
|
26
|
+
overflow-wrap: break-word;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.jgis-combobox-icon,
|
|
30
|
+
.jgis-select-icon {
|
|
31
|
+
margin-left: 0.5rem;
|
|
32
|
+
margin-top: 0.125rem;
|
|
33
|
+
height: 1rem;
|
|
34
|
+
width: 1rem;
|
|
35
|
+
flex-shrink: 0;
|
|
36
|
+
opacity: 0.5;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Shared Popover styles */
|
|
40
|
+
.jgis-combobox-popover,
|
|
41
|
+
.jgis-select-popover {
|
|
42
|
+
width: 200px;
|
|
43
|
+
padding: 0;
|
|
44
|
+
border-radius: var(--jp-border-radius, 0.375rem);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* Check icon for Combobox (multi-select) */
|
|
48
|
+
.jgis-combobox-check-icon {
|
|
49
|
+
margin-right: 0.5rem;
|
|
50
|
+
height: 1rem;
|
|
51
|
+
width: 1rem;
|
|
52
|
+
flex-shrink: 0;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Modifier classes - use higher specificity to override base */
|
|
56
|
+
.jgis-button.jgis-combobox-button--full-width,
|
|
57
|
+
.jgis-button.jgis-select-button--full-width {
|
|
58
|
+
width: 100%;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.jgis-button.jgis-combobox-button--max-width-200,
|
|
62
|
+
.jgis-button.jgis-select-button--max-width-200 {
|
|
63
|
+
max-width: 200px;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.jgis-button.jgis-combobox-button--no-radius,
|
|
67
|
+
.jgis-button.jgis-select-button--no-radius {
|
|
68
|
+
border-radius: 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.jgis-button.jgis-combobox-button--queryable-input,
|
|
72
|
+
.jgis-button.jgis-select-button--queryable-input {
|
|
73
|
+
padding: 0.25rem 1rem;
|
|
74
|
+
border-radius: 0;
|
|
75
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/* Command Root */
|
|
2
|
+
.jgis-command {
|
|
3
|
+
display: flex;
|
|
4
|
+
height: 100%;
|
|
5
|
+
width: 100%;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
border-radius: 0.375rem;
|
|
9
|
+
background-color: var(--jp-layout-color0);
|
|
10
|
+
color: var(--jp-ui-font-color0);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* Command Dialog specific styles */
|
|
14
|
+
.jgis-command [cmdk-group-heading] {
|
|
15
|
+
color: var(--jp-ui-font-color2);
|
|
16
|
+
padding: 0 0.5rem;
|
|
17
|
+
font-weight: 500;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.jgis-command [data-slot='command-input-wrapper'] {
|
|
21
|
+
height: 3rem;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.jgis-command [cmdk-group] {
|
|
25
|
+
padding: 0 0.5rem;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.jgis-command [cmdk-group]:not([hidden]) ~ [cmdk-group] {
|
|
29
|
+
padding-top: 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.jgis-command [cmdk-input-wrapper] svg {
|
|
33
|
+
height: 1.25rem;
|
|
34
|
+
width: 1.25rem;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.jgis-command [cmdk-input] {
|
|
38
|
+
height: 1.5rem;
|
|
39
|
+
box-sizing: border-box;
|
|
40
|
+
padding: 1rem 0.5rem;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.jgis-command [cmdk-item] {
|
|
44
|
+
padding: 0 0.5rem;
|
|
45
|
+
padding-top: 0.75rem;
|
|
46
|
+
padding-bottom: 0.75rem;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.jgis-command [cmdk-item] svg {
|
|
50
|
+
height: 1.25rem;
|
|
51
|
+
width: 1.25rem;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Command Input Wrapper */
|
|
55
|
+
.jgis-command-input-wrapper {
|
|
56
|
+
display: flex;
|
|
57
|
+
height: 2.25rem;
|
|
58
|
+
align-items: center;
|
|
59
|
+
gap: 0.5rem;
|
|
60
|
+
border-bottom: 1px solid var(--jp-border-color0);
|
|
61
|
+
padding: 0.25rem 0.75rem;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.jgis-command-input-wrapper .size-4 {
|
|
65
|
+
width: 1rem;
|
|
66
|
+
height: 1rem;
|
|
67
|
+
flex-shrink: 0;
|
|
68
|
+
opacity: 0.5;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Command Input */
|
|
72
|
+
.jgis-command-input {
|
|
73
|
+
display: flex;
|
|
74
|
+
height: 1rem;
|
|
75
|
+
width: 100%;
|
|
76
|
+
border-radius: 0.375rem;
|
|
77
|
+
background-color: transparent;
|
|
78
|
+
padding-top: 0.75rem;
|
|
79
|
+
padding-bottom: 0.75rem;
|
|
80
|
+
font-size: 0.875rem;
|
|
81
|
+
outline: none;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.jgis-command-input::placeholder {
|
|
85
|
+
color: var(--jp-ui-font-color2);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.jgis-command-input:disabled {
|
|
89
|
+
cursor: not-allowed;
|
|
90
|
+
opacity: 0.5;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* Command List */
|
|
94
|
+
.jgis-command-list {
|
|
95
|
+
max-height: 300px;
|
|
96
|
+
scroll-padding: 0.25rem 0;
|
|
97
|
+
overflow-x: hidden;
|
|
98
|
+
overflow-y: auto;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Command Empty */
|
|
102
|
+
.jgis-command-empty {
|
|
103
|
+
padding-top: 1.5rem;
|
|
104
|
+
padding-bottom: 1.5rem;
|
|
105
|
+
text-align: center;
|
|
106
|
+
font-size: 0.875rem;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* Command Group */
|
|
110
|
+
.jgis-command-group {
|
|
111
|
+
color: var(--jp-ui-font-color0);
|
|
112
|
+
overflow: hidden;
|
|
113
|
+
padding: 0.25rem;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.jgis-command-group [cmdk-group-heading] {
|
|
117
|
+
color: var(--jp-ui-font-color2);
|
|
118
|
+
padding: 0 0.5rem;
|
|
119
|
+
padding-top: 0.375rem;
|
|
120
|
+
padding-bottom: 0.375rem;
|
|
121
|
+
font-size: 0.75rem;
|
|
122
|
+
font-weight: 500;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Command Separator */
|
|
126
|
+
.jgis-command-separator {
|
|
127
|
+
background-color: var(--jp-border-color0);
|
|
128
|
+
margin: 0 -0.25rem;
|
|
129
|
+
height: 1px;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Command Item */
|
|
133
|
+
.jgis-command-item {
|
|
134
|
+
position: relative;
|
|
135
|
+
display: flex;
|
|
136
|
+
cursor: default;
|
|
137
|
+
align-items: center;
|
|
138
|
+
gap: 0.5rem;
|
|
139
|
+
border-radius: 0.125rem;
|
|
140
|
+
padding: 0 0.5rem;
|
|
141
|
+
padding-top: 0.375rem;
|
|
142
|
+
padding-bottom: 0.375rem;
|
|
143
|
+
font-size: 0.875rem;
|
|
144
|
+
outline: none;
|
|
145
|
+
user-select: none;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.jgis-command-item[data-selected='true'] {
|
|
149
|
+
background-color: var(--jp-layout-color1);
|
|
150
|
+
color: var(--jp-ui-font-color0);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.jgis-command-item svg:not([class*='text-']) {
|
|
154
|
+
color: var(--jp-ui-font-color2);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.jgis-command-item svg {
|
|
158
|
+
pointer-events: none;
|
|
159
|
+
flex-shrink: 0;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.jgis-command-item svg:not([class*='size-']) {
|
|
163
|
+
width: 1rem;
|
|
164
|
+
height: 1rem;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.jgis-command-item[data-disabled='true'] {
|
|
168
|
+
pointer-events: none;
|
|
169
|
+
opacity: 0.5;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* Command Shortcut */
|
|
173
|
+
.jgis-command-shortcut {
|
|
174
|
+
color: var(--jp-ui-font-color2);
|
|
175
|
+
margin-left: auto;
|
|
176
|
+
font-size: 0.75rem;
|
|
177
|
+
letter-spacing: 0.1em;
|
|
178
|
+
}
|