@riboseinc/paneron-registry-kit 2.0.9 → 2.0.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 (69) hide show
  1. package/migrations/initial.d.ts +1 -1
  2. package/migrations/initial.js +26 -2
  3. package/migrations/initial.js.map +1 -1
  4. package/package.json +2 -6
  5. package/site-builder/jsx-runtime.js +5 -3
  6. package/site-builder/jsx-runtime.js.map +1 -1
  7. package/types/item.d.ts +0 -8
  8. package/types/item.js.map +1 -1
  9. package/views/BrowserCtx.d.ts +4 -0
  10. package/views/BrowserCtx.js.map +1 -1
  11. package/views/FilterCriteria/CRITERIA_CONFIGURATION.js +23 -15
  12. package/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -1
  13. package/views/FilterCriteria/criteriaToNodes.js +3 -1
  14. package/views/FilterCriteria/criteriaToNodes.js.map +1 -1
  15. package/views/FilterCriteria/index.js +4 -4
  16. package/views/FilterCriteria/index.js.map +1 -1
  17. package/views/GenericRelatedItemView.js +8 -7
  18. package/views/GenericRelatedItemView.js.map +1 -1
  19. package/views/RegisterStakeholder.js +3 -1
  20. package/views/RegisterStakeholder.js.map +1 -1
  21. package/views/SearchQuery.js +1 -1
  22. package/views/SearchQuery.js.map +1 -1
  23. package/views/change-request/ChangeRequestContext.js +3 -3
  24. package/views/change-request/ChangeRequestContext.js.map +1 -1
  25. package/views/change-request/Proposals.js +38 -30
  26. package/views/change-request/Proposals.js.map +1 -1
  27. package/views/change-request/objectChangeset.js +5 -3
  28. package/views/change-request/objectChangeset.js.map +1 -1
  29. package/views/detail/ChangeRequest/index.js +16 -14
  30. package/views/detail/ChangeRequest/index.js.map +1 -1
  31. package/views/detail/ChangeRequest/transitions.js +18 -12
  32. package/views/detail/ChangeRequest/transitions.js.map +1 -1
  33. package/views/detail/CustomView/index.js +6 -2
  34. package/views/detail/CustomView/index.js.map +1 -1
  35. package/views/detail/RegisterHome/index.js +6 -5
  36. package/views/detail/RegisterHome/index.js.map +1 -1
  37. package/views/detail/RegisterItem/RelatedItems.js.map +1 -1
  38. package/views/detail/RegisterItem/SupersedingItemMenu.js.map +1 -1
  39. package/views/detail/RegisterItem/index.js +23 -19
  40. package/views/detail/RegisterItem/index.js.map +1 -1
  41. package/views/detail/RegisterMeta/RegisterMetaForm.js +21 -17
  42. package/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -1
  43. package/views/detail/RegisterMeta/index.js +1 -1
  44. package/views/detail/RegisterMeta/index.js.map +1 -1
  45. package/views/detail/index.js +3 -3
  46. package/views/detail/index.js.map +1 -1
  47. package/views/diffing/StructuredDiff.js +1 -1
  48. package/views/diffing/StructuredDiff.js.map +1 -1
  49. package/views/hooks/useItemRef.js +3 -3
  50. package/views/hooks/useItemRef.js.map +1 -1
  51. package/views/hooks/useSingleRegisterItemData.js +3 -1
  52. package/views/hooks/useSingleRegisterItemData.js.map +1 -1
  53. package/views/index.js +11 -8
  54. package/views/index.js.map +1 -1
  55. package/views/itemPathUtils.js +5 -3
  56. package/views/itemPathUtils.js.map +1 -1
  57. package/views/sidebar/Browse/index.js +18 -16
  58. package/views/sidebar/Browse/index.js.map +1 -1
  59. package/views/sidebar/Export/index.js +3 -3
  60. package/views/sidebar/Export/index.js.map +1 -1
  61. package/views/sidebar/ListItem.js.map +1 -1
  62. package/views/sidebar/Registration/index.js.map +1 -1
  63. package/views/sidebar/Search/index.js +7 -5
  64. package/views/sidebar/Search/index.js.map +1 -1
  65. package/views/util.js +3 -1
  66. package/views/util.js.map +1 -1
  67. package/views/detail/ChangeRequest/Proposal.d.ts +0 -0
  68. package/views/detail/ChangeRequest/Proposal.js +0 -142
  69. package/views/detail/ChangeRequest/Proposal.js.map +0 -1
@@ -87,7 +87,7 @@ const RegisterMeta = function () {
87
87
  disabled: !didChange || !canChange
88
88
  }, "Clear changes"))),
89
89
  main: (0, _react2.jsx)(_RegisterMetaForm.default, {
90
- value: editedMetadata ?? registerMetadata,
90
+ value: editedMetadata !== null && editedMetadata !== void 0 ? editedMetadata : registerMetadata,
91
91
  onChange: updateObjects ? setEditedMetadata : undefined
92
92
  })
