@jupytergis/base 0.10.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/lib/commands/BaseCommandIDs.d.ts +2 -0
  2. package/lib/commands/BaseCommandIDs.js +3 -0
  3. package/lib/commands/index.js +66 -0
  4. package/lib/constants.js +4 -0
  5. package/lib/dialogs/symbology/hooks/useGetBandInfo.d.ts +0 -6
  6. package/lib/dialogs/symbology/hooks/useGetBandInfo.js +2 -2
  7. package/lib/dialogs/symbology/tiff_layer/types/MultibandColor.js +4 -4
  8. package/lib/dialogs/symbology/vector_layer/types/Categorized.js +1 -5
  9. package/lib/formbuilder/formselectors.js +5 -1
  10. package/lib/formbuilder/objectform/StoryEditorForm.d.ts +9 -0
  11. package/lib/formbuilder/objectform/StoryEditorForm.js +16 -0
  12. package/lib/formbuilder/objectform/components/StorySegmentReset.d.ts +8 -0
  13. package/lib/formbuilder/objectform/components/StorySegmentReset.js +24 -0
  14. package/lib/formbuilder/objectform/layer/index.d.ts +1 -0
  15. package/lib/formbuilder/objectform/layer/index.js +1 -0
  16. package/lib/formbuilder/objectform/layer/storySegmentLayerForm.d.ts +5 -0
  17. package/lib/formbuilder/objectform/layer/storySegmentLayerForm.js +32 -0
  18. package/lib/mainview/mainView.d.ts +18 -0
  19. package/lib/mainview/mainView.js +293 -14
  20. package/lib/panelview/components/layers.d.ts +2 -1
  21. package/lib/panelview/components/layers.js +31 -23
  22. package/lib/panelview/{components/filter-panel → filter-panel}/Filter.js +1 -1
  23. package/lib/panelview/leftpanel.js +89 -7
  24. package/lib/panelview/rightpanel.d.ts +2 -0
  25. package/lib/panelview/rightpanel.js +41 -4
  26. package/lib/panelview/story-maps/PreviewModeSwitch.d.ts +7 -0
  27. package/lib/panelview/story-maps/PreviewModeSwitch.js +13 -0
  28. package/lib/panelview/story-maps/StoryEditorPanel.d.ts +9 -0
  29. package/lib/panelview/story-maps/StoryEditorPanel.js +34 -0
  30. package/lib/panelview/story-maps/StoryNavBar.d.ts +10 -0
  31. package/lib/panelview/story-maps/StoryNavBar.js +11 -0
  32. package/lib/panelview/story-maps/StoryViewerPanel.d.ts +13 -0
  33. package/lib/panelview/story-maps/StoryViewerPanel.js +179 -0
  34. package/lib/panelview/story-maps/components/StoryContentSection.d.ts +6 -0
  35. package/lib/panelview/story-maps/components/StoryContentSection.js +10 -0
  36. package/lib/panelview/story-maps/components/StoryImageSection.d.ts +15 -0
  37. package/lib/panelview/story-maps/components/StoryImageSection.js +13 -0
  38. package/lib/panelview/story-maps/components/StorySubtitleSection.d.ts +11 -0
  39. package/lib/panelview/story-maps/components/StorySubtitleSection.js +9 -0
  40. package/lib/panelview/story-maps/components/StoryTitleSection.d.ts +12 -0
  41. package/lib/panelview/story-maps/components/StoryTitleSection.js +8 -0
  42. package/lib/shared/components/Calendar.d.ts +1 -1
  43. package/lib/shared/components/Combobox.d.ts +21 -0
  44. package/lib/shared/components/Combobox.js +32 -0
  45. package/lib/shared/components/Command.d.ts +18 -0
  46. package/lib/shared/components/Command.js +60 -0
  47. package/lib/shared/components/Dialog.d.ts +15 -0
  48. package/lib/shared/components/Dialog.js +62 -0
  49. package/lib/shared/components/Input.d.ts +3 -0
  50. package/lib/shared/components/Input.js +18 -0
  51. package/lib/shared/components/Pagination.js +3 -2
  52. package/lib/shared/components/RadioGroup.d.ts +5 -0
  53. package/lib/shared/components/RadioGroup.js +26 -0
  54. package/lib/shared/components/Select.d.ts +19 -0
  55. package/lib/shared/components/Select.js +28 -0
  56. package/lib/shared/components/SingleDatePicker.d.ts +11 -0
  57. package/lib/shared/components/SingleDatePicker.js +16 -0
  58. package/lib/shared/components/Switch.d.ts +4 -0
  59. package/lib/shared/components/Switch.js +20 -0
  60. package/lib/stacBrowser/components/StacPanel.d.ts +9 -1
  61. package/lib/stacBrowser/components/StacPanel.js +53 -9
  62. package/lib/stacBrowser/components/filter-extension/QueryableComboBox.d.ts +9 -0
  63. package/lib/stacBrowser/components/filter-extension/QueryableComboBox.js +179 -0
  64. package/lib/stacBrowser/components/filter-extension/QueryableRow.d.ts +16 -0
  65. package/lib/stacBrowser/components/filter-extension/QueryableRow.js +16 -0
  66. package/lib/stacBrowser/components/filter-extension/StacFilterExtensionPanel.d.ts +7 -0
  67. package/lib/stacBrowser/components/filter-extension/StacFilterExtensionPanel.js +49 -0
  68. package/lib/stacBrowser/components/filter-extension/StacQueryableFilters.d.ts +11 -0
  69. package/lib/stacBrowser/components/filter-extension/StacQueryableFilters.js +19 -0
  70. package/lib/stacBrowser/components/{StacFilterSection.d.ts → geodes/StacFilterSection.d.ts} +1 -1
  71. package/lib/stacBrowser/components/{StacFilterSection.js → geodes/StacFilterSection.js} +3 -3
  72. package/lib/stacBrowser/components/geodes/StacGeodesFilterPanel.d.ts +7 -0
  73. package/lib/stacBrowser/components/geodes/StacGeodesFilterPanel.js +69 -0
  74. package/lib/stacBrowser/components/shared/StacPanelResults.d.ts +3 -0
  75. package/lib/stacBrowser/components/shared/StacPanelResults.js +68 -0
  76. package/lib/stacBrowser/components/shared/StacSpatialExtent.d.ts +8 -0
  77. package/lib/stacBrowser/components/shared/StacSpatialExtent.js +10 -0
  78. package/lib/stacBrowser/components/shared/StacTemporalExtent.d.ts +9 -0
  79. package/lib/stacBrowser/components/shared/StacTemporalExtent.js +9 -0
  80. package/lib/stacBrowser/context/StacResultsContext.d.ts +33 -0
  81. package/lib/stacBrowser/context/StacResultsContext.js +269 -0
  82. package/lib/stacBrowser/hooks/useGeodesSearch.d.ts +24 -0
  83. package/lib/stacBrowser/hooks/useGeodesSearch.js +178 -0
  84. package/lib/stacBrowser/hooks/useStacFilterExtension.d.ts +30 -0
  85. package/lib/stacBrowser/hooks/useStacFilterExtension.js +262 -0
  86. package/lib/stacBrowser/hooks/useStacSearch.d.ts +5 -16
  87. package/lib/stacBrowser/hooks/useStacSearch.js +30 -184
  88. package/lib/stacBrowser/types/types.d.ts +86 -3
  89. package/lib/toolbar/widget.d.ts +15 -0
  90. package/lib/toolbar/widget.js +70 -0
  91. package/lib/tools.d.ts +0 -7
  92. package/lib/tools.js +56 -15
  93. package/package.json +8 -3
  94. package/style/base.css +42 -3
  95. package/style/leftPanel.css +18 -0
  96. package/style/shared/button.css +6 -5
  97. package/style/shared/calendar.css +7 -1
  98. package/style/shared/combobox.css +75 -0
  99. package/style/shared/command.css +178 -0
  100. package/style/shared/dialog.css +177 -0
  101. package/style/shared/input.css +59 -0
  102. package/style/shared/pagination.css +1 -1
  103. package/style/shared/popover.css +1 -0
  104. package/style/shared/radioGroup.css +55 -0
  105. package/style/shared/switch.css +63 -0
  106. package/style/shared/tabs.css +4 -3
  107. package/style/shared/toggle.css +1 -1
  108. package/style/stacBrowser.css +169 -16
  109. package/style/statusBar.css +1 -0
  110. package/style/storyPanel.css +185 -0
  111. package/style/tabPanel.css +1 -88
  112. package/lib/stacBrowser/components/StacPanelFilters.d.ts +0 -14
  113. package/lib/stacBrowser/components/StacPanelFilters.js +0 -81
  114. package/lib/stacBrowser/components/StacPanelResults.d.ts +0 -13
  115. package/lib/stacBrowser/components/StacPanelResults.js +0 -48
  116. /package/lib/panelview/{components/filter-panel → filter-panel}/Filter.d.ts +0 -0
  117. /package/lib/panelview/{components/filter-panel → filter-panel}/FilterRow.d.ts +0 -0
  118. /package/lib/panelview/{components/filter-panel → filter-panel}/FilterRow.js +0 -0
  119. /package/lib/panelview/{components/identify-panel → identify-panel}/IdentifyPanel.d.ts +0 -0
  120. /package/lib/panelview/{components/identify-panel → identify-panel}/IdentifyPanel.js +0 -0
