@riboseinc/paneron-registry-kit 2.0.0-dev8 → 2.0.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 (183) hide show
  1. package/common.d.ts +1 -1
  2. package/common.js +1 -1
  3. package/common.js.map +1 -1
  4. package/index.d.ts +3 -3
  5. package/index.js +3 -3
  6. package/index.js.map +1 -1
  7. package/package.json +26 -18
  8. package/types/cr.d.ts +216 -0
  9. package/types/cr.js +175 -0
  10. package/types/cr.js.map +1 -0
  11. package/types/index.d.ts +1 -0
  12. package/types/index.js +19 -0
  13. package/types/index.js.map +1 -1
  14. package/types/item.d.ts +13 -3
  15. package/types/item.js +11 -1
  16. package/types/item.js.map +1 -1
  17. package/types/proposal.d.ts +31 -14
  18. package/types/proposal.js +1 -1
  19. package/types/proposal.js.map +1 -1
  20. package/types/register.d.ts +6 -5
  21. package/types/register.js +19 -1
  22. package/types/register.js.map +1 -1
  23. package/types/registry.d.ts +8 -3
  24. package/types/registry.js +8 -1
  25. package/types/registry.js.map +1 -1
  26. package/types/stakeholder.d.ts +40 -16
  27. package/types/stakeholder.js +47 -3
  28. package/types/stakeholder.js.map +1 -1
  29. package/types/views.d.ts +98 -24
  30. package/types/views.js.map +1 -1
  31. package/views/AnnotatedChange.d.ts +7 -0
  32. package/views/AnnotatedChange.js +91 -0
  33. package/views/AnnotatedChange.js.map +1 -0
  34. package/views/BrowserCtx.d.ts +66 -2
  35. package/views/BrowserCtx.js +13 -2
  36. package/views/BrowserCtx.js.map +1 -1
  37. package/views/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +17 -0
  38. package/views/FilterCriteria/CRITERIA_CONFIGURATION.js +202 -0
  39. package/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -0
  40. package/views/FilterCriteria/criteriaGroupToQueryExpression.d.ts +6 -0
  41. package/views/FilterCriteria/criteriaGroupToQueryExpression.js +50 -0
  42. package/views/FilterCriteria/criteriaGroupToQueryExpression.js.map +1 -0
  43. package/views/FilterCriteria/criteriaGroupToSummary.d.ts +5 -0
  44. package/views/FilterCriteria/criteriaGroupToSummary.js +62 -0
  45. package/views/FilterCriteria/criteriaGroupToSummary.js.map +1 -0
  46. package/views/FilterCriteria/criteriaToNodes.d.ts +24 -0
  47. package/views/FilterCriteria/criteriaToNodes.js +159 -0
  48. package/views/FilterCriteria/criteriaToNodes.js.map +1 -0
  49. package/views/FilterCriteria/index.d.ts +23 -0
  50. package/views/FilterCriteria/index.js +130 -0
  51. package/views/FilterCriteria/index.js.map +1 -0
  52. package/views/FilterCriteria/models.d.ts +68 -0
  53. package/views/FilterCriteria/models.js +34 -0
  54. package/views/FilterCriteria/models.js.map +1 -0
  55. package/views/FilterCriteria/mutateGroup.d.ts +17 -0
  56. package/views/FilterCriteria/mutateGroup.js +59 -0
  57. package/views/FilterCriteria/mutateGroup.js.map +1 -0
  58. package/views/GenericRelatedItemView.d.ts +1 -1
  59. package/views/GenericRelatedItemView.js +143 -101
  60. package/views/GenericRelatedItemView.js.map +1 -1
  61. package/views/RegisterStakeholder.d.ts +9 -0
  62. package/views/RegisterStakeholder.js +40 -0
  63. package/views/RegisterStakeholder.js.map +1 -0
  64. package/views/RegisterVersion.d.ts +9 -0
  65. package/views/RegisterVersion.js +41 -0
  66. package/views/RegisterVersion.js.map +1 -0
  67. package/views/SearchQuery.d.ts +13 -0
  68. package/views/SearchQuery.js +137 -0
  69. package/views/SearchQuery.js.map +1 -0
  70. package/views/change-request/ChangeRequestContext.d.ts +20 -0
  71. package/views/change-request/ChangeRequestContext.js +56 -0
  72. package/views/change-request/ChangeRequestContext.js.map +1 -0
  73. package/views/change-request/Proposals.d.ts +21 -0
  74. package/views/change-request/Proposals.js +331 -0
  75. package/views/change-request/Proposals.js.map +1 -0
  76. package/views/change-request/objectChangeset.d.ts +31 -0
  77. package/views/change-request/objectChangeset.js +229 -0
  78. package/views/change-request/objectChangeset.js.map +1 -0
  79. package/views/detail/ChangeRequest/Proposal.d.ts +0 -0
  80. package/views/detail/ChangeRequest/Proposal.js +142 -0
  81. package/views/detail/ChangeRequest/Proposal.js.map +1 -0
  82. package/views/detail/ChangeRequest/index.d.ts +13 -0
  83. package/views/detail/ChangeRequest/index.js +207 -0
  84. package/views/detail/ChangeRequest/index.js.map +1 -0
  85. package/views/detail/ChangeRequest/transitions.d.ts +28 -0
  86. package/views/detail/ChangeRequest/transitions.js +530 -0
  87. package/views/detail/ChangeRequest/transitions.js.map +1 -0
  88. package/views/detail/CustomView/index.d.ts +13 -0
  89. package/views/detail/CustomView/index.js +68 -0
  90. package/views/detail/CustomView/index.js.map +1 -0
  91. package/views/detail/RegisterHome/index.d.ts +5 -0
  92. package/views/detail/RegisterHome/index.js +128 -0
  93. package/views/detail/RegisterHome/index.js.map +1 -0
  94. package/views/detail/RegisterItem/RelatedItems.d.ts +13 -0
  95. package/views/detail/RegisterItem/RelatedItems.js +61 -0
  96. package/views/detail/RegisterItem/RelatedItems.js.map +1 -0
  97. package/views/detail/RegisterItem/SupersedingItemMenu.d.ts +13 -0
  98. package/views/detail/RegisterItem/SupersedingItemMenu.js +56 -0
  99. package/views/detail/RegisterItem/SupersedingItemMenu.js.map +1 -0
  100. package/views/detail/RegisterItem/index.d.ts +13 -0
  101. package/views/detail/RegisterItem/index.js +356 -0
  102. package/views/detail/RegisterItem/index.js.map +1 -0
  103. package/views/detail/RegisterMeta/RegisterMetaForm.d.ts +10 -0
  104. package/views/detail/RegisterMeta/RegisterMetaForm.js +331 -0
  105. package/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -0
  106. package/views/detail/RegisterMeta/index.d.ts +10 -0
  107. package/views/detail/RegisterMeta/index.js +111 -0
  108. package/views/detail/RegisterMeta/index.js.map +1 -0
  109. package/views/detail/index.d.ts +1 -0
  110. package/views/detail/index.js +24 -0
  111. package/views/detail/index.js.map +1 -0
  112. package/views/diffing/InlineDiff.d.ts +12 -0
  113. package/views/diffing/InlineDiff.js +58 -0
  114. package/views/diffing/InlineDiff.js.map +1 -0
  115. package/views/diffing/StructuredDiff.d.ts +11 -0
  116. package/views/diffing/StructuredDiff.js +65 -0
  117. package/views/diffing/StructuredDiff.js.map +1 -0
  118. package/views/hooks/useCustomView.d.ts +3 -0
  119. package/views/hooks/useCustomView.js +24 -0
  120. package/views/hooks/useCustomView.js.map +1 -0
  121. package/views/hooks/useItemClassConfig.d.ts +3 -0
  122. package/views/hooks/useItemClassConfig.js +24 -0
  123. package/views/hooks/useItemClassConfig.js.map +1 -0
  124. package/views/hooks/useItemRef.d.ts +3 -0
  125. package/views/hooks/useItemRef.js +39 -0
  126. package/views/hooks/useItemRef.js.map +1 -0
  127. package/views/hooks/useSingleRegisterItemData.d.ts +3 -0
  128. package/views/hooks/useSingleRegisterItemData.js +32 -0
  129. package/views/hooks/useSingleRegisterItemData.js.map +1 -0
  130. package/views/index.d.ts +2 -2
  131. package/views/index.js +161 -130
  132. package/views/index.js.map +1 -1
  133. package/views/itemPathUtils.d.ts +45 -2
  134. package/views/itemPathUtils.js +101 -14
  135. package/views/itemPathUtils.js.map +1 -1
  136. package/views/itemQueryUtils.d.ts +11 -0
  137. package/views/itemQueryUtils.js +48 -0
  138. package/views/itemQueryUtils.js.map +1 -0
  139. package/views/protocolRegistry.d.ts +12 -0
  140. package/views/protocolRegistry.js +42 -0
  141. package/views/protocolRegistry.js.map +1 -0
  142. package/views/sidebar/Browse/index.d.ts +11 -0
  143. package/views/sidebar/Browse/index.js +453 -0
  144. package/views/sidebar/Browse/index.js.map +1 -0
  145. package/views/sidebar/Export/index.d.ts +5 -0
  146. package/views/sidebar/Export/index.js +94 -0
  147. package/views/sidebar/Export/index.js.map +1 -0
  148. package/views/sidebar/ListItem.d.ts +10 -0
  149. package/views/sidebar/ListItem.js +43 -0
  150. package/views/sidebar/ListItem.js.map +1 -0
  151. package/views/sidebar/Registration/index.d.ts +5 -0
  152. package/views/sidebar/Registration/index.js +163 -0
  153. package/views/sidebar/Registration/index.js.map +1 -0
  154. package/views/sidebar/Search/index.d.ts +18 -0
  155. package/views/sidebar/Search/index.js +177 -0
  156. package/views/sidebar/Search/index.js.map +1 -0
  157. package/views/sidebar/index.d.ts +6 -0
  158. package/views/sidebar/index.js +104 -0
  159. package/views/sidebar/index.js.map +1 -0
  160. package/views/util.d.ts +29 -5
  161. package/views/util.js +92 -6
  162. package/views/util.js.map +1 -1
  163. package/views/ChangeRequest.d.ts +0 -12
  164. package/views/ChangeRequest.js +0 -689
  165. package/views/ChangeRequest.js.map +0 -1
  166. package/views/FilterCriteria.d.ts +0 -27
  167. package/views/FilterCriteria.js +0 -410
  168. package/views/FilterCriteria.js.map +0 -1
  169. package/views/ItemBrowser.d.ts +0 -12
  170. package/views/ItemBrowser.js +0 -255
  171. package/views/ItemBrowser.js.map +0 -1
  172. package/views/ItemDetails.d.ts +0 -14
  173. package/views/ItemDetails.js +0 -128
  174. package/views/ItemDetails.js.map +0 -1
  175. package/views/MainView.d.ts +0 -8
  176. package/views/MainView.js +0 -34
  177. package/views/MainView.js.map +0 -1
  178. package/views/RegisterInformation.d.ts +0 -7
  179. package/views/RegisterInformation.js +0 -264
  180. package/views/RegisterInformation.js.map +0 -1
  181. package/views/RegisterItemGrid.d.ts +0 -25
  182. package/views/RegisterItemGrid.js +0 -248
  183. package/views/RegisterItemGrid.js.map +0 -1