93
93
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterMeta/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useState, useContext } from 'react';\nimport { jsx } from '@emotion/react';\nimport { Button, ButtonGroup, NonIdealState, Spinner } from '@blueprintjs/core';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport { isRegisterMetadata, type Register } from '../../../types';\nimport { isOwner } from '../../../types/stakeholder';\nimport { REGISTER_METADATA_FILENAME } from '../../../common';\nimport { TabContentsWithActions } from '../../util';\nimport RegisterMetaForm from './RegisterMetaForm';\n\n\nconst RegisterMeta: React.FC<Record<never, never>> = function () {\n const { updateObjects, performOperation } = useContext(DatasetContext);\n const { registerMetadata, stakeholder } = useContext(BrowserCtx);\n\n const [ editedMetadata, setEditedMetadata ] = useState<Register | null>(null);\n\n const canChange = updateObjects ? true : false;\n const didChange = registerMetadata && editedMetadata && JSON.stringify(editedMetadata) !== JSON.stringify(registerMetadata);\n\n function handleClear() {\n setEditedMetadata(null);\n }\n async function handleSave() {\n if (!updateObjects) {\n throw new Error(\"Dataset is read-only\");\n }\n if (!stakeholder || !isOwner(stakeholder)) {\n throw new Error(\"Register meta is only meant to be edited by owner\");\n }\n if (!isRegisterMetadata(editedMetadata)) {\n throw new Error(\"Invalid register metadata\");\n }\n await performOperation('saving register meta', updateObjects)({\n commitMessage: \"edited register metadata\",\n objectChangeset: {\n [REGISTER_METADATA_FILENAME]: {\n oldValue: registerMetadata,\n newValue: editedMetadata,\n },\n },\n });\n setEditedMetadata(null);\n }\n\n if (registerMetadata) {\n return (\n <TabContentsWithActions\n actions={<>\n <ButtonGroup>\n <Button\n onClick={handleSave}\n disabled={!didChange || !canChange}\n intent={didChange && canChange ? \"primary\" : undefined}>\n Save\n </Button>\n <Button\n onClick={handleClear}\n disabled={!didChange || !canChange}>\n Clear changes\n </Button>\n </ButtonGroup>\n </>}\n main={\n <RegisterMetaForm\n value={editedMetadata ?? registerMetadata}\n onChange={updateObjects ? setEditedMetadata : undefined}\n />\n }\n />\n );\n } else if (registerMetadata === undefined) {\n return <NonIdealState icon={<Spinner />} />\n } else {\n return <NonIdealState icon=\"heart-broken\" description=\"Failed to read registry metadata.\" />\n }\n};\n\nexport default {\n main: RegisterMeta,\n title: () => <>Register Metadata</>,\n plainTitle: async () => \"register metadata\",\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterMeta/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useState, useContext } from 'react';\nimport { jsx } from '@emotion/react';\nimport { Button, ButtonGroup, NonIdealState, Spinner } from '@blueprintjs/core';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport { isRegisterMetadata, type Register } from '../../../types';\nimport { isOwner } from '../../../types/stakeholder';\nimport { REGISTER_METADATA_FILENAME } from '../../../common';\nimport { TabContentsWithActions } from '../../util';\nimport RegisterMetaForm from './RegisterMetaForm';\n\n\nconst RegisterMeta: React.FC<Record<never, never>> = function () {\n const { updateObjects, performOperation } = useContext(DatasetContext);\n const { registerMetadata, stakeholder } = useContext(BrowserCtx);\n\n const [ editedMetadata, setEditedMetadata ] = useState<Register | null>(null);\n\n const canChange = updateObjects ? true : false;\n const didChange = registerMetadata && editedMetadata && JSON.stringify(editedMetadata) !== JSON.stringify(registerMetadata);\n\n function handleClear() {\n setEditedMetadata(null);\n }\n async function handleSave() {\n if (!updateObjects) {\n throw new Error(\"Dataset is read-only\");\n }\n if (!stakeholder || !isOwner(stakeholder)) {\n throw new Error(\"Register meta is only meant to be edited by owner\");\n }\n if (!isRegisterMetadata(editedMetadata)) {\n throw new Error(\"Invalid register metadata\");\n }\n await performOperation('saving register meta', updateObjects)({\n commitMessage: \"edited register metadata\",\n objectChangeset: {\n [REGISTER_METADATA_FILENAME]: {\n oldValue: registerMetadata,\n newValue: editedMetadata,\n },\n },\n });\n setEditedMetadata(null);\n }\n\n if (registerMetadata) {\n return (\n <TabContentsWithActions\n actions={<>\n <ButtonGroup>\n <Button\n onClick={handleSave}\n disabled={!didChange || !canChange}\n intent={didChange && canChange ? \"primary\" : undefined}>\n Save\n </Button>\n <Button\n onClick={handleClear}\n disabled={!didChange || !canChange}>\n Clear changes\n </Button>\n </ButtonGroup>\n </>}\n main={\n <RegisterMetaForm\n value={editedMetadata ?? registerMetadata}\n onChange={updateObjects ? setEditedMetadata : undefined}\n />\n }\n />\n );\n } else if (registerMetadata === undefined) {\n return <NonIdealState icon={<Spinner />} />\n } else {\n return <NonIdealState icon=\"heart-broken\" description=\"Failed to read registry metadata.\" />\n }\n};\n\nexport default {\n main: RegisterMeta,\n title: () => <>Register Metadata</>,\n plainTitle: async () => \"register metadata\",\n};\n"]}
@@ -12,12 +12,12 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
12
12
  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; }
13
13
 
14
14
  async function getPlainTitle(uri) {
15
+ var _a, _b, _c;
16
+
15
17
  const [proto, _path] = uri.split(':');
16
18
 
17
19
  if ((0, _protocolRegistry.isValidProtocol)(proto)) {
18
- var _protocolRegistry$pro, _protocolRegistry$pro2;
19
-
20
- return (await ((_protocolRegistry$pro = (_protocolRegistry$pro2 = _protocolRegistry.default[proto]).plainTitle) === null || _protocolRegistry$pro === void 0 ? void 0 : _protocolRegistry$pro.call(_protocolRegistry$pro2, _path))) ?? 'N/A';
20
+ return (_c = await ((_b = (_a = _protocolRegistry.default[proto]).plainTitle) === null || _b === void 0 ? void 0 : _b.call(_a, _path))) !== null && _c !== void 0 ? _c : 'N/A';
21
21
  } else {
22
22
  throw new Error("Invalid protocol");
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/detail/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,EAAE,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;QAC1B,OAAO,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;KACnE;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACrC;AACH,CAAC","sourcesContent":["import protocolRegistry, { isValidProtocol } from '../protocolRegistry';\n\nexport async function getPlainTitle(uri: string): Promise<string> {\n const [proto, _path] = uri.split(':');\n if (isValidProtocol(proto)) {\n return await protocolRegistry[proto].plainTitle?.(_path) ?? 'N/A';\n } else {\n throw new Error(\"Invalid protocol\");\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/detail/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,EAAE,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;;IAC7C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;QAC1B,OAAO,MAAA,MAAM,CAAA,MAAA,MAAA,gBAAgB,CAAC,KAAK,CAAC,EAAC,UAAU,mDAAG,KAAK,CAAC,CAAA,mCAAI,KAAK,CAAC;KACnE;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACrC;AACH,CAAC","sourcesContent":["import protocolRegistry, { isValidProtocol } from '../protocolRegistry';\n\nexport async function getPlainTitle(uri: string): Promise<string> {\n const [proto, _path] = uri.split(':');\n if (isValidProtocol(proto)) {\n return await protocolRegistry[proto].plainTitle?.(_path) ?? 'N/A';\n } else {\n throw new Error(\"Invalid protocol\");\n }\n}\n"]}
@@ -35,7 +35,7 @@ const StructuredDiff = _react2.default.memo(({
35
35
  if (diffContainerRef.current) {
36
36
  const delta = (0, _jsondiffpatch.diff)(item1, item2);
37
37
 
38
- _jsondiffpatch.formatters.html.showUnchanged(showUnchanged ?? _showUnchanged);
38
+ _jsondiffpatch.formatters.html.showUnchanged(showUnchanged !== null && showUnchanged !== void 0 ? showUnchanged : _showUnchanged);
39
39
 
40
40
  if (delta) {
41
41
  diffContainerRef.current.innerHTML = _jsondiffpatch.formatters.html.format(delta, item1);
@@ -1 +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"]}
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,aAAb,aAAa,cAAb,aAAa,GAAI,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"]}
@@ -12,6 +12,8 @@ var _BrowserCtx = require("../BrowserCtx");
12
12
  var _itemPathUtils = require("../itemPathUtils");
13
13
 
14
14
  function useItemRef(itemPath) {
15
+ var _a, _b;
16
+
15
17
  const {
16
18
  subregisters
17
19
  } = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
@@ -26,14 +28,12 @@ function useItemRef(itemPath) {
26
28
  errors: []
27
29
  };
28
30
  } catch (e) {
29
- var _e$toString;
30
-
31
31
  return {
32
32
  value: undefined,
33
33
  isUpdating: false,
34
34
  refresh: () => void 0,
35
35
  _reqCounter: 0,
36
- errors: [`${((_e$toString = e.toString) === null || _e$toString === void 0 ? void 0 : _e$toString.call(e)) ?? e}`]
36
+ errors: [`${(_b = (_a = e.toString) === null || _a === void 0 ? void 0 : _a.call(e)) !== null && _b !== void 0 ? _b : e}`]
37
37
  };
38
38
  }
39
39
  }
@@ -1 +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"]}
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,MAAA,MAAA,CAAC,CAAC,QAAQ,iDAAI,mCAAI,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"]}
@@ -12,6 +12,8 @@ var _BrowserCtx = require("../BrowserCtx");
12
12
  var _itemPathUtils = require("../itemPathUtils");
13
13
 
14
14
  function useSingleRegisterItemData(ref) {
15
+ var _a;
16
+
15
17
  const {
16
18
  useRegisterItemData
17
19
  } = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
@@ -20,7 +22,7 @@ function useSingleRegisterItemData(ref) {
20
22
  itemPaths: [itemPath]
21
23
  });
22
24
  const itemResponseValue = itemResponse.value[itemPath];
23
- const itemData = (itemResponseValue === null || itemResponseValue === void 0 ? void 0 : itemResponseValue.data) ?? null;
25
+ const itemData = (_a = itemResponseValue === null || itemResponseValue === void 0 ? void 0 : itemResponseValue.data) !== null && _a !== void 0 ? _a : null;
24
26
  const errMsg = "Item data cannot be loaded";
25
27
  return {
26
28
  value: itemData,
@@ -1 +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"]}
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,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI,mCAAI,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.js CHANGED
@@ -116,7 +116,7 @@ const BrowserCtxProvider = function ({
116
116
  customViews,
117
117
  children
118
118
  }) {
119
- var _registerMetadataReq$;
119
+ var _a, _b, _c;
120
120
 
121
121
  const {
122
122
  useObjectData,
@@ -130,7 +130,7 @@ const BrowserCtxProvider = function ({
130
130
  const selectedItemRef = selectedItemPath ? (0, _itemPathUtils.itemPathToItemRefLike)(subregisters !== undefined, selectedItemPath) : null;
131
131
  const maybeSelectedRegisterItemData = useObjectData({
132
132
  objectPaths: selectedItemPath ? [selectedItemPath] : []
133
- }).value.data[selectedItemPath ?? ''];
133
+ }).value.data[selectedItemPath !== null && selectedItemPath !== void 0 ? selectedItemPath : ''];
134
134
  const selectedRegisterItem = (0, _types.isInternalItemReference)(selectedItemRef) ? maybeSelectedRegisterItemData && (0, _types.isRegisterItem)(maybeSelectedRegisterItemData) ? {
135
135
  item: maybeSelectedRegisterItemData,
136
136
  ref: selectedItemRef,
@@ -142,9 +142,11 @@ const BrowserCtxProvider = function ({
142
142
  // may not be a RegisterItem.
143
143
 
144
144
  const useRegisterItemData = opts => {
145
- // Original item path mapped to its potential alternative path in current CR,
145
+ var _a, _b; // Original item path mapped to its potential alternative path in current CR,
146
146
  // if the item is clarified or added in it.
147
147
  // TODO(perf): Access CR data and check whether the item is affected instead of blindly trying CR paths
148
+
149
+
148
150
  const pathsToRequest = {};
149
151
  const {
150
152
  changeRequest: activeChangeRequest
@@ -154,7 +156,7 @@ const BrowserCtxProvider = function ({
154
156
  pathsToRequest[givenItemPath] = givenItemPath; // Don’t use CR alternative path for any path that is already explicitly in-CR.
155
157
  // TODO(perf): move out of the loop what’s possible, use map-reduce maybe too
156
158
 
157
- if (!opts.ignoreActiveCR && !givenItemPath.startsWith('/proposals') && activeChangeRequest !== null && activeChangeRequest !== void 0 && activeChangeRequest.id) {
159
+ if (!opts.ignoreActiveCR && !givenItemPath.startsWith('/proposals') && (activeChangeRequest === null || activeChangeRequest === void 0 ? void 0 : activeChangeRequest.id)) {
158
160
  pathsToRequest[(0, _itemPathUtils.itemPathInCR)(givenItemPath, activeChangeRequest.id)] = givenItemPath;
159
161
  }
160
162
  }
@@ -165,7 +167,7 @@ const BrowserCtxProvider = function ({
165
167
  const itemData = {};
166
168
 
167
169
  for (const [alternativePath, itemPath] of Object.entries(pathsToRequest)) {
168
- const data = result.value.data[alternativePath] ?? result.value.data[itemPath] ?? null;
170
+ const data = (_b = (_a = result.value.data[alternativePath]) !== null && _a !== void 0 ? _a : result.value.data[itemPath]) !== null && _b !== void 0 ? _b : null;
169
171
 
170
172
  if ((0, _types.isRegisterItem)(data) || data === null) {
171
173
  itemData[itemPath] = data;
@@ -194,10 +196,10 @@ const BrowserCtxProvider = function ({
194
196
  const registerMetadataReq = useObjectData({
195
197
  objectPaths: [_common.REGISTER_METADATA_FILENAME]
196
198
  });
197
- const maybeRegisterMetadata = ((_registerMetadataReq$ = registerMetadataReq.value.data) === null || _registerMetadataReq$ === void 0 ? void 0 : _registerMetadataReq$[_common.REGISTER_METADATA_FILENAME]) ?? (registerMetadataReq.isUpdating ? undefined : null);
199
+ const maybeRegisterMetadata = (_b = (_a = registerMetadataReq.value.data) === null || _a === void 0 ? void 0 : _a[_common.REGISTER_METADATA_FILENAME]) !== null && _b !== void 0 ? _b : registerMetadataReq.isUpdating ? undefined : null;
198
200
  const registerMetadata = !maybeRegisterMetadata || (0, _types.isRegisterMetadata)(maybeRegisterMetadata) ? maybeRegisterMetadata : null;
199
201
  const remoteUsername = useRemoteUsername().value.username;
200
- const stakeholder = remoteUsername ? ((registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.stakeholders) ?? []).find(s => s.gitServerUsername === remoteUsername) : undefined; // Active CR
202
+ const stakeholder = remoteUsername ? ((_c = registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.stakeholders) !== null && _c !== void 0 ? _c : []).find(s => s.gitServerUsername === remoteUsername) : undefined; // Active CR
201
203
 
202
204
  const [activeChangeRequestID, setActiveChangeRequestID] = (0, _react.useState)(null);
203
205
  const getRelatedClass = (0, _util._getRelatedClass)(itemClassConfiguration);
@@ -205,6 +207,7 @@ const BrowserCtxProvider = function ({
205
207
  value: {
206
208
  stakeholder,
207
209
  registerMetadata,
210
+ offline: remoteUsername === undefined ? true : undefined,
208
211
  subregisters,
209
212
  itemClasses: itemClassConfiguration,
210
213
  jumpTo: spawnTab,
@@ -213,7 +216,7 @@ const BrowserCtxProvider = function ({
213
216
  setActiveChangeRequestID,
214
217
  useRegisterItemData,
215
218
  getRelatedItemClassConfiguration: getRelatedClass,
216
- customViews: customViews ?? [],
219
+ customViews: customViews !== null && customViews !== void 0 ? customViews : [],
217
220
  keyExpression,
218
221
  defaultSearchCriteria
219
222
  }
@@ -1 +1 @@
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, { type 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 SIDEBAR_WIDTH_SETTING_NAME = 'registryMainSidebarWidthPixels'\n\n\nconst RegistryWorkspace: React.FC<Record<never, never>> = function () {\n const { changeRequest: activeChangeRequest } = useContext(ChangeRequestContext);\n const { spawnTab } = useContext(TabbedWorkspaceContext);\n const { useSettings, updateSetting, useGlobalSettings } = useContext(DatasetContext);\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 const { value: { settings } } = useSettings();\n const { value: { settings: globalSettings } } = useGlobalSettings();\n\n const stored = settings[SIDEBAR_WIDTH_SETTING_NAME]\n const sidebarWidth: number | undefined = stored && typeof stored === 'number'\n ? stored as number\n : undefined;\n\n return <TabbedWorkspace\n css={css`flex: 1 1 auto;`}\n sidebarConfig={sidebarConfig}\n sidebarPosition={globalSettings.sidebarPosition}\n sidebarIDs={sidebarIDs}\n newTabPrompt={<RegisterHome />}\n globalMode={globalMode}\n sidebarWidth={sidebarWidth}\n onSidebarResize={(width) => {\n updateSetting({ key: SIDEBAR_WIDTH_SETTING_NAME, value: width })\n }}\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"]}
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, { type 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 SIDEBAR_WIDTH_SETTING_NAME = 'registryMainSidebarWidthPixels'\n\n\nconst RegistryWorkspace: React.FC<Record<never, never>> = function () {\n const { changeRequest: activeChangeRequest } = useContext(ChangeRequestContext);\n const { spawnTab } = useContext(TabbedWorkspaceContext);\n const { useSettings, updateSetting, useGlobalSettings } = useContext(DatasetContext);\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 const { value: { settings } } = useSettings();\n const { value: { settings: globalSettings } } = useGlobalSettings();\n\n const stored = settings[SIDEBAR_WIDTH_SETTING_NAME]\n const sidebarWidth: number | undefined = stored && typeof stored === 'number'\n ? stored as number\n : undefined;\n\n return <TabbedWorkspace\n css={css`flex: 1 1 auto;`}\n sidebarConfig={sidebarConfig}\n sidebarPosition={globalSettings.sidebarPosition}\n sidebarIDs={sidebarIDs}\n newTabPrompt={<RegisterHome />}\n globalMode={globalMode}\n sidebarWidth={sidebarWidth}\n onSidebarResize={(width) => {\n updateSetting({ key: SIDEBAR_WIDTH_SETTING_NAME, value: width })\n }}\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 offline: remoteUsername === undefined ? true : undefined,\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"]}
@@ -55,8 +55,10 @@ function incompleteItemRefToItemPathPrefix({
55
55
 
56
56
 
57
57
  function itemPathToItemRefLike(hasSubregisters, itemPath) {
58
+ var _a;
59
+
58
60
  const pathNormalized = itemPath.trim() ? stripLeadingSlash(itemPathNotInCR(itemPath)) : undefined;
59
- const pathParts = (pathNormalized === null || pathNormalized === void 0 ? void 0 : pathNormalized.split('/')) ?? [];
61
+ const pathParts = (_a = pathNormalized === null || pathNormalized === void 0 ? void 0 : pathNormalized.split('/')) !== null && _a !== void 0 ? _a : [];
60
62
  const subregisterID = hasSubregisters && pathParts.length >= 1 ? pathParts[1] : undefined;
61
63
  const classID = hasSubregisters ? pathParts.length >= 3 ? pathParts[2] : undefined : pathParts.length >= 1 ? pathParts[0] : undefined;
62
64
  const itemID = hasSubregisters && pathParts.length === 4 || !hasSubregisters && pathParts.length === 2 ? pathParts[pathParts.length - 1].split('.')[0] : undefined;
@@ -99,9 +101,9 @@ const CR_ITEM_PREFIX_REGEX = /^proposals\/(?<crID>\p{Hex_Digit}{8}(?:-\p{Hex_Dig
99
101
  */
100
102
 
101
103
  function getCRIDFromProposedItemPath(givenItemPath) {
102
- var _stripLeadingSlash$ma, _stripLeadingSlash$ma2;
104
+ var _a, _b, _c;
103
105
 
104
- return ((_stripLeadingSlash$ma = stripLeadingSlash(givenItemPath).match(CR_ITEM_PREFIX_REGEX)) === null || _stripLeadingSlash$ma === void 0 ? void 0 : (_stripLeadingSlash$ma2 = _stripLeadingSlash$ma.groups) === null || _stripLeadingSlash$ma2 === void 0 ? void 0 : _stripLeadingSlash$ma2.crID) ?? null;
106
+ return (_c = (_b = (_a = stripLeadingSlash(givenItemPath).match(CR_ITEM_PREFIX_REGEX)) === null || _a === void 0 ? void 0 : _a.groups) === null || _b === void 0 ? void 0 : _b.crID) !== null && _c !== void 0 ? _c : null;
105
107
  }
106
108
  /**
107
109
  * Given an item path, returns path relative to specified CR ID
@@ -1 +1 @@
1
- {"version":3,"file":"itemPathUtils.js","sourceRoot":"","sources":["../../src/views/itemPathUtils.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { InternalItemReference } from '../types';\n\n\n/**\n * Returns dataset-relative path to a register item,\n * given structured item reference.\n *\n * Optionally makes path include given change request contents.\n */\nexport function itemRefToItemPath(\n { subregisterID, classID, itemID }: InternalItemReference,\n inCRWithID?: string,\n): string {\n return `${incompleteItemRefToItemPathPrefix({ subregisterID, classID }, inCRWithID)}/${itemID}.yaml`;\n}\n\n\n/**\n * Returns dataset-relative prefix to a register item,\n * given structured item reference without `itemID`.\n *\n * Optionally makes path include given change request contents.\n */\nexport function incompleteItemRefToItemPathPrefix(\n { subregisterID, classID }: Omit<InternalItemReference, 'itemID'>,\n inCRWithID?: string,\n): string {\n const itemWithClass = `${classID}`;\n const fullPath = subregisterID\n ? `subregisters/${subregisterID}/${itemWithClass}`\n : itemWithClass;\n const maybeInCR = inCRWithID !== undefined\n ? `/proposals/${inCRWithID}/items/${fullPath}`\n : `/${fullPath}`;\n return maybeInCR;\n}\n\n/**\n * Attempts to return a structured register item reference\n * given a dataset-relative item path.\n * If some components are missing, returns an incomplete reference.\n */\nexport function itemPathToItemRefLike(hasSubregisters: boolean, itemPath: string):\n{ itemID?: string; classID?: string; subregisterID?: string; } {\n const pathNormalized = itemPath.trim()\n ? stripLeadingSlash(itemPathNotInCR(itemPath))\n : undefined;\n const pathParts = pathNormalized?.split('/') ?? [];\n\n const subregisterID: string | undefined = hasSubregisters && pathParts.length >= 1\n ? pathParts[1]\n : undefined;\n\n const classID: string | undefined = hasSubregisters\n ? pathParts.length >= 3\n ? pathParts[2]\n : undefined\n : pathParts.length >= 1\n ? pathParts[0]\n : undefined;\n\n const itemID: string | undefined =\n (hasSubregisters && pathParts.length === 4) ||\n (!hasSubregisters && pathParts.length === 2)\n ? pathParts[pathParts.length - 1].split('.')[0]\n : undefined;\n\n return { subregisterID, classID, itemID };\n}\n\n/** Returns just register item ID, given dataset-relative path. */\nexport function itemPathToItemID(objPath: string): string | undefined {\n const objPathComponents = objPath?.split('/');\n const selectedItemID = objPathComponents !== undefined\n ? objPathComponents[objPathComponents.length - 1].split('.')[0]\n : undefined;\n return selectedItemID;\n}\n\n/**\n * Attempts to return a structured register item reference\n * given a dataset-relative item path.\n * If some components are missing, throws an Error.\n */\nexport function itemPathToItemRef(hasSubregisters: boolean, itemPath: string): InternalItemReference {\n const maybeRef = itemPathToItemRefLike(hasSubregisters, itemPath);\n if (maybeRef.classID && maybeRef.itemID) {\n return maybeRef as InternalItemReference;\n } else {\n console.error(\"Internal item reference cannot be constructed from given item path, got\", maybeRef, itemPath, hasSubregisters, \"from\", itemPath);\n throw new Error(\"Internal item reference cannot be constructed from given item path\");\n }\n}\n\n\nconst CR_ITEM_PREFIX_REGEX = /^proposals\\/(?<crID>\\p{Hex_Digit}{8}(?:-\\p{Hex_Digit}{4}){3}-\\p{Hex_Digit}{12})\\/items\\//u;\n\n\n/**\n * If given item path indicates that it is within any CR, returns respective CR ID.\n * Otherwise, returns `null`.\n */\nexport function getCRIDFromProposedItemPath(givenItemPath: string): string | null {\n return stripLeadingSlash(givenItemPath).match(CR_ITEM_PREFIX_REGEX)?.groups?.crID ?? null;\n}\n\n\n/**\n * Given an item path, returns path relative to specified CR ID\n * (even if the path is already relative to another CR ID).\n */\nexport function itemPathInCR(givenItemPath: string, crID: string): string {\n // Remove any CR prefix from given path\n // TODO(perf): Don’t do if prefix matches CR ID already specified?\n // TODO: Validate given path actually looks like a register item path and throw?\n const normalized = stripLeadingSlash(givenItemPath).replace(CR_ITEM_PREFIX_REGEX, '');\n return `/proposals/${crID}/items/${normalized}`;\n}\n\n/**\n * Returns given item path in register-relative form,\n * even if the path is given within proposal contents.\n */\nexport function itemPathNotInCR(givenItemPath: string): string {\n const normalized = stripLeadingSlash(givenItemPath).replace(CR_ITEM_PREFIX_REGEX, '');\n return `/${normalized}`;\n}\n\nfunction stripLeadingSlash(aPath: string): string {\n return aPath.replace(/^\\//, '');\n}\n\n\n/** Converts a change request ID to dataset-relative path to respective main.yaml. */\nexport function crIDToCRPath(crID: string): string {\n return `/proposals/${crID}/main.yaml`;\n}\n\n/** Extracts change request ID from dataset-relative path to its main.yaml. */\nexport function crPathToCRID(crPath: string): string {\n return (\n stripLeadingSlash(crPath).\n replace('proposals/', '').\n split('/')[0]\n );\n}\n"]}
1
+ {"version":3,"file":"itemPathUtils.js","sourceRoot":"","sources":["../../src/views/itemPathUtils.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { InternalItemReference } from '../types';\n\n\n/**\n * Returns dataset-relative path to a register item,\n * given structured item reference.\n *\n * Optionally makes path include given change request contents.\n */\nexport function itemRefToItemPath(\n { subregisterID, classID, itemID }: InternalItemReference,\n inCRWithID?: string,\n): string {\n return `${incompleteItemRefToItemPathPrefix({ subregisterID, classID }, inCRWithID)}/${itemID}.yaml`;\n}\n\n\n/**\n * Returns dataset-relative prefix to a register item,\n * given structured item reference without `itemID`.\n *\n * Optionally makes path include given change request contents.\n */\nexport function incompleteItemRefToItemPathPrefix(\n { subregisterID, classID }: Omit<InternalItemReference, 'itemID'>,\n inCRWithID?: string,\n): string {\n const itemWithClass = `${classID}`;\n const fullPath = subregisterID\n ? `subregisters/${subregisterID}/${itemWithClass}`\n : itemWithClass;\n const maybeInCR = inCRWithID !== undefined\n ? `/proposals/${inCRWithID}/items/${fullPath}`\n : `/${fullPath}`;\n return maybeInCR;\n}\n\n/**\n * Attempts to return a structured register item reference\n * given a dataset-relative item path.\n * If some components are missing, returns an incomplete reference.\n */\nexport function itemPathToItemRefLike(hasSubregisters: boolean, itemPath: string):\n{ itemID?: string; classID?: string; subregisterID?: string; } {\n const pathNormalized = itemPath.trim()\n ? stripLeadingSlash(itemPathNotInCR(itemPath))\n : undefined;\n const pathParts = pathNormalized?.split('/') ?? [];\n\n const subregisterID: string | undefined = hasSubregisters && pathParts.length >= 1\n ? pathParts[1]\n : undefined;\n\n const classID: string | undefined = hasSubregisters\n ? pathParts.length >= 3\n ? pathParts[2]\n : undefined\n : pathParts.length >= 1\n ? pathParts[0]\n : undefined;\n\n const itemID: string | undefined =\n (hasSubregisters && pathParts.length === 4) ||\n (!hasSubregisters && pathParts.length === 2)\n ? pathParts[pathParts.length - 1].split('.')[0]\n : undefined;\n\n return { subregisterID, classID, itemID };\n}\n\n/** Returns just register item ID, given dataset-relative path. */\nexport function itemPathToItemID(objPath: string): string | undefined {\n const objPathComponents = objPath?.split('/');\n const selectedItemID = objPathComponents !== undefined\n ? objPathComponents[objPathComponents.length - 1].split('.')[0]\n : undefined;\n return selectedItemID;\n}\n\n/**\n * Attempts to return a structured register item reference\n * given a dataset-relative item path.\n * If some components are missing, throws an Error.\n */\nexport function itemPathToItemRef(hasSubregisters: boolean, itemPath: string): InternalItemReference {\n const maybeRef = itemPathToItemRefLike(hasSubregisters, itemPath);\n if (maybeRef.classID && maybeRef.itemID) {\n return maybeRef as InternalItemReference;\n } else {\n console.error(\"Internal item reference cannot be constructed from given item path, got\", maybeRef, itemPath, hasSubregisters, \"from\", itemPath);\n throw new Error(\"Internal item reference cannot be constructed from given item path\");\n }\n}\n\n\nconst CR_ITEM_PREFIX_REGEX = /^proposals\\/(?<crID>\\p{Hex_Digit}{8}(?:-\\p{Hex_Digit}{4}){3}-\\p{Hex_Digit}{12})\\/items\\//u;\n\n\n/**\n * If given item path indicates that it is within any CR, returns respective CR ID.\n * Otherwise, returns `null`.\n */\nexport function getCRIDFromProposedItemPath(givenItemPath: string): string | null {\n return stripLeadingSlash(givenItemPath).match(CR_ITEM_PREFIX_REGEX)?.groups?.crID ?? null;\n}\n\n\n/**\n * Given an item path, returns path relative to specified CR ID\n * (even if the path is already relative to another CR ID).\n */\nexport function itemPathInCR(givenItemPath: string, crID: string): string {\n // Remove any CR prefix from given path\n // TODO(perf): Don’t do if prefix matches CR ID already specified?\n // TODO: Validate given path actually looks like a register item path and throw?\n const normalized = stripLeadingSlash(givenItemPath).replace(CR_ITEM_PREFIX_REGEX, '');\n return `/proposals/${crID}/items/${normalized}`;\n}\n\n/**\n * Returns given item path in register-relative form,\n * even if the path is given within proposal contents.\n */\nexport function itemPathNotInCR(givenItemPath: string): string {\n const normalized = stripLeadingSlash(givenItemPath).replace(CR_ITEM_PREFIX_REGEX, '');\n return `/${normalized}`;\n}\n\nfunction stripLeadingSlash(aPath: string): string {\n return aPath.replace(/^\\//, '');\n}\n\n\n/** Converts a change request ID to dataset-relative path to respective main.yaml. */\nexport function crIDToCRPath(crID: string): string {\n return `/proposals/${crID}/main.yaml`;\n}\n\n/** Extracts change request ID from dataset-relative path to its main.yaml. */\nexport function crPathToCRID(crPath: string): string {\n return (\n stripLeadingSlash(crPath).\n replace('proposals/', '').\n split('/')[0]\n );\n}\n"]}
@@ -52,6 +52,8 @@ const Browse = function ({
52
52
  className,
53
53
  style
54
54
  }) {
55
+ var _a, _b, _c;
56
+
55
57
  const {
56
58
  performOperation,
57
59
  updateObjects,
@@ -71,7 +73,7 @@ const Browse = function ({
71
73
  changeRequest: activeCR,
72
74
  canEdit: activeCRIsEditable
73
75
  } = (0, _react.useContext)(_ChangeRequestContext.ChangeRequestContext);
74
- const [state, dispatch] = usePersistentDatasetStateReducer(stateName ?? 'browse-sidebar', undefined, function valdateState(loadedValue) {
76
+ const [state, dispatch] = usePersistentDatasetStateReducer(stateName !== null && stateName !== void 0 ? stateName : 'browse-sidebar', undefined, function valdateState(loadedValue) {
75
77
  function validateFolderID(foldID) {
76
78
  return foldID !== undefined && (foldID === null || foldID.startsWith('by-item-class/') || foldID.startsWith('by-subregister/'));
77
79
  }
@@ -142,6 +144,8 @@ const Browse = function ({
142
144
  }, [focusedTabURI]);
143
145
 
144
146
  async function handleAdd(classID, subregisterID) {
147
+ var _a;
148
+
145
149
  if (!updateObjects || !makeRandomID || !activeCRIsEditable || !activeCR) {
146
150
  throw new Error("Unable to create item: likely current proposal is not editable or dataset is read-only");
147
151
  }
@@ -156,7 +160,7 @@ const Browse = function ({
156
160
  throw new Error("Unable to generate new item data: item class configuration is missing");
157
161
  }
158
162
 
159
- const initialItemData = (clsConfig === null || clsConfig === void 0 ? void 0 : clsConfig.defaults) ?? {};
163
+ const initialItemData = (_a = clsConfig === null || clsConfig === void 0 ? void 0 : clsConfig.defaults) !== null && _a !== void 0 ? _a : {};
160
164
  const itemID = await makeRandomID();
161
165
  const ref = {
162
166
  classID,
@@ -193,12 +197,10 @@ const Browse = function ({
193
197
  let folderInfo;
194
198
 
195
199
  if (state.enteredFolderID.startsWith('by-item-class/')) {
196
- var _clsConfig$meta;
197
-
198
200
  const classID = state.enteredFolderID.split('/')[1];
199
201
  const clsConfig = itemClasses[classID];
200
202
  folderInfo = {
201
- title: (clsConfig === null || clsConfig === void 0 ? void 0 : (_clsConfig$meta = clsConfig.meta) === null || _clsConfig$meta === void 0 ? void 0 : _clsConfig$meta.title) ?? classID,
203
+ title: (_b = (_a = clsConfig === null || clsConfig === void 0 ? void 0 : clsConfig.meta) === null || _a === void 0 ? void 0 : _a.title) !== null && _b !== void 0 ? _b : classID,
202
204
  moreMenu: clsConfig ? (0, _react2.jsx)(ItemClassMenu, {
203
205
  cfg: itemClasses[classID],
204
206
  onCreate: !subregisters && activeCRIsEditable && performOperation ? () => performOperation('generating new item', handleAdd)(classID) : undefined
@@ -220,7 +222,7 @@ const Browse = function ({
220
222
  const subregisterID = state.enteredFolderID.split('/')[1];
221
223
  const subregConfig = subregisters[subregisterID];
222
224
  folderInfo = {
223
- title: (subregConfig === null || subregConfig === void 0 ? void 0 : subregConfig.title) ?? subregisterID,
225
+ title: (_c = subregConfig === null || subregConfig === void 0 ? void 0 : subregConfig.title) !== null && _c !== void 0 ? _c : subregisterID,
224
226
  moreMenu: subregConfig ? (0, _react2.jsx)(SubregisterMenu, {
225
227
  cfg: subregConfig,
226
228
  itemClasses: itemClasses,
@@ -280,7 +282,7 @@ const Browse = function ({
280
282
  }), (0, _react2.jsx)("div", {
281
283
  css: (0, _react2.css)`flex: 1;`
282
284
  }, (0, _react2.jsx)(SearchResultList, {
283
- queryExpression: (0, _itemQueryUtils.getRegisterItemQuery)(queryExpression, activeCR ?? undefined),
285
+ queryExpression: (0, _itemQueryUtils.getRegisterItemQuery)(queryExpression, activeCR !== null && activeCR !== void 0 ? activeCR : undefined),
284
286
  keyExpression: keyExpression,
285
287
  selectedItemPath: state.selectedItemPath,
286
288
  onSelectItem: itemPath => dispatch({
@@ -289,7 +291,7 @@ const Browse = function ({
289
291
  itemPath
290
292
  }
291
293
  }),
292
- onOpenItem: onOpenItem ?? (itemPath => spawnTab(`${_protocolRegistry.Protocols.ITEM_DETAILS}:${itemPath}`))
294
+ onOpenItem: onOpenItem !== null && onOpenItem !== void 0 ? onOpenItem : itemPath => spawnTab(`${_protocolRegistry.Protocols.ITEM_DETAILS}:${itemPath}`)
293
295
  })));
294
296
  } else {
295
297
  // If we are *not* in a folder, show a list of available folders/views
@@ -353,9 +355,9 @@ const Browse = function ({
353
355
  css: (0, _react2.css)`flex: 1;`,
354
356
  className: className,
355
357
  onNodeClick: node => {
356
- var _node$nodeData;
358
+ var _a;
357
359
 
358
- return (_node$nodeData = node.nodeData) !== null && _node$nodeData !== void 0 && _node$nodeData.folderID ? dispatch({
360
+ return ((_a = node.nodeData) === null || _a === void 0 ? void 0 : _a.folderID) ? dispatch({
359
361
  type: 'select-folder',
360
362
  payload: {
361
363
  id: node.nodeData.folderID
@@ -363,9 +365,9 @@ const Browse = function ({
363
365
  }) : void 0;
364
366
  },
365
367
  onNodeExpand: node => {
366
- var _node$nodeData2;
368
+ var _a;
367
369
 
368
- return (_node$nodeData2 = node.nodeData) !== null && _node$nodeData2 !== void 0 && _node$nodeData2.folderID ? dispatch({
370
+ return ((_a = node.nodeData) === null || _a === void 0 ? void 0 : _a.folderID) ? dispatch({
369
371
  type: 'enter-folder',
370
372
  payload: {
371
373
  id: node.nodeData.folderID
@@ -373,9 +375,9 @@ const Browse = function ({
373
375
  }) : void 0;
374
376
  },
375
377
  onNodeDoubleClick: node => {
376
- var _node$nodeData3;
378
+ var _a;
377
379
 
378
- return (_node$nodeData3 = node.nodeData) !== null && _node$nodeData3 !== void 0 && _node$nodeData3.folderID ? dispatch({
380
+ return ((_a = node.nodeData) === null || _a === void 0 ? void 0 : _a.folderID) ? dispatch({
379
381
  type: 'enter-folder',
380
382
  payload: {
381
383
  id: node.nodeData.folderID
@@ -408,10 +410,10 @@ const SubregisterMenu = function ({
408
410
  return (0, _react2.jsx)(_core.Menu, null, (0, _react2.jsx)(_core.MenuDivider, {
409
411
  title: `Item classes in ${cfg.title}`
410
412
  }), cfg.itemClasses.map(classID => {
411
- var _itemClasses$classID, _itemClasses$classID$;
413
+ var _a, _b, _c;
412
414
 
413
415
  return (0, _react2.jsx)(_core.MenuItem, {
414
- text: ((_itemClasses$classID = itemClasses[classID]) === null || _itemClasses$classID === void 0 ? void 0 : (_itemClasses$classID$ = _itemClasses$classID.meta) === null || _itemClasses$classID$ === void 0 ? void 0 : _itemClasses$classID$.title) ?? classID,
416
+ text: (_c = (_b = (_a = itemClasses[classID]) === null || _a === void 0 ? void 0 : _a.meta) === null || _b === void 0 ? void 0 : _b.title) !== null && _c !== void 0 ? _c : classID,
415
417
  key: classID
416
418
  }, (0, _react2.jsx)(ItemClassMenu, {
417
419
  cfg: itemClasses[classID],