@riboseinc/paneron-registry-kit 2.2.10 → 2.2.11

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 (61) hide show
  1. package/index.js +18 -0
  2. package/index.js.map +1 -1
  3. package/package.json +2 -2
  4. package/types/cr.d.ts +18 -0
  5. package/types/cr.js +37 -1
  6. package/types/cr.js.map +1 -1
  7. package/types/item.d.ts +1 -1
  8. package/types/item.js.map +1 -1
  9. package/types/stakeholder.d.ts +3 -1
  10. package/types/stakeholder.js +20 -0
  11. package/types/stakeholder.js.map +1 -1
  12. package/views/AnnotatedChange.js +7 -5
  13. package/views/AnnotatedChange.js.map +1 -1
  14. package/views/GenericRelatedItemView.js +4 -47
  15. package/views/GenericRelatedItemView.js.map +1 -1
  16. package/views/ItemDrawer.d.ts +11 -0
  17. package/views/ItemDrawer.js +69 -0
  18. package/views/ItemDrawer.js.map +1 -0
  19. package/views/change-request/ChangeRequestContext.d.ts +17 -1
  20. package/views/change-request/ChangeRequestContext.js +29 -5
  21. package/views/change-request/ChangeRequestContext.js.map +1 -1
  22. package/views/change-request/Proposals.d.ts +2 -0
  23. package/views/change-request/Proposals.js +116 -80
  24. package/views/change-request/Proposals.js.map +1 -1
  25. package/views/change-request/Summary.d.ts +12 -0
  26. package/views/change-request/Summary.js +59 -0
  27. package/views/change-request/Summary.js.map +1 -0
  28. package/views/change-request/TransitionHistory.d.ts +30 -0
  29. package/views/change-request/TransitionHistory.js +307 -0
  30. package/views/change-request/TransitionHistory.js.map +1 -0
  31. package/views/change-request/TransitionOptions.d.ts +38 -0
  32. package/views/{detail/ChangeRequest/transitions.js → change-request/TransitionOptions.js} +61 -51
  33. package/views/change-request/TransitionOptions.js.map +1 -0
  34. package/views/change-request/objectChangeset.d.ts +1 -1
  35. package/views/change-request/objectChangeset.js +1 -1
  36. package/views/change-request/objectChangeset.js.map +1 -1
  37. package/views/detail/ChangeRequest/index.js +129 -142
  38. package/views/detail/ChangeRequest/index.js.map +1 -1
  39. package/views/detail/RegisterHome/MetaSummary.d.ts +9 -0
  40. package/views/detail/RegisterHome/MetaSummary.js +35 -0
  41. package/views/detail/RegisterHome/MetaSummary.js.map +1 -0
  42. package/views/detail/RegisterHome/Proposal.d.ts +24 -0
  43. package/views/detail/RegisterHome/Proposal.js +228 -0
  44. package/views/detail/RegisterHome/Proposal.js.map +1 -0
  45. package/views/detail/RegisterHome/index.js +427 -137
  46. package/views/detail/RegisterHome/index.js.map +1 -1
  47. package/views/detail/RegisterItem/index.d.ts +2 -3
  48. package/views/detail/RegisterItem/index.js +239 -140
  49. package/views/detail/RegisterItem/index.js.map +1 -1
  50. package/views/detail/RegisterMeta/RegisterMetaForm.js +37 -45
  51. package/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -1
  52. package/views/detail/RegisterMeta/index.js +14 -11
  53. package/views/detail/RegisterMeta/index.js.map +1 -1
  54. package/views/diffing/InlineDiff.d.ts +27 -1
  55. package/views/diffing/InlineDiff.js +113 -2
  56. package/views/diffing/InlineDiff.js.map +1 -1
  57. package/views/util.d.ts +36 -2
  58. package/views/util.js +203 -2
  59. package/views/util.js.map +1 -1
  60. package/views/detail/ChangeRequest/transitions.d.ts +0 -28
  61. package/views/detail/ChangeRequest/transitions.js.map +0 -1
@@ -13,10 +13,12 @@ var _core = require("@blueprintjs/core");
13
13
 
14
14
  var _context = require("@riboseinc/paneron-extension-kit/context");
15
15
 
16
- var _HelpTooltip = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/HelpTooltip"));
17
-
18
16
  var _context2 = require("@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context");
19
17
 
18
+ var _util = require("@riboseinc/paneron-extension-kit/util");
19
+
20
+ var _DL = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/DL"));
21
+
20
22
  var _BrowserCtx = require("../../BrowserCtx");
21
23
 
22
24
  var _itemPathUtils = require("../../itemPathUtils");
@@ -25,15 +27,17 @@ var _ChangeRequestContext = require("../../change-request/ChangeRequestContext")
25
27
 
26
28
  var _Proposals = _interopRequireDefault(require("../../change-request/Proposals"));
27
29
 
28
- var _cr = require("../../../types/cr");
30
+ var _TransitionOptions = _interopRequireWildcard(require("../../change-request/TransitionOptions"));
29
31
 
30
- var _RegisterStakeholder = require("../../RegisterStakeholder");
32
+ var _TransitionHistory = _interopRequireWildcard(require("../../change-request/TransitionHistory"));
31
33
 
32
- var _protocolRegistry = require("../../protocolRegistry");
34
+ var _Summary = _interopRequireDefault(require("../../change-request/Summary"));
35
+
36
+ var _cr = require("../../../types/cr");
33
37
 
34
- var _util = require("../../util");
38
+ var _protocolRegistry = require("../../protocolRegistry");
35
39
 
36
- var _transitions = require("./transitions");
40
+ var _util2 = require("../../util");
37
41
 
38
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
43
 
