@jupytergis/base 0.13.2 → 0.14.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.
- package/lib/commands/BaseCommandIDs.d.ts +14 -13
- package/lib/commands/BaseCommandIDs.js +14 -14
- package/lib/commands/index.js +528 -130
- package/lib/commands/operationCommands.d.ts +22 -0
- package/lib/commands/operationCommands.js +305 -0
- package/lib/constants.js +11 -9
- package/lib/dialogs/ProcessingFormDialog.d.ts +1 -1
- package/lib/dialogs/ProcessingFormDialog.js +2 -2
- package/lib/dialogs/layerBrowserDialog.d.ts +2 -0
- package/lib/dialogs/layerBrowserDialog.js +12 -5
- package/lib/dialogs/layerCreationFormDialog.d.ts +7 -0
- package/lib/dialogs/layerCreationFormDialog.js +10 -2
- package/lib/dialogs/symbology/components/color_ramp/ColorRampControls.d.ts +2 -1
- package/lib/dialogs/symbology/components/color_ramp/ColorRampControls.js +21 -19
- package/lib/dialogs/symbology/components/color_ramp/ColorRampSelector.d.ts +3 -1
- package/lib/dialogs/symbology/components/color_ramp/ColorRampSelector.js +13 -5
- package/lib/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.js +6 -4
- package/lib/dialogs/symbology/vector_layer/types/Categorized.js +7 -11
- package/lib/dialogs/symbology/vector_layer/types/Graduated.js +7 -10
- package/lib/dialogs/symbology/vector_layer/types/Heatmap.js +7 -8
- package/lib/formbuilder/creationform.d.ts +8 -8
- package/lib/formbuilder/creationform.js +130 -85
- package/lib/formbuilder/editform.d.ts +1 -7
- package/lib/formbuilder/editform.js +64 -52
- package/lib/formbuilder/formselectors.d.ts +5 -4
- package/lib/formbuilder/index.d.ts +1 -1
- package/lib/formbuilder/index.js +1 -1
- package/lib/formbuilder/objectform/SchemaForm.d.ts +36 -0
- package/lib/formbuilder/objectform/SchemaForm.js +77 -0
- package/lib/formbuilder/objectform/StoryEditorForm.d.ts +3 -9
- package/lib/formbuilder/objectform/StoryEditorForm.js +20 -14
- package/lib/formbuilder/objectform/components/LayerSelect.js +3 -8
- package/lib/formbuilder/objectform/components/SegmentFormSymbology.js +23 -10
- package/lib/formbuilder/objectform/components/SourcePropertiesField.d.ts +7 -0
- package/lib/formbuilder/objectform/components/SourcePropertiesField.js +29 -0
- package/lib/formbuilder/objectform/components/StorySegmentReset.js +1 -1
- package/lib/formbuilder/objectform/fileselectorwidget.js +1 -1
- package/lib/formbuilder/objectform/layer/heatmapLayerForm.d.ts +3 -12
- package/lib/formbuilder/objectform/layer/heatmapLayerForm.js +87 -55
- package/lib/formbuilder/objectform/layer/hillshadeLayerForm.d.ts +3 -8
- package/lib/formbuilder/objectform/layer/hillshadeLayerForm.js +36 -10
- package/lib/formbuilder/objectform/layer/layerform.d.ts +7 -9
- package/lib/formbuilder/objectform/layer/layerform.js +33 -20
- package/lib/formbuilder/objectform/layer/storySegmentLayerForm.d.ts +3 -5
- package/lib/formbuilder/objectform/layer/storySegmentLayerForm.js +73 -29
- package/lib/formbuilder/objectform/layer/vectorlayerform.d.ts +3 -14
- package/lib/formbuilder/objectform/layer/vectorlayerform.js +36 -29
- package/lib/formbuilder/objectform/layer/webGlLayerForm.d.ts +3 -10
- package/lib/formbuilder/objectform/layer/webGlLayerForm.js +37 -13
- package/lib/formbuilder/objectform/process/dissolveProcessForm.d.ts +8 -18
- package/lib/formbuilder/objectform/process/dissolveProcessForm.js +68 -56
- package/lib/formbuilder/objectform/processingForm.d.ts +12 -0
- package/lib/formbuilder/objectform/processingForm.js +33 -0
- package/lib/formbuilder/objectform/schemaUtils.d.ts +16 -0
- package/lib/formbuilder/objectform/schemaUtils.js +59 -0
- package/lib/formbuilder/objectform/source/geojsonsource.d.ts +3 -19
- package/lib/formbuilder/objectform/source/geojsonsource.js +94 -53
- package/lib/formbuilder/objectform/source/geotiffsource.d.ts +3 -20
- package/lib/formbuilder/objectform/source/geotiffsource.js +73 -74
- package/lib/formbuilder/objectform/source/pathbasedsource.d.ts +3 -19
- package/lib/formbuilder/objectform/source/pathbasedsource.js +76 -75
- package/lib/formbuilder/objectform/source/sourceform.d.ts +7 -8
- package/lib/formbuilder/objectform/source/sourceform.js +28 -11
- package/lib/formbuilder/objectform/source/tilesourceform.d.ts +3 -7
- package/lib/formbuilder/objectform/source/tilesourceform.js +63 -53
- package/lib/formbuilder/objectform/useSchemaFormState.d.ts +48 -0
- package/lib/formbuilder/objectform/useSchemaFormState.js +35 -0
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -1
- package/lib/keybindings.json +10 -10
- package/lib/mainview/mainView.d.ts +11 -7
- package/lib/mainview/mainView.js +63 -36
- package/lib/mainview/mainviewmodel.js +2 -2
- package/lib/menus.js +8 -8
- package/lib/panelview/components/layers.js +5 -2
- package/lib/panelview/objectproperties.js +2 -2
- package/lib/panelview/rightpanel.js +17 -2
- package/lib/panelview/story-maps/SpectaPanel.d.ts +15 -0
- package/lib/panelview/story-maps/SpectaPanel.js +35 -0
- package/lib/panelview/story-maps/StoryViewerPanel.d.ts +24 -9
- package/lib/panelview/story-maps/StoryViewerPanel.js +22 -268
- package/lib/panelview/story-maps/{PreviewModeSwitch.js → components/PreviewModeSwitch.js} +1 -1
- package/lib/panelview/story-maps/components/SpectaDesktopView.d.ts +21 -0
- package/lib/panelview/story-maps/components/SpectaDesktopView.js +49 -0
- package/lib/panelview/story-maps/components/SpectaMobileView.d.ts +17 -0
- package/lib/panelview/story-maps/{MobileSpectaPanel.js → components/SpectaMobileView.js} +8 -22
- package/lib/panelview/story-maps/{StoryNavBar.d.ts → components/StoryNavBar.d.ts} +1 -1
- package/lib/panelview/story-maps/{StoryNavBar.js → components/StoryNavBar.js} +2 -4
- package/lib/panelview/story-maps/hooks/useStoryMap.d.ts +39 -0
- package/lib/panelview/story-maps/hooks/useStoryMap.js +252 -0
- package/lib/processing/index.d.ts +2 -2
- package/lib/processing/index.js +62 -35
- package/lib/processing/processingCommands.d.ts +1 -1
- package/lib/processing/processingCommands.js +26 -6
- package/lib/shared/components/Collapsible.d.ts +6 -0
- package/lib/shared/components/Collapsible.js +26 -0
- package/lib/statusbar/SpectaPresentationProgressBar.d.ts +7 -0
- package/lib/statusbar/SpectaPresentationProgressBar.js +40 -0
- package/lib/toolbar/widget.js +4 -2
- package/lib/tools.d.ts +6 -0
- package/lib/tools.js +9 -0
- package/lib/types.d.ts +29 -2
- package/lib/widget.js +14 -2
- package/package.json +2 -4
- package/style/base.css +23 -1
- package/style/dialog.css +5 -0
- package/style/leftPanel.css +14 -37
- package/style/shared/button.css +0 -10
- package/style/shared/switch.css +8 -7
- package/style/spectaProgressBar.css +144 -0
- package/style/storyPanel.css +33 -0
- package/style/symbologyDialog.css +2 -2
- package/lib/formbuilder/objectform/baseform.d.ts +0 -91
- package/lib/formbuilder/objectform/baseform.js +0 -231
- package/lib/panelview/story-maps/MobileSpectaPanel.d.ts +0 -7
- /package/lib/panelview/story-maps/{PreviewModeSwitch.d.ts → components/PreviewModeSwitch.d.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupytergis/base",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
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.14.0",
|
|
48
48
|
"@jupyterlab/application": "^4.3.0",
|
|
49
49
|
"@jupyterlab/apputils": "^4.3.0",
|
|
50
50
|
"@jupyterlab/completer": "^4.3.0",
|
|
@@ -93,7 +93,6 @@
|
|
|
93
93
|
"styled-components": "^5.3.6",
|
|
94
94
|
"three": "^0.135.0",
|
|
95
95
|
"three-mesh-bvh": "^0.5.17",
|
|
96
|
-
"uuid": "^11.0.3",
|
|
97
96
|
"vaul": "^1.1.2"
|
|
98
97
|
},
|
|
99
98
|
"devDependencies": {
|
|
@@ -103,7 +102,6 @@
|
|
|
103
102
|
"@types/node": "^18.15.11",
|
|
104
103
|
"@types/proj4": "2.19.0",
|
|
105
104
|
"@types/shpjs": "^3.4.7",
|
|
106
|
-
"@types/uuid": "^10.0.0",
|
|
107
105
|
"rimraf": "^3.0.2",
|
|
108
106
|
"ts-patch": "^3.3.0",
|
|
109
107
|
"typescript": "^5",
|
package/style/base.css
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
@import url('./filterPanel.css');
|
|
11
11
|
@import url('./symbologyDialog.css');
|
|
12
12
|
@import url('./statusBar.css');
|
|
13
|
+
@import url('./spectaProgressBar.css');
|
|
13
14
|
@import url('./temporalSlider.css');
|
|
14
15
|
@import url('./tabPanel.css');
|
|
15
16
|
@import url('./stacBrowser.css');
|
|
@@ -141,7 +142,7 @@ button.jp-mod-styled.jp-mod-reject {
|
|
|
141
142
|
gap: 0.5rem;
|
|
142
143
|
position: absolute;
|
|
143
144
|
bottom: 0.125rem;
|
|
144
|
-
z-index:
|
|
145
|
+
z-index: 1;
|
|
145
146
|
padding: 0 0.125rem;
|
|
146
147
|
}
|
|
147
148
|
|
|
@@ -185,3 +186,24 @@ button.jp-mod-styled.jp-mod-reject {
|
|
|
185
186
|
body[data-notebook='specta'] #main.jp-ThemedContainer {
|
|
186
187
|
overflow: visible;
|
|
187
188
|
}
|
|
189
|
+
|
|
190
|
+
.jgis-center-content {
|
|
191
|
+
text-align: center;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.jgis-bg-transparent {
|
|
195
|
+
background-color: transparent;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.jgis-bg-transparent:hover {
|
|
199
|
+
background-color: transparent;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.jgis-rotate-90 {
|
|
203
|
+
rotate: 0deg;
|
|
204
|
+
transition: rotate 150ms ease;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
[data-state='open'] > .jgis-rotate-90 {
|
|
208
|
+
rotate: 90deg;
|
|
209
|
+
}
|
package/style/dialog.css
CHANGED
package/style/leftPanel.css
CHANGED
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
min-height: 3em;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
.jp-gis-layerItem
|
|
11
|
-
.jp-gis-source {
|
|
10
|
+
.jp-gis-layerItem {
|
|
12
11
|
padding: 2px 0 2px 12px;
|
|
13
12
|
}
|
|
14
13
|
|
|
@@ -37,8 +36,7 @@
|
|
|
37
36
|
transform: rotate(0deg);
|
|
38
37
|
}
|
|
39
38
|
|
|
40
|
-
.jp-gis-layer
|
|
41
|
-
.jp-gis-source {
|
|
39
|
+
.jp-gis-layer {
|
|
42
40
|
display: flex;
|
|
43
41
|
flex-direction: row;
|
|
44
42
|
/* align-items: center; */
|
|
@@ -46,76 +44,63 @@
|
|
|
46
44
|
}
|
|
47
45
|
|
|
48
46
|
.jp-gis-layer.jp-mod-selected,
|
|
49
|
-
.jp-gis-source.jp-mod-selected,
|
|
50
47
|
.jp-gis-layerGroupHeader.jp-mod-selected {
|
|
51
48
|
color: var(--jp-ui-inverse-font-color1);
|
|
52
49
|
background: var(--jp-brand-color1);
|
|
53
50
|
}
|
|
54
51
|
|
|
55
|
-
.jp-gis-layer:hover:not(.jp-mod-selected)
|
|
56
|
-
.jp-gis-source:hover:not(.jp-mod-selected) {
|
|
52
|
+
.jp-gis-layer:hover:not(.jp-mod-selected) {
|
|
57
53
|
cursor: pointer;
|
|
58
54
|
background: var(--jp-layout-color2);
|
|
59
55
|
}
|
|
60
56
|
|
|
61
57
|
.jp-gis-layer.jp-mod-selected .jp-icon-selectable,
|
|
62
|
-
.jp-gis-source.jp-mod-selected .jp-icon-selectable,
|
|
63
58
|
.jp-gis-layerGroupHeader.jp-mod-selected .jp-icon-selectable {
|
|
64
59
|
fill: var(--jp-ui-inverse-font-color1);
|
|
65
60
|
}
|
|
66
|
-
.jp-gis-layer.jp-mod-selected path
|
|
67
|
-
.jp-gis-source.jp-mod-selected path {
|
|
61
|
+
.jp-gis-layer.jp-mod-selected path {
|
|
68
62
|
fill: var(--jp-ui-inverse-font-color1);
|
|
69
63
|
}
|
|
70
|
-
.jp-gis-layer.jp-mod-selected button:hover
|
|
71
|
-
.jp-gis-source.jp-mod-selected button:hover {
|
|
64
|
+
.jp-gis-layer.jp-mod-selected button:hover {
|
|
72
65
|
background: none;
|
|
73
66
|
}
|
|
74
67
|
|
|
75
|
-
.jp-gis-layer button
|
|
76
|
-
.jp-gis-source button {
|
|
68
|
+
.jp-gis-layer button {
|
|
77
69
|
min-height: unset;
|
|
78
70
|
min-width: unset;
|
|
79
71
|
padding: unset;
|
|
80
72
|
margin-right: 4px;
|
|
81
73
|
}
|
|
82
74
|
|
|
83
|
-
.jp-gis-layer.jp-mod-selected button:hover .jp-icon-selectable
|
|
84
|
-
.jp-gis-source.jp-mod-selected button:hover .jp-icon-selectable {
|
|
75
|
+
.jp-gis-layer.jp-mod-selected button:hover .jp-icon-selectable {
|
|
85
76
|
fill: var(--jp-ui-font-color1);
|
|
86
77
|
}
|
|
87
78
|
|
|
88
|
-
.jp-gis-layerIcon
|
|
89
|
-
.jp-gis-sourceIcon {
|
|
79
|
+
.jp-gis-layerIcon {
|
|
90
80
|
display: flex;
|
|
91
81
|
align-items: center;
|
|
92
82
|
}
|
|
93
83
|
|
|
94
|
-
.jp-gis-layerIcon > svg
|
|
95
|
-
.jp-gis-sourceIcon > svg {
|
|
84
|
+
.jp-gis-layerIcon > svg {
|
|
96
85
|
height: 16px;
|
|
97
86
|
width: 16px;
|
|
98
87
|
}
|
|
99
88
|
|
|
100
|
-
.jp-gis-layerTitle
|
|
101
|
-
.jp-gis-sourceTitle {
|
|
89
|
+
.jp-gis-layerTitle {
|
|
102
90
|
display: flex;
|
|
103
91
|
flex-grow: 1;
|
|
104
92
|
align-items: center;
|
|
105
93
|
}
|
|
106
94
|
|
|
107
|
-
.jp-gis-layerText:focus
|
|
108
|
-
.jp-gis-sourceText:focus {
|
|
95
|
+
.jp-gis-layerText:focus {
|
|
109
96
|
outline: none;
|
|
110
97
|
}
|
|
111
98
|
|
|
112
|
-
.jp-gis-layerTitle .jp-gis-layerIcon
|
|
113
|
-
.jp-gis-sourceTitle .jp-gis-sourceIcon {
|
|
99
|
+
.jp-gis-layerTitle .jp-gis-layerIcon {
|
|
114
100
|
padding-right: 4px;
|
|
115
101
|
}
|
|
116
102
|
|
|
117
|
-
.jp-gis-layerIcon.jp-gis-mod-hidden path
|
|
118
|
-
.jp-gis-sourceIcon.jp-gis-mod-hidden path {
|
|
103
|
+
.jp-gis-layerIcon.jp-gis-mod-hidden path {
|
|
119
104
|
fill: var(--jp-warn-color0);
|
|
120
105
|
}
|
|
121
106
|
|
|
@@ -134,8 +119,7 @@
|
|
|
134
119
|
border: 1px solid var(--jp-brand-color1);
|
|
135
120
|
}
|
|
136
121
|
|
|
137
|
-
.jp-gis-layerText
|
|
138
|
-
.jp-gis-sourceText {
|
|
122
|
+
.jp-gis-layerText {
|
|
139
123
|
padding: 3px 0;
|
|
140
124
|
cursor: pointer;
|
|
141
125
|
flex-grow: 1;
|
|
@@ -162,13 +146,6 @@ li .lm-Menu-itemLabel {
|
|
|
162
146
|
text-transform: capitalize;
|
|
163
147
|
}
|
|
164
148
|
|
|
165
|
-
.jp-gis-sourceInfo {
|
|
166
|
-
font-size: var(--jp-ui-font-size0);
|
|
167
|
-
font-style: italic;
|
|
168
|
-
padding-left: 5px;
|
|
169
|
-
color: var(--jp-ui-font-color2);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
149
|
#jp-drag-indicator {
|
|
173
150
|
top: calc(-1 * var(--jp-border-width) + 1px);
|
|
174
151
|
left: calc(-1 * var(--jp-border-width));
|
package/style/shared/button.css
CHANGED
|
@@ -124,9 +124,7 @@
|
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
.jgis-button[data-variant='icon'] {
|
|
127
|
-
background-color: var(--jp-ui-font-color0);
|
|
128
127
|
border: none;
|
|
129
|
-
color: var(--jp-layout-color0);
|
|
130
128
|
display: flex;
|
|
131
129
|
align-items: center;
|
|
132
130
|
justify-content: center;
|
|
@@ -136,14 +134,6 @@
|
|
|
136
134
|
border-radius: 9999px;
|
|
137
135
|
}
|
|
138
136
|
|
|
139
|
-
.jgis-button[data-variant='icon']:hover {
|
|
140
|
-
background-color: color-mix(
|
|
141
|
-
in srgb,
|
|
142
|
-
var(--jp-accent-color0),
|
|
143
|
-
transparent 20%
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
137
|
/* sizing */
|
|
148
138
|
.jgis-button[data-size='sm'] {
|
|
149
139
|
height: 2.25rem;
|
package/style/shared/switch.css
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
.jgis-switch {
|
|
2
2
|
display: inline-flex;
|
|
3
3
|
height: 1.15rem;
|
|
4
|
-
width:
|
|
4
|
+
width: 2.5rem;
|
|
5
|
+
padding: 2px;
|
|
5
6
|
flex-shrink: 0;
|
|
6
7
|
align-items: center;
|
|
7
8
|
border-radius: 9999px !important;
|
|
@@ -25,19 +26,19 @@
|
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
.jgis-switch[data-state='checked'] {
|
|
28
|
-
background-color: var(--jp-accent-
|
|
29
|
+
background-color: var(--jp-accent-color1);
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
.jgis-switch[data-state='unchecked'] {
|
|
32
|
-
background-color: var(--jp-layout-
|
|
33
|
+
background-color: var(--jp-layout-color3);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
.jgis-switch-thumb {
|
|
36
37
|
background-color: var(--jp-layout-color1);
|
|
37
38
|
pointer-events: none;
|
|
38
39
|
display: block;
|
|
39
|
-
width:
|
|
40
|
-
height:
|
|
40
|
+
width: 0.75rem;
|
|
41
|
+
height: 0.75rem;
|
|
41
42
|
border-radius: 9999px;
|
|
42
43
|
box-shadow: none;
|
|
43
44
|
transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -45,11 +46,11 @@
|
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
.jgis-switch-thumb[data-state='checked'] {
|
|
48
|
-
transform: translateX(
|
|
49
|
+
transform: translateX(1.4rem);
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
.jgis-switch-thumb[data-state='unchecked'] {
|
|
52
|
-
transform: translateX(
|
|
53
|
+
transform: translateX(0);
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
@media (prefers-color-scheme: dark) {
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/* Specta presentation progress bar (segment stepper) */
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
--jgis-specta-dot-fill-outer: var(--jp-accent-color0);
|
|
5
|
+
--jgis-specta-dot-fill-inner: var(--jp-accent-color3);
|
|
6
|
+
--jgis-specta-track-fill: color-mix(
|
|
7
|
+
in srgb,
|
|
8
|
+
var(--jp-accent-color1) 80%,
|
|
9
|
+
transparent
|
|
10
|
+
);
|
|
11
|
+
--jgis-specta-track-default: var(--jp-border-color0);
|
|
12
|
+
--jgis-specta-smooth: cubic-bezier(0, 0.72, 0.58, 1);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.jgis-specta-progress .jgis-specta-progress-bar {
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: row-reverse;
|
|
18
|
+
margin: auto auto 0;
|
|
19
|
+
width: 31.25rem;
|
|
20
|
+
max-width: 40%;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.jgis-specta-progress .jgis-specta-bar-segment {
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-grow: 1;
|
|
26
|
+
position: relative;
|
|
27
|
+
align-items: center;
|
|
28
|
+
justify-content: center;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Track fill line; :not(:last-child) below adds width/position for the connector */
|
|
32
|
+
.jgis-specta-progress .jgis-specta-bar-segment::after {
|
|
33
|
+
content: '';
|
|
34
|
+
position: absolute;
|
|
35
|
+
height: 0.25rem;
|
|
36
|
+
top: calc(50% - 0.125rem);
|
|
37
|
+
transition: transform var(--jgis-specta-transition-duration, 0.06s)
|
|
38
|
+
var(--jgis-specta-smooth);
|
|
39
|
+
transform: scaleX(0);
|
|
40
|
+
background: var(--jgis-specta-track-fill);
|
|
41
|
+
transform-origin: left;
|
|
42
|
+
z-index: 5;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Filled state: track line + dot */
|
|
46
|
+
.jgis-specta-progress .jgis-specta-bar-segment[data-filled]::after {
|
|
47
|
+
transform: scaleX(1);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Connector bar only when there is a segment to the right */
|
|
51
|
+
.jgis-specta-progress .jgis-specta-bar-segment:not(:last-child)::before,
|
|
52
|
+
.jgis-specta-progress .jgis-specta-bar-segment:not(:last-child)::after {
|
|
53
|
+
content: '';
|
|
54
|
+
width: calc(100% - 1.5rem);
|
|
55
|
+
position: absolute;
|
|
56
|
+
right: calc(50% + 0.75rem);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.jgis-specta-progress .jgis-specta-bar-segment:not(:last-child)::before {
|
|
60
|
+
height: 0.5rem;
|
|
61
|
+
top: calc(50% - 0.25rem);
|
|
62
|
+
background: var(--jgis-specta-track-default);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.jgis-specta-progress .jgis-specta-bar-segment:not(:last-child)::after {
|
|
66
|
+
transition-delay: 0s;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* Button = dot */
|
|
70
|
+
.jgis-specta-progress .jgis-specta-progress-input {
|
|
71
|
+
position: absolute;
|
|
72
|
+
top: 50%;
|
|
73
|
+
left: 50%;
|
|
74
|
+
transform: translate(-50%, -50%);
|
|
75
|
+
width: 1.875rem;
|
|
76
|
+
height: 1.875rem;
|
|
77
|
+
margin: 0;
|
|
78
|
+
padding: 0;
|
|
79
|
+
border: 3px solid var(--jgis-specta-track-default);
|
|
80
|
+
border-radius: 50%;
|
|
81
|
+
background: transparent;
|
|
82
|
+
cursor: pointer;
|
|
83
|
+
box-shadow:
|
|
84
|
+
inset 2px 2px 4px rgba(0, 0, 0, 0.3),
|
|
85
|
+
2px 2px 8px rgba(0, 0, 0, 0.1);
|
|
86
|
+
box-sizing: border-box;
|
|
87
|
+
z-index: 2;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.jgis-specta-progress .jgis-specta-progress-input:focus-visible {
|
|
91
|
+
outline: 2px solid var(--jp-brand-color1);
|
|
92
|
+
outline-offset: 2px;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.jgis-specta-progress .jgis-specta-progress-input::before {
|
|
96
|
+
content: '';
|
|
97
|
+
position: absolute;
|
|
98
|
+
inset: 0;
|
|
99
|
+
border-radius: 50%;
|
|
100
|
+
background: radial-gradient(
|
|
101
|
+
circle at center,
|
|
102
|
+
var(--jgis-specta-dot-fill-inner),
|
|
103
|
+
var(--jgis-specta-dot-fill-outer)
|
|
104
|
+
);
|
|
105
|
+
transform: scale(0.3);
|
|
106
|
+
opacity: 0;
|
|
107
|
+
transition:
|
|
108
|
+
transform 0.2s var(--jgis-specta-smooth),
|
|
109
|
+
opacity 0.2s var(--jgis-specta-smooth);
|
|
110
|
+
pointer-events: none;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.jgis-specta-progress
|
|
114
|
+
.jgis-specta-bar-segment[data-filled]
|
|
115
|
+
.jgis-specta-progress-input::before {
|
|
116
|
+
transform: none;
|
|
117
|
+
opacity: 1;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* Dot fill delay: 0 when going prev; after track duration when data-direction="next" */
|
|
121
|
+
.jgis-specta-progress
|
|
122
|
+
.jgis-specta-bar-segment:not(:last-child)
|
|
123
|
+
.jgis-specta-progress-input::before {
|
|
124
|
+
transition-delay: 0s;
|
|
125
|
+
}
|
|
126
|
+
.jgis-specta-progress[data-direction='next']
|
|
127
|
+
.jgis-specta-bar-segment:not(:last-child)
|
|
128
|
+
.jgis-specta-progress-input::before {
|
|
129
|
+
transition-delay: var(--jgis-specta-transition-duration, 0.3s);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.jgis-specta-progress {
|
|
133
|
+
box-sizing: border-box;
|
|
134
|
+
position: fixed;
|
|
135
|
+
bottom: 1.125rem;
|
|
136
|
+
width: 100%;
|
|
137
|
+
z-index: 40;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.jgis-specta-progress *,
|
|
141
|
+
.jgis-specta-progress *::before,
|
|
142
|
+
.jgis-specta-progress *::after {
|
|
143
|
+
box-sizing: inherit;
|
|
144
|
+
}
|
package/style/storyPanel.css
CHANGED
|
@@ -213,3 +213,36 @@
|
|
|
213
213
|
bottom: 0.125rem;
|
|
214
214
|
right: 0.125rem;
|
|
215
215
|
}
|
|
216
|
+
|
|
217
|
+
/* Hierarchy: .form-group > .jp-FormGroup-content > .jp-objectFieldWrapper > #jgis-source-properties-field */
|
|
218
|
+
.form-group:has(
|
|
219
|
+
.jp-FormGroup-content .jp-objectFieldWrapper #jgis-source-properties-field
|
|
220
|
+
) {
|
|
221
|
+
padding: 0;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* #jgis-source-properties-field and .jGIS-property-panel are siblings; remove padding on the panel's outer wrapper */
|
|
225
|
+
.form-group:has(
|
|
226
|
+
.jp-FormGroup-content .jp-objectFieldWrapper #jgis-source-properties-field
|
|
227
|
+
):has(.jGIS-property-panel)
|
|
228
|
+
.jGIS-property-panel
|
|
229
|
+
.jGIS-property-outer {
|
|
230
|
+
padding: 0;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.jp-arrayFieldWrapper legend {
|
|
234
|
+
border-bottom: none;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.jgis-symbology-override-list {
|
|
238
|
+
display: flex;
|
|
239
|
+
flex-direction: column;
|
|
240
|
+
gap: 1rem;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.jgis-symbology-override-collapsible-trigger {
|
|
244
|
+
display: flex;
|
|
245
|
+
gap: 1rem;
|
|
246
|
+
align-items: center;
|
|
247
|
+
cursor: pointer;
|
|
248
|
+
}
|
|
@@ -23,7 +23,7 @@ select option {
|
|
|
23
23
|
|
|
24
24
|
.jp-gis-symbology-row label {
|
|
25
25
|
font-size: var(--jp-ui-font-size2);
|
|
26
|
-
flex: 0 1
|
|
26
|
+
flex: 0 1 auto;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
.jp-gis-symbology-row > .jp-select-wrapper,
|
|
@@ -191,7 +191,7 @@ select option {
|
|
|
191
191
|
}
|
|
192
192
|
|
|
193
193
|
.jp-gis-color-ramp-entry:not(.jp-gis-selected-entry):hover .jp-gis-color-label {
|
|
194
|
-
transform:
|
|
194
|
+
transform: translateX(6px);
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
.jp-gis-color-canvas {
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { IJupyterGISModel } from '@jupytergis/schema';
|
|
2
|
-
import { Dialog } from '@jupyterlab/apputils';
|
|
3
|
-
import { Signal } from '@lumino/signaling';
|
|
4
|
-
import { IChangeEvent, ISubmitEvent } from '@rjsf/core';
|
|
5
|
-
import { RJSFSchema, UiSchema } from '@rjsf/utils';
|
|
6
|
-
import * as React from 'react';
|
|
7
|
-
import { IDict } from "../../types";
|
|
8
|
-
export interface IJupyterGISFormContext<TFormData = IDict | undefined> {
|
|
9
|
-
model: IJupyterGISModel;
|
|
10
|
-
formData: TFormData;
|
|
11
|
-
}
|
|
12
|
-
export interface IBaseFormStates {
|
|
13
|
-
schema?: RJSFSchema;
|
|
14
|
-
extraErrors?: any;
|
|
15
|
-
}
|
|
16
|
-
export interface IBaseFormProps {
|
|
17
|
-
/**
|
|
18
|
-
* The context of the form, whether it's for creating an object or updating its properties. This will have the effect of showing or not inputs for readonly properties.
|
|
19
|
-
*/
|
|
20
|
-
formContext: 'update' | 'create';
|
|
21
|
-
/**
|
|
22
|
-
* The source data for filling the form
|
|
23
|
-
*/
|
|
24
|
-
sourceData: IDict | undefined;
|
|
25
|
-
/**
|
|
26
|
-
* Path to the file
|
|
27
|
-
*/
|
|
28
|
-
filePath?: string;
|
|
29
|
-
/**
|
|
30
|
-
* Current GIS model
|
|
31
|
-
*/
|
|
32
|
-
model: IJupyterGISModel;
|
|
33
|
-
/**
|
|
34
|
-
* callback for syncing back the data into the model upon form submit
|
|
35
|
-
* @param properties
|
|
36
|
-
*/
|
|
37
|
-
syncData: (properties: IDict) => void;
|
|
38
|
-
/**
|
|
39
|
-
* The schema for the rjsf formk
|
|
40
|
-
*/
|
|
41
|
-
schema?: IDict;
|
|
42
|
-
/**
|
|
43
|
-
* Ok signal. This is the signal sent by the parent dialog upon "Ok" button click. No ok button will be displayed if defined.
|
|
44
|
-
*/
|
|
45
|
-
ok?: Signal<Dialog<any>, number>;
|
|
46
|
-
/**
|
|
47
|
-
* Cancel callback
|
|
48
|
-
*/
|
|
49
|
-
cancel?: () => void;
|
|
50
|
-
/**
|
|
51
|
-
* A signal emitting when the form changed
|
|
52
|
-
*/
|
|
53
|
-
formChangedSignal?: Signal<any, IDict<any>>;
|
|
54
|
-
/**
|
|
55
|
-
* A signal emitting when the form has extra errors, with a boolean whether there are some
|
|
56
|
-
* extra errors or not.
|
|
57
|
-
*/
|
|
58
|
-
formErrorSignal?: Signal<Dialog<any>, boolean>;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Generate a form to edit a layer/source type. This class is meant to be sub-classed to create more refined forms for specific layers/sources.
|
|
62
|
-
*
|
|
63
|
-
* It will be up to the user of this class to actually perform the creation/edit using syncdata.
|
|
64
|
-
*/
|
|
65
|
-
export declare class BaseForm extends React.Component<IBaseFormProps, IBaseFormStates> {
|
|
66
|
-
/** Skip syncData for the initial onChange (RJSF populating form), only sync on user edits. */
|
|
67
|
-
private isInitialLoadRef;
|
|
68
|
-
constructor(props: IBaseFormProps);
|
|
69
|
-
componentDidUpdate(prevProps: IBaseFormProps, prevState: IBaseFormStates): void;
|
|
70
|
-
componentDidMount(): void;
|
|
71
|
-
/**
|
|
72
|
-
* Fills null/undefined values in data with schema defaults (mutates data).
|
|
73
|
-
* @returns true if any null/undefined was replaced by a default
|
|
74
|
-
*/
|
|
75
|
-
protected applySchemaDefaults(data: IDict<any> | undefined, schema: RJSFSchema): boolean;
|
|
76
|
-
protected processSchema(data: IDict<any> | undefined, schema: RJSFSchema, uiSchema: UiSchema): void;
|
|
77
|
-
/**
|
|
78
|
-
* Remove a specific entry from the form. Can be used in subclasses if needed while under processSchema.
|
|
79
|
-
* @param entry The entry name
|
|
80
|
-
* @param data The form data
|
|
81
|
-
* @param schema The form schema
|
|
82
|
-
* @param uiSchema The form uiSchema
|
|
83
|
-
*/
|
|
84
|
-
protected removeFormEntry(entry: string, data: IDict<any> | undefined, schema: RJSFSchema, uiSchema: UiSchema): void;
|
|
85
|
-
protected syncData(properties: IDict<any> | undefined): void;
|
|
86
|
-
protected onFormChange(e: IChangeEvent): void;
|
|
87
|
-
protected onFormBlur(id: string, value: any): void;
|
|
88
|
-
protected onFormSubmit(e: ISubmitEvent<any>): void;
|
|
89
|
-
render(): React.ReactNode;
|
|
90
|
-
protected currentFormData: IDict<any> | undefined;
|
|
91
|
-
}
|