@@ -4,15 +4,15 @@
4
4
  }
5
5
 
6
6
  .jgis-stac-browser-section-item {
7
- border-radius: 1rem !important;
7
+ border-radius: 1rem;
8
8
  cursor: pointer;
9
9
  }
10
10
 
11
- .jgis-stac-browser-results-item {
12
- border-radius: 1rem !important;
11
+ .jgis-button.jgis-stac-browser-results-item {
12
+ border-radius: var(--jp-border-radius);
13
13
  cursor: pointer;
14
- white-space: normal !important;
15
- height: auto !important;
14
+ white-space: normal;
15
+ height: auto;
16
16
  }
17
17
 
18
18
  .jgis-stac-browser-results-list {
@@ -22,16 +22,20 @@
22
22
  word-break: break-word;
23
23
  padding: 0.25rem;
24
24
  margin-right: 0.5rem;
25
+ align-self: center;
25
26
  }
26
27
 
27
- .jgis-stac-browser-date-picker {
28
- display: flex;
29
- justify-content: space-around;
30
- flex-wrap: wrap;
31
- gap: 0.5rem;
28
+ .jgis-stac-datepicker-full-width {
29
+ width: 100%;
30
+ }
31
+
32
+ .jgis-stac-datepicker-button {
33
+ padding: 0 0.5rem;
34
+ width: 100%;
32
35
  }
33
36
 
34
37
  .jgis-stac-browser-filters-panel {
38
+ min-height: 145px;
35
39
  display: flex;
36
40
  flex-direction: column;
37
41
  gap: 0.5rem;
@@ -73,13 +77,162 @@
73
77
 
74
78
  .jgis-stac-badge {
75
79
  gap: 0.25rem;
76
- padding-right: 0.3rem !important;
80
+ padding-right: 0.3rem;
77
81
  }
78
82
 
79
83
  .jgis-stac-badge-icon:hover {
80
- background-color: color-mix(
81
- in srgb,
82
- var(--jp-error-color0),
83
- transparent 20%
84
- ) !important;
84
+ background-color: color-mix(in srgb, var(--jp-error-color0), transparent 20%);
85
+ }
86
+
87
+ .jgis-stac-filter-extension-panel {
88
+ padding: 0 1rem;
89
+ display: flex;
90
+ flex-direction: column;
91
+ gap: 1rem;
92
+ }
93
+
94
+ .jgis-stac-filter-extension-section {
95
+ display: flex;
96
+ flex-direction: column;
97
+ gap: 0.5rem;
98
+ }
99
+
100
+ .jgis-stac-filter-extension-label {
101
+ font-size: 0.875rem;
102
+ font-weight: 500;
103
+ }
104
+
105
+ /* Modifier for filter extension select - uses shared combobox base */
106
+ .jgis-stac-filter-extension-select {
107
+ max-width: 200px;
108
+ }
109
+
110
+ .jgis-stac-filter-extension-input[data-slot='input'] {
111
+ height: 1.5rem;
112
+ padding: 1rem 0.5rem;
113
+ }
114
+
115
+ .jgis-stac-filter-extension-button-container {
116
+ padding-top: 0.5rem;
117
+ border-top: 1px solid var(--jp-border-color0);
118
+ }
119
+
120
+ .jgis-stac-filter-extension-button {
121
+ padding: 0.5rem 1rem;
122
+ border-radius: var(--jp-border-radius, 0.375rem);
123
+ border: 1px solid var(--jp-border-color0);
124
+ background-color: var(--jp-layout-color0);
125
+ color: var(--jp-ui-font-color0);
126
+ cursor: pointer;
127
+ box-sizing: border-box;
128
+ }
129
+
130
+ .jgis-stac-panel-tabs-list {
131
+ border-radius: 0;
132
+ }
133
+
134
+ .jgis-stac-panel-placeholder {
135
+ padding: 1rem;
136
+ text-align: center;
137
+ color: var(--jp-ui-font-color2);
138
+ }
139
+
140
+ .jgis-stac-panel-provider-select-container {
141
+ margin: 0 1rem 1rem 1rem;
142
+ }
143
+
144
+ .jgis-stac-panel-provider-select {
145
+ width: 100%;
146
+ padding: 0.5rem;
147
+ }
148
+
149
+ /* QueryableComboBox styles */
150
+ .jgis-queryable-combo-container {
151
+ display: flex;
152
+ flex-direction: column;
153
+ gap: 1rem;
154
+ }
155
+
156
+ /* Modifiers for queryable combo - uses shared combobox base */
157
+ .jgis-queryable-combo-button {
158
+ width: 100%;
159
+ }
160
+
161
+ /* More specific selector to override [data-slot="input"] styles for Input components */
162
+ .jgis-queryable-combo-input[data-slot='input'] {
163
+ padding: 0.5rem;
164
+ /* padding-left: 1rem; */
165
+ height: 1.5rem;
166
+ }
167
+
168
+ /* More specific selector to override combobox button styles for operator Select */
169
+ .jgis-button.jgis-combobox-button.jgis-queryable-combo-operator {
170
+ padding: 0.25rem;
171
+ }
172
+
173
+ /* More specific selector to override button base styles for Select/SingleDatePicker buttons */
174
+ /* Include jgis-combobox-button to increase specificity for Select components */
175
+ .jgis-button.jgis-combobox-button.jgis-queryable-combo-input,
176
+ .jgis-button.jgis-queryable-combo-input {
177
+ padding: 0.5rem;
178
+ /* padding-left: 1rem; */
179
+ height: 1.5rem;
180
+ }
181
+
182
+ .jgis-button.jgis-combobox-button.jgis-queryable-combo-input
183
+ > .jgis-combobox-button-text {
184
+ text-align: left;
185
+ }
186
+
187
+ /* More specific selector to override button base styles */
188
+ .jgis-button.jgis-queryable-combo-input-date-picker {
189
+ justify-content: flex-start;
190
+ }
191
+
192
+ .jgis-queryable-combo-input.jgis-combobox-button-text {
193
+ display: flex;
194
+ justify-content: flex-start;
195
+ }
196
+
197
+ .jgis-queryable-rows-container {
198
+ display: grid;
199
+ grid-template-columns: auto auto 1fr;
200
+ align-items: center;
201
+ gap: 0.5rem;
202
+ }
203
+
204
+ .jgis-queryable-row {
205
+ display: contents;
206
+ }
207
+
208
+ .jgis-stac-queryable-filters {
209
+ display: flex;
210
+ flex-direction: column;
211
+ gap: 0.5rem;
212
+ }
213
+
214
+ .jgis-stac-queryable-filters-radio-group {
215
+ display: flex;
216
+ gap: 0.5rem;
217
+ }
218
+
219
+ .jgis-stac-queryable-filters-radio-item {
220
+ display: flex;
221
+ align-items: center;
222
+ gap: 0.5rem;
223
+ }
224
+
225
+ /* StacPanelResults styles */
226
+ .jgis-stac-panel-results-pagination {
227
+ margin-top: 0;
228
+ }
229
+
230
+ .jgis-panel-tab-content.jgis-panel-tab-content-stac-panel {
231
+ padding-top: 0;
232
+ border-top: 1px solid var(--jp-border-color0);
233
+ }
234
+
235
+ .jgis-panel-tab-content.jgis-panel-tab-content-stac-panel
236
+ .jgis-stac-panel-tabs-list {
237
+ border-radius: 0;
85
238
  }
@@ -5,6 +5,7 @@
5
5
  height: 16px;
6
6
  background-color: var(--jp-layout-color1);
7
7
  font-size: var(--jp-ui-font-size0);
8
+ z-index: 1000;
8
9
  }
9
10
 
10
11
  .jgis-status-bar-item {
@@ -0,0 +1,185 @@
1
+ .jgis-story-viewer-panel {
2
+ padding: 1rem;
3
+ overflow: hidden;
4
+ position: relative;
5
+ }
6
+
7
+ .jgis-story-segment-container {
8
+ width: 100%;
9
+ animation: fadeIn 0.3s ease;
10
+ /* animation-duration is set dynamically via inline style from segment.transition.time */
11
+ }
12
+
13
+ @keyframes fadeIn {
14
+ from {
15
+ opacity: 0;
16
+ }
17
+ to {
18
+ opacity: 1;
19
+ }
20
+ }
21
+
22
+ .jgis-story-viewer-panel * {
23
+ box-sizing: border-box;
24
+ }
25
+
26
+ .jgis-story-viewer-image-container {
27
+ position: relative;
28
+ width: 100%;
29
+ height: 30%;
30
+ }
31
+
32
+ .jgis-story-viewer-image {
33
+ width: 100%;
34
+ height: 100%;
35
+ max-height: 50vh;
36
+ object-fit: contain;
37
+ display: block;
38
+ border-radius: var(--jp-border-radius);
39
+ }
40
+
41
+ .jgis-story-viewer-image-title {
42
+ position: absolute;
43
+ top: 0;
44
+ left: 0;
45
+ width: 100%;
46
+ margin-top: 0;
47
+ margin-bottom: 0;
48
+ margin-left: auto;
49
+ margin-right: auto;
50
+ padding-top: 1rem;
51
+ padding-bottom: 1rem;
52
+ color: white;
53
+ text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8);
54
+ background-color: rgba(0, 0, 0, 0.3);
55
+ text-align: center;
56
+ }
57
+
58
+ .jgis-story-viewer-nav-container {
59
+ position: absolute;
60
+ bottom: 0;
61
+ left: 0;
62
+ width: 100%;
63
+ padding-bottom: 0.25rem;
64
+ }
65
+
66
+ .jgis-panels-wrapper .jgis-story-viewer-nav-container-specta-mod {
67
+ position: fixed;
68
+ left: 0;
69
+ right: 0;
70
+ width: 100vw;
71
+ z-index: 1000;
72
+ }
73
+
74
+ .jgis-story-navbar {
75
+ display: flex;
76
+ gap: 8px;
77
+ justify-content: center;
78
+ }
79
+
80
+ .jgis-story-viewer-subtitle-container {
81
+ display: flex;
82
+ align-items: center;
83
+ /* justify-content: space-between; */
84
+ /* gap: 1rem; */
85
+ padding-top: 1rem;
86
+ }
87
+
88
+ .jgis-story-navbar.jgis-story-navbar-specta-mod {
89
+ position: fixed;
90
+ top: 50%;
91
+ width: 100%;
92
+ justify-content: space-between;
93
+ }
94
+
95
+ .jgis-story-navbar-specta-mod > .jgis-button {
96
+ padding: 0;
97
+ }
98
+
99
+ .jgis-story-viewer-title {
100
+ text-align: center;
101
+ }
102
+
103
+ .jgis-story-viewer-subtitle {
104
+ text-align: center;
105
+ margin: 0 auto;
106
+ }
107
+
108
+ .jgis-story-viewer-content {
109
+ }
110
+
111
+ .jgis-story-viewer-content p,
112
+ .jgis-story-viewer-content span,
113
+ .jgis-story-viewer-content li {
114
+ font-size: var(--jp-ui-font-size2);
115
+ }
116
+
117
+ .jgis-story-viewer-content > ul {
118
+ padding-left: 1rem;
119
+ }
120
+
121
+ .jgis-story-viewer-specta-right-panel-mod {
122
+ scale: 1.5;
123
+ top: 3.5rem !important;
124
+ right: 5.5rem !important;
125
+ font-size: var(--jp-ui-font-size2);
126
+ }
127
+
128
+ .jgis-panel-tab-content-mod {
129
+ background-color: plum;
130
+ }
131
+
132
+ .jgis-right-panel-container.jgis-specta-right-panel-container-mod {
133
+ width: 55%;
134
+ height: 100%;
135
+ margin: unset;
136
+ top: unset;
137
+ }
138
+
139
+ .jgis-specta-story-panel-container {
140
+ width: 100%;
141
+ height: 100%;
142
+ display: flex;
143
+ justify-content: flex-end;
144
+ align-items: center;
145
+ overflow: auto;
146
+ background: linear-gradient(
147
+ to left,
148
+ var(--jgis-specta-bg-color, rgba(221, 160, 221, 0.9)) 49%,
149
+ color-mix(
150
+ in srgb,
151
+ var(--jgis-specta-bg-color, rgba(221, 160, 221, 0.9)) 60%,
152
+ transparent
153
+ )
154
+ 65%,
155
+ color-mix(
156
+ in srgb,
157
+ var(--jgis-specta-bg-color, rgba(221, 160, 221, 0.9)) 50%,
158
+ transparent
159
+ )
160
+ 70%,
161
+ transparent 100%
162
+ );
163
+ }
164
+
165
+ .jgis-story-viewer-panel-specta-mod {
166
+ width: 50%;
167
+ font-size: var(--jp-ui-font-size3);
168
+ padding-right: 1.7rem;
169
+ color: var(--jgis-specta-text-color, var(--jp-ui-inverse-font-color1));
170
+ overflow-y: auto;
171
+ max-height: 100%;
172
+ }
173
+
174
+ .jGIS-property-panel
175
+ .jp-FormGroup-content
176
+ fieldset
177
+ .jp-inputFieldWrapper
178
+ > input#root_presentaionBgColor,
179
+ .jGIS-property-panel
180
+ .jp-FormGroup-content
181
+ fieldset
182
+ .jp-inputFieldWrapper
183
+ > input#root_presentaionTextColor {
184
+ height: revert;
185
+ }
@@ -1,91 +1,4 @@
1
1
  .jgis-panel-tab-content {
2
- border-radius: 5px;
3
- font-size: 10px;
2
+ font-size: var(--jp-ui-font-size0);
4
3
  padding-bottom: 50px;
5
4
  }
6
-
7
- .jgis-stac-browser-collection {
8
- flex-wrap: wrap;
9
- margin-top: 0.5rem;
10
- }
11
-
12
- .jgis-stac-browser-section-item {
13
- border-radius: 1rem !important;
14
- cursor: pointer;
15
- }
16
-
17
- .jgis-stac-browser-results-item {
18
- border-radius: 1rem !important;
19
- cursor: pointer;
20
- white-space: normal !important;
21
- height: auto !important;
22
- }
23
-
24
- .jgis-stac-browser-results-list {
25
- display: flex;
26
- flex-direction: column;
27
- gap: 1rem;
28
- word-break: break-word;
29
- padding: 0.25rem;
30
- margin-right: 0.5rem;
31
- }
32
-
33
- .jgis-stac-browser-date-picker {
34
- display: flex;
35
- justify-content: space-around;
36
- flex-wrap: wrap;
37
- gap: 0.5rem;
38
- }
39
-
40
- .jgis-stac-browser-filters-panel {
41
- display: flex;
42
- flex-direction: column;
43
- gap: 0.5rem;
44
- align-items: flex-start;
45
- padding: 0 0.5rem;
46
- }
47
-
48
- .jgis-stac-filter-trigger {
49
- max-width: fit-content;
50
- border: 1px solid var(--jp-border-color0);
51
- padding: 0.5rem;
52
- cursor: pointer;
53
- font-weight: bold;
54
- display: flex;
55
- align-items: center;
56
- gap: 0.15rem;
57
- }
58
-
59
- .jgis-stac-filter-trigger:disabled {
60
- cursor: not-allowed;
61
- }
62
-
63
- .jgis-stac-filter-section-container {
64
- display: flex;
65
- flex-direction: column;
66
- gap: 0.25rem;
67
- }
68
-
69
- .jgis-stac-filter-section-badges {
70
- display: flex;
71
- flex-wrap: wrap;
72
- gap: 0.25rem;
73
- }
74
-
75
- .jgis-stac-datepicker-icon {
76
- width: 1rem;
77
- height: 1rem;
78
- }
79
-
80
- .jgis-stac-badge {
81
- gap: 0.25rem;
82
- padding-right: 0.3rem !important;
83
- }
84
-
85
- .jgis-stac-badge-icon:hover {
86
- background-color: color-mix(
87
- in srgb,
88
- var(--jp-error-color0),
89
- transparent 20%
90
- ) !important;
91
- }
@@ -1,14 +0,0 @@
1
- import React from 'react';
2
- import { StacFilterState, StacFilterSetters } from "../types/types";
3
- interface IStacPanelFiltersProps {
4
- filterState: StacFilterState;
5
- filterSetters: StacFilterSetters;
6
- startTime: Date | undefined;
7
- setStartTime: (date: Date | undefined) => void;
8
- endTime: Date | undefined;
9
- setEndTime: (date: Date | undefined) => void;
10
- useWorldBBox: boolean;
11
- setUseWorldBBox: (val: boolean) => void;
12
- }
13
- declare const StacPanelFilters: ({ filterState, filterSetters, startTime, setStartTime, endTime, setEndTime, useWorldBBox, setUseWorldBBox, }: IStacPanelFiltersProps) => React.JSX.Element;
14
- export default StacPanelFilters;
@@ -1,81 +0,0 @@
1
- import { format } from 'date-fns';
2
- import { CalendarIcon } from 'lucide-react';
3
- import React from 'react';
4
- import { Button } from "../../shared/components/Button";
5
- import { Calendar } from "../../shared/components/Calendar";
6
- import Checkbox from "../../shared/components/Checkbox";
7
- import { Popover, PopoverContent, PopoverTrigger, } from "../../shared/components/Popover";
8
- import StacFilterSection from "./StacFilterSection";
9
- import { datasets as datasetsList, platforms as platformsList, products as productsList, } from "../constants";
10
- const StacPanelFilters = ({ filterState, filterSetters, startTime, setStartTime, endTime, setEndTime, useWorldBBox, setUseWorldBBox, }) => {
11
- const handleDatasetSelection = (dataset, collection) => {
12
- const collections = new Set(filterState.collections);
13
- const datasets = new Set(filterState.datasets);
14
- if (datasets.has(dataset)) {
15
- datasets.delete(dataset);
16
- // Remove the collection if no datasets remain for it
17
- const datasetsForCollection = Array.from(datasets).filter(d => {
18
- return datasetsList.some(entry => entry.collection === collection && entry.datasets.includes(d));
19
- });
20
- if (datasetsForCollection.length === 0) {
21
- collections.delete(collection);
22
- const platforms = new Set(filterState.platforms);
23
- const products = new Set(filterState.products);
24
- // Remove platforms belonging to this collection
25
- if (platformsList[collection]) {
26
- platformsList[collection].forEach(platform => {
27
- platforms.delete(platform);
28
- });
29
- }
30
- // Remove products belonging to this collection
31
- productsList
32
- .filter(product => product.collections.includes(collection))
33
- .forEach(product => {
34
- products.delete(product.productCode);
35
- });
36
- filterSetters.platforms(platforms);
37
- filterSetters.products(products);
38
- }
39
- }
40
- else {
41
- datasets.add(dataset);
42
- collections.add(collection);
43
- }
44
- filterSetters.collections(collections);
45
- filterSetters.datasets(datasets);
46
- };
47
- const handleToggle = (key, value) => {
48
- const updated = new Set(filterState[key]);
49
- if (updated.has(value)) {
50
- updated.delete(value);
51
- }
52
- else {
53
- updated.add(value);
54
- }
55
- filterSetters[key](updated);
56
- };
57
- return (React.createElement("div", { className: "jgis-stac-browser-filters-panel" },
58
- React.createElement("div", null,
59
- React.createElement("span", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem' } },
60
- React.createElement(Checkbox, { checked: useWorldBBox, onCheckedChange: setUseWorldBBox }),
61
- "Use whole world as bounding box")),
62
- React.createElement("div", { className: "jgis-stac-browser-date-picker" },
63
- React.createElement(Popover, null,
64
- React.createElement(PopoverTrigger, { asChild: true },
65
- React.createElement(Button, { style: { padding: '0 0.5rem' }, variant: 'outline' },
66
- React.createElement(CalendarIcon, { className: "jgis-stac-datepicker-icon" }),
67
- startTime ? format(startTime, 'PPP') : React.createElement("span", null, "Start Date"))),
68
- React.createElement(PopoverContent, null,
69
- React.createElement(Calendar, { mode: "single", selected: startTime, onSelect: setStartTime, autoFocus: true }))),
70
- React.createElement(Popover, null,
71
- React.createElement(PopoverTrigger, { asChild: true },
72
- React.createElement(Button, { style: { padding: '0 0.5rem' }, variant: 'outline' },
73
- React.createElement(CalendarIcon, { className: "jgis-stac-datepicker-icon" }),
74
- endTime ? format(endTime, 'PPP') : React.createElement("span", null, "End Date"))),
75
- React.createElement(PopoverContent, null,
76
- React.createElement(Calendar, { mode: "single", selected: endTime, onSelect: setEndTime, autoFocus: true })))),
77
- React.createElement(StacFilterSection, { section: "Collection", data: datasetsList, selectedCollections: Array.from(filterState.collections), selectedData: Array.from(filterState.datasets), handleCheckedChange: handleDatasetSelection }),
78
- React.createElement(StacFilterSection, { section: "Platform", data: platformsList, selectedCollections: Array.from(filterState.collections), selectedData: Array.from(filterState.platforms), handleCheckedChange: platform => handleToggle('platforms', platform) }),
79
- React.createElement(StacFilterSection, { section: "Data / Product", data: productsList, selectedCollections: Array.from(filterState.collections), selectedData: Array.from(filterState.products), handleCheckedChange: product => handleToggle('products', product) })));
80
- };
81
- export default StacPanelFilters;
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import { IStacItem } from "../types/types";
3
- interface IStacPanelResultsProps {
4
- results: IStacItem[];
5
- currentPage: number;
6
- totalPages: number;
7
- handlePaginationClick: (page: number) => void;
8
- handleResultClick: (id: string) => void;
9
- formatResult: (item: IStacItem) => string;
10
- isLoading: boolean;
11
- }
12
- declare const StacPanelResults: ({ results, currentPage, totalPages, handlePaginationClick, handleResultClick, formatResult, isLoading, }: IStacPanelResultsProps) => React.JSX.Element;
13
- export default StacPanelResults;
@@ -1,48 +0,0 @@
1
- import React from 'react';
2
- import { Button } from "../../shared/components/Button";
3
- import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, } from "../../shared/components/Pagination";
4
- function getPageItems(currentPage, totalPages) {
5
- if (totalPages <= 5) {
6
- return Array.from({ length: totalPages }, (_, i) => i + 1);
7
- }
8
- if (currentPage <= 3) {
9
- return [1, 2, 3, 'ellipsis', totalPages];
10
- }
11
- if (currentPage >= totalPages - 2) {
12
- return [
13
- totalPages - 4,
14
- totalPages - 3,
15
- totalPages - 2,
16
- totalPages - 1,
17
- totalPages,
18
- ];
19
- }
20
- return [
21
- currentPage - 2,
22
- currentPage - 1,
23
- currentPage,
24
- 'ellipsis',
25
- totalPages,
26
- ];
27
- }
28
- const StacPanelResults = ({ results, currentPage, totalPages, handlePaginationClick, handleResultClick, formatResult, isLoading, }) => {
29
- return (React.createElement("div", { className: "jgis-stac-browser-filters-panel" },
30
- React.createElement(Pagination, null,
31
- React.createElement(PaginationContent, { style: { marginTop: 0 } },
32
- React.createElement(PaginationItem, null,
33
- React.createElement(PaginationPrevious, { onClick: () => handlePaginationClick(Math.max(1, currentPage - 1)), disabled: currentPage === 1 })),
34
- totalPages <= 0 ? (React.createElement("div", null, "No Matches Found")) : (getPageItems(currentPage, totalPages).map(item => {
35
- if (item === 'ellipsis') {
36
- return (React.createElement(PaginationItem, { key: "ellipsis" },
37
- React.createElement(PaginationEllipsis, null)));
38
- }
39
- return (React.createElement(PaginationItem, { key: item },
40
- React.createElement(PaginationLink, { isActive: item === currentPage, onClick: () => handlePaginationClick(item) }, item)));
41
- })),
42
- React.createElement(PaginationItem, null,
43
- React.createElement(PaginationNext, { onClick: () => handlePaginationClick(Math.min(totalPages, currentPage + 1)), disabled: currentPage === totalPages })))),
44
- React.createElement("div", { className: "jgis-stac-browser-results-list" }, isLoading ? (
45
- // TODO: Fancy spinner
46
- React.createElement("div", null, "Loading results...")) : (results.map(result => (React.createElement(Button, { key: result.id, className: "jgis-stac-browser-results-item", onClick: () => handleResultClick(result.id) }, formatResult(result))))))));
47
- };
48
- export default StacPanelResults;