@journeyapps-labs/reactor-mod-data-browser 3.0.2 → 3.1.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.
Files changed (263) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/@types/actions/connections/SetConnectionColorAction.d.ts +11 -0
  3. package/dist/@types/actions/saved-queries/OpenSavedQueryAction.d.ts +10 -0
  4. package/dist/@types/actions/saved-queries/RemoveSavedQueryAction.d.ts +9 -0
  5. package/dist/@types/core/AbstractConnection.d.ts +2 -0
  6. package/dist/@types/core/SchemaModelDefinition.d.ts +5 -0
  7. package/dist/@types/core/connection-colors.d.ts +10 -0
  8. package/dist/@types/core/query/AbstractQuery.d.ts +1 -0
  9. package/dist/@types/core/query/StandardModelFields.d.ts +5 -0
  10. package/dist/@types/core/query/filters.d.ts +46 -5
  11. package/dist/@types/core/query/query-changed/ChangedModelQuery.d.ts +1 -0
  12. package/dist/@types/core/query/query-simple/SimplePage.d.ts +2 -0
  13. package/dist/@types/core/query/query-simple/SimpleQuery.d.ts +14 -4
  14. package/dist/@types/core/query/query-simple/SimpleQueryColumns.d.ts +12 -0
  15. package/dist/@types/core/query/query-simple/SimpleQueryFilterState.d.ts +37 -0
  16. package/dist/@types/core/query/query-simple/SimpleQueryPlanner.d.ts +4 -0
  17. package/dist/@types/core/query/query-simple/SimpleQuerySortState.d.ts +23 -0
  18. package/dist/@types/core/query/query-simple/SimpleQueryTypes.d.ts +24 -0
  19. package/dist/@types/core/query/widgets/ColumnDisplayWidget.d.ts +1 -0
  20. package/dist/@types/core/query/widgets/PeekRelationshipButton.d.ts +7 -0
  21. package/dist/@types/core/query/widgets/SmartColumnWidget.d.ts +3 -0
  22. package/dist/@types/core/query/widgets/SmartFilterWidget.d.ts +6 -0
  23. package/dist/@types/entities/ConnectionEntityDefinition.d.ts +2 -0
  24. package/dist/@types/entities/SavedQueryEntityDefinition.d.ts +8 -0
  25. package/dist/@types/entities.d.ts +2 -1
  26. package/dist/@types/forms/APIConnectionForm.d.ts +1 -0
  27. package/dist/@types/forms/TypeEngine.d.ts +3 -21
  28. package/dist/@types/forms/types/attachment-handler.d.ts +2 -0
  29. package/dist/@types/forms/types/boolean-handler.d.ts +2 -0
  30. package/dist/@types/forms/types/date-handler.d.ts +2 -0
  31. package/dist/@types/forms/types/filters/ClearableFilterFormDialogDirective.d.ts +10 -0
  32. package/dist/@types/forms/types/filters/ConditionalFilterForm.d.ts +23 -0
  33. package/dist/@types/forms/types/image-handler.d.ts +2 -0
  34. package/dist/@types/forms/types/location-handler.d.ts +2 -0
  35. package/dist/@types/forms/types/multiple-choice-handler.d.ts +2 -0
  36. package/dist/@types/forms/types/multiple-choice-integer-handler.d.ts +2 -0
  37. package/dist/@types/forms/types/number-handler.d.ts +2 -0
  38. package/dist/@types/forms/types/shared/type-handler.d.ts +37 -0
  39. package/dist/@types/forms/types/shared/ui.d.ts +768 -0
  40. package/dist/@types/forms/types/single-choice-handler.d.ts +2 -0
  41. package/dist/@types/forms/types/single-choice-integer-handler.d.ts +2 -0
  42. package/dist/@types/forms/types/text-handler.d.ts +3 -0
  43. package/dist/@types/index.d.ts +1 -0
  44. package/dist/@types/panels/_shared/SharedConnectionPanelFactory.d.ts +19 -0
  45. package/dist/@types/panels/_shared/SharedModelPanelFactory.d.ts +5 -2
  46. package/dist/@types/panels/query/QueryPanelFactory.d.ts +7 -2
  47. package/dist/@types/panels/query/TableControlsWidget.d.ts +2 -0
  48. package/dist/@types/panels/query/table-controls/ChangesControlsWidget.d.ts +8 -0
  49. package/dist/@types/panels/query/table-controls/FilterControlsWidget.d.ts +7 -0
  50. package/dist/@types/panels/query/table-controls/PageControlsWidget.d.ts +9 -0
  51. package/dist/@types/panels/query/table-controls/QueryControlsWidget.d.ts +11 -0
  52. package/dist/@types/panels/query/table-controls/SortChipWidget.d.ts +10 -0
  53. package/dist/@types/panels/query/table-controls/SortControlsWidget.d.ts +7 -0
  54. package/dist/@types/preferences/QueryControlPreferences.d.ts +7 -0
  55. package/dist/@types/stores/SavedQueryStore.d.ts +34 -0
  56. package/dist/@types/widgets/EmptyValueWidget.d.ts +7 -0
  57. package/dist/DataBrowserModule.js +21 -7
  58. package/dist/DataBrowserModule.js.map +1 -1
  59. package/dist/actions/connections/AddConnectionAction.js +2 -2
  60. package/dist/actions/connections/AddConnectionAction.js.map +1 -1
  61. package/dist/actions/connections/RemoveConnectionAction.js +2 -2
  62. package/dist/actions/connections/RemoveConnectionAction.js.map +1 -1
  63. package/dist/actions/connections/SetConnectionColorAction.js +63 -0
  64. package/dist/actions/connections/SetConnectionColorAction.js.map +1 -0
  65. package/dist/actions/saved-queries/OpenSavedQueryAction.js +58 -0
  66. package/dist/actions/saved-queries/OpenSavedQueryAction.js.map +1 -0
  67. package/dist/actions/saved-queries/RemoveSavedQueryAction.js +43 -0
  68. package/dist/actions/saved-queries/RemoveSavedQueryAction.js.map +1 -0
  69. package/dist/actions/schema-definitions/CreateModelAction.js +2 -2
  70. package/dist/actions/schema-definitions/CreateModelAction.js.map +1 -1
  71. package/dist/actions/schema-definitions/QuerySchemaModelAction.js +2 -2
  72. package/dist/actions/schema-definitions/QuerySchemaModelAction.js.map +1 -1
  73. package/dist/actions/schema-model/EditSchemaModelAction.js +2 -2
  74. package/dist/actions/schema-model/EditSchemaModelAction.js.map +1 -1
  75. package/dist/actions/schema-model/ViewSchemaModelAsJsonAction.js +2 -2
  76. package/dist/actions/schema-model/ViewSchemaModelAsJsonAction.js.map +1 -1
  77. package/dist/core/AbstractConnection.js +116 -90
  78. package/dist/core/AbstractConnection.js.map +1 -1
  79. package/dist/core/SchemaModelDefinition.js +14 -0
  80. package/dist/core/SchemaModelDefinition.js.map +1 -1
  81. package/dist/core/connection-colors.js +36 -0
  82. package/dist/core/connection-colors.js.map +1 -0
  83. package/dist/core/query/AbstractQuery.js.map +1 -1
  84. package/dist/core/query/StandardModelFields.js +10 -0
  85. package/dist/core/query/StandardModelFields.js.map +1 -0
  86. package/dist/core/query/filters.js +86 -4
  87. package/dist/core/query/filters.js.map +1 -1
  88. package/dist/core/query/query-changed/ChangedModelQuery.js +7 -0
  89. package/dist/core/query/query-changed/ChangedModelQuery.js.map +1 -1
  90. package/dist/core/query/query-simple/SimplePage.js +2 -4
  91. package/dist/core/query/query-simple/SimplePage.js.map +1 -1
  92. package/dist/core/query/query-simple/SimpleQuery.js +71 -69
  93. package/dist/core/query/query-simple/SimpleQuery.js.map +1 -1
  94. package/dist/core/query/query-simple/SimpleQueryColumns.js +88 -0
  95. package/dist/core/query/query-simple/SimpleQueryColumns.js.map +1 -0
  96. package/dist/core/query/query-simple/SimpleQueryFilterState.js +136 -0
  97. package/dist/core/query/query-simple/SimpleQueryFilterState.js.map +1 -0
  98. package/dist/core/query/query-simple/SimpleQueryPlanner.js +14 -0
  99. package/dist/core/query/query-simple/SimpleQueryPlanner.js.map +1 -0
  100. package/dist/core/query/query-simple/SimpleQuerySortState.js +140 -0
  101. package/dist/core/query/query-simple/SimpleQuerySortState.js.map +1 -0
  102. package/dist/core/query/query-simple/SimpleQueryTypes.js +44 -0
  103. package/dist/core/query/query-simple/SimpleQueryTypes.js.map +1 -0
  104. package/dist/core/query/widgets/BelongsToDisplayWidget.js +14 -7
  105. package/dist/core/query/widgets/BelongsToDisplayWidget.js.map +1 -1
  106. package/dist/core/query/widgets/CellDisplayWidget.js +5 -9
  107. package/dist/core/query/widgets/CellDisplayWidget.js.map +1 -1
  108. package/dist/core/query/widgets/ColumnDisplayWidget.js +13 -12
  109. package/dist/core/query/widgets/ColumnDisplayWidget.js.map +1 -1
  110. package/dist/core/query/widgets/PeekRelationshipButton.js +128 -0
  111. package/dist/core/query/widgets/PeekRelationshipButton.js.map +1 -0
  112. package/dist/core/query/widgets/SmartColumnWidget.js +18 -3
  113. package/dist/core/query/widgets/SmartColumnWidget.js.map +1 -1
  114. package/dist/core/query/widgets/SmartFilterWidget.js +88 -51
  115. package/dist/core/query/widgets/SmartFilterWidget.js.map +1 -1
  116. package/dist/entities/ConnectionEntityDefinition.js +33 -7
  117. package/dist/entities/ConnectionEntityDefinition.js.map +1 -1
  118. package/dist/entities/SavedQueryEntityDefinition.js +68 -0
  119. package/dist/entities/SavedQueryEntityDefinition.js.map +1 -0
  120. package/dist/entities/SchemaModelDefinitionEntityDefinition.js +9 -1
  121. package/dist/entities/SchemaModelDefinitionEntityDefinition.js.map +1 -1
  122. package/dist/entities.js +1 -0
  123. package/dist/entities.js.map +1 -1
  124. package/dist/forms/APIConnectionForm.js +11 -2
  125. package/dist/forms/APIConnectionForm.js.map +1 -1
  126. package/dist/forms/TypeEngine.js +30 -306
  127. package/dist/forms/TypeEngine.js.map +1 -1
  128. package/dist/forms/types/attachment-handler.js +29 -0
  129. package/dist/forms/types/attachment-handler.js.map +1 -0
  130. package/dist/forms/types/boolean-handler.js +22 -0
  131. package/dist/forms/types/boolean-handler.js.map +1 -0
  132. package/dist/forms/types/date-handler.js +97 -0
  133. package/dist/forms/types/date-handler.js.map +1 -0
  134. package/dist/forms/types/filters/ClearableFilterFormDialogDirective.js +25 -0
  135. package/dist/forms/types/filters/ClearableFilterFormDialogDirective.js.map +1 -0
  136. package/dist/forms/types/filters/ConditionalFilterForm.js +87 -0
  137. package/dist/forms/types/filters/ConditionalFilterForm.js.map +1 -0
  138. package/dist/forms/types/image-handler.js +82 -0
  139. package/dist/forms/types/image-handler.js.map +1 -0
  140. package/dist/forms/types/location-handler.js +49 -0
  141. package/dist/forms/types/location-handler.js.map +1 -0
  142. package/dist/forms/types/multiple-choice-handler.js +37 -0
  143. package/dist/forms/types/multiple-choice-handler.js.map +1 -0
  144. package/dist/forms/types/multiple-choice-integer-handler.js +37 -0
  145. package/dist/forms/types/multiple-choice-integer-handler.js.map +1 -0
  146. package/dist/forms/types/number-handler.js +79 -0
  147. package/dist/forms/types/number-handler.js.map +1 -0
  148. package/dist/forms/types/shared/type-handler.js +2 -0
  149. package/dist/forms/types/shared/type-handler.js.map +1 -0
  150. package/dist/forms/types/shared/ui.js +33 -0
  151. package/dist/forms/types/shared/ui.js.map +1 -0
  152. package/dist/forms/types/single-choice-handler.js +41 -0
  153. package/dist/forms/types/single-choice-handler.js.map +1 -0
  154. package/dist/forms/types/single-choice-integer-handler.js +41 -0
  155. package/dist/forms/types/single-choice-integer-handler.js.map +1 -0
  156. package/dist/forms/types/text-handler.js +170 -0
  157. package/dist/forms/types/text-handler.js.map +1 -0
  158. package/dist/index.js +1 -0
  159. package/dist/index.js.map +1 -1
  160. package/dist/panels/_shared/SharedConnectionPanelFactory.js +48 -0
  161. package/dist/panels/_shared/SharedConnectionPanelFactory.js.map +1 -0
  162. package/dist/panels/_shared/SharedModelPanelFactory.js +7 -2
  163. package/dist/panels/_shared/SharedModelPanelFactory.js.map +1 -1
  164. package/dist/panels/query/PageResultsWidget.js +28 -11
  165. package/dist/panels/query/PageResultsWidget.js.map +1 -1
  166. package/dist/panels/query/QueryPanelFactory.js +20 -2
  167. package/dist/panels/query/QueryPanelFactory.js.map +1 -1
  168. package/dist/panels/query/QueryPanelWidget.js +55 -9
  169. package/dist/panels/query/QueryPanelWidget.js.map +1 -1
  170. package/dist/panels/query/TableControlsWidget.js +29 -67
  171. package/dist/panels/query/TableControlsWidget.js.map +1 -1
  172. package/dist/panels/query/table-controls/ChangesControlsWidget.js +36 -0
  173. package/dist/panels/query/table-controls/ChangesControlsWidget.js.map +1 -0
  174. package/dist/panels/query/table-controls/FilterControlsWidget.js +106 -0
  175. package/dist/panels/query/table-controls/FilterControlsWidget.js.map +1 -0
  176. package/dist/panels/query/table-controls/PageControlsWidget.js +65 -0
  177. package/dist/panels/query/table-controls/PageControlsWidget.js.map +1 -0
  178. package/dist/panels/query/table-controls/QueryControlsWidget.js +85 -0
  179. package/dist/panels/query/table-controls/QueryControlsWidget.js.map +1 -0
  180. package/dist/panels/query/table-controls/SortChipWidget.js +75 -0
  181. package/dist/panels/query/table-controls/SortChipWidget.js.map +1 -0
  182. package/dist/panels/query/table-controls/SortControlsWidget.js +65 -0
  183. package/dist/panels/query/table-controls/SortControlsWidget.js.map +1 -0
  184. package/dist/preferences/QueryControlPreferences.js +28 -0
  185. package/dist/preferences/QueryControlPreferences.js.map +1 -0
  186. package/dist/stores/ConnectionStore.js +2 -0
  187. package/dist/stores/ConnectionStore.js.map +1 -1
  188. package/dist/stores/SavedQueryStore.js +131 -0
  189. package/dist/stores/SavedQueryStore.js.map +1 -0
  190. package/dist/tsconfig.tsbuildinfo +1 -1
  191. package/dist/widgets/EmptyValueWidget.js +15 -0
  192. package/dist/widgets/EmptyValueWidget.js.map +1 -0
  193. package/dist-module/bundle.js +181 -51
  194. package/dist-module/bundle.js.map +1 -1
  195. package/package.json +11 -11
  196. package/src/DataBrowserModule.ts +21 -7
  197. package/src/actions/connections/AddConnectionAction.tsx +2 -2
  198. package/src/actions/connections/RemoveConnectionAction.tsx +2 -2
  199. package/src/actions/connections/SetConnectionColorAction.ts +52 -0
  200. package/src/actions/saved-queries/OpenSavedQueryAction.ts +43 -0
  201. package/src/actions/saved-queries/RemoveSavedQueryAction.ts +27 -0
  202. package/src/actions/schema-definitions/CreateModelAction.ts +9 -2
  203. package/src/actions/schema-definitions/QuerySchemaModelAction.ts +9 -2
  204. package/src/actions/schema-model/EditSchemaModelAction.ts +9 -2
  205. package/src/actions/schema-model/ViewSchemaModelAsJsonAction.ts +9 -2
  206. package/src/core/AbstractConnection.ts +7 -1
  207. package/src/core/SchemaModelDefinition.ts +16 -0
  208. package/src/core/connection-colors.ts +49 -0
  209. package/src/core/query/AbstractQuery.ts +2 -0
  210. package/src/core/query/StandardModelFields.ts +9 -0
  211. package/src/core/query/filters.ts +121 -6
  212. package/src/core/query/query-changed/ChangedModelQuery.ts +8 -0
  213. package/src/core/query/query-simple/SimplePage.ts +4 -5
  214. package/src/core/query/query-simple/SimpleQuery.tsx +91 -87
  215. package/src/core/query/query-simple/SimpleQueryColumns.tsx +126 -0
  216. package/src/core/query/query-simple/SimpleQueryFilterState.ts +160 -0
  217. package/src/core/query/query-simple/SimpleQueryPlanner.ts +18 -0
  218. package/src/core/query/query-simple/SimpleQuerySortState.ts +133 -0
  219. package/src/core/query/query-simple/SimpleQueryTypes.ts +61 -0
  220. package/src/core/query/widgets/BelongsToDisplayWidget.tsx +19 -11
  221. package/src/core/query/widgets/CellDisplayWidget.tsx +5 -10
  222. package/src/core/query/widgets/ColumnDisplayWidget.tsx +24 -20
  223. package/src/core/query/widgets/PeekRelationshipButton.tsx +161 -0
  224. package/src/core/query/widgets/SmartColumnWidget.tsx +26 -4
  225. package/src/core/query/widgets/SmartFilterWidget.tsx +119 -69
  226. package/src/entities/ConnectionEntityDefinition.tsx +35 -4
  227. package/src/entities/SavedQueryEntityDefinition.ts +72 -0
  228. package/src/entities/SchemaModelDefinitionEntityDefinition.ts +11 -2
  229. package/src/entities.ts +2 -1
  230. package/src/forms/APIConnectionForm.tsx +15 -2
  231. package/src/forms/TypeEngine.tsx +35 -421
  232. package/src/forms/types/attachment-handler.tsx +35 -0
  233. package/src/forms/types/boolean-handler.tsx +28 -0
  234. package/src/forms/types/date-handler.tsx +125 -0
  235. package/src/forms/types/filters/ClearableFilterFormDialogDirective.ts +32 -0
  236. package/src/forms/types/filters/ConditionalFilterForm.tsx +109 -0
  237. package/src/forms/types/image-handler.tsx +90 -0
  238. package/src/forms/types/location-handler.tsx +53 -0
  239. package/src/forms/types/multiple-choice-handler.tsx +37 -0
  240. package/src/forms/types/multiple-choice-integer-handler.tsx +37 -0
  241. package/src/forms/types/number-handler.tsx +100 -0
  242. package/src/forms/types/shared/type-handler.ts +36 -0
  243. package/src/forms/types/shared/ui.tsx +40 -0
  244. package/src/forms/types/single-choice-handler.tsx +47 -0
  245. package/src/forms/types/single-choice-integer-handler.tsx +47 -0
  246. package/src/forms/types/text-handler.tsx +247 -0
  247. package/src/index.ts +1 -0
  248. package/src/panels/_shared/SharedConnectionPanelFactory.tsx +55 -0
  249. package/src/panels/_shared/SharedModelPanelFactory.tsx +8 -2
  250. package/src/panels/query/PageResultsWidget.tsx +40 -28
  251. package/src/panels/query/QueryPanelFactory.tsx +23 -2
  252. package/src/panels/query/QueryPanelWidget.tsx +64 -9
  253. package/src/panels/query/TableControlsWidget.tsx +42 -120
  254. package/src/panels/query/table-controls/ChangesControlsWidget.tsx +72 -0
  255. package/src/panels/query/table-controls/FilterControlsWidget.tsx +145 -0
  256. package/src/panels/query/table-controls/PageControlsWidget.tsx +97 -0
  257. package/src/panels/query/table-controls/QueryControlsWidget.tsx +127 -0
  258. package/src/panels/query/table-controls/SortChipWidget.tsx +119 -0
  259. package/src/panels/query/table-controls/SortControlsWidget.tsx +95 -0
  260. package/src/preferences/QueryControlPreferences.ts +34 -0
  261. package/src/stores/ConnectionStore.ts +2 -0
  262. package/src/stores/SavedQueryStore.ts +121 -0
  263. package/src/widgets/EmptyValueWidget.tsx +20 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,50 @@
