@riboseinc/paneron-registry-kit 2.2.32 → 2.2.34

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 (153) hide show
  1. package/index.d.ts +2 -2
  2. package/index.js +3 -3
  3. package/index.js.map +1 -1
  4. package/item-classes/Tree.js +6 -8
  5. package/item-classes/Tree.js.map +1 -1
  6. package/package.json +4 -3
  7. package/{views/change-request → proposals}/ChangeRequestContext.d.ts +3 -2
  8. package/{views/change-request → proposals}/ChangeRequestContext.js +8 -8
  9. package/proposals/ChangeRequestContext.js.map +1 -0
  10. package/{views/ProposalHistoryDrawer.js → proposals/HistoryDrawer.js} +11 -13
  11. package/proposals/HistoryDrawer.js.map +1 -0
  12. package/proposals/ListItem.d.ts +8 -0
  13. package/proposals/ListItem.js +40 -0
  14. package/proposals/ListItem.js.map +1 -0
  15. package/{views/change-request/Summary.d.ts → proposals/MetaProperties.d.ts} +4 -3
  16. package/proposals/MetaProperties.js +94 -0
  17. package/proposals/MetaProperties.js.map +1 -0
  18. package/proposals/NewProposalMenu.d.ts +10 -0
  19. package/proposals/NewProposalMenu.js +113 -0
  20. package/proposals/NewProposalMenu.js.map +1 -0
  21. package/proposals/ProposalBrowser.d.ts +22 -0
  22. package/{views/change-request/Proposals.js → proposals/ProposalBrowser.js} +20 -258
  23. package/proposals/ProposalBrowser.js.map +1 -0
  24. package/proposals/ProposalDetail.d.ts +6 -0
  25. package/proposals/ProposalDetail.js +67 -0
  26. package/proposals/ProposalDetail.js.map +1 -0
  27. package/proposals/ProposalItem.d.ts +16 -0
  28. package/proposals/ProposalItem.js +57 -0
  29. package/proposals/ProposalItem.js.map +1 -0
  30. package/proposals/ProposalSummary.d.ts +6 -0
  31. package/proposals/ProposalSummary.js +62 -0
  32. package/proposals/ProposalSummary.js.map +1 -0
  33. package/proposals/ProposalTab.d.ts +12 -0
  34. package/proposals/ProposalTab.js +102 -0
  35. package/proposals/ProposalTab.js.map +1 -0
  36. package/proposals/ProposalType.d.ts +11 -0
  37. package/proposals/ProposalType.js +99 -0
  38. package/proposals/ProposalType.js.map +1 -0
  39. package/proposals/ProposalWorkspace.d.ts +13 -0
  40. package/proposals/ProposalWorkspace.js +132 -0
  41. package/proposals/ProposalWorkspace.js.map +1 -0
  42. package/proposals/Search.d.ts +26 -0
  43. package/proposals/Search.js +109 -0
  44. package/proposals/Search.js.map +1 -0
  45. package/{views/change-request → proposals}/TransitionHistory.d.ts +3 -2
  46. package/{views/change-request → proposals}/TransitionHistory.js +18 -14
  47. package/proposals/TransitionHistory.js.map +1 -0
  48. package/{views/change-request → proposals}/TransitionOptions.d.ts +3 -3
  49. package/{views/change-request → proposals}/TransitionOptions.js +34 -12
  50. package/proposals/TransitionOptions.js.map +1 -0
  51. package/proposals/actionableGroups/Tree.js +23 -5
  52. package/proposals/actionableGroups/Tree.js.map +1 -1
  53. package/proposals/actionableGroups/queries.d.ts +0 -1
  54. package/proposals/actionableGroups/queries.js +7 -10
  55. package/proposals/actionableGroups/queries.js.map +1 -1
  56. package/proposals/actionableGroups/treeNodes.d.ts +2 -1
  57. package/proposals/actionableGroups/treeNodes.js +42 -10
  58. package/proposals/actionableGroups/treeNodes.js.map +1 -1
  59. package/proposals/index.d.ts +6 -0
  60. package/proposals/index.js +83 -0
  61. package/proposals/index.js.map +1 -0
  62. package/{views/change-request → proposals}/objectChangeset.d.ts +4 -4
  63. package/{views/change-request → proposals}/objectChangeset.js +6 -6
  64. package/proposals/objectChangeset.js.map +1 -0
  65. package/proposals/queries.d.ts +4 -0
  66. package/proposals/queries.js +14 -0
  67. package/proposals/queries.js.map +1 -0
  68. package/{types/cr.d.ts → proposals/types.d.ts} +80 -5
  69. package/{types/cr.js → proposals/types.js} +72 -3
  70. package/proposals/types.js.map +1 -0
  71. package/types/index.d.ts +0 -1
  72. package/types/index.js +0 -13
  73. package/types/index.js.map +1 -1
  74. package/types/util.d.ts +1 -1
  75. package/types/util.js.map +1 -1
  76. package/types/views.d.ts +1 -1
  77. package/types/views.js.map +1 -1
  78. package/views/FilterCriteria/models.d.ts +2 -0
  79. package/views/FilterCriteria/models.js +12 -2
  80. package/views/FilterCriteria/models.js.map +1 -1
  81. package/views/GenericRelatedItemView.js +4 -4
  82. package/views/GenericRelatedItemView.js.map +1 -1
  83. package/views/RegisterStakeholder.d.ts +4 -1
  84. package/views/RegisterStakeholder.js +19 -13
  85. package/views/RegisterStakeholder.js.map +1 -1
  86. package/views/detail/ChangeRequest/index.js +12 -160
  87. package/views/detail/ChangeRequest/index.js.map +1 -1
  88. package/views/detail/ProposalWork.d.ts +8 -0
  89. package/views/detail/ProposalWork.js +213 -0
  90. package/views/detail/ProposalWork.js.map +1 -0
  91. package/views/detail/RegisterHome/ActiveProposalDetails.d.ts +1 -1
  92. package/views/detail/RegisterHome/ActiveProposalDetails.js +4 -4
  93. package/views/detail/RegisterHome/ActiveProposalDetails.js.map +1 -1
  94. package/views/detail/RegisterHome/Proposal.d.ts +1 -1
  95. package/views/detail/RegisterHome/Proposal.js +2 -6
  96. package/views/detail/RegisterHome/Proposal.js.map +1 -1
  97. package/views/detail/RegisterHome/index.js +12 -16
  98. package/views/detail/RegisterHome/index.js.map +1 -1
  99. package/views/detail/RegisterHome2/index.d.ts +5 -0
  100. package/views/detail/RegisterHome2/index.js +58 -0
  101. package/views/detail/RegisterHome2/index.js.map +1 -0
  102. package/views/detail/RegisterItem/index.d.ts +2 -1
  103. package/views/detail/RegisterItem/index.js +62 -21
  104. package/views/detail/RegisterItem/index.js.map +1 -1
  105. package/views/detail/RegisterItemClass.js +1 -1
  106. package/views/detail/RegisterItemClass.js.map +1 -1
  107. package/views/detail/RegisterMeta/RegisterMetaForm.js +1 -46
  108. package/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -1
  109. package/views/hooks/useLatestAcceptedProposal.d.ts +2 -0
  110. package/views/hooks/useLatestAcceptedProposal.js +48 -0
  111. package/views/hooks/useLatestAcceptedProposal.js.map +1 -0
  112. package/views/hooks/useRegisterVersion.d.ts +5 -0
  113. package/views/hooks/useRegisterVersion.js +47 -0
  114. package/views/hooks/useRegisterVersion.js.map +1 -0
  115. package/views/hooks/useSingleRegisterItemData.js.map +1 -1
  116. package/views/index.js +38 -16
  117. package/views/index.js.map +1 -1
  118. package/views/itemQueryUtils.d.ts +1 -1
  119. package/views/itemQueryUtils.js +12 -7
  120. package/views/itemQueryUtils.js.map +1 -1
  121. package/views/protocolRegistry.d.ts +1 -0
  122. package/views/protocolRegistry.js +4 -0
  123. package/views/protocolRegistry.js.map +1 -1
  124. package/views/sidebar/Browse/index.js +2 -2
  125. package/views/sidebar/Browse/index.js.map +1 -1
  126. package/views/sidebar/Registration/index.d.ts +0 -1
  127. package/views/sidebar/Registration/index.js +9 -37
  128. package/views/sidebar/Registration/index.js.map +1 -1
  129. package/views/sidebar/Search/index.d.ts +3 -0
  130. package/views/sidebar/Search/index.js +12 -11
  131. package/views/sidebar/Search/index.js.map +1 -1
  132. package/views/sidebar/index.js +40 -10
  133. package/views/sidebar/index.js.map +1 -1
  134. package/views/util.d.ts +6 -1
  135. package/views/util.js +30 -7
  136. package/views/util.js.map +1 -1
  137. package/types/cr.js.map +0 -1
  138. package/types/proposal.d.ts +0 -90
  139. package/types/proposal.js +0 -71
  140. package/types/proposal.js.map +0 -1
  141. package/views/ProposalHistoryDrawer.js.map +0 -1
  142. package/views/change-request/ChangeRequestContext.js.map +0 -1
  143. package/views/change-request/Proposals.d.ts +0 -40
  144. package/views/change-request/Proposals.js.map +0 -1
  145. package/views/change-request/Summary.js +0 -59
  146. package/views/change-request/Summary.js.map +0 -1
  147. package/views/change-request/TransitionHistory.js.map +0 -1
  148. package/views/change-request/TransitionOptions.js.map +0 -1
  149. package/views/change-request/objectChangeset.js.map +0 -1
  150. package/views/change-request/util.d.ts +0 -4
  151. package/views/change-request/util.js +0 -14
  152. package/views/change-request/util.js.map +0 -1
  153. /package/{views/ProposalHistoryDrawer.d.ts → proposals/HistoryDrawer.d.ts} +0 -0
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getProposalIcon = getProposalIcon;
7
+ exports.default = exports.ChangeProposalItemView = void 0;
8
+
9
+ var _react = require("@emotion/react");
10
+
11
+ var _core = require("@blueprintjs/core");
12
+
13
+ var _ProposalSummary = _interopRequireDefault(require("./ProposalSummary"));
14
+
15
+ var _ProposalType = _interopRequireDefault(require("./ProposalType"));
16
+
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+
19
+ /** @jsx jsx */
20
+
21
+ /** @jsxFrag React.Fragment */
22
+ const ChangeProposalItemView = (item, {
23
+ handleClick,
24
+ modifiers,
25
+ query
26
+ }) => {
27
+ if (item.item !== null) {
28
+ const i = item;
29
+ return (0, _react.jsx)(_core.MenuItem, {
30
+ active: modifiers.active,
31
+ disabled: modifiers.disabled,
32
+ labelElement: (0, _react.jsx)(_ProposalType.default, {
33
+ proposal: i.proposal
34
+ }),
35
+ key: item.itemPath,
36
+ onClick: handleClick,
37
+ icon: getProposalIcon(item.proposal),
38
+ text: (0, _react.jsx)(_ProposalSummary.default, { ...i
39
+ })
40
+ });
41
+ } else {
42
+ return (0, _react.jsx)(_core.MenuItem, {
43
+ disabled: true,
44
+ icon: "heart-broken",
45
+ onClick: handleClick,
46
+ text: `Broken proposal entry at path ${item.itemPath}`
47
+ });
48
+ }
49
+ };
50
+
51
+ exports.ChangeProposalItemView = ChangeProposalItemView;
52
+ var _default = ChangeProposalItemView;
53
+ exports.default = _default;
54
+
55
+ function getProposalIcon(proposal) {
56
+ return proposal.type === 'addition' ? 'add' : proposal.type === 'clarification' ? 'edit' : 'ban-circle';
57
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProposalItem.js","sourceRoot":"","sources":["../../src/proposals/ProposalItem.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAI9B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAiB,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAU1C,MAAM,CAAC,MAAM,sBAAsB,GACnC,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;QACtB,MAAM,CAAC,GAAG,IAAwD,CAAC;QACnE,OAAO,CACL,IAAC,QAAQ,IACP,MAAM,EAAE,SAAS,CAAC,MAAM,EACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAC5B,YAAY,EAAE,IAAC,YAAY,IAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,GAAI,EACpD,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpC,IAAI,EAAE,IAAC,eAAe,OAAK,CAAC,GAAI,GAChC,CACH,CAAC;KACH;SAAM;QACL,OAAO,IAAC,QAAQ,IACd,QAAQ,QACR,IAAI,EAAC,cAAc,EACnB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,iCAAiC,IAAI,CAAC,QAAQ,EAAE,GACtD,CAAA;KACH;AACH,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC;AAGtC,MAAM,UAAU,eAAe,CAAC,QAAwB;IACtD,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU;QAC/B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe;YACjC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,YAAY,CAAC;AACvB,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\n//import React from 'react';\nimport { type ItemRenderer } from '@blueprintjs/select';\nimport { jsx } from '@emotion/react';\nimport { type IconName, MenuItem } from '@blueprintjs/core';\nimport type {\n InternalItemReference,\n Payload,\n RegisterItem,\n} from '../types';\nimport type { ChangeProposal } from './types';\n\nimport ProposalSummary from './ProposalSummary';\nimport ProposalType from './ProposalType';\n\nexport interface ChangeProposalItem {\n itemPath: string\n itemRef: InternalItemReference\n proposal: ChangeProposal\n item: RegisterItem<Payload> | null\n itemBefore: RegisterItem<Payload> | undefined\n}\n\nexport const ChangeProposalItemView: ItemRenderer<ChangeProposalItem> =\n(item, { handleClick, modifiers, query }) => {\n if (item.item !== null) {\n const i = item as ChangeProposalItem & { item: RegisterItem<any> };\n return (\n <MenuItem\n active={modifiers.active}\n disabled={modifiers.disabled}\n labelElement={<ProposalType proposal={i.proposal} />}\n key={item.itemPath}\n onClick={handleClick}\n icon={getProposalIcon(item.proposal)}\n text={<ProposalSummary {...i} />}\n />\n );\n } else {\n return <MenuItem\n disabled\n icon=\"heart-broken\"\n onClick={handleClick}\n text={`Broken proposal entry at path ${item.itemPath}`}\n />\n }\n};\n\nexport default ChangeProposalItemView;\n\n\nexport function getProposalIcon(proposal: ChangeProposal): IconName {\n return proposal.type === 'addition'\n ? 'add'\n : proposal.type === 'clarification'\n ? 'edit'\n : 'ban-circle';\n}\n"]}
@@ -0,0 +1,6 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import type { ProposalProps, ChangeProposal } from './types';
5
+ export declare const ProposalSummary: React.FC<ProposalProps<ChangeProposal>>;
6
+ export default ProposalSummary;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.ProposalSummary = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _react2 = require("@emotion/react");
11
+
12
+ var _ErrorState = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/ErrorState"));
13
+
14
+ var _BrowserCtx = require("../views/BrowserCtx");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ /** @jsx jsx */
19
+
20
+ /** @jsxFrag React.Fragment */
21
+ const ProposalSummary = function ({
22
+ proposal,
23
+ itemRef,
24
+ item,
25
+ itemBefore,
26
+ onChange
27
+ }) {
28
+ var _a;
29
+
30
+ const {
31
+ itemClasses
32
+ } = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
33
+ const {
34
+ classID
35
+ } = itemRef;
36
+ const cls = itemClasses[classID];
37
+ const ListItemView = (_a = cls === null || cls === void 0 ? void 0 : cls.views) === null || _a === void 0 ? void 0 : _a.listItemView;
38
+
39
+ if (ListItemView) {
40
+ return (0, _react2.jsx)("span", {
41
+ css: (0, _react2.css)`
42
+ display: inline-flex;
43
+ flex-flow: row nowrap;
44
+ align-items: baseline;
45
+ `
46
+ }, (0, _react2.jsx)(ListItemView, {
47
+ itemRef: itemRef,
48
+ itemData: item.data,
49
+ css: (0, _react2.css)`text-overflow: ellipsis; overflow: hidden;`
50
+ }), "\u2003", (0, _react2.jsx)("small", null, cls.meta.title));
51
+ } else {
52
+ return (0, _react2.jsx)(_ErrorState.default, {
53
+ viewName: "list item view",
54
+ inline: true,
55
+ error: "unable to load list item view"
56
+ });
57
+ }
58
+ };
59
+
60
+ exports.ProposalSummary = ProposalSummary;
61
+ var _default = ProposalSummary;
62
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProposalSummary.js","sourceRoot":"","sources":["../../src/proposals/ProposalSummary.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,UAAU,MAAM,qDAAqD,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD,MAAM,CAAC,MAAM,eAAe,GAC5B,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE;;IACzD,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,0CAAE,YAAY,CAAC;IAE9C,IAAI,YAAY,EAAE;QAChB,OAAO,cAAM,GAAG,EAAE,GAAG,CAAA;;;;KAIpB;YACC,IAAC,YAAY,IACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,IAAI,CAAC,IAAI,EACnB,GAAG,EAAE,GAAG,CAAA,4CAA4C,GACpD;;YAEF,mBAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAS,CAC1B,CAAC;KACT;SAAM;QACL,OAAO,IAAC,UAAU,IAChB,QAAQ,EAAC,gBAAgB,EACzB,MAAM,QACN,KAAK,EAAC,+BAA+B,GACrC,CAAC;KACJ;AACH,CAAC,CAAC;AAGF,eAAe,eAAe,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport ErrorState from '@riboseinc/paneron-extension-kit/widgets/ErrorState';\n\nimport { BrowserCtx } from '../views/BrowserCtx';\nimport type { ProposalProps, ChangeProposal } from './types';\n\n\nexport const ProposalSummary: React.FC<ProposalProps<ChangeProposal>> =\nfunction ({ proposal, itemRef, item, itemBefore, onChange }) {\n const { itemClasses } = useContext(BrowserCtx);\n const { classID } = itemRef;\n const cls = itemClasses[classID];\n const ListItemView = cls?.views?.listItemView;\n\n if (ListItemView) {\n return <span css={css`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: baseline;\n `}>\n <ListItemView\n itemRef={itemRef}\n itemData={item.data}\n css={css`text-overflow: ellipsis; overflow: hidden;`}\n />\n &emsp;\n <small>{cls.meta.title}</small>\n </span>;\n } else {\n return <ErrorState\n viewName=\"list item view\"\n inline\n error=\"unable to load list item view\"\n />;\n }\n};\n\n\nexport default ProposalSummary;\n"]}
@@ -0,0 +1,12 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import type { Register, RegisterStakeholder } from '../types';
5
+ import { type SomeCR as CR } from './types';
6
+ declare const ProposalTab: React.VoidFunctionComponent<{
7
+ proposal: CR;
8
+ onDelete?: () => void;
9
+ register: Register;
10
+ stakeholder?: RegisterStakeholder;
11
+ }>;
12
+ export default ProposalTab;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _react2 = require("@emotion/react");
11
+
12
+ var _core = require("@blueprintjs/core");
13
+
14
+ var _util = require("../views/util");
15
+
16
+ var _types = require("./types");
17
+
18
+ var _ProposalWorkspace = _interopRequireDefault(require("./ProposalWorkspace"));
19
+
20
+ var _ProposalBrowser = _interopRequireDefault(require("./ProposalBrowser"));
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ 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); }
25
+
26
+ 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; }
27
+
28
+ /** @jsx jsx */
29
+
30
+ /** @jsxFrag React.Fragment */
31
+ const ProposalTab = function ({
32
+ proposal,
33
+ onDelete,
34
+ register,
35
+ stakeholder
36
+ }) {
37
+ const pending = !(0, _types.isDisposed)(proposal);
38
+ const proposedMarker = (0, _react2.jsx)(_react.default.Fragment, null, "Proposed: ", (0, _types.hadBeenProposed)(proposal) ? (0, _react2.jsx)(_util.Datestamp, {
39
+ date: proposal.timeProposed
40
+ }) : 'not yet');
41
+ const disposedMarker = (0, _react2.jsx)(_react.default.Fragment, null, "Disposed: ", !pending ? (0, _react2.jsx)(_util.Datestamp, {
42
+ date: proposal.timeDisposed
43
+ }) : 'not yet');
44
+ const editedMarker = (0, _react2.jsx)(_react.default.Fragment, null, "Edited: ", (0, _react2.jsx)(_util.Datestamp, {
45
+ date: proposal.timeEdited
46
+ }));
47
+ const classification = (0, _react.useMemo)(() => {
48
+ var _a;
49
+
50
+ return [{
51
+ icon: 'lightbulb',
52
+ children: "Proposal",
53
+ tooltip: {
54
+ icon: 'info-sign',
55
+ content: (0, _react2.jsx)(_core.UL, {
56
+ css: (0, _react2.css)`margin: 0;`
57
+ }, (0, _react2.jsx)("li", null, "Proposal ID: ", proposal.id))
58
+ }
59
+ }, {
60
+ children: pending ? (0, _react2.jsx)(_react.default.Fragment, null, "pending") : (0, _react2.jsx)(_react.default.Fragment, null, "disposed")
61
+ }, {
62
+ children: ((_a = proposal.state) === null || _a === void 0 ? void 0 : _a.replaceAll('-', ' ')) || 'N/A',
63
+ tooltip: {
64
+ icon: 'history',
65
+ content: (0, _react2.jsx)(_core.UL, {
66
+ css: (0, _react2.css)`margin: 0;`
67
+ }, (0, _react2.jsx)("li", null, editedMarker), (0, _react2.jsx)("li", null, proposedMarker), (0, _react2.jsx)("li", null, disposedMarker))
68
+ },
69
+ intent: proposal.state === 'accepted' ? 'success' : proposal.state === 'returned-for-clarification' ? 'warning' : proposal.state === 'withdrawn' || proposal.state === 'rejected' ? 'danger' : proposal.state === 'draft' ? undefined : 'primary'
70
+ }];
71
+ }, [proposal.state, pending, editedMarker, proposedMarker, disposedMarker]);
72
+ const [selectedItem, selectItem] = (0, _react.useState)(null);
73
+ const actions = (0, _react.useMemo)(() => {
74
+ const actions = [];
75
+
76
+ if (onDelete) {
77
+ actions.push({
78
+ text: "Delete this proposal",
79
+ onClick: onDelete
80
+ });
81
+ }
82
+
83
+ return actions;
84
+ }, [onDelete]);
85
+ return (0, _react2.jsx)(_util.TabContentsWithHeader, {
86
+ title: (0, _react2.jsx)(_react.default.Fragment, null, proposal.justification),
87
+ classification: classification,
88
+ actions: actions
89
+ }, (0, _react2.jsx)(_ProposalWorkspace.default, {
90
+ proposal: proposal,
91
+ register: register,
92
+ stakeholder: stakeholder,
93
+ onOpenItem: selectItem
94
+ }), (0, _react2.jsx)(_ProposalBrowser.default, {
95
+ proposals: proposal.items,
96
+ onSelectItem: selectItem,
97
+ selectedItem: selectedItem
98
+ }));
99
+ };
100
+
101
+ var _default = ProposalTab;
102
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProposalTab.js","sourceRoot":"","sources":["../../src/proposals/ProposalTab.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useMemo, useState } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport {\n UL,\n type Intent,\n type IconName,\n} from '@blueprintjs/core';\n\nimport type { Register, RegisterStakeholder } from '../types';\nimport { TabContentsWithHeader, Datestamp } from '../views/util';\nimport { type SomeCR as CR, isDisposed, hadBeenProposed } from './types';\n\nimport Workspace from './ProposalWorkspace';\nimport ProposalBrowser from './ProposalBrowser';\n\n\nconst ProposalTab: React.VoidFunctionComponent<{\n proposal: CR\n onDelete?: () => void\n register: Register\n stakeholder?: RegisterStakeholder\n}> = function ({ proposal, onDelete, register, stakeholder }) {\n const pending = !isDisposed(proposal);\n const proposedMarker = <>\n Proposed: {hadBeenProposed(proposal)\n ? <Datestamp date={proposal.timeProposed} />\n : 'not yet'}\n </>;\n const disposedMarker = <>\n Disposed: {!pending\n ? <Datestamp date={proposal.timeDisposed} />\n : 'not yet'}\n </>;\n const editedMarker = <>Edited: <Datestamp date={proposal.timeEdited} /></>;\n const classification = useMemo(() => {\n return [{\n icon: 'lightbulb' as IconName,\n children: \"Proposal\",\n tooltip: {\n icon: 'info-sign' as IconName,\n content: <UL css={css`margin: 0;`}>\n <li>Proposal ID: {proposal.id}</li>\n </UL>,\n },\n }, {\n children: pending\n ? <>pending</>\n : <>disposed</>,\n }, {\n children: proposal.state?.replaceAll('-', ' ') || 'N/A',\n tooltip: {\n icon: 'history' as IconName,\n content: <UL css={css`margin: 0;`}>\n <li>{editedMarker}</li>\n <li>{proposedMarker}</li>\n <li>{disposedMarker}</li>\n </UL>,\n },\n intent: proposal.state === 'accepted'\n ? 'success'\n : proposal.state === 'returned-for-clarification'\n ? 'warning'\n : proposal.state === 'withdrawn' || proposal.state === 'rejected'\n ? 'danger'\n : proposal.state === 'draft'\n ? undefined\n : 'primary' as Intent,\n }];\n }, [\n proposal.state,\n pending,\n editedMarker, proposedMarker, disposedMarker,\n ]);\n\n const [selectedItem, selectItem] = useState<string | null>(null);\n\n const actions = useMemo(() => {\n const actions = [];\n if (onDelete) {\n actions.push({\n text: \"Delete this proposal\",\n onClick: onDelete,\n });\n }\n return actions;\n }, [onDelete]);\n\n return (\n <TabContentsWithHeader\n title={<>{proposal.justification}</>}\n classification={classification}\n actions={actions}>\n <Workspace\n proposal={proposal}\n register={register}\n stakeholder={stakeholder}\n onOpenItem={selectItem}\n />\n <ProposalBrowser\n proposals={proposal.items}\n onSelectItem={selectItem}\n selectedItem={selectedItem}\n />\n </TabContentsWithHeader>\n );\n\n};\n\nexport default ProposalTab;\n"]}
@@ -0,0 +1,11 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import { jsx } from '@emotion/react';
4
+ import { type TagProps } from '@blueprintjs/core';
5
+ import { type ChangeProposal } from './types';
6
+ /** Returns props for a Tag that classifies this proposal. */
7
+ export declare function proposalToTagProps(proposal: ChangeProposal): TagProps;
8
+ export declare function ProposalType({ proposal }: {
9
+ proposal: ChangeProposal;
10
+ }): jsx.JSX.Element;
11
+ export default ProposalType;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.proposalToTagProps = proposalToTagProps;
7
+ exports.ProposalType = ProposalType;
8
+ exports.default = void 0;
9
+
10
+ var _react = require("@emotion/react");
11
+
12
+ var _react2 = _interopRequireWildcard(require("react"));
13
+
14
+ var _core = require("@blueprintjs/core");
15
+
16
+ var _HelpTooltip = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/HelpTooltip"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ 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); }
21
+
22
+ 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; }
23
+
24
+ /** @jsx jsx */
25
+
26
+ /** @jsxFrag React.Fragment */
27
+
28
+ /** Returns props for a Tag that classifies this proposal. */
29
+ function proposalToTagProps(proposal) {
30
+ return {
31
+ children: proposal.type === 'amendment' ? proposal.amendmentType : proposal.type === 'addition' ? "addition" : proposal.type === 'clarification' ? "clarification" : "(unknown proposal type)",
32
+ intent: proposal.type === 'amendment' ? 'warning' : proposal.type === 'addition' || proposal.type === 'clarification' ? 'primary' : undefined
33
+ };
34
+ }
35
+
36
+ function ProposalType({
37
+ proposal
38
+ }) {
39
+ const proposalConfig = proposal.type === 'amendment' ? PROPOSAL_VIEWS[proposal.amendmentType] : PROPOSAL_VIEWS[proposal.type]; //const ProposalTypeLabel: React.FC<ProposalProps<any>> = proposalConfig.summary;
40
+
41
+ const tagProps = proposalToTagProps(proposal);
42
+ return (0, _react.jsx)(_core.Tag, {
43
+ minimal: true,
44
+ ...tagProps,
45
+ rightIcon: (0, _react.jsx)(_HelpTooltip.default, {
46
+ content: (0, _react.jsx)(_react2.default.Fragment, null, "Proposed to be ", proposalConfig.hint)
47
+ })
48
+ });
49
+ }
50
+
51
+ const clarification = {
52
+ hint: (0, _react.jsx)(_react2.default.Fragment, null, "altered to represent the same concept more clearly."),
53
+ summary: (0, _react2.memo)(({
54
+ proposal,
55
+ item,
56
+ itemRef
57
+ }) => (0, _react.jsx)(_react2.default.Fragment, null, "Clarification"), () => true)
58
+ };
59
+ const addition = {
60
+ hint: (0, _react.jsx)(_react2.default.Fragment, null, "added to this register."),
61
+ summary: (0, _react2.memo)(({
62
+ proposal,
63
+ item,
64
+ itemRef
65
+ }) => (0, _react.jsx)(_react2.default.Fragment, null, "Addition"), () => true)
66
+ };
67
+ const retirement = {
68
+ hint: (0, _react.jsx)(_react2.default.Fragment, null, "marked as no longer current. (Note that this register is append-only, so the item cannot be removed altogether.)"),
69
+ summary: (0, _react2.memo)(({
70
+ proposal,
71
+ itemRef,
72
+ item
73
+ }) => (0, _react.jsx)(_react2.default.Fragment, null, "Retirement"), () => true)
74
+ };
75
+ const supersession = {
76
+ hint: (0, _react.jsx)(_react2.default.Fragment, null, "removed from the register with another item recommended for use in its place. A relation between the superseding and superseded item will be created, though the exact semantics of that relation depend on the register."),
77
+ summary: (0, _react2.memo)(({
78
+ proposal,
79
+ itemRef,
80
+ item
81
+ }) => (0, _react.jsx)(_react2.default.Fragment, null, "Supersession"), () => true)
82
+ };
83
+ const invalidation = {
84
+ hint: (0, _react.jsx)(_react2.default.Fragment, null, "marked as invalid. The exact semantics of invalidation depend on the register."),
85
+ summary: (0, _react2.memo)(({
86
+ proposal,
87
+ itemRef,
88
+ item
89
+ }) => (0, _react.jsx)(_react2.default.Fragment, null, "Invalidation"), () => true)
90
+ };
91
+ const PROPOSAL_VIEWS = {
92
+ clarification,
93
+ addition,
94
+ retirement,
95
+ supersession,
96
+ invalidation
97
+ };
98
+ var _default = ProposalType;
99
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProposalType.js","sourceRoot":"","sources":["../../src/proposals/ProposalType.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx } from '@emotion/react';\nimport React, { memo } from 'react';\nimport {\n Tag,\n type TagProps,\n} from '@blueprintjs/core';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\n\nimport {\n type ChangeProposal,\n type Clarification,\n type Invalidation,\n type Supersession,\n type Addition,\n type Retirement,\n PROPOSAL_TYPES,\n AMENDMENT_TYPES,\n ProposalProps,\n} from './types';\n\n\n/** Returns props for a Tag that classifies this proposal. */\nexport function proposalToTagProps(proposal: ChangeProposal): TagProps {\n return {\n children: proposal.type === 'amendment'\n ? proposal.amendmentType\n : proposal.type === 'addition'\n ? \"addition\"\n : proposal.type === 'clarification'\n ? \"clarification\"\n : \"(unknown proposal type)\",\n intent: proposal.type === 'amendment'\n ? 'warning'\n : proposal.type === 'addition' || proposal.type === 'clarification'\n ? 'primary'\n : undefined,\n }\n}\n\n\n\ntype ProposalOrAmendmentType =\n | Exclude<typeof PROPOSAL_TYPES[number], 'amendment'>\n | typeof AMENDMENT_TYPES[number];\n\n\ninterface ProposalViewConfig<P extends ChangeProposal> {\n summary: React.FC<ProposalProps<P>>\n hint: JSX.Element | string\n}\n\n\n\nexport function ProposalType({ proposal }: { proposal: ChangeProposal }) {\n const proposalConfig = \n proposal.type === 'amendment'\n ? PROPOSAL_VIEWS[proposal.amendmentType]\n : PROPOSAL_VIEWS[proposal.type];\n //const ProposalTypeLabel: React.FC<ProposalProps<any>> = proposalConfig.summary;\n const tagProps = proposalToTagProps(proposal);\n return (\n <Tag\n minimal\n {...tagProps}\n rightIcon={<HelpTooltip content={<>Proposed to be {proposalConfig.hint}</>} />}\n />\n \n );\n}\n\n\n\nconst clarification: ProposalViewConfig<Clarification> = {\n hint: <>\n altered to represent the same concept more clearly.\n </>,\n summary: memo(({ proposal, item, itemRef }) => <>Clarification</>, () => true),\n};\n\n\nconst addition: ProposalViewConfig<Addition> = {\n hint: <>added to this register.</>,\n summary: memo(({ proposal, item, itemRef }) => <>Addition</>, () => true),\n};\n\n\nconst retirement: ProposalViewConfig<Retirement> = {\n hint: <>\n marked as no longer current.\n (Note that this register is append-only, so the item cannot be removed altogether.)\n </>,\n summary: memo(({ proposal, itemRef, item }) => <>Retirement</>, () => true),\n};\n\n\nconst supersession: ProposalViewConfig<Supersession> = {\n hint: <>\n removed from the register with another item recommended for use in its place.\n A relation between the superseding and superseded item will be created,\n though the exact semantics of that relation depend on the register.\n </>,\n summary: memo(({ proposal, itemRef, item }) => <>Supersession</>, () => true),\n};\n\n\nconst invalidation: ProposalViewConfig<Invalidation> = {\n hint: <>\n marked as invalid. The exact semantics of invalidation depend on the register.\n </>,\n summary: memo(({ proposal, itemRef, item }) => <>Invalidation</>, () => true),\n}\n\n\nconst PROPOSAL_VIEWS: { [type in ProposalOrAmendmentType]: ProposalViewConfig<any> } = {\n clarification,\n addition,\n retirement,\n supersession,\n invalidation,\n} as const;\n\n\nexport default ProposalType;\n"]}
@@ -0,0 +1,13 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import type { Register, RegisterStakeholder } from '../types';
5
+ import { type SomeCR as CR } from './types';
6
+ declare const ProposalWorkspace: React.VoidFunctionComponent<{
7
+ proposal: CR;
8
+ register: Register;
9
+ stakeholder?: RegisterStakeholder;
10
+ /** If not specified, opening an item will spawn its tab. */
11
+ onOpenItem?: (itemPath: string | null) => void;
12
+ }>;
13
+ export default ProposalWorkspace;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _react2 = require("@emotion/react");
11
+
12
+ var _core = require("@blueprintjs/core");
13
+
14
+ var _DL = require("@riboseinc/paneron-extension-kit/widgets/DL");
15
+
16
+ var _Workspace = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/Workspace"));
17
+
18
+ var _SuperSidebar = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/SuperSidebar"));
19
+
20
+ var _util = require("../views/util");
21
+
22
+ var _models = require("../views/FilterCriteria/models");
23
+
24
+ var _MetaProperties = _interopRequireDefault(require("./MetaProperties"));
25
+
26
+ var _Search = _interopRequireDefault(require("./Search"));
27
+
28
+ var _Search2 = _interopRequireDefault(require("../views/sidebar/Search"));
29
+
30
+ var _TransitionOptions = _interopRequireWildcard(require("./TransitionOptions"));
31
+
32
+ var _TransitionHistory = _interopRequireWildcard(require("./TransitionHistory"));
33
+
34
+ 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); }
35
+
36
+ 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; }
37
+
38
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
+
40
+ /** @jsx jsx */
41
+
42
+ /** @jsxFrag React.Fragment */
43
+ const SIDEBAR_IDS = ['meta'];
44
+
45
+ const ProposalWorkspace = function ({
46
+ proposal,
47
+ register,
48
+ stakeholder,
49
+ onOpenItem
50
+ }) {
51
+ const sidebarConfig = (0, _react.useMemo)(() => {
52
+ var _a;
53
+
54
+ return {
55
+ meta: {
56
+ icon: () => (0, _react2.jsx)(_core.Icon, {
57
+ icon: "document"
58
+ }),
59
+ title: "Meta",
60
+ blocks: [{
61
+ key: 'summary',
62
+ title: "Summary",
63
+ content: (0, _react2.jsx)("div", {
64
+ css: (0, _react2.css)`padding: 0 5px;`
65
+ }, "\u201C", (_a = proposal.justification) === null || _a === void 0 ? void 0 : _a.trim(), "\u201D", (0, _react2.jsx)("br", null), (0, _react2.jsx)(_DL.WrappableDL, null, (0, _react2.jsx)(_MetaProperties.default, {
66
+ cr: proposal,
67
+ currentStakeholder: stakeholder,
68
+ registerMetadata: register
69
+ })))
70
+ }, {
71
+ key: 'transitions',
72
+ title: "Transitions",
73
+ content: (0, _react2.jsx)(TransitionBlockContents, {
74
+ proposal: proposal,
75
+ stakeholder: stakeholder
76
+ })
77
+ }]
78
+ }
79
+ };
80
+ }, [register, stakeholder, proposal]);
81
+ return (0, _react2.jsx)(_Workspace.default, {
82
+ sidebarPosition: "right",
83
+ sidebar: (0, _react2.jsx)(_SuperSidebar.default, {
84
+ sidebarIDs: SIDEBAR_IDS,
85
+ css: (0, _react2.css)`width: 30% !important; min-width: 300px;`,
86
+ selectedSidebarID: 'meta',
87
+ config: sidebarConfig
88
+ })
89
+ }, (0, _react2.jsx)(_util.RegisterHelmet, null, (0, _react2.jsx)("title", null, "Working on proposal ", proposal.justification)), (0, _react2.jsx)("div", {
90
+ css: (0, _react2.css)`padding: 10px; flex: 1; display: flex; flex-flow: column nowrap; overflow: hidden;`
91
+ }, (0, _react2.jsx)(_Search2.default, {
92
+ css: (0, _react2.css)`flex: 1;`,
93
+ //style={{ height: '100vh', width: '50vw', minWidth: '500px', maxWidth: '90vw' }}
94
+ implicitCriteria: _models.MATCHES_ANY_CRITERIA,
95
+ stateName: `proposal-${proposal.id}-search`,
96
+ List: _Search.default,
97
+ extraData: {
98
+ proposal
99
+ },
100
+ onOpenItem: onOpenItem
101
+ })));
102
+ };
103
+
104
+ var _default = ProposalWorkspace;
105
+ exports.default = _default;
106
+
107
+ const TransitionBlockContents = function ({
108
+ proposal,
109
+ stakeholder
110
+ }) {
111
+ const transitions = (0, _react.useMemo)(() => stakeholder ? (0, _TransitionOptions.getTransitions)(proposal, stakeholder) : [], [proposal, stakeholder]);
112
+ const [showDetailedHistory, setShowDetailedHistory] = (0, _react.useState)(false);
113
+ const transitionsBlock = (0, _react.useMemo)(() => (0, _react2.jsx)("div", {
114
+ css: (0, _react2.css)`overflow-y: auto; max-height: 300px;`
115
+ }, (0, _react2.jsx)(_core.Checkbox // NOTE: left margin aligns with transition history bullets…
116
+ , {
117
+ // NOTE: left margin aligns with transition history bullets…
118
+ css: (0, _react2.css)`margin: 5px 15px;`,
119
+ checked: showDetailedHistory,
120
+ onChange: evt => setShowDetailedHistory(evt.currentTarget.checked)
121
+ }, "Show detailed history"), (0, _react2.jsx)(_TransitionHistory.default, {
122
+ pastTransitions: (0, _TransitionHistory.getTransitionHistory)(proposal),
123
+ isFinal: (0, _TransitionOptions.isFinalState)(proposal.state),
124
+ detailed: showDetailedHistory
125
+ }), !showDetailedHistory && transitions.length > 0 ? (0, _react2.jsx)(_TransitionOptions.default, {
126
+ stakeholder: stakeholder,
127
+ transitions: transitions,
128
+ cr: proposal,
129
+ css: (0, _react2.css)`padding: 12px;`
130
+ }) : null), [proposal, transitions, setShowDetailedHistory, showDetailedHistory]);
131
+ return transitionsBlock;
132
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProposalWorkspace.js","sourceRoot":"","sources":["../../src/proposals/ProposalWorkspace.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useMemo, useState } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport {\n Icon,\n Checkbox,\n} from '@blueprintjs/core';\n\nimport { WrappableDL as DL } from '@riboseinc/paneron-extension-kit/widgets/DL';\nimport Workspace from '@riboseinc/paneron-extension-kit/widgets/Workspace';\nimport SuperSidebar from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/SuperSidebar';\n\nimport type { Register, RegisterStakeholder } from '../types';\nimport { RegisterHelmet as Helmet } from '../views/util';\nimport { MATCHES_ANY_CRITERIA } from '../views/FilterCriteria/models';\nimport { type SomeCR as CR } from './types';\nimport MetaProperties from './MetaProperties';\nimport ProposalSearch from './Search';\nimport Search from '../views/sidebar/Search';\nimport TransitionOptions, { getTransitions, isFinalState } from './TransitionOptions';\nimport TransitionsAndStatus, { getTransitionHistory } from './TransitionHistory';\n\n\nconst SIDEBAR_IDS = ['meta'] as const;\n\n\nconst ProposalWorkspace: React.VoidFunctionComponent<{\n proposal: CR\n register: Register\n stakeholder?: RegisterStakeholder\n\n /** If not specified, opening an item will spawn its tab. */\n onOpenItem?: (itemPath: string | null) => void\n}> = function ({ proposal, register, stakeholder, onOpenItem }) {\n const sidebarConfig = useMemo(() => {\n return {\n meta: {\n icon: () => <Icon icon=\"document\" />,\n title: \"Meta\",\n blocks: [{\n key: 'summary',\n title: \"Summary\",\n content: <div css={css`padding: 0 5px;`}>\n “{proposal.justification?.trim()}”\n <br />\n <DL>\n <MetaProperties\n cr={proposal}\n currentStakeholder={stakeholder}\n registerMetadata={register}\n />\n </DL>\n </div>,\n }, {\n key: 'transitions',\n title: \"Transitions\",\n content: <TransitionBlockContents\n proposal={proposal}\n stakeholder={stakeholder}\n />,\n }],\n },\n };\n }, [register, stakeholder, proposal]);\n return (\n <Workspace sidebarPosition=\"right\" sidebar={\n <SuperSidebar\n sidebarIDs={SIDEBAR_IDS}\n css={css`width: 30% !important; min-width: 300px;`}\n selectedSidebarID='meta'\n config={sidebarConfig}\n />\n }>\n <Helmet><title>Working on proposal {proposal.justification}</title></Helmet>\n <div css={css`padding: 10px; flex: 1; display: flex; flex-flow: column nowrap; overflow: hidden;`}>\n <Search\n css={css`flex: 1;`}\n //style={{ height: '100vh', width: '50vw', minWidth: '500px', maxWidth: '90vw' }}\n implicitCriteria={MATCHES_ANY_CRITERIA}\n stateName={`proposal-${proposal.id}-search`}\n List={ProposalSearch as any}\n extraData={{ proposal }}\n onOpenItem={onOpenItem}\n />\n </div>\n </Workspace>\n );\n};\n\nexport default ProposalWorkspace;\n\n\nconst TransitionBlockContents: React.VoidFunctionComponent<{\n proposal: CR\n stakeholder?: RegisterStakeholder\n}> = function ({ proposal, stakeholder }) {\n const transitions = useMemo(\n (() => stakeholder\n ? getTransitions(proposal, stakeholder)\n : []),\n [proposal, stakeholder]);\n\n const [showDetailedHistory, setShowDetailedHistory] = useState(false);\n\n const transitionsBlock = useMemo(\n (() =>\n <div css={css`overflow-y: auto; max-height: 300px;`}>\n <Checkbox\n // NOTE: left margin aligns with transition history bullets…\n css={css`margin: 5px 15px;`}\n checked={showDetailedHistory}\n onChange={(evt) => setShowDetailedHistory(evt.currentTarget.checked)}>\n Show detailed history\n </Checkbox>\n <TransitionsAndStatus\n pastTransitions={getTransitionHistory(proposal)}\n isFinal={isFinalState(proposal.state)}\n detailed={showDetailedHistory}\n />\n {!showDetailedHistory && transitions.length > 0\n ? <TransitionOptions\n stakeholder={stakeholder}\n transitions={transitions}\n cr={proposal}\n css={css`padding: 12px;`}\n />\n : null}\n </div>),\n [proposal, transitions, setShowDetailedHistory, showDetailedHistory]);\n\n return transitionsBlock;\n}\n"]}
@@ -0,0 +1,26 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import type { RegisterItem } from '../types/item';
5
+ import type { SomeCR } from './types';
6
+ export interface ProposalListData {
7
+ selectedItemPath: string | null;
8
+ extraItemViewData: {
9
+ proposal: SomeCR;
10
+ itemData: Record<string, RegisterItem<any> | null>;
11
+ };
12
+ }
13
+ export interface SearchResultListProps {
14
+ queryExpression: string;
15
+ selectedItemPath: string | null;
16
+ onSelectItem: (itemPath: string | null) => void;
17
+ onOpenItem?: (itemPath: string) => void;
18
+ keyExpression?: string;
19
+ extraItemViewData: {
20
+ proposal: SomeCR;
21
+ itemData: Record<string, RegisterItem<any> | null>;
22
+ };
23
+ className?: string;
24
+ }
25
+ export declare const ProposalSearchResultList: React.FC<SearchResultListProps>;
26
+ export default ProposalSearchResultList;