@@ -1,255 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = exports.RegisterItemBrowser = void 0;
7
-
8
- var _react = require("react");
9
-
10
- var _core = require("@emotion/core");
11
-
12
- var _core2 = require("@blueprintjs/core");
13
-
14
- var _context = require("@riboseinc/paneron-extension-kit/context");
15
-
16
- var _util = require("./util");
17
-
18
- var _BrowserCtx = require("./BrowserCtx");
19
-
20
- var _ItemDetails = _interopRequireDefault(require("./ItemDetails"));
21
-
22
- var _RegisterItemGrid = _interopRequireWildcard(require("./RegisterItemGrid"));
23
-
24
- var _itemPathUtils = require("./itemPathUtils");
25
-
26
- var _FilterCriteria = require("./FilterCriteria");
27
-
28
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
29
-
30
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
-
32
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
-
34
- /** @jsx jsx */
35
-
36
- /** @jsxFrag React.Fragment */
37
- //import { debounce } from 'throttle-debounce';
38
- //import log from 'electron-log';
39
- //import { FixedSizeList as List } from 'react-window';
40
- const RegisterItemBrowser = function ({
41
- availableClassIDs,
42
- subregisters,
43
- itemClassConfiguration,
44
- useRegisterItemData,
45
- itemActions,
46
- className,
47
- style
48
- }) {
49
- var _a;
50
-
51
- const ctx = (0, _react.useContext)(_context.DatasetContext); //const { useObjectPaths } = useContext(DatasetContext);
52
-
53
- const {
54
- usePersistentDatasetStateReducer
55
- } = ctx;
56
- const [state, dispatch] = usePersistentDatasetStateReducer((prevState, action) => {
57
- switch (action.type) {
58
- case 'select-item':
59
- const selectedItemPath = action.payload.itemPath;
60
-
61
- if (selectedItemPath) {
62
- return Object.assign(Object.assign({}, prevState), {
63
- selectedItemPath
64
- });
65
- } else {
66
- return Object.assign(Object.assign({}, prevState), {
67
- view: 'grid',
68
- selectedItemPath
69
- });
70
- }
71
-
72
- case 'open-item':
73
- return Object.assign(Object.assign({}, prevState), {
74
- view: 'item',
75
- selectedItemPath: action.payload.itemPath
76
- });
77
-
78
- case 'update-query':
79
- return Object.assign(Object.assign({}, prevState), {
80
- view: 'grid',
81
- query: action.payload.query
82
- });
83
-
84
- case 'exit-item':
85
- return Object.assign(Object.assign({}, prevState), {
86
- view: 'grid'
87
- });
88
-
89
- default:
90
- throw new Error("Unexpected register item browser state");
91
- }
92
- }, {
93
- view: 'grid',
94
- selectedItemPath: undefined,
95
- query: {
96
- criteria: (0, _FilterCriteria.makeBlankCriteria)()
97
- }
98
- }, null, 'item-browser'); //const subregisterIsSelected = subregisters !== undefined && selectedItemPathComponents.length === 3;
99
-
100
- const {
101
- subregisterID,
102
- classID,
103
- itemID
104
- } = (0, _itemPathUtils.itemPathToItemRefLike)(subregisters !== undefined, (_a = state.selectedItemPath) !== null && _a !== void 0 ? _a : '');
105
- const itemClasses = availableClassIDs !== null && availableClassIDs !== void 0 ? availableClassIDs : Object.keys(itemClassConfiguration); //const classConfiguration: ItemClassConfigurationSet =
106
- // itemClasses.reduce((o: typeof itemClassConfiguration, k: keyof typeof itemClassConfiguration) =>
107
- // { o[k] = itemClassConfiguration[k]; return o; }, {});
108
-
109
- const jumpToItem = (classID, itemID, subregisterID) => {
110
- if (subregisters === undefined && subregisterID !== undefined) {
111
- console.error("Unable to jump to register item: indicates subregister, but register does not have any", subregisterID);
112
- throw new Error("Unable to jump to register item: indicates subregister, but register does not have any");
113
- } else if (subregisters !== undefined && subregisterID === undefined) {
114
- console.error("Unable to jump to register item: subregister is required");
115
- throw new Error("Unable to jump to register item: subregister is required");
116
- }
117
-
118
- if (subregisterID) {
119
- if (subregisters[subregisterID] === undefined) {
120
- console.error("Unable to jump to register item: requested subregister does not exist", subregisterID);
121
- throw new Error("Unable to jump to register item: requested subregister does not exist");
122
- } else if (itemClasses.indexOf(classID) < 0) {
123
- console.error("Unable to jump to register item: requested item class is not allowed", classID);
124
- throw new Error("Unable to jump to register item: requested item class is not allowed");
125
- }
126
- }
127
-
128
- const itemPath = subregisterID ? `/${subregisterID}/${classID}/${itemID}.yaml` : `/${classID}/${itemID}.yaml`;
129
- dispatch({
130
- type: 'select-item',
131
- payload: {
132
- itemPath
133
- }
134
- });
135
- };
136
-
137
- const getRelatedClass = (0, _util._getRelatedClass)(itemClassConfiguration); // useEffect(() => {
138
- // if ((selectedClass === undefined && itemClasses.length > 0) ||
139
- // (selectedClass && itemClasses.indexOf(selectedClass) < 0)) {
140
- // selectClass(itemClasses[0]);
141
- // }
142
- // }, [JSON.stringify(itemClasses)]);
143
- // XXX: QUERY EXPRESSION HANDLING IS HERE
144
- // const itemClassPath: string = selectedSubregisterID
145
- // ? `/subregisters/${selectedSubregisterID}/${selectedClass ?? 'NONEXISTENT_CLASS'}/`
146
- // : `/${selectedClass ?? 'NONEXISTENT_CLASS'}/`;
147
- // const queryExpression: string = `return objPath.indexOf("${itemClassPath}") === 0`;
148
- // const normalizedQueryExp = state.queryExpression.trim() || 'return objPath.';
149
- // const indexReq = useFilteredIndex({ queryExpression: state.queryExpression });
150
- // const indexID: string = indexReq.value.indexID ?? '';
151
- // END XXX
152
- //const objectPathsQuery = useObjectPaths({ pathPrefix });
153
- //const registerItemQuery = objectPathsQuery.value.
154
- // filter(path => path !== '.DS_Store').
155
- // map(path => ({ [path.replace('.yaml', '')]: 'utf-8' as const })).
156
- // reduce((prev, curr) => ({ ...prev, ...curr }), {})
157
- //const items = useRegisterItemData(registerItemQuery);
158
- // if (selectedClass === undefined) {
159
- // return <NonIdealState title="Please select item class" />;
160
- // }
161
- //class ErrorBoundary extends React.Component<Record<never, never>, { error?: string }> {
162
- // constructor(props: any) {
163
- // super(props);
164
- // this.state = { error: undefined };
165
- // }
166
- // componentDidCatch(error: Error, info: any) {
167
- // log.error("Error rendering item details", error, info);
168
- // this.setState({ error: `${error.name}: ${error.message}` });
169
- // }
170
- // render() {
171
- // if (this.state.error !== undefined) {
172
- // return <NonIdealState
173
- // icon="heart-broken"
174
- // title="Error rendering view"
175
- // description={
176
- // <>
177
- // <p>
178
- // This could be caused by invalid register&nbsp;item&nbsp;data&nbsp;format.
179
- // </p>
180
- // <Callout style={{ textAlign: 'left', transform: 'scale(0.9)' }} title="Technical details">
181
- // <pre style={{ overflow: 'auto', paddingBottom: '1em' }}>
182
- // {this.state.error}
183
- // </pre>
184
- // </Callout>
185
- // </>
186
- // }
187
- // />;
188
- // }
189
- // return this.props.children;
190
- // }
191
- //}
192
-
193
- let view;
194
-
195
- if (state.view === 'grid') {
196
- view = (0, _core.jsx)(_RegisterItemGrid.default, {
197
- selectedItem: state.selectedItemPath ? (0, _itemPathUtils.itemPathToItemRef)(subregisters !== undefined, state.selectedItemPath) : undefined,
198
- onSelectItem: itemRef => dispatch({
199
- type: 'select-item',
200
- payload: {
201
- itemPath: (0, _itemPathUtils.itemRefToItemPath)(itemRef)
202
- }
203
- }),
204
- queryExpression: (0, _FilterCriteria.criteriaGroupToQueryExpression)(state.query.criteria),
205
- toolbar: (0, _core.jsx)(_RegisterItemGrid.SearchQuery, {
206
- rootCriteria: state.query.criteria,
207
- itemClasses: itemClassConfiguration,
208
- availableClassIDs: availableClassIDs,
209
- subregisters: subregisters,
210
- onChange: criteria => dispatch({
211
- type: 'update-query',
212
- payload: {
213
- query: {
214
- criteria
215
- }
216
- }
217
- })
218
- }),
219
- getRelatedClassConfig: getRelatedClass,
220
- useRegisterItemData: useRegisterItemData
221
- });
222
- } else if (state.view === 'item' && classID && itemID) {
223
- view = (0, _core.jsx)(_ItemDetails.default, {
224
- useRegisterItemData: useRegisterItemData,
225
- getRelatedClass: (0, _util._getRelatedClass)(itemClassConfiguration),
226
- // TODO: convert class, subregister and ID combo into a single string item path?
227
- itemClass: itemClassConfiguration[classID],
228
- subregisterID: subregisterID,
229
- itemID: itemID,
230
- itemActions: itemActions
231
- });
232
- } else {
233
- // If item view is requested, but item or class ID is missing,
234
- // we can’t show any details because the only details view we have for now
235
- // is regsiter item details view, which requires those.
236
- view = (0, _core.jsx)(_core2.NonIdealState, {
237
- icon: "heart-broken",
238
- title: "Not sure what to show",
239
- description: "Sorry! (Error code: 724A)"
240
- });
241
- }
242
-
243
- return (0, _core.jsx)(_BrowserCtx.BrowserCtx.Provider, {
244
- value: {
245
- jumpToItem,
246
- itemClasses: itemClassConfiguration,
247
- subregisters,
248
- useRegisterItemData
249
- }
250
- }, view);
251
- };
252
-
253
- exports.RegisterItemBrowser = RegisterItemBrowser;
254
- var _default = RegisterItemBrowser;
255
- exports.default = _default;
@@ -1 +0,0 @@
1
- {"version":3,"file":"ItemBrowser.js","sourceRoot":"","sources":["../../src/views/ItemBrowser.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\n//import { debounce } from 'throttle-debounce';\n//import log from 'electron-log';\n\nimport React, { useContext } from 'react';\nimport { jsx } from '@emotion/core';\n//import { FixedSizeList as List } from 'react-window';\nimport {\n NonIdealState,\n} from '@blueprintjs/core';\n\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport {\n ItemAction,\n RegisterItemDataHook,\n RegistryViewProps,\n} from '../types';\nimport { _getRelatedClass } from './util';\nimport { BrowserCtx } from './BrowserCtx';\nimport ItemDetails from './ItemDetails';\nimport RegisterItemGrid, { SearchQuery } from './RegisterItemGrid';\nimport { PersistentStateReducerHook } from '@riboseinc/paneron-extension-kit/usePersistentStateReducer';\nimport { itemPathToItemRefLike, itemPathToItemRef, itemRefToItemPath } from './itemPathUtils';\nimport { CriteriaGroup, criteriaGroupToQueryExpression, makeBlankCriteria } from './FilterCriteria';\n\n\ninterface Query {\n criteria: CriteriaGroup;\n}\ntype Action =\n | { type: 'select-item'; payload: { itemPath: string | undefined; }; }\n | { type: 'open-item'; payload: { itemPath: string; }; }\n //| { type: 'select-class', payload: { classID: string | undefined } }\n //| { type: 'open-class', payload: { classID: string } }\n //| { type: 'select-subregister', payload: { subregisterID: string | undefined } }\n //| { type: 'open-subregister', payload: { subregisterID: string } }\n | { type: 'update-query'; payload: { query: Query; }; }\n | { type: 'exit-item'; };\n\ninterface BaseState {\n view: 'item' | 'grid';\n selectedItemPath: string | undefined;\n query: Query;\n}\ninterface ItemState extends BaseState {\n view: 'item';\n selectedItemPath: string;\n query: Query;\n}\ninterface GridState extends BaseState {\n view: 'grid';\n selectedItemPath: string | undefined;\n query: Query;\n}\ntype State = ItemState |\n GridState;\n\n\nexport const RegisterItemBrowser: React.FC<\n Pick<RegistryViewProps, 'itemClassConfiguration' | 'subregisters'> & {\n availableClassIDs?: string[]\n useRegisterItemData: RegisterItemDataHook\n itemActions?: ItemAction[]\n className?: string\n style?: React.CSSProperties\n}> = function ({\n availableClassIDs,\n subregisters,\n itemClassConfiguration,\n useRegisterItemData,\n itemActions,\n className,\n style,\n}) {\n\n const ctx = useContext(DatasetContext);\n //const { useObjectPaths } = useContext(DatasetContext);\n const { usePersistentDatasetStateReducer } = ctx;\n const [ state, dispatch ] = (usePersistentDatasetStateReducer as PersistentStateReducerHook<State, Action>)(\n (prevState, action) => {\n switch (action.type) {\n case 'select-item':\n const selectedItemPath = action.payload.itemPath;\n if (selectedItemPath) {\n return {\n ...prevState,\n selectedItemPath,\n };\n } else {\n return {\n ...prevState,\n view: 'grid',\n selectedItemPath,\n };\n }\n case 'open-item':\n return {\n ...prevState,\n view: 'item',\n selectedItemPath: action.payload.itemPath,\n };\n case 'update-query':\n return {\n ...prevState,\n view: 'grid',\n query: action.payload.query,\n };\n case 'exit-item':\n return {\n ...prevState,\n view: 'grid',\n };\n default:\n throw new Error(\"Unexpected register item browser state\");\n }\n }, {\n view: 'grid',\n selectedItemPath: undefined,\n query: { criteria: makeBlankCriteria() },\n }, null, 'item-browser');\n\n //const subregisterIsSelected = subregisters !== undefined && selectedItemPathComponents.length === 3;\n\n const { subregisterID, classID, itemID } = itemPathToItemRefLike(subregisters !== undefined, state.selectedItemPath ?? '');\n\n const itemClasses = availableClassIDs ?? Object.keys(itemClassConfiguration);\n //const classConfiguration: ItemClassConfigurationSet =\n // itemClasses.reduce((o: typeof itemClassConfiguration, k: keyof typeof itemClassConfiguration) =>\n // { o[k] = itemClassConfiguration[k]; return o; }, {});\n\n const jumpToItem = (classID: string, itemID: string, subregisterID?: string) => {\n if (subregisters === undefined && subregisterID !== undefined) {\n console.error(\"Unable to jump to register item: indicates subregister, but register does not have any\", subregisterID);\n throw new Error(\"Unable to jump to register item: indicates subregister, but register does not have any\");\n } else if (subregisters !== undefined && subregisterID === undefined) {\n console.error(\"Unable to jump to register item: subregister is required\");\n throw new Error(\"Unable to jump to register item: subregister is required\");\n }\n if (subregisterID) {\n if (subregisters![subregisterID] === undefined) {\n console.error(\"Unable to jump to register item: requested subregister does not exist\", subregisterID);\n throw new Error(\"Unable to jump to register item: requested subregister does not exist\");\n } else if (itemClasses.indexOf(classID) < 0) {\n console.error(\"Unable to jump to register item: requested item class is not allowed\", classID);\n throw new Error(\"Unable to jump to register item: requested item class is not allowed\");\n }\n }\n\n const itemPath: string = subregisterID\n ? `/${subregisterID}/${classID}/${itemID}.yaml`\n : `/${classID}/${itemID}.yaml`;\n\n dispatch({ type: 'select-item', payload: { itemPath } });\n }\n\n const getRelatedClass = _getRelatedClass(itemClassConfiguration);\n\n // useEffect(() => {\n // if ((selectedClass === undefined && itemClasses.length > 0) ||\n // (selectedClass && itemClasses.indexOf(selectedClass) < 0)) {\n // selectClass(itemClasses[0]);\n // }\n // }, [JSON.stringify(itemClasses)]);\n\n\n // XXX: QUERY EXPRESSION HANDLING IS HERE\n // const itemClassPath: string = selectedSubregisterID\n // ? `/subregisters/${selectedSubregisterID}/${selectedClass ?? 'NONEXISTENT_CLASS'}/`\n // : `/${selectedClass ?? 'NONEXISTENT_CLASS'}/`;\n\n // const queryExpression: string = `return objPath.indexOf(\"${itemClassPath}\") === 0`;\n\n // const normalizedQueryExp = state.queryExpression.trim() || 'return objPath.';\n // const indexReq = useFilteredIndex({ queryExpression: state.queryExpression });\n // const indexID: string = indexReq.value.indexID ?? '';\n // END XXX\n\n\n //const objectPathsQuery = useObjectPaths({ pathPrefix });\n\n //const registerItemQuery = objectPathsQuery.value.\n // filter(path => path !== '.DS_Store').\n // map(path => ({ [path.replace('.yaml', '')]: 'utf-8' as const })).\n // reduce((prev, curr) => ({ ...prev, ...curr }), {})\n\n //const items = useRegisterItemData(registerItemQuery);\n\n // if (selectedClass === undefined) {\n // return <NonIdealState title=\"Please select item class\" />;\n // }\n\n //class ErrorBoundary extends React.Component<Record<never, never>, { error?: string }> {\n // constructor(props: any) {\n // super(props);\n // this.state = { error: undefined };\n // }\n // componentDidCatch(error: Error, info: any) {\n // log.error(\"Error rendering item details\", error, info);\n // this.setState({ error: `${error.name}: ${error.message}` });\n // }\n // render() {\n // if (this.state.error !== undefined) {\n // return <NonIdealState\n // icon=\"heart-broken\"\n // title=\"Error rendering view\"\n // description={\n // <>\n // <p>\n // This could be caused by invalid register&nbsp;item&nbsp;data&nbsp;format.\n // </p>\n // <Callout style={{ textAlign: 'left', transform: 'scale(0.9)' }} title=\"Technical details\">\n // <pre style={{ overflow: 'auto', paddingBottom: '1em' }}>\n // {this.state.error}\n // </pre>\n // </Callout>\n // </>\n // }\n // />;\n // }\n // return this.props.children;\n // }\n //}\n\n let view: JSX.Element;\n if (state.view === 'grid') {\n view = <RegisterItemGrid\n selectedItem={state.selectedItemPath\n ? itemPathToItemRef(subregisters !== undefined, state.selectedItemPath)\n : undefined}\n onSelectItem={(itemRef) => dispatch({\n type: 'select-item',\n payload: { itemPath: itemRefToItemPath(itemRef) },\n })}\n queryExpression={criteriaGroupToQueryExpression(state.query.criteria)}\n toolbar={<SearchQuery\n rootCriteria={state.query.criteria}\n itemClasses={itemClassConfiguration}\n availableClassIDs={availableClassIDs}\n subregisters={subregisters}\n onChange={(criteria) => dispatch({ type: 'update-query', payload: { query: { criteria } } })}\n />}\n getRelatedClassConfig={getRelatedClass}\n useRegisterItemData={useRegisterItemData}\n />;\n } else if (state.view === 'item' && classID && itemID) {\n view = <ItemDetails\n useRegisterItemData={useRegisterItemData}\n getRelatedClass={_getRelatedClass(itemClassConfiguration)}\n // TODO: convert class, subregister and ID combo into a single string item path?\n itemClass={itemClassConfiguration[classID]}\n subregisterID={subregisterID}\n itemID={itemID}\n itemActions={itemActions}\n />\n } else {\n // If item view is requested, but item or class ID is missing,\n // we can’t show any details because the only details view we have for now\n // is regsiter item details view, which requires those.\n view = <NonIdealState icon=\"heart-broken\" title=\"Not sure what to show\" description=\"Sorry! (Error code: 724A)\" />;\n }\n\n return (\n <BrowserCtx.Provider\n value={{\n jumpToItem,\n itemClasses: itemClassConfiguration,\n subregisters,\n useRegisterItemData,\n }}>\n {view}\n </BrowserCtx.Provider>\n );\n};\n\n\nexport default RegisterItemBrowser;\n"]}
@@ -1,14 +0,0 @@
1
- /** @jsx jsx */
2
- /** @jsxFrag React.Fragment */
3
- import React from 'react';
4
- import { ItemAction, ItemClassConfiguration, RegisterItemDataHook, RelatedItemClassConfiguration } from '../types';
5
- export declare const ItemDetails: React.FC<{
6
- itemID?: string;
7
- itemClass: ItemClassConfiguration<any>;
8
- subregisterID?: string;
9
- useRegisterItemData: RegisterItemDataHook;
10
- getRelatedClass: (clsID: string) => RelatedItemClassConfiguration;
11
- itemActions?: ItemAction[];
12
- }>;
13
- export declare const ItemDetailsWrapperDiv: import("@emotion/styled-base").StyledComponent<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement>>, object>;
14
- export default ItemDetails;
@@ -1,128 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = exports.ItemDetailsWrapperDiv = exports.ItemDetails = void 0;
7
-
8
- var _core = require("@emotion/core");
9
-
10
- var _styled = _interopRequireDefault(require("@emotion/styled"));
11
-
12
- var _core2 = require("@blueprintjs/core");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- /** @jsx jsx */
17
-
18
- /** @jsxFrag React.Fragment */
19
- const ItemDetails = function ({
20
- itemID,
21
- itemClass,
22
- subregisterID,
23
- getRelatedClass,
24
- useRegisterItemData,
25
- itemActions
26
- }) {
27
- var _a, _b, _c, _d, _e, _f, _g, _h;
28
-
29
- let details; //const itemPath = `${itemClass.meta.id}/${itemID}`;
30
-
31
- const _itemPath = `/${(_b = (_a = itemClass === null || itemClass === void 0 ? void 0 : itemClass.meta) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : 'NONEXISTENT_CLASS'}/${itemID}.yaml`;
32
- const itemPath = subregisterID ? `/subregisters/${subregisterID}/${_itemPath}` : _itemPath;
33
- const itemResponse = useRegisterItemData({
34
- itemPaths: [itemPath]
35
- });
36
- const item = itemResponse.value[itemPath];
37
- const ItemTitle = (_c = itemClass === null || itemClass === void 0 ? void 0 : itemClass.views) === null || _c === void 0 ? void 0 : _c.listItemView;
38
-
39
- if (itemID === undefined) {
40
- return (0, _core.jsx)(_core2.NonIdealState, {
41
- title: "No item is selected"
42
- });
43
- } else if (!itemClass) {
44
- return (0, _core.jsx)(_core2.NonIdealState, {
45
- icon: "heart-broken",
46
- title: "Item class not found",
47
- description: "This may be an issue with registry extension configuration"
48
- });
49
- } else if (itemResponse.isUpdating) {
50
- details = (0, _core.jsx)("div", {
51
- className: _core2.Classes.SKELETON
52
- }, "Loading\u2026");
53
- } else if (item) {
54
- const DetailView = (_d = itemClass.views.detailView) !== null && _d !== void 0 ? _d : itemClass.views.editView;
55
- details = (0, _core.jsx)(DetailView, {
56
- getRelatedItemClassConfiguration: getRelatedClass,
57
- subregisterID: subregisterID,
58
- useRegisterItemData: useRegisterItemData,
59
- itemData: item.data
60
- });
61
- } else {
62
- details = (0, _core.jsx)("div", {
63
- className: _core2.Classes.SKELETON
64
- }, "Loading\u2026");
65
- }
66
-
67
- function StyledTitle(props) {
68
- const Component = itemResponse.isUpdating || !itemID ? props => (0, _core.jsx)("span", {
69
- className: props.className
70
- }, (0, _core.jsx)("span", {
71
- className: _core2.Classes.SKELETON
72
- }, "Loading\u2026"), "\u2003") : ItemTitle;
73
- return (0, _core.jsx)(Component, Object.assign({
74
- css: (0, _core.css)`
75
- margin-top: 1em; font-weight: bold; font-size: 110%;
76
- line-height: 1;
77
- white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
78
- `,
79
- itemID: itemID
80
- }, props));
81
- }
82
-
83
- return (0, _core.jsx)("div", {
84
- css: (0, _core.css)`flex: 1; display: flex; flex-flow: column nowrap; padding: 1rem; overflow: hidden;`
85
- }, itemID ? (0, _core.jsx)("div", {
86
- css: (0, _core.css)`flex-shrink: 0; margin-bottom: 1rem; display: flex; flex-flow: column nowrap;`
87
- }, (0, _core.jsx)(_core2.ControlGroup, null, (0, _core.jsx)(_core2.Tooltip, {
88
- content: "Internal unique item ID"
89
- }, (0, _core.jsx)(_core2.InputGroup, {
90
- disabled: true,
91
- value: (item === null || item === void 0 ? void 0 : item.id) || itemID || '',
92
- fill: true
93
- })), (0, _core.jsx)(_core2.Button, {
94
- disabled: true,
95
- intent: (item === null || item === void 0 ? void 0 : item.status) === 'valid' ? 'success' : undefined,
96
- title: "Item status",
97
- icon: (item === null || item === void 0 ? void 0 : item.status) === 'valid' ? 'tick-circle' : 'blank'
98
- }, item === null || item === void 0 ? void 0 : item.status), (0, _core.jsx)(_core2.InputGroup, {
99
- disabled: true,
100
- leftIcon: "calendar",
101
- value: `accepted ${(_g = (_f = (_e = item === null || item === void 0 ? void 0 : item.dateAccepted) === null || _e === void 0 ? void 0 : _e.toLocaleDateString) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : '—'}`
102
- })), (0, _core.jsx)(StyledTitle, {
103
- itemData: (_h = item === null || item === void 0 ? void 0 : item.data) !== null && _h !== void 0 ? _h : {},
104
- useRegisterItemData: useRegisterItemData,
105
- getRelatedItemClassConfiguration: getRelatedClass
106
- })) : null, (0, _core.jsx)(ItemDetailsWrapperDiv, {
107
- className: _core2.Classes.ELEVATION_3
108
- }, details), item && (itemActions !== null && itemActions !== void 0 ? itemActions : []).length > 0 ? (0, _core.jsx)("div", {
109
- css: (0, _core.css)`flex-shrink: 0; margin-top: 1rem; display: flex; flex-flow: row nowrap; align-items: center;`
110
- }, (0, _core.jsx)(_core2.FormGroup, {
111
- css: (0, _core.css)`margin-bottom: 0;`
112
- }, itemActions.map((action, idx) => (0, _core.jsx)(_core2.Button, Object.assign({
113
- css: (0, _core.css)`${idx !== itemActions.length - 1 ? 'margin-right: .5rem;' : ''}`
114
- }, action.getButtonProps(item, itemClass)))))) : null);
115
- };
116
-
117
- exports.ItemDetails = ItemDetails;
118
- const ItemDetailsWrapperDiv = _styled.default.div`
119
- flex: 1;
120
- overflow-y: auto;
121
- padding: 1rem;
122
- border-radius: .5rem;
123
- background: ${_core2.Colors.WHITE};
124
- position: relative;
125
- `;
126
- exports.ItemDetailsWrapperDiv = ItemDetailsWrapperDiv;
127
- var _default = ItemDetails;
128
- exports.default = _default;
@@ -1 +0,0 @@
1
- {"version":3,"file":"ItemDetails.js","sourceRoot":"","sources":["../../src/views/ItemDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React from 'react';\nimport { jsx, css } from '@emotion/core';\nimport styled from '@emotion/styled';\n\nimport {\n Button, /*Callout,*/ Classes, Colors, ControlGroup,\n FormGroup,\n InputGroup, NonIdealState, Tooltip\n} from '@blueprintjs/core';\n\nimport {\n ItemAction,\n ItemClassConfiguration, RegisterItemDataHook,\n RegistryItemViewProps,\n RelatedItemClassConfiguration\n} from '../types';\n\n\nexport const ItemDetails: React.FC<{\n itemID?: string;\n itemClass: ItemClassConfiguration<any>;\n subregisterID?: string;\n useRegisterItemData: RegisterItemDataHook;\n getRelatedClass: (clsID: string) => RelatedItemClassConfiguration;\n itemActions?: ItemAction[];\n}> = function ({ itemID, itemClass, subregisterID, getRelatedClass, useRegisterItemData, itemActions }) {\n let details: JSX.Element;\n\n //const itemPath = `${itemClass.meta.id}/${itemID}`;\n const _itemPath = `/${itemClass?.meta?.id ?? 'NONEXISTENT_CLASS'}/${itemID}.yaml`;\n const itemPath = subregisterID ? `/subregisters/${subregisterID}/${_itemPath}` : _itemPath;\n\n const itemResponse = useRegisterItemData({ itemPaths: [itemPath] });\n const item = itemResponse.value[itemPath];\n\n const ItemTitle = itemClass?.views?.listItemView;\n\n if (itemID === undefined) {\n return <NonIdealState title=\"No item is selected\" />;\n\n } else if (!itemClass) {\n return <NonIdealState\n icon=\"heart-broken\"\n title=\"Item class not found\"\n description=\"This may be an issue with registry extension configuration\" />\n\n } else if (itemResponse.isUpdating) {\n details = <div className={Classes.SKELETON}>Loading…</div>;\n\n } else if (item) {\n const DetailView = itemClass.views.detailView ?? itemClass.views.editView;\n\n details = (\n <DetailView\n getRelatedItemClassConfiguration={getRelatedClass}\n subregisterID={subregisterID}\n useRegisterItemData={useRegisterItemData}\n itemData={item.data} />\n );\n\n } else {\n details = <div className={Classes.SKELETON}>Loading…</div>;\n }\n\n function StyledTitle(props: RegistryItemViewProps<any>) {\n const Component = itemResponse.isUpdating || !itemID\n ? (props: { className?: string; }) => (\n <span className={props.className}>\n <span className={Classes.SKELETON}>Loading…</span>\n &emsp;\n </span>\n )\n : ItemTitle;\n\n return (\n <Component\n css={css`\n margin-top: 1em; font-weight: bold; font-size: 110%;\n line-height: 1;\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n `}\n itemID={itemID!}\n {...props} />\n );\n }\n\n return (\n <div css={css`flex: 1; display: flex; flex-flow: column nowrap; padding: 1rem; overflow: hidden;`}>\n {itemID\n ? <div css={css`flex-shrink: 0; margin-bottom: 1rem; display: flex; flex-flow: column nowrap;`}>\n <ControlGroup>\n <Tooltip content=\"Internal unique item ID\">\n <InputGroup disabled value={item?.id || itemID || ''} fill />\n </Tooltip>\n <Button\n disabled\n intent={item?.status === 'valid' ? 'success' : undefined}\n title=\"Item status\"\n icon={item?.status === 'valid' ? 'tick-circle' : 'blank'}>\n {item?.status}\n </Button>\n <InputGroup\n disabled\n leftIcon=\"calendar\"\n value={`accepted ${item?.dateAccepted?.toLocaleDateString?.() ?? '—'}`} />\n </ControlGroup>\n <StyledTitle\n itemData={item?.data ?? {}}\n useRegisterItemData={useRegisterItemData}\n getRelatedItemClassConfiguration={getRelatedClass} />\n </div>\n : null}\n\n <ItemDetailsWrapperDiv className={Classes.ELEVATION_3}>\n {details}\n </ItemDetailsWrapperDiv>\n\n {item && ((itemActions ?? []).length > 0)\n ? <div css={css`flex-shrink: 0; margin-top: 1rem; display: flex; flex-flow: row nowrap; align-items: center;`}>\n <FormGroup css={css`margin-bottom: 0;`}>\n {itemActions!.map((action, idx) =>\n <Button\n css={css`${idx !== itemActions!.length - 1 ? 'margin-right: .5rem;' : ''}`}\n {...action.getButtonProps(item, itemClass)} />\n )}\n </FormGroup>\n </div>\n : null}\n </div>\n );\n};\n\n\nexport const ItemDetailsWrapperDiv = styled.div`\n flex: 1;\n overflow-y: auto;\n padding: 1rem;\n border-radius: .5rem;\n background: ${Colors.WHITE};\n position: relative;\n`;\n\n\nexport default ItemDetails;\n"]}
@@ -1,8 +0,0 @@
1
- /** @jsx jsx */
2
- /** @jsxFrag React.Fragment */
3
- /// <reference types="react" />
4
- export declare const MainView: React.FC<{
5
- actions?: JSX.Element;
6
- wrapperClassName?: string;
7
- style?: React.CSSProperties;
8
- }>;
package/views/MainView.js DELETED
@@ -1,34 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.MainView = void 0;
7
-
8
- var _core = require("@blueprintjs/core");
9
-
10
- var _core2 = require("@emotion/core");
11
-
12
- /** @jsx jsx */
13
-
14
- /** @jsxFrag React.Fragment */
15
- const MainView = function ({
16
- actions,
17
- children,
18
- wrapperClassName,
19
- style
20
- }) {
21
- return (0, _core2.jsx)("div", {
22
- css: (0, _core2.css)`flex: 1; display: flex; flex-flow: column nowrap; overflow: hidden;`,
23
- className: wrapperClassName,
24
- style: style
25
- }, (0, _core2.jsx)("main", {
26
- css: (0, _core2.css)`flex: 1; display: flex; flex-flow: row nowrap; align-items: stretch; overflow: hidden;`
27
- }, children), actions ? (0, _core2.jsx)(_core.Navbar, null, (0, _core2.jsx)(_core.Navbar.Group, {
28
- style: {
29
- float: 'unset'
30
- }
31
- }, actions)) : null);
32
- };
33
-
34
- exports.MainView = MainView;
@@ -1 +0,0 @@
1
- {"version":3,"file":"MainView.js","sourceRoot":"","sources":["../../src/views/MainView.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,CAAC,MAAM,QAAQ,GAIhB,UAAU,EACb,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,KAAK,GACN;IACC,OAAO,CACL,aAAK,GAAG,EAAE,GAAG,CAAA,qEAAqE,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK;QAC3H,cAAM,GAAG,EAAE,GAAG,CAAA,wFAAwF,IACnG,QAAQ,CACJ;QACN,OAAO;YACN,CAAC,CAAC,IAAC,MAAM;gBACL,IAAC,MAAM,CAAC,KAAK,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IACpC,OAAO,CACK,CACR;YACX,CAAC,CAAC,IAAI,CACJ,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { Navbar } from '@blueprintjs/core';\n\nimport { css, jsx } from '@emotion/core';\n\n\nexport const MainView: React.FC<{\n actions?: JSX.Element\n wrapperClassName?: string\n style?: React.CSSProperties\n}> = function ({\n actions,\n children,\n wrapperClassName,\n style,\n}) {\n return (\n <div css={css`flex: 1; display: flex; flex-flow: column nowrap; overflow: hidden;`} className={wrapperClassName} style={style}>\n <main css={css`flex: 1; display: flex; flex-flow: row nowrap; align-items: stretch; overflow: hidden;`}>\n {children}\n </main>\n {actions\n ? <Navbar>\n <Navbar.Group style={{ float: 'unset' }}>\n {actions}\n </Navbar.Group>\n </Navbar>\n : null}\n </div>\n );\n};\n"]}
@@ -1,7 +0,0 @@
1
- /** @jsx jsx */
2
- /// <reference types="react" />
3
- import { Register } from '../types';
4
- export declare const RegisterInformation: React.FC<{
5
- register: Partial<Register> | null;
6
- onSave?: (value: Partial<Register>, oldValue: Partial<Register> | null) => void;
7
- }>;