@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.
- package/common.d.ts +1 -1
- package/common.js +1 -1
- package/common.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/package.json +26 -18
- package/types/cr.d.ts +216 -0
- package/types/cr.js +175 -0
- package/types/cr.js.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.js +19 -0
- package/types/index.js.map +1 -1
- package/types/item.d.ts +13 -3
- package/types/item.js +11 -1
- package/types/item.js.map +1 -1
- package/types/proposal.d.ts +31 -14
- package/types/proposal.js +1 -1
- package/types/proposal.js.map +1 -1
- package/types/register.d.ts +6 -5
- package/types/register.js +19 -1
- package/types/register.js.map +1 -1
- package/types/registry.d.ts +8 -3
- package/types/registry.js +8 -1
- package/types/registry.js.map +1 -1
- package/types/stakeholder.d.ts +40 -16
- package/types/stakeholder.js +47 -3
- package/types/stakeholder.js.map +1 -1
- package/types/views.d.ts +98 -24
- package/types/views.js.map +1 -1
- package/views/AnnotatedChange.d.ts +7 -0
- package/views/AnnotatedChange.js +91 -0
- package/views/AnnotatedChange.js.map +1 -0
- package/views/BrowserCtx.d.ts +66 -2
- package/views/BrowserCtx.js +13 -2
- package/views/BrowserCtx.js.map +1 -1
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +17 -0
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js +202 -0
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -0
- package/views/FilterCriteria/criteriaGroupToQueryExpression.d.ts +6 -0
- package/views/FilterCriteria/criteriaGroupToQueryExpression.js +50 -0
- package/views/FilterCriteria/criteriaGroupToQueryExpression.js.map +1 -0
- package/views/FilterCriteria/criteriaGroupToSummary.d.ts +5 -0
- package/views/FilterCriteria/criteriaGroupToSummary.js +62 -0
- package/views/FilterCriteria/criteriaGroupToSummary.js.map +1 -0
- package/views/FilterCriteria/criteriaToNodes.d.ts +24 -0
- package/views/FilterCriteria/criteriaToNodes.js +159 -0
- package/views/FilterCriteria/criteriaToNodes.js.map +1 -0
- package/views/FilterCriteria/index.d.ts +23 -0
- package/views/FilterCriteria/index.js +130 -0
- package/views/FilterCriteria/index.js.map +1 -0
- package/views/FilterCriteria/models.d.ts +68 -0
- package/views/FilterCriteria/models.js +34 -0
- package/views/FilterCriteria/models.js.map +1 -0
- package/views/FilterCriteria/mutateGroup.d.ts +17 -0
- package/views/FilterCriteria/mutateGroup.js +59 -0
- package/views/FilterCriteria/mutateGroup.js.map +1 -0
- package/views/GenericRelatedItemView.d.ts +1 -1
- package/views/GenericRelatedItemView.js +143 -101
- package/views/GenericRelatedItemView.js.map +1 -1
- package/views/RegisterStakeholder.d.ts +9 -0
- package/views/RegisterStakeholder.js +40 -0
- package/views/RegisterStakeholder.js.map +1 -0
- package/views/RegisterVersion.d.ts +9 -0
- package/views/RegisterVersion.js +41 -0
- package/views/RegisterVersion.js.map +1 -0
- package/views/SearchQuery.d.ts +13 -0
- package/views/SearchQuery.js +137 -0
- package/views/SearchQuery.js.map +1 -0
- package/views/change-request/ChangeRequestContext.d.ts +20 -0
- package/views/change-request/ChangeRequestContext.js +56 -0
- package/views/change-request/ChangeRequestContext.js.map +1 -0
- package/views/change-request/Proposals.d.ts +21 -0
- package/views/change-request/Proposals.js +331 -0
- package/views/change-request/Proposals.js.map +1 -0
- package/views/change-request/objectChangeset.d.ts +31 -0
- package/views/change-request/objectChangeset.js +229 -0
- package/views/change-request/objectChangeset.js.map +1 -0
- package/views/detail/ChangeRequest/Proposal.d.ts +0 -0
- package/views/detail/ChangeRequest/Proposal.js +142 -0
- package/views/detail/ChangeRequest/Proposal.js.map +1 -0
- package/views/detail/ChangeRequest/index.d.ts +13 -0
- package/views/detail/ChangeRequest/index.js +207 -0
- package/views/detail/ChangeRequest/index.js.map +1 -0
- package/views/detail/ChangeRequest/transitions.d.ts +28 -0
- package/views/detail/ChangeRequest/transitions.js +530 -0
- package/views/detail/ChangeRequest/transitions.js.map +1 -0
- package/views/detail/CustomView/index.d.ts +13 -0
- package/views/detail/CustomView/index.js +68 -0
- package/views/detail/CustomView/index.js.map +1 -0
- package/views/detail/RegisterHome/index.d.ts +5 -0
- package/views/detail/RegisterHome/index.js +128 -0
- package/views/detail/RegisterHome/index.js.map +1 -0
- package/views/detail/RegisterItem/RelatedItems.d.ts +13 -0
- package/views/detail/RegisterItem/RelatedItems.js +61 -0
- package/views/detail/RegisterItem/RelatedItems.js.map +1 -0
- package/views/detail/RegisterItem/SupersedingItemMenu.d.ts +13 -0
- package/views/detail/RegisterItem/SupersedingItemMenu.js +56 -0
- package/views/detail/RegisterItem/SupersedingItemMenu.js.map +1 -0
- package/views/detail/RegisterItem/index.d.ts +13 -0
- package/views/detail/RegisterItem/index.js +356 -0
- package/views/detail/RegisterItem/index.js.map +1 -0
- package/views/detail/RegisterMeta/RegisterMetaForm.d.ts +10 -0
- package/views/detail/RegisterMeta/RegisterMetaForm.js +331 -0
- package/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -0
- package/views/detail/RegisterMeta/index.d.ts +10 -0
- package/views/detail/RegisterMeta/index.js +111 -0
- package/views/detail/RegisterMeta/index.js.map +1 -0
- package/views/detail/index.d.ts +1 -0
- package/views/detail/index.js +24 -0
- package/views/detail/index.js.map +1 -0
- package/views/diffing/InlineDiff.d.ts +12 -0
- package/views/diffing/InlineDiff.js +58 -0
- package/views/diffing/InlineDiff.js.map +1 -0
- package/views/diffing/StructuredDiff.d.ts +11 -0
- package/views/diffing/StructuredDiff.js +65 -0
- package/views/diffing/StructuredDiff.js.map +1 -0
- package/views/hooks/useCustomView.d.ts +3 -0
- package/views/hooks/useCustomView.js +24 -0
- package/views/hooks/useCustomView.js.map +1 -0
- package/views/hooks/useItemClassConfig.d.ts +3 -0
- package/views/hooks/useItemClassConfig.js +24 -0
- package/views/hooks/useItemClassConfig.js.map +1 -0
- package/views/hooks/useItemRef.d.ts +3 -0
- package/views/hooks/useItemRef.js +39 -0
- package/views/hooks/useItemRef.js.map +1 -0
- package/views/hooks/useSingleRegisterItemData.d.ts +3 -0
- package/views/hooks/useSingleRegisterItemData.js +32 -0
- package/views/hooks/useSingleRegisterItemData.js.map +1 -0
- package/views/index.d.ts +2 -2
- package/views/index.js +161 -130
- package/views/index.js.map +1 -1
- package/views/itemPathUtils.d.ts +45 -2
- package/views/itemPathUtils.js +101 -14
- package/views/itemPathUtils.js.map +1 -1
- package/views/itemQueryUtils.d.ts +11 -0
- package/views/itemQueryUtils.js +48 -0
- package/views/itemQueryUtils.js.map +1 -0
- package/views/protocolRegistry.d.ts +12 -0
- package/views/protocolRegistry.js +42 -0
- package/views/protocolRegistry.js.map +1 -0
- package/views/sidebar/Browse/index.d.ts +11 -0
- package/views/sidebar/Browse/index.js +453 -0
- package/views/sidebar/Browse/index.js.map +1 -0
- package/views/sidebar/Export/index.d.ts +5 -0
- package/views/sidebar/Export/index.js +94 -0
- package/views/sidebar/Export/index.js.map +1 -0
- package/views/sidebar/ListItem.d.ts +10 -0
- package/views/sidebar/ListItem.js +43 -0
- package/views/sidebar/ListItem.js.map +1 -0
- package/views/sidebar/Registration/index.d.ts +5 -0
- package/views/sidebar/Registration/index.js +163 -0
- package/views/sidebar/Registration/index.js.map +1 -0
- package/views/sidebar/Search/index.d.ts +18 -0
- package/views/sidebar/Search/index.js +177 -0
- package/views/sidebar/Search/index.js.map +1 -0
- package/views/sidebar/index.d.ts +6 -0
- package/views/sidebar/index.js +104 -0
- package/views/sidebar/index.js.map +1 -0
- package/views/util.d.ts +29 -5
- package/views/util.js +92 -6
- package/views/util.js.map +1 -1
- package/views/ChangeRequest.d.ts +0 -12
- package/views/ChangeRequest.js +0 -689
- package/views/ChangeRequest.js.map +0 -1
- package/views/FilterCriteria.d.ts +0 -27
- package/views/FilterCriteria.js +0 -410
- package/views/FilterCriteria.js.map +0 -1
- package/views/ItemBrowser.d.ts +0 -12
- package/views/ItemBrowser.js +0 -255
- package/views/ItemBrowser.js.map +0 -1
- package/views/ItemDetails.d.ts +0 -14
- package/views/ItemDetails.js +0 -128
- package/views/ItemDetails.js.map +0 -1
- package/views/MainView.d.ts +0 -8
- package/views/MainView.js +0 -34
- package/views/MainView.js.map +0 -1
- package/views/RegisterInformation.d.ts +0 -7
- package/views/RegisterInformation.js +0 -264
- package/views/RegisterInformation.js.map +0 -1
- package/views/RegisterItemGrid.d.ts +0 -25
- package/views/RegisterItemGrid.js +0 -248
- package/views/RegisterItemGrid.js.map +0 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _jsondiffpatch = require("jsondiffpatch");
|
|
9
|
+
|
|
10
|
+
var _react = require("@emotion/react");
|
|
11
|
+
|
|
12
|
+
var _react2 = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _core = require("@blueprintjs/core");
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
|
|
19
|
+
|
|
20
|
+
/** @jsx jsx */
|
|
21
|
+
|
|
22
|
+
/** @jsxFrag React.Fragment */
|
|
23
|
+
const StructuredDiff = _react2.default.memo(({
|
|
24
|
+
item1,
|
|
25
|
+
item2,
|
|
26
|
+
showUnchanged,
|
|
27
|
+
className
|
|
28
|
+
}) => {
|
|
29
|
+
const diffContainerRef = (0, _react2.useRef)(null); // Is ignored if managed via prop.
|
|
30
|
+
|
|
31
|
+
const [_showUnchanged, setShowUnchanged] = (0, _react2.useState)(false);
|
|
32
|
+
const item1json = JSON.stringify(item1);
|
|
33
|
+
const item2json = JSON.stringify(item2);
|
|
34
|
+
(0, _react2.useEffect)(() => {
|
|
35
|
+
if (diffContainerRef.current) {
|
|
36
|
+
const delta = (0, _jsondiffpatch.diff)(item1, item2);
|
|
37
|
+
|
|
38
|
+
_jsondiffpatch.formatters.html.showUnchanged(showUnchanged ?? _showUnchanged);
|
|
39
|
+
|
|
40
|
+
if (delta) {
|
|
41
|
+
diffContainerRef.current.innerHTML = _jsondiffpatch.formatters.html.format(delta, item1);
|
|
42
|
+
} else {
|
|
43
|
+
diffContainerRef.current.innerHTML = _jsondiffpatch.formatters.html.format({}, item1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, [item1json, item2json, diffContainerRef.current, showUnchanged, _showUnchanged]); // TODO: Make VisualDiff work. Currently, it doesn’t apparently when item detail views use hooks.
|
|
47
|
+
// Which is often. Either make item views hook-free
|
|
48
|
+
// (which means primarily eliminating useRegisterItemData() by inferring and pre-fetching
|
|
49
|
+
// related item data), or work out another way to diff two React elements.
|
|
50
|
+
|
|
51
|
+
return (0, _react.jsx)("div", {
|
|
52
|
+
css: (0, _react.css)`display: flex; flex-flow: column nowrap;`,
|
|
53
|
+
className: className
|
|
54
|
+
}, showUnchanged === undefined ? (0, _react.jsx)(_core.Switch, {
|
|
55
|
+
checked: _showUnchanged,
|
|
56
|
+
onChange: evt => setShowUnchanged(evt.currentTarget.checked),
|
|
57
|
+
label: "Show unchanged properties"
|
|
58
|
+
}) : null, (0, _react.jsx)("div", {
|
|
59
|
+
ref: diffContainerRef,
|
|
60
|
+
css: (0, _react.css)`flex: 1; overflow: auto;`
|
|
61
|
+
}));
|
|
62
|
+
}, (prevProps, nextProps) => JSON.stringify(prevProps.item2) === JSON.stringify(nextProps.item2) && JSON.stringify(prevProps.item1) === JSON.stringify(nextProps.item1) && prevProps.showUnchanged === nextProps.showUnchanged);
|
|
63
|
+
|
|
64
|
+
var _default = StructuredDiff;
|
|
65
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StructuredDiff.js","sourceRoot":"","sources":["../../../src/views/diffing/StructuredDiff.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,cAAc,GAKf,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE;IAC7D,MAAM,gBAAgB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEtD,kCAAkC;IAClC,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE3D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,gBAAgB,CAAC,OAAO,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACjC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,cAAc,CAAC,CAAC;YAC/D,IAAI,KAAK,EAAE;gBACT,gBAAgB,CAAC,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aAC3E;iBAAM;gBACL,gBAAgB,CAAC,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;aACxE;SACF;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;IAEpF,iGAAiG;IACjG,mDAAmD;IACnD,yFAAyF;IACzF,0EAA0E;IAE1E,OAAO,aAAK,GAAG,EAAE,GAAG,CAAA,0CAA0C,EAAE,SAAS,EAAE,SAAS;QACjF,aAAa,KAAK,SAAS;YAC1B,CAAC,CAAC,IAAC,MAAM,IACL,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAC5D,KAAK,EAAC,2BAA2B,GACjC;YACJ,CAAC,CAAC,IAAI;QACR,aAAK,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAA,0BAA0B,GAAQ,CAClE,CAAA;AACR,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAC1B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;IACnE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;IACnE,SAAS,CAAC,aAAa,KAAK,SAAS,CAAC,aAAa,CACpD,CAAC;AAGF,eAAe,cAAc,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { diff, formatters } from 'jsondiffpatch';\nimport { jsx, css } from '@emotion/react';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Switch } from '@blueprintjs/core';\nimport { RegisterItem } from '../../types/item';\n\n\nconst StructuredDiff: React.FC<{\n item1: RegisterItem<any>[\"data\"]\n item2: RegisterItem<any>[\"data\"]\n showUnchanged?: boolean\n className?: string\n}> = React.memo(({ item1, item2, showUnchanged, className }) => {\n const diffContainerRef = useRef<HTMLDivElement>(null);\n\n // Is ignored if managed via prop.\n const [_showUnchanged, setShowUnchanged] = useState(false);\n\n const item1json = JSON.stringify(item1);\n const item2json = JSON.stringify(item2);\n\n useEffect(() => {\n if (diffContainerRef.current) {\n const delta = diff(item1, item2);\n formatters.html.showUnchanged(showUnchanged ?? _showUnchanged);\n if (delta) {\n diffContainerRef.current.innerHTML = formatters.html.format(delta, item1);\n } else {\n diffContainerRef.current.innerHTML = formatters.html.format({}, item1);\n }\n }\n }, [item1json, item2json, diffContainerRef.current, showUnchanged, _showUnchanged]);\n\n // TODO: Make VisualDiff work. Currently, it doesn’t apparently when item detail views use hooks.\n // Which is often. Either make item views hook-free\n // (which means primarily eliminating useRegisterItemData() by inferring and pre-fetching\n // related item data), or work out another way to diff two React elements.\n\n return <div css={css`display: flex; flex-flow: column nowrap;`} className={className}>\n {showUnchanged === undefined\n ? <Switch\n checked={_showUnchanged}\n onChange={evt => setShowUnchanged(evt.currentTarget.checked)}\n label=\"Show unchanged properties\"\n />\n : null}\n <div ref={diffContainerRef} css={css`flex: 1; overflow: auto;`}></div>\n </div>\n}, (prevProps, nextProps) =>\n JSON.stringify(prevProps.item2) === JSON.stringify(nextProps.item2) &&\n JSON.stringify(prevProps.item1) === JSON.stringify(nextProps.item1) &&\n prevProps.showUnchanged === nextProps.showUnchanged\n);\n\n\nexport default StructuredDiff;\n\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = useCustomView;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _BrowserCtx = require("../BrowserCtx");
|
|
11
|
+
|
|
12
|
+
function useCustomView(viewID) {
|
|
13
|
+
const {
|
|
14
|
+
customViews
|
|
15
|
+
} = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
16
|
+
const view = customViews.find(v => v.id === viewID);
|
|
17
|
+
return {
|
|
18
|
+
value: view,
|
|
19
|
+
errors: [],
|
|
20
|
+
refresh: () => void 0,
|
|
21
|
+
isUpdating: false,
|
|
22
|
+
_reqCounter: 0
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCustomView.js","sourceRoot":"","sources":["../../../src/views/hooks/useCustomView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,MAAc;IAElD,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACpD,OAAO;QACL,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;QACrB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,CAAC;KACf,CAAC;AACJ,CAAC","sourcesContent":["import { useContext } from 'react';\nimport { ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport { BrowserCtx } from '../BrowserCtx';\nimport { CustomViewConfiguration } from '../../types';\n\n\nexport default function useCustomView(viewID: string):\nValueHook<CustomViewConfiguration | undefined> {\n const { customViews } = useContext(BrowserCtx);\n const view = customViews.find(v => v.id === viewID);\n return {\n value: view,\n errors: [],\n refresh: () => void 0,\n isUpdating: false,\n _reqCounter: 0,\n };\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = useItemClassConfig;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _BrowserCtx = require("../BrowserCtx");
|
|
11
|
+
|
|
12
|
+
function useItemClassConfig(clsID) {
|
|
13
|
+
const {
|
|
14
|
+
itemClasses
|
|
15
|
+
} = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
16
|
+
const clsConfig = itemClasses[clsID];
|
|
17
|
+
return {
|
|
18
|
+
value: clsConfig,
|
|
19
|
+
errors: [],
|
|
20
|
+
refresh: () => void 0,
|
|
21
|
+
isUpdating: false,
|
|
22
|
+
_reqCounter: 0
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useItemClassConfig.js","sourceRoot":"","sources":["../../../src/views/hooks/useItemClassConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAAa;IAEtD,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;QACrB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,CAAC;KACf,CAAC;AACJ,CAAC","sourcesContent":["import { useContext } from 'react';\nimport { ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport { BrowserCtx } from '../BrowserCtx';\nimport { ItemClassConfiguration } from '../../types';\n\n\nexport default function useItemClassConfig(clsID: string):\nValueHook<ItemClassConfiguration<any> | undefined> {\n const { itemClasses } = useContext(BrowserCtx);\n const clsConfig = itemClasses[clsID];\n return {\n value: clsConfig,\n errors: [],\n refresh: () => void 0,\n isUpdating: false,\n _reqCounter: 0,\n };\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = useItemRef;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _BrowserCtx = require("../BrowserCtx");
|
|
11
|
+
|
|
12
|
+
var _itemPathUtils = require("../itemPathUtils");
|
|
13
|
+
|
|
14
|
+
function useItemRef(itemPath) {
|
|
15
|
+
const {
|
|
16
|
+
subregisters
|
|
17
|
+
} = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
const value = (0, _itemPathUtils.itemPathToItemRef)(subregisters !== undefined, itemPath);
|
|
21
|
+
return {
|
|
22
|
+
value,
|
|
23
|
+
isUpdating: false,
|
|
24
|
+
refresh: () => void 0,
|
|
25
|
+
_reqCounter: 0,
|
|
26
|
+
errors: []
|
|
27
|
+
};
|
|
28
|
+
} catch (e) {
|
|
29
|
+
var _e$toString;
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
value: undefined,
|
|
33
|
+
isUpdating: false,
|
|
34
|
+
refresh: () => void 0,
|
|
35
|
+
_reqCounter: 0,
|
|
36
|
+
errors: [`${((_e$toString = e.toString) === null || _e$toString === void 0 ? void 0 : _e$toString.call(e)) ?? e}`]
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useItemRef.js","sourceRoot":"","sources":["../../../src/views/hooks/useItemRef.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,QAAgB;IAEjD,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI;QACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,YAAY,KAAK,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,OAAO;YACL,KAAK;YACL,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,EAAE;SACX,CAAC;KACH;IAAC,OAAO,CAAM,EAAE;QACf,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;SACnC,CAAC;KACH;AACH,CAAC","sourcesContent":["import { useContext } from 'react';\nimport { ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport { BrowserCtx } from '../BrowserCtx';\nimport { itemPathToItemRef } from '../itemPathUtils';\nimport { InternalItemReference } from '../../types';\n\n\nexport default function useItemRef(itemPath: string):\nValueHook<InternalItemReference | undefined> {\n const { subregisters } = useContext(BrowserCtx);\n try {\n const value = itemPathToItemRef(subregisters !== undefined, itemPath);\n return {\n value,\n isUpdating: false,\n refresh: () => void 0,\n _reqCounter: 0,\n errors: [],\n };\n } catch (e: any) {\n return {\n value: undefined,\n isUpdating: false,\n refresh: () => void 0,\n _reqCounter: 0,\n errors: [`${e.toString?.() ?? e}`],\n };\n }\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = useSingleRegisterItemData;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _BrowserCtx = require("../BrowserCtx");
|
|
11
|
+
|
|
12
|
+
var _itemPathUtils = require("../itemPathUtils");
|
|
13
|
+
|
|
14
|
+
function useSingleRegisterItemData(ref) {
|
|
15
|
+
const {
|
|
16
|
+
useRegisterItemData
|
|
17
|
+
} = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
18
|
+
const itemPath = ref ? (0, _itemPathUtils.itemRefToItemPath)(ref) : 'NONEXISTENT_ITEM';
|
|
19
|
+
const itemResponse = useRegisterItemData({
|
|
20
|
+
itemPaths: [itemPath]
|
|
21
|
+
});
|
|
22
|
+
const itemResponseValue = itemResponse.value[itemPath];
|
|
23
|
+
const itemData = (itemResponseValue === null || itemResponseValue === void 0 ? void 0 : itemResponseValue.data) ?? null;
|
|
24
|
+
const errMsg = "Item data cannot be loaded";
|
|
25
|
+
return {
|
|
26
|
+
value: itemData,
|
|
27
|
+
errors: itemData === null ? [errMsg, ...itemResponse.errors] : itemResponse.errors,
|
|
28
|
+
isUpdating: itemResponse.isUpdating,
|
|
29
|
+
_reqCounter: itemResponse._reqCounter,
|
|
30
|
+
refresh: itemResponse.refresh
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSingleRegisterItemData.js","sourceRoot":"","sources":["../../../src/views/hooks/useSingleRegisterItemData.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAChD,GAAsC;IAErC,MAAM,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACnE,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpE,MAAM,iBAAiB,GACrB,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE/B,MAAM,QAAQ,GAAG,iBAAiB,EAAE,IAAI,IAAI,IAAI,CAAC;IACjD,MAAM,MAAM,GAAG,4BAA4B,CAAC;IAC5C,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ,KAAK,IAAI;YACvB,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,YAAY,CAAC,MAAM;QACvB,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,OAAO,EAAE,YAAY,CAAC,OAAO;KAC9B,CAAC;AACJ,CAAC","sourcesContent":["import { useContext } from 'react';\nimport { ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport { BrowserCtx } from '../BrowserCtx';\nimport { itemRefToItemPath } from '../itemPathUtils';\nimport { InternalItemReference, RegisterItem } from '../../types';\n\n\nexport default function useSingleRegisterItemData\n(ref: InternalItemReference | undefined):\nValueHook<RegisterItem<any> | null> {\n const { useRegisterItemData } = useContext(BrowserCtx);\n const itemPath = ref ? itemRefToItemPath(ref) : 'NONEXISTENT_ITEM';\n const itemResponse = useRegisterItemData({ itemPaths: [itemPath] });\n const itemResponseValue: RegisterItem<any> | null =\n itemResponse.value[itemPath];\n\n const itemData = itemResponseValue?.data ?? null;\n const errMsg = \"Item data cannot be loaded\";\n return {\n value: itemData,\n errors: itemData === null\n ? [errMsg, ...itemResponse.errors]\n : itemResponse.errors,\n isUpdating: itemResponse.isUpdating,\n _reqCounter: itemResponse._reqCounter,\n refresh: itemResponse.refresh,\n };\n}\n"]}
|
package/views/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
2
3
|
import React from 'react';
|
|
3
|
-
import { RegistryViewProps } from '../types';
|
|
4
|
+
import { type RegistryViewProps } from '../types';
|
|
4
5
|
import GenericRelatedItemView from './GenericRelatedItemView';
|
|
5
6
|
export { GenericRelatedItemView };
|
|
6
7
|
export declare const RegistryView: React.FC<RegistryViewProps>;
|
|
7
|
-
export declare const nonIdeal: JSX.Element;
|
package/views/index.js
CHANGED
|
@@ -9,158 +9,189 @@ Object.defineProperty(exports, "GenericRelatedItemView", {
|
|
|
9
9
|
return _GenericRelatedItemView.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
exports.
|
|
12
|
+
exports.RegistryView = void 0;
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _react2 = require("@emotion/react");
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _context = require("@riboseinc/paneron-extension-kit/context");
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _TabbedWorkspace = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace"));
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _context2 = require("@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context");
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _types = require("../types");
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var _common = require("../common");
|
|
27
27
|
|
|
28
28
|
var _GenericRelatedItemView = _interopRequireDefault(require("./GenericRelatedItemView"));
|
|
29
29
|
|
|
30
|
+
var _sidebar = require("./sidebar");
|
|
31
|
+
|
|
32
|
+
var _BrowserCtx = require("./BrowserCtx");
|
|
33
|
+
|
|
34
|
+
var _util = require("./util");
|
|
35
|
+
|
|
36
|
+
var _RegisterHome = _interopRequireDefault(require("./detail/RegisterHome"));
|
|
37
|
+
|
|
38
|
+
var _protocolRegistry = _interopRequireWildcard(require("./protocolRegistry"));
|
|
39
|
+
|
|
40
|
+
var _ChangeRequestContext = require("./change-request/ChangeRequestContext");
|
|
41
|
+
|
|
42
|
+
var _itemPathUtils = require("./itemPathUtils");
|
|
43
|
+
|
|
30
44
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
45
|
|
|
46
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
47
|
+
|
|
48
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
|
|
49
|
+
|
|
32
50
|
/** @jsx jsx */
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
51
|
+
|
|
52
|
+
/** @jsxFrag React.Fragment */
|
|
53
|
+
const TabbedWorkspaceContextProvider = (0, _context2.makeContextProvider)('Browse', _sidebar.sidebarIDs, _protocolRegistry.default);
|
|
54
|
+
|
|
55
|
+
const RegistryView = function (props) {
|
|
56
|
+
return (0, _react2.jsx)(TabbedWorkspaceContextProvider, {
|
|
57
|
+
stateKey: "main-registry-view"
|
|
58
|
+
}, (0, _react2.jsx)(BrowserCtxProvider, { ...props
|
|
59
|
+
}, (0, _react2.jsx)(RegistryWorkspace, null)));
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
exports.RegistryView = RegistryView;
|
|
63
|
+
|
|
64
|
+
const RegistryWorkspace = function () {
|
|
65
|
+
const {
|
|
66
|
+
changeRequest: activeChangeRequest
|
|
67
|
+
} = (0, _react.useContext)(_ChangeRequestContext.ChangeRequestContext);
|
|
68
|
+
const {
|
|
69
|
+
spawnTab
|
|
70
|
+
} = (0, _react.useContext)(_context2.TabbedWorkspaceContext);
|
|
71
|
+
const globalMode = (0, _react.useMemo)(() => activeChangeRequest ? {
|
|
72
|
+
content: (0, _react2.jsx)(_react.default.Fragment, null, "Viewing register as proposed\u2009\u2014\u2009contents shown may differ from version in effect"),
|
|
73
|
+
intent: 'danger',
|
|
74
|
+
onClick: () => spawnTab(`${_protocolRegistry.Protocols.CHANGE_REQUEST}:/proposals/${activeChangeRequest.id}/main.yaml`)
|
|
75
|
+
} : undefined, [activeChangeRequest === null || activeChangeRequest === void 0 ? void 0 : activeChangeRequest.id]);
|
|
76
|
+
return (0, _react2.jsx)(_TabbedWorkspace.default, {
|
|
77
|
+
css: (0, _react2.css)`flex: 1 1 auto;`,
|
|
78
|
+
sidebarConfig: _sidebar.sidebarConfig,
|
|
79
|
+
sidebarIDs: _sidebar.sidebarIDs,
|
|
80
|
+
newTabPrompt: (0, _react2.jsx)(_RegisterHome.default, null),
|
|
81
|
+
globalMode: globalMode
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const BrowserCtxProvider = function ({
|
|
46
86
|
itemClassConfiguration,
|
|
47
|
-
subregisters
|
|
87
|
+
subregisters,
|
|
88
|
+
keyExpression,
|
|
89
|
+
defaultSearchCriteria,
|
|
90
|
+
customViews,
|
|
91
|
+
children
|
|
48
92
|
}) {
|
|
93
|
+
var _registerMetadataReq$;
|
|
94
|
+
|
|
49
95
|
const {
|
|
50
96
|
useObjectData,
|
|
51
|
-
|
|
52
|
-
} = (0, _react.useContext)(_context.DatasetContext);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
97
|
+
useRemoteUsername
|
|
98
|
+
} = (0, _react.useContext)(_context.DatasetContext);
|
|
99
|
+
const {
|
|
100
|
+
focusedTabURI,
|
|
101
|
+
spawnTab
|
|
102
|
+
} = (0, _react.useContext)(_context2.TabbedWorkspaceContext);
|
|
103
|
+
const selectedItemPath = focusedTabURI && focusedTabURI.startsWith(`${_protocolRegistry.Protocols.ITEM_DETAILS}:`) ? focusedTabURI.split(':')[1] : null;
|
|
104
|
+
const selectedItemRef = selectedItemPath ? (0, _itemPathUtils.itemPathToItemRefLike)(subregisters !== undefined, selectedItemPath) : null;
|
|
105
|
+
const maybeSelectedRegisterItemData = useObjectData({
|
|
106
|
+
objectPaths: selectedItemPath ? [selectedItemPath] : []
|
|
107
|
+
}).value.data[selectedItemPath ?? ''];
|
|
108
|
+
const selectedRegisterItem = (0, _types.isInternalItemReference)(selectedItemRef) ? maybeSelectedRegisterItemData && (0, _types.isRegisterItem)(maybeSelectedRegisterItemData) ? {
|
|
109
|
+
item: maybeSelectedRegisterItemData,
|
|
110
|
+
ref: selectedItemRef,
|
|
111
|
+
itemClass: itemClassConfiguration[selectedItemRef.classID]
|
|
112
|
+
} : undefined : null; // TODO: Confirm that end extensions using RegistryKit can’t just import hooks
|
|
113
|
+
// from RegistryKit and we really have to pass this to them via context
|
|
114
|
+
// TODO: Why not use useObjectData directly? Since register item paths
|
|
115
|
+
// are just object paths. The casting here is optimistic, since an item at given path
|
|
116
|
+
// may not be a RegisterItem.
|
|
66
117
|
|
|
67
118
|
const useRegisterItemData = opts => {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
refresh: () => void 0,
|
|
83
|
-
_reqCounter: 0
|
|
84
|
-
};
|
|
85
|
-
}; // async function handleSaveRegisterInfo(value: Partial<Register>, oldValue: Partial<Register> | null) {
|
|
86
|
-
// if (!isBusy && updateObjects) {
|
|
87
|
-
// setBusy(true);
|
|
88
|
-
// try {
|
|
89
|
-
// await updateObjects({
|
|
90
|
-
// commitMessage: "Edit register metadata",
|
|
91
|
-
// objectChangeset: {
|
|
92
|
-
// [REGISTER_METADATA_FILENAME]: {
|
|
93
|
-
// oldValue: oldValue ? oldValue : null,
|
|
94
|
-
// newValue: value,
|
|
95
|
-
// },
|
|
96
|
-
// },
|
|
97
|
-
// });
|
|
98
|
-
// } finally {
|
|
99
|
-
// setBusy(false);
|
|
100
|
-
// }
|
|
101
|
-
// }
|
|
102
|
-
// }
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
async function handleSaveCR(crID, value, oldValue) {
|
|
106
|
-
if (!isBusy && crID === selectedCRID && updateObjects) {
|
|
107
|
-
setBusy(true);
|
|
108
|
-
|
|
109
|
-
try {
|
|
110
|
-
await updateObjects({
|
|
111
|
-
commitMessage: `CR: ${value === null ? 'delete' : 'update'} ${crID}`,
|
|
112
|
-
objectChangeset: {
|
|
113
|
-
[`change-requests/${crID}.yaml`]: {
|
|
114
|
-
oldValue: oldValue,
|
|
115
|
-
newValue: value !== null && value !== void 0 ? value : null
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
if (value === null) {
|
|
121
|
-
selectCR(undefined);
|
|
122
|
-
}
|
|
123
|
-
} catch (e) {
|
|
124
|
-
_electronLog.default.error("Failed to update or delete CR!", e);
|
|
125
|
-
} finally {
|
|
126
|
-
setBusy(false);
|
|
119
|
+
// Original item path mapped to its potential alternative path in current CR,
|
|
120
|
+
// if the item is clarified or added in it.
|
|
121
|
+
// TODO(perf): Access CR data and check whether the item is affected instead of blindly trying CR paths
|
|
122
|
+
const pathsToRequest = {};
|
|
123
|
+
const {
|
|
124
|
+
changeRequest: activeChangeRequest
|
|
125
|
+
} = (0, _react.useContext)(_ChangeRequestContext.ChangeRequestContext);
|
|
126
|
+
|
|
127
|
+
for (const givenItemPath of opts.itemPaths) {
|
|
128
|
+
pathsToRequest[givenItemPath] = givenItemPath; // Don’t use CR alternative path for any path that is already explicitly in-CR.
|
|
129
|
+
// TODO(perf): move out of the loop what’s possible, use map-reduce maybe too
|
|
130
|
+
|
|
131
|
+
if (!opts.ignoreActiveCR && !givenItemPath.startsWith('/proposals') && activeChangeRequest !== null && activeChangeRequest !== void 0 && activeChangeRequest.id) {
|
|
132
|
+
pathsToRequest[(0, _itemPathUtils.itemPathInCR)(givenItemPath, activeChangeRequest.id)] = givenItemPath;
|
|
127
133
|
}
|
|
128
134
|
}
|
|
129
|
-
}
|
|
130
135
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
mainViewEl = <RegisterInformation
|
|
134
|
-
register={registerInfo}
|
|
135
|
-
onSave={(!isBusy && updateObjects !== undefined)
|
|
136
|
-
? handleSaveRegisterInfo
|
|
137
|
-
: undefined}
|
|
138
|
-
/>;
|
|
139
|
-
} else */
|
|
140
|
-
|
|
141
|
-
if (selectedCRID) {
|
|
142
|
-
mainViewEl = (0, _core.jsx)(_ChangeRequest.ChangeRequestView, {
|
|
143
|
-
id: selectedCRID,
|
|
144
|
-
itemClassConfiguration: itemClassConfiguration,
|
|
145
|
-
useRegisterItemData: useRegisterItemData,
|
|
146
|
-
onDelete: !isBusy && updateObjects !== undefined ? (crID, oldValue) => handleSaveCR(crID, null, oldValue) : undefined,
|
|
147
|
-
onSave: !isBusy && updateObjects !== undefined ? handleSaveCR : undefined
|
|
148
|
-
});
|
|
149
|
-
} else {
|
|
150
|
-
mainViewEl = (0, _core.jsx)(_ItemBrowser.RegisterItemBrowser, {
|
|
151
|
-
itemClassConfiguration: itemClassConfiguration,
|
|
152
|
-
subregisters: subregisters,
|
|
153
|
-
useRegisterItemData: useRegisterItemData
|
|
136
|
+
const result = useObjectData({
|
|
137
|
+
objectPaths: Object.keys(pathsToRequest)
|
|
154
138
|
});
|
|
155
|
-
|
|
139
|
+
const itemData = {};
|
|
156
140
|
|
|
157
|
-
|
|
158
|
-
|
|
141
|
+
for (const [alternativePath, itemPath] of Object.entries(pathsToRequest)) {
|
|
142
|
+
const data = result.value.data[alternativePath] ?? result.value.data[itemPath] ?? null;
|
|
159
143
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
144
|
+
if ((0, _types.isRegisterItem)(data) || data === null) {
|
|
145
|
+
itemData[itemPath] = data;
|
|
146
|
+
}
|
|
147
|
+
} // Convert dates
|
|
148
|
+
// const parsedData: Record<string, RegisterItem<any> | null> = Object.entries(result.value.data).
|
|
149
|
+
// map(([ path, data ]) => {
|
|
150
|
+
// return {
|
|
151
|
+
// [path]: data !== null
|
|
152
|
+
// ? {
|
|
153
|
+
// ...data,
|
|
154
|
+
// dateAccepted: parseISO(data!.dateAccepted as unknown as string),
|
|
155
|
+
// }
|
|
156
|
+
// : null,
|
|
157
|
+
// };
|
|
158
|
+
// }).
|
|
159
|
+
// reduce((p, c) => ({ ...p, ...c }), {});
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
return { ...result,
|
|
163
|
+
value: itemData
|
|
164
|
+
};
|
|
165
|
+
}; // Register data
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
const registerMetadataReq = useObjectData({
|
|
169
|
+
objectPaths: [_common.REGISTER_METADATA_FILENAME]
|
|
170
|
+
});
|
|
171
|
+
const maybeRegisterMetadata = ((_registerMetadataReq$ = registerMetadataReq.value.data) === null || _registerMetadataReq$ === void 0 ? void 0 : _registerMetadataReq$[_common.REGISTER_METADATA_FILENAME]) ?? (registerMetadataReq.isUpdating ? undefined : null);
|
|
172
|
+
const registerMetadata = !maybeRegisterMetadata || (0, _types.isRegisterMetadata)(maybeRegisterMetadata) ? maybeRegisterMetadata : null;
|
|
173
|
+
const remoteUsername = useRemoteUsername().value.username;
|
|
174
|
+
const stakeholder = remoteUsername ? ((registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.stakeholders) ?? []).find(s => s.gitServerUsername === remoteUsername) : undefined; // Active CR
|
|
175
|
+
|
|
176
|
+
const [activeChangeRequestID, setActiveChangeRequestID] = (0, _react.useState)(null);
|
|
177
|
+
const getRelatedClass = (0, _util._getRelatedClass)(itemClassConfiguration);
|
|
178
|
+
return (0, _react2.jsx)(_BrowserCtx.BrowserCtx.Provider, {
|
|
179
|
+
value: {
|
|
180
|
+
stakeholder,
|
|
181
|
+
registerMetadata,
|
|
182
|
+
subregisters,
|
|
183
|
+
itemClasses: itemClassConfiguration,
|
|
184
|
+
jumpTo: spawnTab,
|
|
185
|
+
selectedRegisterItem,
|
|
186
|
+
activeChangeRequestID,
|
|
187
|
+
setActiveChangeRequestID,
|
|
188
|
+
useRegisterItemData,
|
|
189
|
+
getRelatedItemClassConfiguration: getRelatedClass,
|
|
190
|
+
customViews: customViews ?? [],
|
|
191
|
+
keyExpression,
|
|
192
|
+
defaultSearchCriteria
|
|
193
|
+
}
|
|
194
|
+
}, (0, _react2.jsx)(_ChangeRequestContext.ChangeRequestContextProvider, {
|
|
195
|
+
changeRequestID: activeChangeRequestID
|
|
196
|
+
}, children));
|
|
197
|
+
};
|
package/views/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/views/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n\nimport log from 'electron-log';\n\nimport React, { useContext, useState } from 'react';\nimport { jsx } from '@emotion/core';\nimport { NonIdealState, } from '@blueprintjs/core';\n\nimport { ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport {\n ChangeRequest,\n //Register,\n RegisterItem,\n RegisterItemDataHook,\n RegistryViewProps,\n} from '../types';\n//import { RegisterInformation } from './RegisterInformation';\nimport { ChangeRequestView } from './ChangeRequest';\nimport { RegisterItemBrowser } from './ItemBrowser';\n//import { REGISTER_METADATA_FILENAME } from '../common';\n\n\nimport GenericRelatedItemView from './GenericRelatedItemView';\nexport { GenericRelatedItemView };\n\n\n//function makeBlankCR(id: string, sponsor: RegisterStakeholder): ChangeRequest {\n// return {\n// id,\n// justification: '',\n// timeStarted: new Date(),\n// proposals: {},\n// sponsor,\n// status: DECISION_STATUSES[0],\n// };\n//};\n\n\nexport const RegistryView: React.FC<RegistryViewProps> = function ({ itemClassConfiguration, subregisters }) {\n\n const {\n useObjectData,\n updateObjects,\n } = useContext(DatasetContext);\n\n //const [registerInfoOpen, setRegisterInfoOpen] = useState(false);\n const [selectedCRID, selectCR] = useState<string | undefined>(undefined);\n const [isBusy, setBusy] = useState(false);\n\n //const remoteUsername: string | undefined = useRemoteUsername().value.username;\n\n // const registerObject = useObjectData({\n // objectPaths: [REGISTER_METADATA_FILENAME],\n // }).value.data?.[REGISTER_METADATA_FILENAME]?.value;\n\n // const registerInfo: Partial<Register> | null = registerObject\n // ? yaml.load(registerObject as string)\n // : null;\n\n // const stakeholder: RegisterStakeholder | undefined = remoteUsername\n // ? (registerInfo?.stakeholders || []).\n // find(s => s.gitServerUsername === remoteUsername)\n // : undefined;\n\n const useRegisterItemData: RegisterItemDataHook = (opts) => {\n const result = useObjectData({\n objectPaths: opts.itemPaths,\n }) as ValueHook<{ data: Record<string, RegisterItem<any> | null> }>;\n\n //const parsedData = Object.entries(data.value).\n //filter(([ path, data ]) => data !== null && data.encoding === 'utf-8').\n //map(([ path, data ]) => {\n // const item: RegisterItem<any> = yaml.load(data!.value as string);\n // return { [path.replace('.yaml', '')]: item };\n //}).\n //reduce((p, c) => ({ ...p, ...c }), {});\n\n return {\n isUpdating: false,\n errors: [],\n value: result.value.data,\n refresh: () => void 0,\n _reqCounter: 0,\n };\n };\n\n // async function handleSaveRegisterInfo(value: Partial<Register>, oldValue: Partial<Register> | null) {\n // if (!isBusy && updateObjects) {\n // setBusy(true);\n // try {\n // await updateObjects({\n // commitMessage: \"Edit register metadata\",\n // objectChangeset: {\n // [REGISTER_METADATA_FILENAME]: {\n // oldValue: oldValue ? oldValue : null,\n // newValue: value,\n // },\n // },\n // });\n // } finally {\n // setBusy(false);\n // }\n // }\n // }\n\n async function handleSaveCR(crID: string, value: ChangeRequest | null, oldValue: ChangeRequest) {\n if (!isBusy && crID === selectedCRID && updateObjects) {\n setBusy(true);\n try {\n await updateObjects({\n commitMessage: `CR: ${value === null ? 'delete' : 'update'} ${crID}`,\n objectChangeset: {\n [`change-requests/${crID}.yaml`]: {\n oldValue: oldValue,\n newValue: value ?? null,\n },\n },\n }, );\n if (value === null) {\n selectCR(undefined);\n }\n } catch (e) {\n log.error(\"Failed to update or delete CR!\", e);\n } finally {\n setBusy(false);\n }\n }\n }\n\n let mainViewEl: JSX.Element;\n\n /*if (registerInfoOpen) {\n mainViewEl = <RegisterInformation\n register={registerInfo}\n onSave={(!isBusy && updateObjects !== undefined)\n ? handleSaveRegisterInfo\n : undefined}\n />;\n\n } else */ if (selectedCRID) {\n mainViewEl = <ChangeRequestView\n id={selectedCRID}\n itemClassConfiguration={itemClassConfiguration}\n useRegisterItemData={useRegisterItemData}\n\n onDelete={(!isBusy && updateObjects !== undefined)\n ? (crID, oldValue) => handleSaveCR(crID, null, oldValue)\n : undefined}\n onSave={(!isBusy && updateObjects !== undefined)\n ? handleSaveCR\n : undefined}\n />;\n\n } else {\n mainViewEl = <RegisterItemBrowser\n itemClassConfiguration={itemClassConfiguration}\n subregisters={subregisters}\n useRegisterItemData={useRegisterItemData}\n />;\n }\n\n return mainViewEl;\n};\n\n\nexport const nonIdeal = <NonIdealState\n icon=\"time\"\n title=\"Check back in a bit!\"\n description=\"This view is coming soon\" />;\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/views/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useState, useMemo } from 'react';\nimport { jsx, css } from '@emotion/react';\n\nimport { ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport TabbedWorkspace, { TabbedWorkspaceProps } from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace';\nimport {\n makeContextProvider as makeTabbedWorkspaceContextProvider,\n TabbedWorkspaceContext,\n} from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context';\n\nimport {\n type RegisterItem,\n type RegisterItemDataHook,\n type RegisterStakeholder,\n type RegistryViewProps,\n isRegisterItem,\n isRegisterMetadata,\n isInternalItemReference,\n} from '../types';\n\nimport { REGISTER_METADATA_FILENAME } from '../common';\n\nimport GenericRelatedItemView from './GenericRelatedItemView';\nimport { sidebarConfig, SidebarID, sidebarIDs } from './sidebar';\nimport { BrowserCtx } from './BrowserCtx';\nimport { _getRelatedClass } from './util';\nimport RegisterHome from './detail/RegisterHome';\nimport protocolRegistry, { Protocols, type Protocol } from './protocolRegistry';\nimport {\n ChangeRequestContext,\n ChangeRequestContextProvider,\n} from './change-request/ChangeRequestContext';\nimport { itemPathInCR, itemPathToItemRefLike } from './itemPathUtils';\nexport { GenericRelatedItemView };\n\n\nconst TabbedWorkspaceContextProvider = makeTabbedWorkspaceContextProvider<Protocol, SidebarID>(\n 'Browse',\n sidebarIDs,\n protocolRegistry);\n\n\nexport const RegistryView: React.FC<RegistryViewProps> = function (props) {\n return (\n <TabbedWorkspaceContextProvider stateKey=\"main-registry-view\">\n <BrowserCtxProvider {...props}>\n <RegistryWorkspace />\n </BrowserCtxProvider>\n </TabbedWorkspaceContextProvider>\n );\n};\n\n\nconst RegistryWorkspace: React.FC<Record<never, never>> = function () {\n const { changeRequest: activeChangeRequest } = useContext(ChangeRequestContext);\n const { spawnTab } = useContext(TabbedWorkspaceContext);\n\n const globalMode: TabbedWorkspaceProps<any>['globalMode'] = useMemo(\n (() => activeChangeRequest\n ? {\n content: <>\n Viewing register as proposed — contents shown may differ from version in effect\n </>,\n intent: 'danger',\n onClick: () => spawnTab(`${Protocols.CHANGE_REQUEST}:/proposals/${activeChangeRequest.id}/main.yaml`),\n }\n : undefined),\n [activeChangeRequest?.id],\n );\n\n return <TabbedWorkspace\n css={css`flex: 1 1 auto;`}\n sidebarConfig={sidebarConfig}\n sidebarIDs={sidebarIDs}\n newTabPrompt={<RegisterHome />}\n globalMode={globalMode}\n />\n};\n\n\nconst BrowserCtxProvider: React.FC<RegistryViewProps> = function ({\n itemClassConfiguration,\n subregisters,\n keyExpression,\n defaultSearchCriteria,\n customViews,\n children,\n}) {\n\n const { useObjectData, useRemoteUsername } = useContext(DatasetContext);\n const { focusedTabURI, spawnTab } = useContext(TabbedWorkspaceContext);\n\n const selectedItemPath: string | null =\n focusedTabURI && focusedTabURI.startsWith(`${Protocols.ITEM_DETAILS}:`)\n ? focusedTabURI.split(':')[1]\n : null;\n\n const selectedItemRef: Record<string, string> | null =\n selectedItemPath\n ? itemPathToItemRefLike(subregisters !== undefined, selectedItemPath)\n : null;\n\n const maybeSelectedRegisterItemData: Record<string, any> | null = useObjectData({\n objectPaths: selectedItemPath ? [selectedItemPath] : [],\n }).value.data[selectedItemPath ?? ''];\n\n const selectedRegisterItem: BrowserCtx['selectedRegisterItem'] =\n isInternalItemReference(selectedItemRef)\n ? maybeSelectedRegisterItemData &&\n isRegisterItem(maybeSelectedRegisterItemData)\n ? {\n item: maybeSelectedRegisterItemData,\n ref: selectedItemRef,\n itemClass: itemClassConfiguration[selectedItemRef.classID],\n }\n : undefined\n : null;\n\n // TODO: Confirm that end extensions using RegistryKit can’t just import hooks\n // from RegistryKit and we really have to pass this to them via context\n // TODO: Why not use useObjectData directly? Since register item paths\n // are just object paths. The casting here is optimistic, since an item at given path\n // may not be a RegisterItem.\n const useRegisterItemData: RegisterItemDataHook = (opts) => {\n // Original item path mapped to its potential alternative path in current CR,\n // if the item is clarified or added in it.\n // TODO(perf): Access CR data and check whether the item is affected instead of blindly trying CR paths\n const pathsToRequest: Record<string, string> = {};\n\n const { changeRequest: activeChangeRequest } = useContext(ChangeRequestContext);\n\n\n for (const givenItemPath of opts.itemPaths) {\n pathsToRequest[givenItemPath] = givenItemPath;\n\n // Don’t use CR alternative path for any path that is already explicitly in-CR.\n // TODO(perf): move out of the loop what’s possible, use map-reduce maybe too\n if (!opts.ignoreActiveCR && !givenItemPath.startsWith('/proposals') && activeChangeRequest?.id) {\n pathsToRequest[itemPathInCR(givenItemPath, activeChangeRequest.id)] = givenItemPath;\n }\n }\n\n const result = useObjectData({\n objectPaths: Object.keys(pathsToRequest),\n }) as ValueHook<{ data: Record<string, Record<string, any> | null> }>;\n\n const itemData: Record<string, RegisterItem<any> | null> = {};\n for (const [alternativePath, itemPath] of Object.entries(pathsToRequest)) {\n const data = result.value.data[alternativePath]\n ?? result.value.data[itemPath]\n ?? null;\n if (isRegisterItem(data) || data === null) {\n itemData[itemPath] = data;\n }\n }\n\n // Convert dates\n // const parsedData: Record<string, RegisterItem<any> | null> = Object.entries(result.value.data).\n // map(([ path, data ]) => {\n // return {\n // [path]: data !== null\n // ? {\n // ...data,\n // dateAccepted: parseISO(data!.dateAccepted as unknown as string),\n // }\n // : null,\n // };\n // }).\n // reduce((p, c) => ({ ...p, ...c }), {});\n\n return {\n ...result,\n value: itemData,\n };\n };\n\n\n // Register data\n\n const registerMetadataReq = useObjectData({\n objectPaths: [REGISTER_METADATA_FILENAME],\n }) as ValueHook<{ data: Record<string, Record<string, any> | null> }>;\n const maybeRegisterMetadata =\n registerMetadataReq.value.data?.[REGISTER_METADATA_FILENAME] ??\n (registerMetadataReq.isUpdating ? undefined : null);\n const registerMetadata = !maybeRegisterMetadata || isRegisterMetadata(maybeRegisterMetadata)\n ? maybeRegisterMetadata\n : null;\n\n const remoteUsername: string | undefined = useRemoteUsername().value.username;\n\n const stakeholder: RegisterStakeholder | undefined = remoteUsername\n ? (registerMetadata?.stakeholders ?? []).\n find(s => s.gitServerUsername === remoteUsername)\n : undefined;\n\n\n // Active CR\n\n const [ activeChangeRequestID, setActiveChangeRequestID ] = useState<string | null>(null);\n\n const getRelatedClass = _getRelatedClass(itemClassConfiguration);\n\n return (\n <BrowserCtx.Provider\n value={{\n stakeholder,\n registerMetadata,\n\n subregisters,\n itemClasses: itemClassConfiguration,\n\n jumpTo: spawnTab,\n\n selectedRegisterItem,\n\n activeChangeRequestID,\n setActiveChangeRequestID,\n\n useRegisterItemData,\n getRelatedItemClassConfiguration: getRelatedClass,\n customViews: customViews ?? [],\n\n keyExpression,\n defaultSearchCriteria,\n }}>\n <ChangeRequestContextProvider changeRequestID={activeChangeRequestID}>\n {children}\n </ChangeRequestContextProvider>\n </BrowserCtx.Provider>\n );\n}\n"]}
|