@riboseinc/paneron-registry-kit 2.2.5 → 2.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +18 -0
- package/index.js +23 -3
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/types/item.d.ts +1 -1
- package/types/item.js.map +1 -1
- package/types/views.d.ts +1 -1
- package/types/views.js.map +1 -1
- package/views/SearchQuery.js +8 -9
- package/views/SearchQuery.js.map +1 -1
- package/views/change-request/Proposals.d.ts +3 -3
- package/views/change-request/Proposals.js +142 -140
- package/views/change-request/Proposals.js.map +1 -1
- package/views/detail/ChangeRequest/index.d.ts +1 -1
- package/views/detail/ChangeRequest/index.js +26 -31
- package/views/detail/ChangeRequest/index.js.map +1 -1
- package/views/detail/RegisterItem/index.d.ts +9 -1
- package/views/detail/RegisterItem/index.js +211 -181
- package/views/detail/RegisterItem/index.js.map +1 -1
- package/views/index.js +5 -5
- package/views/index.js.map +1 -1
- package/views/sidebar/Browse/index.js +15 -17
- package/views/sidebar/Browse/index.js.map +1 -1
- package/views/sidebar/ListItem.js +2 -3
- package/views/sidebar/ListItem.js.map +1 -1
- package/views/sidebar/Search/index.js +2 -4
- package/views/sidebar/Search/index.js.map +1 -1
- package/views/util.js +2 -3
- package/views/util.js.map +1 -1
|
@@ -44,7 +44,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
44
44
|
/** @jsx jsx */
|
|
45
45
|
|
|
46
46
|
/** @jsxFrag React.Fragment */
|
|
47
|
-
const View = function ({
|
|
47
|
+
const View = (0, _react.memo)(function ({
|
|
48
48
|
uri
|
|
49
49
|
}) {
|
|
50
50
|
const crID = (0, _itemPathUtils.crPathToCRID)(uri);
|
|
@@ -53,9 +53,8 @@ const View = function ({
|
|
|
53
53
|
}, (0, _react2.jsx)(MaybeChangeRequest, {
|
|
54
54
|
uri: uri
|
|
55
55
|
}));
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
const MaybeChangeRequest = function ({
|
|
56
|
+
});
|
|
57
|
+
const MaybeChangeRequest = (0, _react.memo)(function ({
|
|
59
58
|
uri
|
|
60
59
|
}) {
|
|
61
60
|
const {
|
|
@@ -84,9 +83,8 @@ const MaybeChangeRequest = function ({
|
|
|
84
83
|
`,
|
|
85
84
|
description: "Unable to load proposal"
|
|
86
85
|
});
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
const ChangeRequestDetails = function ({
|
|
86
|
+
});
|
|
87
|
+
const ChangeRequestDetails = (0, _react.memo)(function ({
|
|
90
88
|
cr,
|
|
91
89
|
canEdit,
|
|
92
90
|
afterDelete,
|
|
@@ -107,37 +105,35 @@ const ChangeRequestDetails = function ({
|
|
|
107
105
|
const helmet = (0, _react.useMemo)(() => {
|
|
108
106
|
var _a;
|
|
109
107
|
|
|
110
|
-
return (0, _react2.jsx)(_util.RegisterHelmet, null, (0, _react2.jsx)("title", null, "Viewing proposal: ", (_a = cr
|
|
111
|
-
}, [cr
|
|
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"));
|
|
109
|
+
}, [cr.justification]);
|
|
112
110
|
const isActive = activeChangeRequestID === cr.id;
|
|
113
111
|
const anotherIsActive = activeChangeRequestID && activeChangeRequestID !== cr.id;
|
|
114
112
|
const canTransition = stakeholder && (0, _transitions.getTransitions)(cr, stakeholder).length > 0;
|
|
115
113
|
const crStakeholder = ((_a = registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.stakeholders) !== null && _a !== void 0 ? _a : []).find(s => s.gitServerUsername === cr.submittingStakeholderGitServerUsername);
|
|
116
114
|
const authorIsCurrentUser = (stakeholder === null || stakeholder === void 0 ? void 0 : stakeholder.gitServerUsername) && cr.submittingStakeholderGitServerUsername === stakeholder.gitServerUsername;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
const crItemEntries = Object.entries(cr.items);
|
|
131
|
-
const proposals = (0, _react.useMemo)(() => crItemEntries.length > 0 ? (0, _react2.jsx)(_Proposals.default, {
|
|
115
|
+
const crItemEntries = Object.entries(cr.items).map(i => JSON.stringify(i));
|
|
116
|
+
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
|
+
const proposals = (0, _react.useMemo)(() => hasItems ? (0, _react2.jsx)(_Proposals.default, {
|
|
132
128
|
proposals: cr.items,
|
|
133
129
|
css: (0, _react2.css)`flex: 1;`
|
|
134
130
|
}) : (0, _react2.jsx)(_core.NonIdealState, {
|
|
135
131
|
icon: "clean",
|
|
136
132
|
title: "Nothing is proposed here yet.",
|
|
137
|
-
description:
|
|
138
|
-
onClick:
|
|
133
|
+
description: handleDelete ? (0, _react2.jsx)(_core.Button, {
|
|
134
|
+
onClick: handleDelete
|
|
139
135
|
}, "Delete this CR draft") : undefined
|
|
140
|
-
}), [
|
|
136
|
+
}), [handleDelete, hasItems, crItemMemo]);
|
|
141
137
|
return (0, _react2.jsx)(_util.TabContentsWithActions, {
|
|
142
138
|
className: className,
|
|
143
139
|
actions: (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_core.FormGroup, {
|
|
@@ -218,7 +214,7 @@ const ChangeRequestDetails = function ({
|
|
|
218
214
|
cr: cr
|
|
219
215
|
})) : null)
|
|
220
216
|
});
|
|
221
|
-
};
|
|
217
|
+
});
|
|
222
218
|
|
|
223
219
|
const CRActivation = function ({
|
|
224
220
|
isActive,
|
|
@@ -241,7 +237,7 @@ const CRActivation = function ({
|
|
|
241
237
|
}, (_b = labels === null || labels === void 0 ? void 0 : labels.activate) !== null && _b !== void 0 ? _b : "Work on this proposal");
|
|
242
238
|
};
|
|
243
239
|
|
|
244
|
-
const CRTitle = function ({
|
|
240
|
+
const CRTitle = (0, _react.memo)(function ({
|
|
245
241
|
uri
|
|
246
242
|
}) {
|
|
247
243
|
var _a, _b;
|
|
@@ -253,8 +249,7 @@ const CRTitle = function ({
|
|
|
253
249
|
objectPaths: [uri]
|
|
254
250
|
}).value.data) === null || _a === void 0 ? void 0 : _a[uri]) === null || _b === void 0 ? void 0 : _b.justification;
|
|
255
251
|
return (0, _react2.jsx)(_react.default.Fragment, null, "Proposal \u201C", (0, _util.maybeEllipsizeString)(justification !== null && justification !== void 0 ? justification : uri), "\u201D");
|
|
256
|
-
};
|
|
257
|
-
|
|
252
|
+
});
|
|
258
253
|
var _default = {
|
|
259
254
|
main: View,
|
|
260
255
|
title: CRTitle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/detail/ChangeRequest/index.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,MAAM,EACN,IAAI,EACJ,SAAS,EACT,MAAM,EACN,aAAa,EACb,OAAO,EACP,EAAE,EACF,EAAE,EACF,GAAG,EACH,OAAO,EACP,OAAO,GACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,2CAA2C,CAAC;AACnD,OAAO,SAAS,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAA8B,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,cAAc,IAAI,MAAM,EACxB,oBAAoB,EACpB,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGtF,MAAM,IAAI,GAA8B,UAAU,EAAE,GAAG,EAAE;IACvD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,CACL,IAAC,4BAA4B,IAAC,eAAe,EAAE,IAAI;QACjD,IAAC,kBAAkB,IAAC,GAAG,EAAE,GAAG,GAAI,CACH,CAChC,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,kBAAkB,GAEnB,UAAU,EAAE,GAAG,EAAE;IACpB,MAAM,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACxE,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,cAAc,IAAI,GAAG,EAAE,CAAC,CAAC,EAC7D,CAAC,eAAe,CAAC,CAAC,CAAC;IAErB,OAAO,CAAC,EAAE;QACR,CAAC,CAAC,IAAC,oBAAoB,IACnB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,CAAA;;;;SAIP,EACD,WAAW,EAAE,iBAAiB,GAC9B;QACJ,CAAC,CAAC,IAAC,aAAa,IACZ,IAAI,EAAE,IAAC,OAAO,OAAG,EACjB,GAAG,EAAE,GAAG,CAAA;;;;SAIP,EACD,WAAW,EAAE,yBAAyB,GACtC,CACL,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,oBAAoB,GAKrB,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE;;IACpD,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACpE,MAAM,EACJ,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,wBAAwB,GACzB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE3B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE;;QAC3B,OAAA,IAAC,MAAM;YACL;sCAA0B,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,mCAAI,KAAK,CAAS,CACtD,CAAA;KAAA,CACV,EAAE,CAAC,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,aAAa,CAAC,CAAC,CAAC;IAExB,MAAM,QAAQ,GAAG,qBAAqB,KAAK,EAAE,CAAC,EAAE,CAAC;IACjD,MAAM,eAAe,GAAG,qBAAqB,IAAI,qBAAqB,KAAK,EAAE,CAAC,EAAE,CAAC;IACjF,MAAM,aAAa,GAAG,WAAW,IAAI,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhF,MAAM,aAAa,GAAG,CAAC,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,YAAY,mCAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,EAAE,CAAC,sCAAsC,CAAC,CAAC;IAE/E,MAAM,mBAAmB,GAAG,CAC1B,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB;QAC9B,EAAE,CAAC,sCAAsC,KAAK,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAE/E,KAAK,UAAU,YAAY;QACzB,IAAI,mBAAmB,IAAI,EAAE,IAAI,UAAU,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5F,MAAM,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,UAAU,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC1F,WAAW,aAAX,WAAW,uBAAX,WAAW,EAAI,CAAC;SACjB;IACH,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,CAC9B,aAAa,CAAC,MAAM,GAAG,CAAC;QACtB,CAAC,CAAC,IAAC,SAAS,IAAC,SAAS,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAA,UAAU,GAAI;QACxD,CAAC,CAAC,IAAC,aAAa,IACZ,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,+BAA+B,EACrC,WAAW,EAAE,mBAAmB,IAAI,UAAU,IAAI,CAAE,EAAe,CAAC,YAAY,IAAI,CAAC,QAAQ;gBAC3F,CAAC,CAAC,IAAC,MAAM,IAAC,OAAO,EAAE,gBAAgB,CAAC,mBAAmB,EAAE,YAAY,CAAC,2BAE3D;gBACX,CAAC,CAAC,SAAS,GACb,CACP,EAAE;QACD,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACpD,gBAAgB;QAChB,YAAY;QACZ,UAAU;QACV,mBAAmB;QACnB,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,CACL,IAAC,sBAAsB,IACrB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE;YACP,IAAC,SAAS,IACN,MAAM,QACN,SAAS,EAAE,IAAC,WAAW,IACrB,IAAI,EAAC,WAAW,EAChB,OAAO,EAAE,IAAC,EAAE;wBAAC;;4BAAkB,EAAE,CAAC,EAAE,CAAM,CAAK,GAC/C,EACF,KAAK,EAAE,+BAAyB,EAChC,GAAG,EAAE,GAAG,CAAA,iFAAiF;gBAC3F,IAAC,YAAY,IACX,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,eAAe;wBAC1B,CAAC,CAAC,2DAA2D;wBAC7D,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ;4BACpB,CAAC,CAAC,wDAAwD;4BAC1D,CAAC,CAAC,CAAC,QAAQ;gCACT,CAAC,CAAC,qDAAqD;gCACvD,CAAC,CAAC,4DAA4D,EAClE,oBAAoB,EAAE,CAAC,eAAe,IAAI,wBAAwB;wBAChE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;4BACjB,CAAC,CAAC,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAG,EAAE,CAAC,EAAE,CAAC;4BACnC,CAAC,CAAC,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAG,IAAI,CAAC,CACnC;wBACH,CAAC,CAAC,SAAS,GACb,CACQ,CACX,EACH,IAAI,EACF,aACI,GAAG,EAAE,GAAG,CAAA;;;;;;;aAOP,EACD,SAAS,EAAE,SAAS;YACrB,MAAM;YAEP,IAAC,IAAI,IAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAA;;0BAEZ,MAAM,CAAC,WAAW;;;;WAIjC,IACE,SAAS,CACL;YAEP,IAAC,IAAI,IAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAA,2BAA2B;gBAEpD,aAAa;oBACZ,CAAC,CAAC;;wBACU,IAAC,2BAA2B,IAClC,WAAW,EAAE,aAAa,EAC1B,aAAa,EAAE,mBAAmB,IAAI,SAAS,GAC/C,CACE;oBACR,CAAC,CAAC,IAAI;gBAER,IAAC,OAAO,OAAG;gBACX;;oBAC8C,oBAAS,MAAA,EAAE,CAAC,eAAe,mCAAI,KAAK,CAAU;;oBAEzF,EAAE,CAAC,eAAe,MAAK,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,OAAO,0CAAE,EAAE,CAAA;wBACnD,CAAC,CAAC,IAAC,GAAG,IAAC,GAAG,EAAE,GAAG,CAAA,kBAAkB,EAAE,MAAM,EAAC,SAAS,EAAC,OAAO,QAAC,KAAK;;4BAE5D,GAAG;4BACJ,IAAC,WAAW,IAAC,MAAM,EAAC,SAAS,EAAC,OAAO,EAAE;;oCAEpC,GAAG;mFAEH,GAAI,CACH;wBACR,CAAC,CAAC,IAAC,GAAG,IAAC,GAAG,EAAE,GAAG,CAAA,kBAAkB,EAAE,MAAM,EAAC,SAAS,EAAC,OAAO,QAAC,KAAK;;4BAE5D,GAAG;4BACJ,IAAC,WAAW,IAAC,MAAM,EAAC,SAAS,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,EAAE;;oCACxB,oBAAS,MAAA,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,OAAO,0CAAE,EAAE,mCAAI,KAAK,CAAU;;oCACzF,GAAG;;oCAEH,GAAG;;oCAEH,GAAG;8DAEH,GAAI,CACH,CACN;gBACN,IAAC,OAAO,OAAG;gBACX;;oBAAa,IAAC,SAAS,IAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAI,CAAM;gBACrD,IAAC,OAAO,OAAG;gBACX;;oBAAgB,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAC,SAAS,IAAC,IAAI,EAAE,EAAE,CAAC,YAAY,GAAI,CAAC,CAAC,CAAC,SAAS,CAAO;gBAC7F,IAAC,OAAO,OAAG;gBACX;;oBAAgB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAC,SAAS,IAAC,IAAI,EAAE,EAAE,CAAC,YAAY,GAAI,CAAC,CAAC,CAAC,SAAS,CAAO;gBACxF,IAAC,OAAO,OAAG;gBAEX,IAAC,EAAE,QACA,CAAA,MAAA,EAAE,CAAC,KAAK,0CAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,KAAI,KAAK,CACrC,CACA;YAEP,IAAC,IAAI,IAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAA,2BAA2B,IACpD,kBAAkB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAC7C,IAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,GAAG;gBACrB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAC,OAAO,OAAG,CAAC,CAAC,CAAC,IAAI;gBAC/B,IAAC,SAAS,IAAC,KAAK,EAAE,GAAG,GAAG,GAAG;oBACzB,aACI,GAAG,EAAE,GAAG,CAAA,wBAAwB,EAChC,SAAS,EAAE,OAAO,CAAC,YAAY,IAChC,EAAE,CACC,CACI,CACG,CAClB,CACI;YAEN,aAAa;gBACZ,CAAC,CAAC,IAAC,IAAI,IAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAA,2BAA2B;oBACrD,IAAC,iBAAiB,IAAC,EAAE,EAAE,EAAE,GAAI,CACxB;gBACT,CAAC,CAAC,IAAI,CACJ,GACR,CACH,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,YAAY,GAQb,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE;;IAClE,OAAO,oBAAoB,IAAI,QAAQ;QACrC,CAAC,CAAC,IAAC,MAAM,IACH,KAAK,EAAE,SAAS,EAChB,MAAM,EAAC,SAAS,EAChB,QAAQ,EAAE,CAAC,oBAAoB,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAG,KAAK,CAAC,IAC7C,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,mCAAI,eAAe,CAC/B;QACX,CAAC,CAAC,IAAC,MAAM,IACH,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACpD,QAAQ,EAAE,CAAC,oBAAoB,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAG,IAAI,CAAC,IAC5C,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,uBAAuB,CACrC,CAAC;AAChB,CAAC,CAAC;AAGF,MAAM,OAAO,GAA8B,UAAU,EAAE,GAAG,EAAE;;IAC1D,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,MAAA,MAAA,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,0CAAG,GAAG,CAAC,0CAAE,aAAa,CAAC;IAC7F,OAAO;;QAAa,oBAAoB,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,GAAG,CAAC;iBAAK,CAAC;AACtE,CAAC,CAAA;AAED,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useMemo, 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.FC<{ uri: string }> = 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<{\n uri: string\n}> = 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}> = 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 async function handleDelete() {\n if (authorIsCurrentUser && cr && updateTree && !isActive && Object.keys(cr.items).length < 1) {\n const subtreeRoot = crIDToCRPath(cr.id).replace('/main.yaml', '');\n await updateTree({ subtreeRoot, newSubtreeRoot: null, commitMessage: 'remove CR draft' });\n afterDelete?.();\n }\n }\n\n const crItemEntries = Object.entries(cr.items);\n const proposals = useMemo((() =>\n crItemEntries.length > 0\n ? <Proposals proposals={cr.items} css={css`flex: 1;`} />\n : <NonIdealState\n icon=\"clean\"\n title=\"Nothing is proposed here yet.\"\n description={authorIsCurrentUser && updateTree && !(cr as Proposed).timeProposed && !isActive\n ? <Button onClick={performOperation('deleting proposal', handleDelete)}>\n Delete this CR draft\n </Button>\n : undefined}\n />\n ), [\n crItemEntries.length,\n crItemEntries.map(i => JSON.stringify(i)).toString(),\n performOperation,\n handleDelete,\n updateTree,\n authorIsCurrentUser,\n isActive,\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 version before proposal: <strong>{cr.registerVersion ?? 'N/A'}</strong>\n  \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 }> = 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 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 version before proposal: <strong>{cr.registerVersion ?? 'N/A'}</strong>\n  \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,8 +1,16 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
/** @jsxFrag React.Fragment */
|
|
3
3
|
import React from 'react';
|
|
4
|
+
import { type RegisterItem, type InternalItemReference, type ItemClassConfiguration } from '../../../types';
|
|
5
|
+
export declare const ItemDetail: React.VoidFunctionComponent<{
|
|
6
|
+
item: RegisterItem<any>;
|
|
7
|
+
itemRef: InternalItemReference;
|
|
8
|
+
itemClass: ItemClassConfiguration<any>;
|
|
9
|
+
className?: string;
|
|
10
|
+
inProposalWithID?: string;
|
|
11
|
+
}>;
|
|
4
12
|
declare const _default: {
|
|
5
|
-
main: React.
|
|
13
|
+
main: React.VoidFunctionComponent<{
|
|
6
14
|
uri: string;
|
|
7
15
|
inProposalWithID?: string | undefined;
|
|
8
16
|
}>;
|