1
1
  # @journeyapps-labs/reactor-mod-data-browser
2
2
 
3
+ ## 3.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 4e3887d: Bump dependencies
8
+
9
+ ## 3.1.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 9422edc: Ship a major Query Controls upgrade focused on speed, clarity, and persistence.
14
+
15
+ Highlights:
16
+ - Add a full Sort Controls experience:
17
+ - Multi-column sorting with ASC/DESC directions.
18
+ - Clickable table headers to cycle sort states.
19
+ - Drag-and-drop reordering of sort priority (DnD3).
20
+ - Sort state persisted in saved queries.
21
+ - Add a Filter Controls group in table controls:
22
+ - `+` picker to add/edit filters by field.
23
+ - Metadata-based filter chips (reusing filter-provided metadata).
24
+ - Explicit filter removal via chip actions.
25
+ - Expand filter capabilities:
26
+ - Statement-based filters support multiple conditions and global AND/OR matching.
27
+ - Text filters now support `=`, `starts with`, and `contains`.
28
+ - Number and date filters support comparison operators via form-driven setup.
29
+ - Improve loading UX for query updates:
30
+ - Keep the current page rendered while new data loads.
31
+ - Hot-swap page data only when the next page is ready.
32
+ - Show a lightweight loading spinner in query controls instead of jarring content loaders.
33
+ - Add new user preferences under `Query Controls`:
34
+ - Show sort controls.
35
+ - Show filter controls.
36
+ - Add connection color coding across Data Browser:
37
+ - Persist a per-connection color with sensible defaults for new/existing connections.
38
+ - Add a `Set connection color` action using the new ComboBox2 flow.
39
+ - Add connection color selection to the manual connection form via a set input.
40
+ - Render connection color indicators in panel tabs and connection entity presentation.
41
+
42
+ Also includes internal refactors for cleaner handler-owned filter setup, filter serialization typing, and modularized table-control widgets.
43
+
44
+ ### Patch Changes
45
+
46
+ - 660e4e8: Migrate Data Browser action registration and lookup to `ActionStore` for compatibility with the latest Reactor action wiring patterns.
47
+
3
48
  ## 3.0.2