@@ -62,18 +66,24 @@ const MaybeChangeRequest = (0, _react.memo)(function ({
62
66
  } = (0, _react.useContext)(_context2.TabbedWorkspaceContext);
63
67
  const {
64
68
  changeRequest: cr,
65
- canEdit
69
+ canTransition,
70
+ deleteCR
66
71
  } = (0, _react.useContext)(_ChangeRequestContext.ChangeRequestContext);
67
- const handleAfterDelete = (0, _react.useCallback)(() => closeTabWithURI(`${_protocolRegistry.Protocols.CHANGE_REQUEST}:${uri}`), [closeTabWithURI]);
72
+ const handleDelete = (0, _react.useCallback)(async () => {
73
+ if (deleteCR) {
74
+ await deleteCR();
75
+ closeTabWithURI(`${_protocolRegistry.Protocols.CHANGE_REQUEST}:${uri}`);
76
+ }
77
+ }, [deleteCR, closeTabWithURI]);
68
78
  return cr ? (0, _react2.jsx)(ChangeRequestDetails, {
69
79
  cr: cr,
70
- canEdit: canEdit,
80
+ canTransition: canTransition,
81
+ onDelete: deleteCR ? handleDelete : undefined,
71
82
  css: (0, _react2.css)`
72
83
  position: absolute;
73
84
  inset: 0;
74
85
  overflow-y: auto;
75
- `,
76
- afterDelete: handleAfterDelete
86
+ `
77
87
  }) : (0, _react2.jsx)(_core.NonIdealState, {
78
88
  icon: (0, _react2.jsx)(_core.Spinner, null),
79
89
  css: (0, _react2.css)`
@@ -86,157 +96,134 @@ const MaybeChangeRequest = (0, _react.memo)(function ({
86
96
  });
87
97
  const ChangeRequestDetails = (0, _react.memo)(function ({
88
98
  cr,
89
- canEdit,
90
- afterDelete,
99
+ canTransition,
100
+ onDelete,
91
101
  className
92
102
  }) {
93
- var _a, _b, _c, _d, _e, _f;
94
-
95
- const {
96
- performOperation,
97
- updateTree
98
- } = (0, _react.useContext)(_context.DatasetContext);
99
103
  const {
100
- registerMetadata,
101
- stakeholder,
102
104
  activeChangeRequestID,
103
- setActiveChangeRequestID
105
+ setActiveChangeRequestID,
106
+ stakeholder,
107
+ registerMetadata
104
108
  } = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
105
109
  const helmet = (0, _react.useMemo)(() => {
106
110
  var _a;
107
111
 
108
- return (0, _react2.jsx)(_util.RegisterHelmet, null, (0, _react2.jsx)("title", null, "Viewing proposal: ", (_a = cr.justification) !== null && _a !== void 0 ? _a : "N/A"));
112
+ return (0, _react2.jsx)(_util2.RegisterHelmet, null, (0, _react2.jsx)("title", null, "Viewing proposal: ", (_a = cr.justification) !== null && _a !== void 0 ? _a : "N/A"));
109
113
  }, [cr.justification]);
110
114
  const isActive = activeChangeRequestID === cr.id;
111
115
  const anotherIsActive = activeChangeRequestID && activeChangeRequestID !== cr.id;
112
- const canTransition = stakeholder && (0, _transitions.getTransitions)(cr, stakeholder).length > 0;
113
- const crStakeholder = ((_a = registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.stakeholders) !== null && _a !== void 0 ? _a : []).find(s => s.gitServerUsername === cr.submittingStakeholderGitServerUsername);
114
- const authorIsCurrentUser = (stakeholder === null || stakeholder === void 0 ? void 0 : stakeholder.gitServerUsername) && cr.submittingStakeholderGitServerUsername === stakeholder.gitServerUsername;
115
116
  const crItemEntries = Object.entries(cr.items).map(i => JSON.stringify(i));
116
117
  const hasItems = crItemEntries.length > 0;
117
- const crItemMemo = crItemEntries.toString();
118
- const handleDelete = (0, _react.useMemo)(() => authorIsCurrentUser && updateTree && !isActive && !hasItems && !cr.timeProposed ? performOperation('deleting proposal', async function handleDelete() {
119
- const subtreeRoot = (0, _itemPathUtils.crIDToCRPath)(cr.id).replace('/main.yaml', '');
120
- await updateTree({
121
- subtreeRoot,
122
- newSubtreeRoot: null,
123
- commitMessage: 'remove CR draft'
124
- });
125
- afterDelete === null || afterDelete === void 0 ? void 0 : afterDelete();
126
- }) : undefined, [isActive, hasItems, authorIsCurrentUser, cr.id, cr.timeProposed, afterDelete, updateTree]);
127
118
  const proposals = (0, _react.useMemo)(() => hasItems ? (0, _react2.jsx)(_Proposals.default, {
128
119
  proposals: cr.items,
129
120
  css: (0, _react2.css)`flex: 1;`
130
121
  }) : (0, _react2.jsx)(_core.NonIdealState, {
131
122
  icon: "clean",
132
123
  title: "Nothing is proposed here yet.",
133
- description: handleDelete ? (0, _react2.jsx)(_core.Button, {
134
- onClick: handleDelete
124
+ description: onDelete ? (0, _react2.jsx)(_core.Button, {
125
+ onClick: onDelete
135
126
  }, "Delete this CR draft") : undefined
136
- }), [handleDelete, hasItems, crItemMemo]);
137
- return (0, _react2.jsx)(_util.TabContentsWithActions, {
138
- className: className,
139
- actions: (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_core.FormGroup, {
140
- inline: true,
141
- labelInfo: (0, _react2.jsx)(_HelpTooltip.default, {
127
+ }), [onDelete, hasItems]);
128
+ const classification = (0, _react.useMemo)(() => {
129
+ var _a;
130
+
131
+ const classification = [];
132
+ classification.push({
133
+ icon: 'lightbulb',
134
+ children: "Proposal",
135
+ tooltip: {
142
136
  icon: 'info-sign',
143
- content: (0, _react2.jsx)(_core.UL, null, (0, _react2.jsx)("li", null, "Proposal ID: ", cr.id))
144
- }),
145
- label: (0, _react2.jsx)("strong", null, "Proposal"),
146
- css: (0, _react2.css)`margin: 0; .bp4-form-content { display: flex; flex-flow: row wrap; gap: 10px; }`
147
- }, (0, _react2.jsx)(CRActivation, {
148
- isActive: isActive,
149
- htmlTitle: anotherIsActive ? "You are in another proposal so you can’t enter this one. " : canEdit && !isActive ? "Enter proposal to preview or add to proposed changes. " : !isActive ? "Enter proposal to preview the register as proposed." : "You’re previewing the register with this proposal applied.",
150
- onChangeActiveStatus: !anotherIsActive && setActiveChangeRequestID ? active => active ? setActiveChangeRequestID === null || setActiveChangeRequestID === void 0 ? void 0 : setActiveChangeRequestID(cr.id) : setActiveChangeRequestID === null || setActiveChangeRequestID === void 0 ? void 0 : setActiveChangeRequestID(null) : undefined
151
- }))),
152
- main: (0, _react2.jsx)("div", {
153
- css: (0, _react2.css)`
154
- display: flex;
155
- flex-flow: row wrap;
156
- padding: 10px;
157
- gap: 10px;
158
- align-content: flex-start;
159
- align-items: flex-start;
160
- `,
161
- className: className
162
- }, helmet, (0, _react2.jsx)(_core.Card, {
163
- elevation: 0,
164
- css: (0, _react2.css)`
165
- flex: 100%;
166
- background: ${_core.Colors.LIGHT_GRAY3};
167
- padding: 11px;
168
- display: flex;
169
- min-height: 70vh;
170
- `
171
- }, proposals), (0, _react2.jsx)(_core.Card, {
172
- elevation: 1,
173
- css: (0, _react2.css)`flex: 30%; padding: 11px;`
174
- }, crStakeholder ? (0, _react2.jsx)("div", null, "Author: ", (0, _react2.jsx)(_RegisterStakeholder.RegisterStakeholderListItem, {
175
- stakeholder: crStakeholder,
176
- isCurrentUser: authorIsCurrentUser || undefined
177
- })) : null, (0, _react2.jsx)(_core.Divider, null), (0, _react2.jsx)("div", null, "Register\u00A0version before\u00A0proposal: ", (0, _react2.jsx)("strong", null, (_b = cr.registerVersion) !== null && _b !== void 0 ? _b : 'N/A'), "\u2002", cr.registerVersion === ((_c = registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.version) === null || _c === void 0 ? void 0 : _c.id) ? (0, _react2.jsx)(_core.Tag, {
178
- css: (0, _react2.css)`display: inline;`,
179
- intent: 'success',
180
- minimal: true,
181
- round: true
182
- }, "current", " ", (0, _react2.jsx)(_HelpTooltip.default, {
183
- intent: 'success',
184
- content: (0, _react2.jsx)(_react.default.Fragment, null, "Published version of the register", " ", "had not changed since this proposal started.")
185
- })) : (0, _react2.jsx)(_core.Tag, {
186
- css: (0, _react2.css)`display: inline;`,
187
- intent: 'warning',
188
- minimal: true,
189
- round: true
190
- }, "not current", " ", (0, _react2.jsx)(_HelpTooltip.default, {
191
- intent: 'warning',
192
- icon: 'warning-sign',
193
- content: (0, _react2.jsx)(_react.default.Fragment, null, "Register is currently at version ", (0, _react2.jsx)("strong", null, (_e = (_d = registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.version) === null || _d === void 0 ? void 0 : _d.id) !== null && _e !== void 0 ? _e : 'N/A'), ",", " ", "which is different from version proposal author may have had in mind.", " ", "It is recommended that proposed changes are reviewed to avoid unintentionally", " ", "undoing a prior change.")
194
- }))), (0, _react2.jsx)(_core.Divider, null), (0, _react2.jsx)("div", null, "Edited: ", (0, _react2.jsx)(_util.Datestamp, {
195
- date: cr.timeEdited
196
- })), (0, _react2.jsx)(_core.Divider, null), (0, _react2.jsx)("div", null, "Proposed: ", (0, _cr.hadBeenProposed)(cr) ? (0, _react2.jsx)(_util.Datestamp, {
197
- date: cr.timeProposed
198
- }) : 'not yet'), (0, _react2.jsx)(_core.Divider, null), (0, _react2.jsx)("div", null, "Disposed: ", (0, _cr.isDisposed)(cr) ? (0, _react2.jsx)(_util.Datestamp, {
199
- date: cr.timeDisposed
200
- }) : 'not yet'), (0, _react2.jsx)(_core.Divider, null), (0, _react2.jsx)(_core.H5, null, ((_f = cr.state) === null || _f === void 0 ? void 0 : _f.replaceAll('-', ' ')) || 'N/A')), (0, _react2.jsx)(_core.Card, {
201
- elevation: 1,
202
- css: (0, _react2.css)`flex: 30%; padding: 11px;`
203
- }, (0, _transitions.getPastTransitions)(cr).map(([key, el], idx) => (0, _react2.jsx)(_react.default.Fragment, {
204
- key: key
205
- }, idx !== 0 ? (0, _react2.jsx)(_core.Divider, null) : null, (0, _react2.jsx)(_core.FormGroup, {
206
- label: `${key}:`
207
- }, (0, _react2.jsx)("div", {
208
- css: (0, _react2.css)`white-space: pre-wrap;`,
209
- className: _core.Classes.RUNNING_TEXT
210
- }, el))))), canTransition ? (0, _react2.jsx)(_core.Card, {
211
- elevation: 3,
212
- css: (0, _react2.css)`flex: 30%; padding: 11px;`
213
- }, (0, _react2.jsx)(_transitions.TransitionOptions, {
214
- cr: cr
215
- })) : null)
216
- });
137
+ content: (0, _react2.jsx)(_core.UL, {
138
+ css: (0, _react2.css)`margin: 0;`
139
+ }, (0, _react2.jsx)("li", null, "Proposal ID: ", cr.id))
140
+ }
141
+ });
142
+ classification.push({
143
+ children: ((_a = cr.state) === null || _a === void 0 ? void 0 : _a.replaceAll('-', ' ')) || 'N/A',
144
+ tooltip: {
145
+ icon: 'history',
146
+ content: (0, _react2.jsx)(_core.UL, {
147
+ css: (0, _react2.css)`margin: 0;`
148
+ }, (0, _react2.jsx)("li", null, "Edited: ", (0, _react2.jsx)(_util2.Datestamp, {
149
+ date: cr.timeEdited
150
+ })), (0, _react2.jsx)("li", null, "Proposed: ", (0, _cr.hadBeenProposed)(cr) ? (0, _react2.jsx)(_util2.Datestamp, {
151
+ date: cr.timeProposed
152
+ }) : 'not yet'), (0, _react2.jsx)("li", null, "Disposed: ", (0, _cr.isDisposed)(cr) ? (0, _react2.jsx)(_util2.Datestamp, {
153
+ date: cr.timeDisposed
154
+ }) : 'not yet'))
155
+ },
156
+ intent: cr.state === 'accepted' ? 'success' : cr.state === 'returned-for-clarification' ? 'warning' : cr.state === 'withdrawn' || cr.state === 'rejected' ? 'danger' : cr.state === 'draft' ? undefined : 'primary'
157
+ });
158
+ return classification;
159
+ }, [(0, _util.toJSONNormalized)(cr)]);
160
+ const actions = (0, _react.useMemo)(() => {
161
+ const actions = [];
162
+ const handleChangeActiveStatus = !anotherIsActive && setActiveChangeRequestID ? active => active ? setActiveChangeRequestID === null || setActiveChangeRequestID === void 0 ? void 0 : setActiveChangeRequestID(cr.id) : setActiveChangeRequestID === null || setActiveChangeRequestID === void 0 ? void 0 : setActiveChangeRequestID(null) : undefined; //const htmlTitle = anotherIsActive
163
+ // ? "You are in another proposal so you can’t enter this one. "
164
+ // : canEdit && !isActive
165
+ // ? "Enter proposal to preview or add to proposed changes. "
166
+ // : !isActive
167
+ // ? "Enter proposal to preview the register as proposed."
168
+ // : "You’re previewing the register with this proposal applied."
169
+
170
+ if (handleChangeActiveStatus && isActive) {
171
+ actions.push({
172
+ children: "Exit proposal",
173
+ intent: 'warning',
174
+ disabled: !handleChangeActiveStatus,
175
+ onClick: () => handleChangeActiveStatus === null || handleChangeActiveStatus === void 0 ? void 0 : handleChangeActiveStatus(false) //title: htmlTitle,
176
+
177
+ });
178
+ } else {
179
+ actions.push({
180
+ children: "Work on this proposal",
181
+ intent: 'primary',
182
+ disabled: !handleChangeActiveStatus,
183
+ onClick: () => handleChangeActiveStatus === null || handleChangeActiveStatus === void 0 ? void 0 : handleChangeActiveStatus(true) //title: htmlTitle,
184
+
185
+ });
186
+ }
187
+
188
+ return actions;
189
+ }, [isActive, anotherIsActive]);
190
+ return (0, _react2.jsx)(_util2.TabContentsWithHeader, {
191
+ className: className,
192
+ title: (0, _util2.maybeEllipsizeString)(cr.justification, 70),
193
+ classification: classification,
194
+ layout: "card-grid",
195
+ actions: actions
196
+ }, helmet, (0, _react2.jsx)(_core.Card, {
197
+ elevation: 0,
198
+ css: (0, _react2.css)`
199
+ flex: 100%;
200
+ background: ${_core.Colors.LIGHT_GRAY3};
201
+ padding: 0;
202
+ display: flex;
203
+ min-height: 70vh;
204
+ `
205
+ }, proposals), (0, _react2.jsx)(_core.Card, {
206
+ elevation: 1,
207
+ css: (0, _react2.css)`flex: 30%; padding: 11px;`
208
+ }, (0, _react2.jsx)(_DL.default, null, (0, _react2.jsx)(_Summary.default, {
209
+ cr: cr,
210
+ currentStakeholder: stakeholder,
211
+ registerMetadata: registerMetadata !== null && registerMetadata !== void 0 ? registerMetadata : undefined
212
+ }))), (0, _react2.jsx)(_core.Card, {
213
+ elevation: 1,
214
+ css: (0, _react2.css)`flex: 30%; padding: 11px;`
215
+ }, (0, _react2.jsx)(_TransitionHistory.default, {
216
+ pastTransitions: (0, _TransitionHistory.getTransitionHistory)(cr),
217
+ isFinal: (0, _TransitionOptions.isFinalState)(cr.state)
218
+ })), canTransition ? (0, _react2.jsx)(_core.Card, {
219
+ elevation: 3,
220
+ css: (0, _react2.css)`flex: 30%; padding: 11px;`
221
+ }, (0, _react2.jsx)(_TransitionOptions.default, {
222
+ transitions: stakeholder ? (0, _TransitionOptions.getTransitions)(cr, stakeholder) : [],
223
+ stakeholder: stakeholder,
224
+ cr: cr
225
+ })) : null);
217
226
  });
218
-
219
- const CRActivation = function ({
220
- isActive,
221
- htmlTitle,
222
- labels,
223
- onChangeActiveStatus
224
- }) {
225
- var _a, _b;
226
-
227
- return onChangeActiveStatus && isActive ? (0, _react2.jsx)(_core.Button, {
228
- title: htmlTitle,
229
- intent: "warning",
230
- disabled: !onChangeActiveStatus,
231
- onClick: () => onChangeActiveStatus === null || onChangeActiveStatus === void 0 ? void 0 : onChangeActiveStatus(false)
232
- }, (_a = labels === null || labels === void 0 ? void 0 : labels.deactivate) !== null && _a !== void 0 ? _a : "Exit proposal") : (0, _react2.jsx)(_core.Button, {
233
- title: htmlTitle,
234
- intent: onChangeActiveStatus ? 'primary' : undefined,
235
- disabled: !onChangeActiveStatus,
236
- onClick: () => onChangeActiveStatus === null || onChangeActiveStatus === void 0 ? void 0 : onChangeActiveStatus(true)
237
- }, (_b = labels === null || labels === void 0 ? void 0 : labels.activate) !== null && _b !== void 0 ? _b : "Work on this proposal");
238
- };
239
-
240
227
  const CRTitle = (0, _react.memo)(function ({
241
228
  uri
242
229
  }) {
@@ -248,7 +235,7 @@ const CRTitle = (0, _react.memo)(function ({
248
235
  const justification = (_b = (_a = useObjectData({
249
236
  objectPaths: [uri]
250
237
  }).value.data) === null || _a === void 0 ? void 0 : _a[uri]) === null || _b === void 0 ? void 0 : _b.justification;
251
- return (0, _react2.jsx)(_react.default.Fragment, null, "Proposal \u201C", (0, _util.maybeEllipsizeString)(justification !== null && justification !== void 0 ? justification : uri), "\u201D");
238
+ return (0, _react2.jsx)(_react.default.Fragment, null, "Proposal \u201C", (0, _util2.maybeEllipsizeString)(justification !== null && justification !== void 0 ? justification : uri), "\u201D");
252
239
  });
253
240
  var _default = {
254
241
  main: View,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/detail/ChangeRequest/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useMemo, memo, useCallback } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport {\n Button,\n Card,\n FormGroup,\n Colors,\n NonIdealState,\n Spinner,\n H5,\n UL,\n Tag,\n Divider,\n Classes,\n} from '@blueprintjs/core';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport { TabbedWorkspaceContext } from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport { crPathToCRID, crIDToCRPath } from '../../itemPathUtils';\nimport {\n ChangeRequestContextProvider,\n ChangeRequestContext,\n} from '../../change-request/ChangeRequestContext';\nimport Proposals from '../../change-request/Proposals';\nimport { type SomeCR, type Proposed, hadBeenProposed, isDisposed } from '../../../types/cr';\nimport { RegisterStakeholderListItem } from '../../RegisterStakeholder';\nimport { Protocols } from '../../protocolRegistry';\nimport {\n TabContentsWithActions,\n RegisterHelmet as Helmet,\n maybeEllipsizeString,\n Datestamp,\n} from '../../util';\nimport { TransitionOptions, getPastTransitions, getTransitions } from './transitions';\n\n\nconst View: React.VoidFunctionComponent<{ uri: string }> =\nmemo(function ({ uri }) {\n const crID = crPathToCRID(uri);\n return (\n <ChangeRequestContextProvider changeRequestID={crID}>\n <MaybeChangeRequest uri={uri} />\n </ChangeRequestContextProvider>\n );\n});\n\n\nconst MaybeChangeRequest: React.VoidFunctionComponent<{ uri: string }> =\nmemo(function ({ uri }) {\n const { closeTabWithURI } = useContext(TabbedWorkspaceContext);\n const { changeRequest: cr, canEdit } = useContext(ChangeRequestContext);\n const handleAfterDelete = useCallback(\n (() => closeTabWithURI(`${Protocols.CHANGE_REQUEST}:${uri}`)),\n [closeTabWithURI]);\n\n return (cr\n ? <ChangeRequestDetails\n cr={cr}\n canEdit={canEdit}\n css={css`\n position: absolute;\n inset: 0;\n overflow-y: auto;\n `}\n afterDelete={handleAfterDelete}\n />\n : <NonIdealState\n icon={<Spinner />}\n css={css`\n position: absolute;\n inset: 0;\n overflow-y: auto;\n `}\n description={\"Unable to load proposal\"}\n />\n );\n});\n\n\nconst ChangeRequestDetails: React.VoidFunctionComponent<{\n cr: SomeCR,\n canEdit: boolean,\n afterDelete?: () => void,\n className?: string,\n}> = memo(function ({ cr, canEdit, afterDelete, className }) {\n const { performOperation, updateTree } = useContext(DatasetContext);\n const {\n registerMetadata,\n stakeholder,\n activeChangeRequestID,\n setActiveChangeRequestID,\n } = useContext(BrowserCtx);\n\n const helmet = useMemo((() =>\n <Helmet>\n <title>Viewing proposal: {cr.justification ?? \"N/A\"}</title>\n </Helmet>\n ), [cr.justification]);\n\n const isActive = activeChangeRequestID === cr.id;\n const anotherIsActive = activeChangeRequestID && activeChangeRequestID !== cr.id;\n const canTransition = stakeholder && getTransitions(cr, stakeholder).length > 0;\n\n const crStakeholder = (registerMetadata?.stakeholders ?? []).\n find(s => s.gitServerUsername === cr.submittingStakeholderGitServerUsername);\n\n const authorIsCurrentUser = (\n stakeholder?.gitServerUsername &&\n cr.submittingStakeholderGitServerUsername === stakeholder.gitServerUsername);\n\n const crItemEntries = Object.entries(cr.items).map(i => JSON.stringify(i));\n const hasItems = crItemEntries.length > 0;\n const crItemMemo = crItemEntries.toString();\n\n const handleDelete = useMemo((() =>\n authorIsCurrentUser && updateTree && !isActive && !hasItems && !(cr as Proposed).timeProposed\n ? performOperation('deleting proposal', async function handleDelete() {\n const subtreeRoot = crIDToCRPath(cr.id).replace('/main.yaml', '');\n await updateTree({ subtreeRoot, newSubtreeRoot: null, commitMessage: 'remove CR draft' });\n afterDelete?.();\n })\n : undefined\n ), [isActive, hasItems, authorIsCurrentUser, cr.id, (cr as Proposed).timeProposed, afterDelete, updateTree]);\n\n const proposals = useMemo((() =>\n hasItems\n ? <Proposals proposals={cr.items} css={css`flex: 1;`} />\n : <NonIdealState\n icon=\"clean\"\n title=\"Nothing is proposed here yet.\"\n description={handleDelete\n ? <Button onClick={handleDelete}>\n Delete this CR draft\n </Button>\n : undefined}\n />\n ), [\n handleDelete,\n hasItems,\n crItemMemo,\n ]);\n\n return (\n <TabContentsWithActions\n className={className}\n actions={<>\n <FormGroup\n inline\n labelInfo={<HelpTooltip\n icon='info-sign'\n content={<UL><li>Proposal ID: {cr.id}</li></UL>}\n />}\n label={<strong>Proposal</strong>}\n css={css`margin: 0; .bp4-form-content { display: flex; flex-flow: row wrap; gap: 10px; }`}>\n <CRActivation\n isActive={isActive}\n htmlTitle={anotherIsActive\n ? \"You are in another proposal so you can’t enter this one. \"\n : canEdit && !isActive\n ? \"Enter proposal to preview or add to proposed changes. \"\n : !isActive\n ? \"Enter proposal to preview the register as proposed.\"\n : \"You’re previewing the register with this proposal applied.\"}\n onChangeActiveStatus={!anotherIsActive && setActiveChangeRequestID\n ? ((active) => active\n ? setActiveChangeRequestID?.(cr.id)\n : setActiveChangeRequestID?.(null)\n )\n : undefined}\n />\n </FormGroup>\n </>}\n main={\n <div\n css={css`\n display: flex;\n flex-flow: row wrap;\n padding: 10px;\n gap: 10px;\n align-content: flex-start;\n align-items: flex-start;\n `}\n className={className}>\n {helmet}\n\n <Card elevation={0} css={css`\n flex: 100%;\n background: ${Colors.LIGHT_GRAY3};\n padding: 11px;\n display: flex;\n min-height: 70vh;\n `}>\n {proposals}\n </Card>\n\n <Card elevation={1} css={css`flex: 30%; padding: 11px;`}>\n\n {crStakeholder\n ? <div>\n Author: <RegisterStakeholderListItem\n stakeholder={crStakeholder}\n isCurrentUser={authorIsCurrentUser || undefined}\n />\n </div>\n : null}\n\n <Divider />\n <div>\n Register&nbsp;version before&nbsp;proposal: <strong>{cr.registerVersion ?? 'N/A'}</strong>\n &ensp;\n {cr.registerVersion === registerMetadata?.version?.id\n ? <Tag css={css`display: inline;`} intent='success' minimal round>\n current\n {\" \"}\n <HelpTooltip intent='success' content={<>\n Published version of the register\n {\" \"}\n had not changed since this proposal started.\n </>} />\n </Tag>\n : <Tag css={css`display: inline;`} intent='warning' minimal round>\n not current\n {\" \"}\n <HelpTooltip intent='warning' icon='warning-sign' content={<>\n Register is currently at version <strong>{registerMetadata?.version?.id ?? 'N/A'}</strong>,\n {\" \"}\n which is different from version proposal author may have had in mind.\n {\" \"}\n It is recommended that proposed changes are reviewed to avoid unintentionally\n {\" \"}\n undoing a prior change.\n </>} />\n </Tag>}\n </div>\n <Divider />\n <div>Edited: <Datestamp date={cr.timeEdited} /></div>\n <Divider />\n <div>Proposed: {hadBeenProposed(cr) ? <Datestamp date={cr.timeProposed} /> : 'not yet'}</div>\n <Divider />\n <div>Disposed: {isDisposed(cr) ? <Datestamp date={cr.timeDisposed} /> : 'not yet'}</div>\n <Divider />\n\n <H5>\n {cr.state?.replaceAll('-', ' ') || 'N/A'}\n </H5>\n </Card>\n\n <Card elevation={1} css={css`flex: 30%; padding: 11px;`}>\n {getPastTransitions(cr).map(([key, el], idx) =>\n <React.Fragment key={key}>\n {idx !== 0 ? <Divider /> : null}\n <FormGroup label={`${key}:`}>\n <div\n css={css`white-space: pre-wrap;`}\n className={Classes.RUNNING_TEXT}>\n {el}\n </div>\n </FormGroup>\n </React.Fragment>\n )}\n </Card>\n\n {canTransition\n ? <Card elevation={3} css={css`flex: 30%; padding: 11px;`}>\n <TransitionOptions cr={cr} />\n </Card>\n : null}\n </div>}\n />\n );\n});\n\n\nconst CRActivation: React.FC<{\n isActive: boolean;\n htmlTitle?: string;\n\n /** Labels for the “activate” and “deactivate” buttons. */\n labels?: { activate?: string, deactivate?: string };\n\n onChangeActiveStatus?: (newStatus: boolean) => void;\n}> = function ({ isActive, htmlTitle, labels, onChangeActiveStatus }) {\n return onChangeActiveStatus && isActive\n ? <Button\n title={htmlTitle}\n intent=\"warning\"\n disabled={!onChangeActiveStatus}\n onClick={() => onChangeActiveStatus?.(false)}>\n {labels?.deactivate ?? \"Exit proposal\"}\n </Button>\n : <Button\n title={htmlTitle}\n intent={onChangeActiveStatus ? 'primary' : undefined}\n disabled={!onChangeActiveStatus}\n onClick={() => onChangeActiveStatus?.(true)}>\n {labels?.activate ?? \"Work on this proposal\"}\n </Button>;\n};\n\n\nconst CRTitle: React.FC<{ uri: string }> = memo(function ({ uri }) {\n const { useObjectData } = useContext(DatasetContext);\n const justification = useObjectData({ objectPaths: [uri] }).value.data?.[uri]?.justification;\n return <>Proposal “{maybeEllipsizeString(justification ?? uri)}”</>;\n});\n\nexport default { main: View, title: CRTitle };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/detail/ChangeRequest/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useMemo, memo, useCallback } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport {\n Button,\n Card,\n Colors,\n NonIdealState,\n Spinner,\n UL,\n} from '@blueprintjs/core';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport { TabbedWorkspaceContext } from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context';\nimport { toJSONNormalized } from '@riboseinc/paneron-extension-kit/util';\nimport DL from '@riboseinc/paneron-extension-kit/widgets/DL';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport { crPathToCRID } from '../../itemPathUtils';\nimport {\n ChangeRequestContextProvider,\n ChangeRequestContext,\n} from '../../change-request/ChangeRequestContext';\nimport Proposals from '../../change-request/Proposals';\nimport TransitionOptions, { isFinalState, getTransitions } from '../../change-request/TransitionOptions';\nimport TransitionsAndStatus, { getTransitionHistory } from '../../change-request/TransitionHistory';\nimport Summary from '../../change-request/Summary';\nimport { type SomeCR, hadBeenProposed, isDisposed } from '../../../types/cr';\nimport { Protocols } from '../../protocolRegistry';\nimport {\n TabContentsWithHeader,\n type TabContentsWithHeaderProps,\n RegisterHelmet as Helmet,\n maybeEllipsizeString,\n Datestamp,\n} from '../../util';\n\n\nconst View: React.VoidFunctionComponent<{ uri: string }> =\nmemo(function ({ uri }) {\n const crID = crPathToCRID(uri);\n return (\n <ChangeRequestContextProvider changeRequestID={crID}>\n <MaybeChangeRequest uri={uri} />\n </ChangeRequestContextProvider>\n );\n});\n\n\nconst MaybeChangeRequest: React.VoidFunctionComponent<{ uri: string }> =\nmemo(function ({ uri }) {\n const { closeTabWithURI } = useContext(TabbedWorkspaceContext);\n const { changeRequest: cr, canTransition, deleteCR } = useContext(ChangeRequestContext);\n const handleDelete = useCallback(\n (async () => {\n if (deleteCR) {\n await deleteCR();\n closeTabWithURI(`${Protocols.CHANGE_REQUEST}:${uri}`);\n }\n }),\n [deleteCR, closeTabWithURI]);\n\n return (cr\n ? <ChangeRequestDetails\n cr={cr}\n canTransition={canTransition}\n onDelete={deleteCR ? handleDelete : undefined}\n css={css`\n position: absolute;\n inset: 0;\n overflow-y: auto;\n `}\n />\n : <NonIdealState\n icon={<Spinner />}\n css={css`\n position: absolute;\n inset: 0;\n overflow-y: auto;\n `}\n description={\"Unable to load proposal\"}\n />\n );\n});\n\n\nconst ChangeRequestDetails: React.VoidFunctionComponent<{\n cr: SomeCR,\n canTransition: boolean,\n onDelete?: () => void,\n className?: string,\n}> = memo(function ({ cr, canTransition, onDelete, className }) {\n const {\n activeChangeRequestID,\n setActiveChangeRequestID,\n stakeholder,\n registerMetadata,\n } = useContext(BrowserCtx);\n\n const helmet = useMemo((() =>\n <Helmet>\n <title>Viewing proposal: {cr.justification ?? \"N/A\"}</title>\n </Helmet>\n ), [cr.justification]);\n\n const isActive = activeChangeRequestID === cr.id;\n const anotherIsActive = activeChangeRequestID && activeChangeRequestID !== cr.id;\n\n const crItemEntries = Object.entries(cr.items).map(i => JSON.stringify(i));\n const hasItems = crItemEntries.length > 0;\n\n const proposals = useMemo((() =>\n hasItems\n ? <Proposals proposals={cr.items} css={css`flex: 1;`} />\n : <NonIdealState\n icon=\"clean\"\n title=\"Nothing is proposed here yet.\"\n description={onDelete\n ? <Button onClick={onDelete}>\n Delete this CR draft\n </Button>\n : undefined}\n />\n ), [onDelete, hasItems]);\n\n const classification = useMemo(() => {\n const classification: TabContentsWithHeaderProps[\"classification\"] = [];\n classification.push({\n icon: 'lightbulb',\n children: \"Proposal\",\n tooltip: {\n icon: 'info-sign',\n content: <UL css={css`margin: 0;`}><li>Proposal ID: {cr.id}</li></UL>,\n },\n });\n classification.push({\n children: cr.state?.replaceAll('-', ' ') || 'N/A',\n tooltip: {\n icon: 'history',\n content: <UL css={css`margin: 0;`}>\n <li>Edited: <Datestamp date={cr.timeEdited} /></li>\n <li>Proposed: {hadBeenProposed(cr) ? <Datestamp date={cr.timeProposed} /> : 'not yet'}</li>\n <li>Disposed: {isDisposed(cr) ? <Datestamp date={cr.timeDisposed} /> : 'not yet'}</li>\n </UL>,\n },\n intent: cr.state === 'accepted'\n ? 'success'\n : cr.state === 'returned-for-clarification'\n ? 'warning'\n : cr.state === 'withdrawn' || cr.state === 'rejected'\n ? 'danger'\n : cr.state === 'draft'\n ? undefined\n : 'primary',\n });\n return classification;\n }, [toJSONNormalized(cr)]);\n\n const actions = useMemo(() => {\n const actions: TabContentsWithHeaderProps[\"actions\"] = [];\n const handleChangeActiveStatus = !anotherIsActive && setActiveChangeRequestID\n ? ((active: boolean) => active\n ? setActiveChangeRequestID?.(cr.id)\n : setActiveChangeRequestID?.(null)\n )\n : undefined;\n //const htmlTitle = anotherIsActive\n // ? \"You are in another proposal so you can’t enter this one. \"\n // : canEdit && !isActive\n // ? \"Enter proposal to preview or add to proposed changes. \"\n // : !isActive\n // ? \"Enter proposal to preview the register as proposed.\"\n // : \"You’re previewing the register with this proposal applied.\"\n if (handleChangeActiveStatus && isActive) {\n actions.push({\n children: \"Exit proposal\",\n intent: 'warning',\n disabled: !handleChangeActiveStatus,\n onClick: () => handleChangeActiveStatus?.(false)\n //title: htmlTitle,\n });\n } else {\n actions.push({\n children: \"Work on this proposal\",\n intent: 'primary',\n disabled: !handleChangeActiveStatus,\n onClick: () => handleChangeActiveStatus?.(true)\n //title: htmlTitle,\n });\n }\n return actions;\n }, [isActive, anotherIsActive]);\n\n return (\n <TabContentsWithHeader\n className={className}\n title={maybeEllipsizeString(cr.justification, 70)}\n classification={classification}\n layout=\"card-grid\"\n actions={actions}>\n\n {helmet}\n\n <Card elevation={0} css={css`\n flex: 100%;\n background: ${Colors.LIGHT_GRAY3};\n padding: 0;\n display: flex;\n min-height: 70vh;\n `}>\n {proposals}\n </Card>\n\n <Card elevation={1} css={css`flex: 30%; padding: 11px;`}>\n <DL>\n <Summary\n cr={cr}\n currentStakeholder={stakeholder}\n registerMetadata={registerMetadata ?? undefined}\n />\n </DL>\n </Card>\n\n <Card elevation={1} css={css`flex: 30%; padding: 11px;`}>\n <TransitionsAndStatus\n pastTransitions={getTransitionHistory(cr)}\n isFinal={isFinalState(cr.state)}\n />\n </Card>\n\n {canTransition\n ? <Card elevation={3} css={css`flex: 30%; padding: 11px;`}>\n <TransitionOptions\n transitions={stakeholder ? getTransitions(cr, stakeholder) : []}\n stakeholder={stakeholder}\n cr={cr}\n />\n </Card>\n : null}\n </TabContentsWithHeader>\n );\n});\n\n\nconst CRTitle: React.FC<{ uri: string }> = memo(function ({ uri }) {\n const { useObjectData } = useContext(DatasetContext);\n const justification = useObjectData({ objectPaths: [uri] }).value.data?.[uri]?.justification;\n return <>Proposal “{maybeEllipsizeString(justification ?? uri)}”</>;\n});\n\nexport default { main: View, title: CRTitle };\n"]}
@@ -0,0 +1,9 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import type { Register } from '../../../types';
5
+ declare const MetaSummary: React.VoidFunctionComponent<{
6
+ register: Register;
7
+ style?: React.CSSProperties;
8
+ }>;
9
+ export default MetaSummary;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = require("@emotion/react");
9
+
10
+ var _DL = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/DL"));
11
+
12
+ var _util = require("@riboseinc/paneron-extension-kit/util");
13
+
14
+ var _InlineDiff = require("../../../views/diffing/InlineDiff");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ /** @jsx jsx */
19
+
20
+ /** @jsxFrag React.Fragment */
21
+ const MetaSummary = function ({
22
+ register,
23
+ style
24
+ }) {
25
+ var _a, _b;
26
+
27
+ return (0, _react.jsx)(_DL.default, {
28
+ style: style
29
+ }, (0, _react.jsx)("div", null, (0, _react.jsx)("dt", null, "Viewing\u00A0version:"), (0, _react.jsx)("dd", null, (_b = (_a = register.version) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : 'N/A')), (0, _react.jsx)("div", null, (0, _react.jsx)("dt", null, "Register\u00A0name:"), (0, _react.jsx)("dd", null, register.name)), (0, _react.jsx)("div", null, (0, _react.jsx)("dt", null, "Content\u00A0summary:"), (0, _react.jsx)("dd", null, register.contentSummary || 'N/A')), register.operatingLanguage ? (0, _react.jsx)("div", null, (0, _react.jsx)("dt", null, "Operating\u00A0language:"), (0, _react.jsx)("dd", null, (0, _react.jsx)(_InlineDiff.Val, {
30
+ val: (0, _util.normalizeObjectRecursively)(register.operatingLanguage)
31
+ }))) : null);
32
+ };
33
+
34
+ var _default = MetaSummary;
35
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetaSummary.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterHome/MetaSummary.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAG9B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,MAAM,6CAA6C,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,GAAG,EAAE,MAAM,mCAAmC,CAAC;AAIxD,MAAM,WAAW,GAGZ,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE;;IAChC,OAAO,CACL,IAAC,EAAE,IAAC,KAAK,EAAE,KAAK;QACd;YACE,wCAA8B;YAC9B,gBAAK,MAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,EAAE,mCAAI,KAAK,CAAM,CACpC;QACN;YACE,sCAA4B;YAC5B,gBAAK,QAAQ,CAAC,IAAI,CAAM,CACpB;QACN;YACE,wCAA8B;YAC9B,gBAAK,QAAQ,CAAC,cAAc,IAAI,KAAK,CAAM,CACvC;QACL,QAAQ,CAAC,iBAAiB;YACzB,CAAC,CAAC;gBACE,2CAAiC;gBACjC;oBACE,IAAC,GAAG,IAAC,GAAG,EAAE,0BAA0B,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAI,CACjE,CACD;YACR,CAAC,CAAC,IAAI,CACL,CACN,CAAC;AACJ,CAAC,CAAC;AAGF,eAAe,WAAW,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React from 'react';\nimport { jsx } from '@emotion/react';\nimport DL from '@riboseinc/paneron-extension-kit/widgets/DL';\nimport { normalizeObjectRecursively } from '@riboseinc/paneron-extension-kit/util';\nimport { Val } from '../../../views/diffing/InlineDiff';\nimport type { Register } from '../../../types';\n\n\nconst MetaSummary: React.VoidFunctionComponent<{\n register: Register\n style?: React.CSSProperties\n}> = function ({ register, style }) {\n return (\n <DL style={style}>\n <div>\n <dt>Viewing&nbsp;version:</dt>\n <dd>{register.version?.id ?? 'N/A'}</dd>\n </div>\n <div>\n <dt>Register&nbsp;name:</dt>\n <dd>{register.name}</dd>\n </div>\n <div>\n <dt>Content&nbsp;summary:</dt>\n <dd>{register.contentSummary || 'N/A'}</dd>\n </div>\n {register.operatingLanguage\n ? <div>\n <dt>Operating&nbsp;language:</dt>\n <dd>\n <Val val={normalizeObjectRecursively(register.operatingLanguage)} />\n </dd>\n </div>\n : null}\n </DL>\n );\n};\n\n\nexport default MetaSummary;\n"]}
@@ -0,0 +1,24 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import type { Register, RegisterStakeholder } from '../../../types';
5
+ import { type SomeCR as CR } from '../../../types/cr';
6
+ export declare const CurrentProposal: React.VoidFunctionComponent<{
7
+ proposal: CR;
8
+ register: Register;
9
+ stakeholder?: RegisterStakeholder;
10
+ }>;
11
+ export declare const NewProposal: React.VoidFunctionComponent<{
12
+ register: Register;
13
+ onCreateBlank?: (idea: string) => Promise<void>;
14
+ className?: string;
15
+ }>;
16
+ export declare const Proposals: React.VoidFunctionComponent<{
17
+ register: Register;
18
+ actionableProposals?: [groupLabel: JSX.Element | string, proposals: CR[] | undefined][];
19
+ onCreate?: (idea: string | false) => Promise<void>;
20
+ createMode?: boolean;
21
+ onSelectProposal?: (id: string) => void;
22
+ onRefreshProposals?: () => void;
23
+ className?: string;
24
+ }>;