4
49
 
5
50
  ### Patch Changes
@@ -0,0 +1,11 @@
1
+ import { ComboBoxStore2, EntityAction, EntityActionEvent } from '@journeyapps-labs/reactor-mod';
2
+ import { AbstractConnection } from '../../core/AbstractConnection';
3
+ import { ConnectionStore } from '../../stores/ConnectionStore';
4
+ export declare class SetConnectionColorAction extends EntityAction<AbstractConnection> {
5
+ static ID: string;
6
+ accessor comboStore: ComboBoxStore2;
7
+ accessor connectionStore: ConnectionStore;
8
+ constructor();
9
+ fireEvent(event: EntityActionEvent<AbstractConnection>): Promise<any>;
10
+ static get(): SetConnectionColorAction;
11
+ }
@@ -0,0 +1,10 @@
1
+ import { EntityAction, EntityActionEvent, WorkspaceStore } from '@journeyapps-labs/reactor-mod';
2
+ import { SavedQueryEntity, SavedQueryStore } from '../../stores/SavedQueryStore';
3
+ export declare class OpenSavedQueryAction extends EntityAction<SavedQueryEntity> {
4
+ static ID: string;
5
+ accessor workspaceStore: WorkspaceStore;
6
+ accessor savedQueryStore: SavedQueryStore;
7
+ constructor();
8
+ fireEvent(event: EntityActionEvent<SavedQueryEntity>): Promise<any>;
9
+ static get(): OpenSavedQueryAction;
10
+ }
@@ -0,0 +1,9 @@
1
+ import { EntityAction, EntityActionEvent } from '@journeyapps-labs/reactor-mod';
2
+ import { SavedQueryEntity, SavedQueryStore } from '../../stores/SavedQueryStore';
3
+ export declare class RemoveSavedQueryAction extends EntityAction<SavedQueryEntity> {
4
+ static ID: string;
5
+ accessor savedQueryStore: SavedQueryStore;
6
+ constructor();
7
+ fireEvent(event: EntityActionEvent<SavedQueryEntity>): Promise<any>;
8
+ static get(): RemoveSavedQueryAction;
9
+ }
@@ -11,6 +11,7 @@ export interface AbstractConnectionSerialized {
11
11
  factory: string;
12
12
  id: string;
13
13
  payload: any;
14
+ color?: string;
14
15
  }
15
16
  export interface AbstractConnectionListener {
16
17
  removed: () => any;
@@ -18,6 +19,7 @@ export interface AbstractConnectionListener {
18
19
  export declare abstract class AbstractConnection extends BaseObserver<AbstractConnectionListener> {
19
20
  factory: AbstractConnectionFactory;
20
21
  id: string;
22
+ accessor color: string;
21
23
  schema_models_collection: Collection<ObjectType>;
22
24
  schema_models: LifecycleCollection<ObjectType, SchemaModelDefinition>;
23
25
  private fetch_indexes_promise;
@@ -6,6 +6,7 @@ import { LifecycleModel } from '@journeyapps-labs/lib-reactor-data-layer';
6
6
  import { BaseObserver } from '@journeyapps-labs/common-utils';
7
7
  import { QueueObject } from 'async';
8
8
  import { IndexModel } from './IndexModel';
9
+ import { TypeEngine } from '../forms/TypeEngine';
9
10
  export interface SchemaModelDefinitionListener {
10
11
  resolved: (event: {
11
12
  object: SchemaModelObject;
@@ -38,4 +39,8 @@ export declare class SchemaModelDefinition extends BaseObserver<SchemaModelDefin
38
39
  executeQuery(query: Query): Promise<SchemaModelObject[]>;
39
40
  getCollection(): Promise<Collection<import("@journeyapps/db").DatabaseObject>>;
40
41
  generateNewModelObject(): Promise<SchemaModelObject>;
42
+ getFilterableFields(typeEngine: TypeEngine): {
43
+ key: string;
44
+ label: string;
45
+ }[];
41
46
  }
@@ -0,0 +1,10 @@
1
+ import { ComboBoxItem } from '@journeyapps-labs/reactor-mod';
2
+ export interface ConnectionColorOption {
3
+ key: string;
4
+ label: string;
5
+ }
6
+ export declare const CONNECTION_COLOR_OPTIONS: ConnectionColorOption[];
7
+ export declare const DEFAULT_CONNECTION_COLOR: string;
8
+ export declare function getConnectionColorComboBoxItems(): ComboBoxItem[];
9
+ export declare function getConnectionColorSetOptions(): Record<string, string>;
10
+ export declare function getDefaultConnectionColor(seed: string): string;
@@ -14,4 +14,5 @@ export declare abstract class AbstractQuery {
14
14
  abstract getColumns(): TableColumn[];
15
15
  abstract get totalPages(): number;
16
16
  abstract getPage(number: number): Page;
17
+ abstract matches(query: AbstractQuery): boolean;
17
18
  }
@@ -0,0 +1,5 @@
1
+ export declare enum StandardModelFields {
2
+ ID = "id",
3
+ UPDATED_AT = "updated_at"
4
+ }
5
+ export declare const STANDARD_MODEL_FIELD_LABELS: Record<StandardModelFields, string>;
@@ -1,17 +1,58 @@
1
1
  import { Query, Variable } from '@journeyapps/db';
2
- export declare abstract class AbstractFilter {
2
+ import { EntityLabel } from '@journeyapps-labs/reactor-mod';
3
+ import { BaseObserver } from '@journeyapps-labs/common-utils';
4
+ export interface AbstractFilterListener {
5
+ removeRequested: () => any;
6
+ }
7
+ export declare abstract class AbstractFilter extends BaseObserver<AbstractFilterListener> {
8
+ constructor();
9
+ delete(): void;
3
10
  abstract augment(query: Query): any;
4
11
  }
5
12
  export declare enum Condition {
6
- EQUALS = "="
13
+ EQUALS = "=",
14
+ NOT_EQUALS = "!=",
15
+ GREATER_THAN = ">",
16
+ GREATER_THAN_OR_EQUAL = ">=",
17
+ LESS_THAN = "<",
18
+ LESS_THAN_OR_EQUAL = "<=",
19
+ STARTS_WITH = "starts with",
20
+ CONTAINS = "contains"
21
+ }
22
+ export declare enum StatementMatch {
23
+ ANY = "ANY",
24
+ ALL = "ALL"
25
+ }
26
+ export declare enum FilterType {
27
+ SIMPLE = "simple"
7
28
  }
8
- export interface Statement {
29
+ export interface SerializedStatement {
9
30
  condition: Condition;
10
31
  arg: any;
11
32
  }
33
+ export interface SerializedSimpleFilter {
34
+ type: FilterType;
35
+ variable: string;
36
+ match?: StatementMatch;
37
+ statements: SerializedStatement[];
38
+ }
39
+ export declare class Statement {
40
+ condition: Condition;
41
+ arg: any;
42
+ constructor(condition: Condition, arg: any);
43
+ serialize(): SerializedStatement;
44
+ static deserialize(data: SerializedStatement): Statement;
45
+ getMetadataLabel(): EntityLabel;
46
+ }
12
47
  export declare class SimpleFilter extends AbstractFilter {
13
- variable: Variable;
48
+ readonly type = FilterType.SIMPLE;
14
49
  statements: Statement[];
15
- constructor(variable: Variable, statements: Statement[]);
50
+ match: StatementMatch;
51
+ constructor(variable: Variable, statements: (Statement | SerializedStatement)[], match?: StatementMatch);
52
+ variable: Variable;
16
53
  augment(query: Query): Query<import("@journeyapps/db").DatabaseObject>;
54
+ serialize(): SerializedSimpleFilter;
55
+ static deserialize(variable: Variable, data: SerializedSimpleFilter): SimpleFilter;
56
+ static canDeserialize(data: any): data is SerializedSimpleFilter;
57
+ getMetadata(): EntityLabel[];
17
58
  }
@@ -12,4 +12,5 @@ export declare class ChangedModelQuery extends AbstractQuery {
12
12
  getColumns(): TableColumn[];
13
13
  get totalPages(): number;
14
14
  getPage(number: number): Page;
15
+ matches(query: AbstractQuery): boolean;
15
16
  }
@@ -1,9 +1,11 @@
1
1
  import { Page, PageOptions } from '../Page';
2
2
  import { AbstractFilter } from '../filters';
3
+ import { SimpleQuerySort } from './SimpleQueryTypes';
3
4
  export interface SimplePageOptions extends PageOptions {
4
5
  offset: number;
5
6
  limit: number;
6
7
  filters: AbstractFilter[];
8
+ sorts?: SimpleQuerySort[];
7
9
  }
8
10
  export declare class SimplePage extends Page {
9
11
  protected options2: SimplePageOptions;
@@ -1,26 +1,36 @@
1
1
  import { TableColumn } from '@journeyapps-labs/reactor-mod';
2
2
  import { ConnectionStore } from '../../../stores/ConnectionStore';
3
- import { Promise, Variable } from '@journeyapps/db';
3
+ import { Promise } from '@journeyapps/db';
4
4
  import { Page } from '../Page';
5
5
  import { SchemaModelDefinition } from '../../SchemaModelDefinition';
6
- import { SimpleFilter } from '../filters';
7
6
  import { SchemaModelObject } from '../../SchemaModelObject';
8
7
  import { AbstractQueryEncoded, AbstractSerializableQuery } from '../AbstractSerializableQuery';
8
+ import { SerializedSimpleFilter } from '../filters';
9
+ import { SerializedSimpleQuerySort, SimpleQuerySort, SortDirection } from './SimpleQueryTypes';
10
+ import { SimpleQuerySortState } from './SimpleQuerySortState';
11
+ import { SimpleQueryFilterState } from './SimpleQueryFilterState';
12
+ import { AbstractQuery } from '../AbstractQuery';
9
13
  export interface SimpleQueryOptions {
10
14
  definition?: SchemaModelDefinition;
11
15
  limit?: number;
12
16
  }
13
17
  export interface SimpleQueryEncoded extends AbstractQueryEncoded {
14
18
  limit: number;
15
- definition: string;
19
+ filters?: SerializedSimpleFilter[];
20
+ sorts?: SerializedSimpleQuerySort[];
16
21
  }
22
+ export { SortDirection, SimpleQuerySort, type SerializedSimpleQuerySort };
17
23
  export declare class SimpleQuery extends AbstractSerializableQuery<SimpleQueryEncoded> {
18
24
  options: SimpleQueryOptions;
19
25
  accessor connStore: ConnectionStore;
20
26
  accessor _totalPages: number;
21
27
  accessor _pages: Page[];
22
- simple_filters: Map<Variable, SimpleFilter>;
28
+ readonly sortState: SimpleQuerySortState;
29
+ readonly filterState: SimpleQueryFilterState;
30
+ private suspendStateLoad;
31
+ private readonly scheduleLoad;
23
32
  constructor(options?: SimpleQueryOptions);
33
+ matches(query: AbstractQuery): boolean;
24
34
  load(): globalThis.Promise<void>;
25
35
  getPage(number: number): Page;
26
36
  get totalPages(): number;
@@ -0,0 +1,12 @@
1
+ import { TableColumn } from '@journeyapps-labs/reactor-mod';
2
+ import { SchemaModelDefinition } from '../../SchemaModelDefinition';
3
+ import { AbstractConnection } from '../../AbstractConnection';
4
+ import { SimpleQuerySortState } from './SimpleQuerySortState';
5
+ import { SimpleQueryFilterState } from './SimpleQueryFilterState';
6
+ export interface BuildSimpleQueryColumnsOptions {
7
+ definition: SchemaModelDefinition;
8
+ connection: AbstractConnection;
9
+ sortState: SimpleQuerySortState;
10
+ filterState: SimpleQueryFilterState;
11
+ }
12
+ export declare const buildSimpleQueryColumns: (options: BuildSimpleQueryColumnsOptions) => TableColumn[];
@@ -0,0 +1,37 @@
1
+ import { Variable } from '@journeyapps/db';
2
+ import { BaseObserver } from '@journeyapps-labs/common-utils';
3
+ import { SchemaModelDefinition } from '../../SchemaModelDefinition';
4
+ import { SerializedSimpleFilter, SimpleFilter } from '../filters';
5
+ import { TypeEngine } from '../../../forms/TypeEngine';
6
+ export interface SimpleQueryFilterStateListener {
7
+ changed: () => any;
8
+ }
9
+ export interface SimpleQueryFilterStateOptions {
10
+ definition?: SchemaModelDefinition;
11
+ typeEngine: TypeEngine;
12
+ }
13
+ export interface ActiveFilterEntry {
14
+ variable: Variable;
15
+ filter: SimpleFilter;
16
+ }
17
+ export declare class SimpleQueryFilterState extends BaseObserver<SimpleQueryFilterStateListener> {
18
+ readonly simpleFilters: Map<Variable, SimpleFilter>;
19
+ accessor definition: SchemaModelDefinition | undefined;
20
+ readonly typeEngine: TypeEngine;
21
+ constructor(options: SimpleQueryFilterStateOptions);
22
+ get filters(): SimpleFilter[];
23
+ clear(): void;
24
+ setDefinition(definition: SchemaModelDefinition | undefined): boolean;
25
+ getFilterableFields(): {
26
+ key: string;
27
+ label: string;
28
+ }[];
29
+ getActiveFilters(): ActiveFilterEntry[];
30
+ getFilter(field: string): SimpleFilter | undefined;
31
+ getSerializedFilters(): SerializedSimpleFilter[];
32
+ hydrateFilters(filters: SerializedSimpleFilter[]): void;
33
+ setFilter(field: string, filter: SimpleFilter): boolean;
34
+ setupFilterForField(field: string, position?: MouseEvent): Promise<boolean>;
35
+ private addFilter;
36
+ private resolveAttribute;
37
+ }
@@ -0,0 +1,4 @@
1
+ import { Query } from '@journeyapps/db';
2
+ import { AbstractFilter } from '../filters';
3
+ import { SimpleQuerySort } from './SimpleQueryTypes';
4
+ export declare const applyFiltersAndSorts: (query: Query, filters: AbstractFilter[], sorts?: SimpleQuerySort[]) => Query;
@@ -0,0 +1,23 @@
1
+ import { BaseObserver } from '@journeyapps-labs/common-utils';
2
+ import { SchemaModelDefinition } from '../../SchemaModelDefinition';
3
+ import { SerializedSimpleQuerySort, SimpleQuerySort } from './SimpleQueryTypes';
4
+ export interface SimpleQuerySortStateListener {
5
+ changed: () => any;
6
+ }
7
+ export declare class SimpleQuerySortState extends BaseObserver<SimpleQuerySortStateListener> {
8
+ accessor sorts: SimpleQuerySort[];
9
+ accessor definition: SchemaModelDefinition | undefined;
10
+ constructor(definition?: SchemaModelDefinition);
11
+ setDefinition(definition: SchemaModelDefinition | undefined): boolean;
12
+ getSort(field: string): SimpleQuerySort | undefined;
13
+ addSort(sort: SimpleQuerySort): boolean;
14
+ moveSortBefore(sourceField: string, targetField: string): boolean;
15
+ setSorts(sorts: SimpleQuerySort[]): boolean;
16
+ hydrateSorts(serializedSorts?: SerializedSimpleQuerySort[]): boolean;
17
+ getSerializedSorts(): SerializedSimpleQuerySort[];
18
+ getSortableFields(): {
19
+ key: string;
20
+ label: string;
21
+ }[];
22
+ private normalizeSorts;
23
+ }
@@ -0,0 +1,24 @@
1
+ import { BaseObserver } from '@journeyapps-labs/common-utils';
2
+ export declare enum SortDirection {
3
+ ASC = "asc",
4
+ DESC = "desc"
5
+ }
6
+ export interface SerializedSimpleQuerySort {
7
+ field: string;
8
+ direction: SortDirection;
9
+ }
10
+ export interface SimpleQuerySortListener {
11
+ changed: () => any;
12
+ removeRequested: () => any;
13
+ }
14
+ export declare class SimpleQuerySort extends BaseObserver<SimpleQuerySortListener> {
15
+ field: string;
16
+ direction: SortDirection;
17
+ constructor(field: string, direction: SortDirection);
18
+ static deserialize(value: SerializedSimpleQuerySort): SimpleQuerySort;
19
+ static create(field: string, direction?: SortDirection): SimpleQuerySort;
20
+ serialize(): SerializedSimpleQuerySort;
21
+ setDirection(direction: SortDirection): boolean;
22
+ toggle(): void;
23
+ remove(): void;
24
+ }
@@ -2,5 +2,6 @@ import * as React from 'react';
2
2
  export interface ColumnDisplayWidgetProps {
3
3
  label: string;
4
4
  className?: any;
5
+ onClick?: () => any;
5
6
  }
6
7
  export declare const ColumnDisplayWidget: React.FC<ColumnDisplayWidgetProps>;
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import { SchemaModelObject } from '../../SchemaModelObject';
3
+ export interface PeekRelationshipButtonProps {
4
+ object: SchemaModelObject;
5
+ open: (object: SchemaModelObject) => any;
6
+ }
7
+ export declare const PeekRelationshipButton: React.FC<PeekRelationshipButtonProps>;
@@ -1,10 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import { ObjectType, Variable } from '@journeyapps/db';
3
3
  import { SimpleFilter } from '../filters';
4
+ import type { SortDirection } from '../query-simple/SimpleQuery';
4
5
  export interface SmartColumnWidgetProps {
5
6
  variable: Variable;
6
7
  type?: ObjectType;
7
8
  filter?: SimpleFilter;
9
+ sortDirection?: SortDirection;
10
+ onToggleSort?: () => Promise<any> | any;
8
11
  filterChanged: (filter: SimpleFilter | null) => any;
9
12
  }
10
13
  export declare const SmartColumnWidget: React.FC<SmartColumnWidgetProps>;
@@ -6,4 +6,10 @@ export interface SmartFilterWidgetProps {
6
6
  filter?: SimpleFilter;
7
7
  filterChanged: (filter: SimpleFilter | null) => any;
8
8
  }
9
+ export interface SmartFilterMetadataWidgetProps {
10
+ variable: Variable;
11
+ filter?: SimpleFilter;
12
+ className?: any;
13
+ }
14
+ export declare const SmartFilterMetadataWidget: React.FC<SmartFilterMetadataWidgetProps>;
9
15
  export declare const SmartFilterWidget: React.FC<SmartFilterWidgetProps>;
@@ -1,8 +1,10 @@
1
1
  import { EntityDefinition } from '@journeyapps-labs/reactor-mod';
2
2
  import { ConnectionStore } from '../stores/ConnectionStore';
3
3
  import { AbstractConnection } from '../core/AbstractConnection';
4
+ import { SavedQueryStore } from '../stores/SavedQueryStore';
4
5
  export declare class ConnectionEntityDefinition extends EntityDefinition<AbstractConnection> {
5
6
  accessor connectionStore: ConnectionStore;
7
+ accessor savedQueryStore: SavedQueryStore;
6
8
  constructor();
7
9
  matchEntity(t: any): boolean;
8
10
  getEntityUID(t: AbstractConnection): string;
@@ -0,0 +1,8 @@
1
+ import { EntityDefinition } from '@journeyapps-labs/reactor-mod';
2
+ import { SavedQueryEntity, SavedQueryStore } from '../stores/SavedQueryStore';
3
+ export declare class SavedQueryEntityDefinition extends EntityDefinition<SavedQueryEntity> {
4
+ accessor savedQueryStore: SavedQueryStore;
5
+ constructor();
6
+ matchEntity(t: any): boolean;
7
+ getEntityUID(t: SavedQueryEntity): string;
8
+ }
@@ -4,5 +4,6 @@ export declare enum DataBrowserEntities {
4
4
  SCHEMA_MODEL_DEFINITION = "databrowser/schema_model_definition",
5
5
  SCHEMA_MODEL_INDEX = "databrowser/schema_model_index",
6
6
  SCHEMA_MODEL_OBJECT = "databrowser/schema_model_object",
7
- QUERY = "databrowser/query"
7
+ QUERY = "databrowser/query",
8
+ SAVED_QUERY = "databrowser/saved_query"
8
9
  }
@@ -5,6 +5,7 @@ export interface APIConnectionFormValue {
5
5
  name: string;
6
6
  base_url: string;
7
7
  api_token: string;
8
+ color: string;
8
9
  }
9
10
  export declare class APIConnectionForm extends FormModel<APIConnectionFormValue> {
10
11
  constructor(value?: APIConnectionFormValue);
@@ -1,31 +1,13 @@
1
1
  import { Type } from '@journeyapps/db';
2
- import { FormInput, MediaEngine, WorkspaceStore } from '@journeyapps-labs/reactor-mod';
3
- import { JSX } from 'react';
4
- import { SchemaModelObject } from '../core/SchemaModelObject';
5
- export interface TypeHandler<T extends Type = Type, ENCODED = any, DECODED = any> {
6
- matches: (type: Type) => boolean;
7
- generateField: (event: {
8
- label: string;
9
- name: string;
10
- type: T;
11
- }) => FormInput;
12
- generateDisplay: (event: {
13
- label: string;
14
- name: string;
15
- type: T;
16
- value: ENCODED;
17
- model: SchemaModelObject;
18
- }) => JSX.Element | string;
19
- decode: (value: ENCODED) => Promise<DECODED>;
20
- encode: (value: DECODED) => Promise<ENCODED>;
21
- }
2
+ import { MediaEngine, WorkspaceStore } from '@journeyapps-labs/reactor-mod';
3
+ import { TypeHandler } from './types/shared/type-handler';
4
+ export type { TypeHandler };
22
5
  export declare class TypeEngine {
23
6
  handlers: Set<TypeHandler>;
24
7
  accessor mediaEngine: MediaEngine;
25
8
  accessor workspaceStore: WorkspaceStore;
26
9
  private _mediaCache;
27
10
  constructor();
28
- displayArray(value: any[]): JSX.Element;
29
11
  getHandler(type: Type): TypeHandler<Type, any, any>;
30
12
  register<T extends Type = Type, ENCODED = any, DECODED = any>(handler: TypeHandler<T, ENCODED, DECODED>): void;
31
13
  }
@@ -0,0 +1,2 @@
1
+ import { TypeHandler } from './shared/type-handler';
2
+ export declare const attachmentHandler: TypeHandler;
@@ -0,0 +1,2 @@
1
+ import { TypeHandler } from './shared/type-handler';
2
+ export declare const booleanHandler: TypeHandler;
@@ -0,0 +1,2 @@
1
+ import { TypeHandler } from './shared/type-handler';
2
+ export declare const dateHandler: TypeHandler;
@@ -0,0 +1,10 @@
1
+ import { Btn, FormDialogDirective, FormDialogDirectiveOptions, FormModel } from '@journeyapps-labs/reactor-mod';
2
+ import { AbstractFilter } from '../../../core/query/filters';
3
+ export interface ClearableFilterFormDialogDirectiveOptions<T extends FormModel = FormModel> extends FormDialogDirectiveOptions<T> {
4
+ filter?: AbstractFilter;
5
+ }
6
+ export declare class ClearableFilterFormDialogDirective<T extends FormModel = FormModel> extends FormDialogDirective<T> {
7
+ private options3;
8
+ constructor(options3: ClearableFilterFormDialogDirectiveOptions<T>);
9
+ getButtons(): Btn[];
10
+ }
@@ -0,0 +1,23 @@
1
+ import { FormInput, FormModel } from '@journeyapps-labs/reactor-mod';
2
+ import { Condition, StatementMatch } from '../../../core/query/filters';
3
+ export interface ConditionalStatementValue<T = any> {
4
+ condition: Condition;
5
+ value: T;
6
+ }
7
+ export interface ConditionalFilterFormValue<T = any> {
8
+ match: StatementMatch;
9
+ statements: ConditionalStatementValue<T>[];
10
+ }
11
+ export interface ConditionalFilterFormOptions<T = any> {
12
+ match?: StatementMatch;
13
+ statements?: ConditionalStatementValue<T>[];
14
+ }
15
+ export declare abstract class ConditionalFilterForm<T = any> extends FormModel<ConditionalFilterFormValue<T>> {
16
+ protected options2?: ConditionalFilterFormOptions<T>;
17
+ constructor(options2?: ConditionalFilterFormOptions<T>);
18
+ private getInitialStatements;
19
+ protected getDefaultCondition(): Condition;
20
+ protected getConditionOptions(): Record<string, string>;
21
+ protected getDefaultValue(): T;
22
+ protected abstract generateValueInput(): FormInput;
23
+ }
@@ -0,0 +1,2 @@
1
+ import { TypeHandler, TypeHandlerContext } from './shared/type-handler';
2
+ export declare const imageHandler: (context: TypeHandlerContext) => TypeHandler;
@@ -0,0 +1,2 @@
1
+ import { TypeHandler } from './shared/type-handler';
2
+ export declare const locationHandler: TypeHandler;
@@ -0,0 +1,2 @@
1
+ import { TypeHandler, TypeHandlerContext } from './shared/type-handler';
2
+ export declare const multipleChoiceHandler: (context: TypeHandlerContext) => TypeHandler;
@@ -0,0 +1,2 @@
1
+ import { TypeHandler, TypeHandlerContext } from './shared/type-handler';
2
+ export declare const multipleChoiceIntegerHandler: (context: TypeHandlerContext) => TypeHandler;
@@ -0,0 +1,2 @@
1
+ import { TypeHandler } from './shared/type-handler';
2
+ export declare const numberHandler: TypeHandler;
@@ -0,0 +1,37 @@
1
+ import { Type, Variable } from '@journeyapps/db';
2
+ import { FormInput } from '@journeyapps-labs/reactor-mod';
3
+ import { JSX } from 'react';
4
+ import { SchemaModelObject } from '../../../core/SchemaModelObject';
5
+ import { AbstractMedia, MediaEngine, WorkspaceStore } from '@journeyapps-labs/reactor-mod';
6
+ import { SimpleFilter } from '../../../core/query/filters';
7
+ export type ScalarValue = string | number | boolean | null;
8
+ export interface TypeHandler<T extends Type = Type, ENCODED = any, DECODED = any> {
9
+ matches: (type: Type) => boolean;
10
+ generateField: (event: {
11
+ label: string;
12
+ name: string;
13
+ type: T;
14
+ }) => FormInput;
15
+ generateDisplay: (event: {
16
+ label: string;
17
+ name: string;
18
+ type: T;
19
+ value: ENCODED;
20
+ model: SchemaModelObject;
21
+ }) => JSX.Element | string;
22
+ decode: (value: ENCODED) => Promise<DECODED>;
23
+ encode: (value: DECODED) => Promise<ENCODED>;
24
+ encodeToScalar?: (value: DECODED) => Promise<ScalarValue>;
25
+ decodeFromScalar?: (value: ScalarValue) => Promise<DECODED>;
26
+ setupFilter?: (event: {
27
+ variable: Variable;
28
+ filter?: SimpleFilter;
29
+ position?: MouseEvent;
30
+ }) => Promise<SimpleFilter | null>;
31
+ }
32
+ export interface TypeHandlerContext {
33
+ mediaEngine: MediaEngine;
34
+ workspaceStore: WorkspaceStore;
35
+ mediaCache: Map<string, AbstractMedia>;
36
+ displayArray: (value: any[]) => JSX.Element | string;
37
+ }