@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.
- package/index.d.ts +2 -2
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/item-classes/Tree.js +6 -8
- package/item-classes/Tree.js.map +1 -1
- package/package.json +4 -3
- package/{views/change-request → proposals}/ChangeRequestContext.d.ts +3 -2
- package/{views/change-request → proposals}/ChangeRequestContext.js +8 -8
- package/proposals/ChangeRequestContext.js.map +1 -0
- package/{views/ProposalHistoryDrawer.js → proposals/HistoryDrawer.js} +11 -13
- package/proposals/HistoryDrawer.js.map +1 -0
- package/proposals/ListItem.d.ts +8 -0
- package/proposals/ListItem.js +40 -0
- package/proposals/ListItem.js.map +1 -0
- package/{views/change-request/Summary.d.ts → proposals/MetaProperties.d.ts} +4 -3
- package/proposals/MetaProperties.js +94 -0
- package/proposals/MetaProperties.js.map +1 -0
- package/proposals/NewProposalMenu.d.ts +10 -0
- package/proposals/NewProposalMenu.js +113 -0
- package/proposals/NewProposalMenu.js.map +1 -0
- package/proposals/ProposalBrowser.d.ts +22 -0
- package/{views/change-request/Proposals.js → proposals/ProposalBrowser.js} +20 -258
- package/proposals/ProposalBrowser.js.map +1 -0
- package/proposals/ProposalDetail.d.ts +6 -0
- package/proposals/ProposalDetail.js +67 -0
- package/proposals/ProposalDetail.js.map +1 -0
- package/proposals/ProposalItem.d.ts +16 -0
- package/proposals/ProposalItem.js +57 -0
- package/proposals/ProposalItem.js.map +1 -0
- package/proposals/ProposalSummary.d.ts +6 -0
- package/proposals/ProposalSummary.js +62 -0
- package/proposals/ProposalSummary.js.map +1 -0
- package/proposals/ProposalTab.d.ts +12 -0
- package/proposals/ProposalTab.js +102 -0
- package/proposals/ProposalTab.js.map +1 -0
- package/proposals/ProposalType.d.ts +11 -0
- package/proposals/ProposalType.js +99 -0
- package/proposals/ProposalType.js.map +1 -0
- package/proposals/ProposalWorkspace.d.ts +13 -0
- package/proposals/ProposalWorkspace.js +132 -0
- package/proposals/ProposalWorkspace.js.map +1 -0
- package/proposals/Search.d.ts +26 -0
- package/proposals/Search.js +109 -0
- package/proposals/Search.js.map +1 -0
- package/{views/change-request → proposals}/TransitionHistory.d.ts +3 -2
- package/{views/change-request → proposals}/TransitionHistory.js +18 -14
- package/proposals/TransitionHistory.js.map +1 -0
- package/{views/change-request → proposals}/TransitionOptions.d.ts +3 -3
- package/{views/change-request → proposals}/TransitionOptions.js +34 -12
- package/proposals/TransitionOptions.js.map +1 -0
- package/proposals/actionableGroups/Tree.js +23 -5
- package/proposals/actionableGroups/Tree.js.map +1 -1
- package/proposals/actionableGroups/queries.d.ts +0 -1
- package/proposals/actionableGroups/queries.js +7 -10
- package/proposals/actionableGroups/queries.js.map +1 -1
- package/proposals/actionableGroups/treeNodes.d.ts +2 -1
- package/proposals/actionableGroups/treeNodes.js +42 -10
- package/proposals/actionableGroups/treeNodes.js.map +1 -1
- package/proposals/index.d.ts +6 -0
- package/proposals/index.js +83 -0
- package/proposals/index.js.map +1 -0
- package/{views/change-request → proposals}/objectChangeset.d.ts +4 -4
- package/{views/change-request → proposals}/objectChangeset.js +6 -6
- package/proposals/objectChangeset.js.map +1 -0
- package/proposals/queries.d.ts +4 -0
- package/proposals/queries.js +14 -0
- package/proposals/queries.js.map +1 -0
- package/{types/cr.d.ts → proposals/types.d.ts} +80 -5
- package/{types/cr.js → proposals/types.js} +72 -3
- package/proposals/types.js.map +1 -0
- package/types/index.d.ts +0 -1
- package/types/index.js +0 -13
- package/types/index.js.map +1 -1
- package/types/util.d.ts +1 -1
- package/types/util.js.map +1 -1
- package/types/views.d.ts +1 -1
- package/types/views.js.map +1 -1
- package/views/FilterCriteria/models.d.ts +2 -0
- package/views/FilterCriteria/models.js +12 -2
- package/views/FilterCriteria/models.js.map +1 -1
- package/views/GenericRelatedItemView.js +4 -4
- package/views/GenericRelatedItemView.js.map +1 -1
- package/views/RegisterStakeholder.d.ts +4 -1
- package/views/RegisterStakeholder.js +19 -13
- package/views/RegisterStakeholder.js.map +1 -1
- package/views/detail/ChangeRequest/index.js +12 -160
- package/views/detail/ChangeRequest/index.js.map +1 -1
- package/views/detail/ProposalWork.d.ts +8 -0
- package/views/detail/ProposalWork.js +213 -0
- package/views/detail/ProposalWork.js.map +1 -0
- package/views/detail/RegisterHome/ActiveProposalDetails.d.ts +1 -1
- package/views/detail/RegisterHome/ActiveProposalDetails.js +4 -4
- package/views/detail/RegisterHome/ActiveProposalDetails.js.map +1 -1
- package/views/detail/RegisterHome/Proposal.d.ts +1 -1
- package/views/detail/RegisterHome/Proposal.js +2 -6
- package/views/detail/RegisterHome/Proposal.js.map +1 -1
- package/views/detail/RegisterHome/index.js +12 -16
- package/views/detail/RegisterHome/index.js.map +1 -1
- package/views/detail/RegisterHome2/index.d.ts +5 -0
- package/views/detail/RegisterHome2/index.js +58 -0
- package/views/detail/RegisterHome2/index.js.map +1 -0
- package/views/detail/RegisterItem/index.d.ts +2 -1
- package/views/detail/RegisterItem/index.js +62 -21
- package/views/detail/RegisterItem/index.js.map +1 -1
- package/views/detail/RegisterItemClass.js +1 -1
- package/views/detail/RegisterItemClass.js.map +1 -1
- package/views/detail/RegisterMeta/RegisterMetaForm.js +1 -46
- package/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -1
- package/views/hooks/useLatestAcceptedProposal.d.ts +2 -0
- package/views/hooks/useLatestAcceptedProposal.js +48 -0
- package/views/hooks/useLatestAcceptedProposal.js.map +1 -0
- package/views/hooks/useRegisterVersion.d.ts +5 -0
- package/views/hooks/useRegisterVersion.js +47 -0
- package/views/hooks/useRegisterVersion.js.map +1 -0
- package/views/hooks/useSingleRegisterItemData.js.map +1 -1
- package/views/index.js +38 -16
- package/views/index.js.map +1 -1
- package/views/itemQueryUtils.d.ts +1 -1
- package/views/itemQueryUtils.js +12 -7
- package/views/itemQueryUtils.js.map +1 -1
- package/views/protocolRegistry.d.ts +1 -0
- package/views/protocolRegistry.js +4 -0
- package/views/protocolRegistry.js.map +1 -1
- package/views/sidebar/Browse/index.js +2 -2
- package/views/sidebar/Browse/index.js.map +1 -1
- package/views/sidebar/Registration/index.d.ts +0 -1
- package/views/sidebar/Registration/index.js +9 -37
- package/views/sidebar/Registration/index.js.map +1 -1
- package/views/sidebar/Search/index.d.ts +3 -0
- package/views/sidebar/Search/index.js +12 -11
- package/views/sidebar/Search/index.js.map +1 -1
- package/views/sidebar/index.js +40 -10
- package/views/sidebar/index.js.map +1 -1
- package/views/util.d.ts +6 -1
- package/views/util.js +30 -7
- package/views/util.js.map +1 -1
- package/types/cr.js.map +0 -1
- package/types/proposal.d.ts +0 -90
- package/types/proposal.js +0 -71
- package/types/proposal.js.map +0 -1
- package/views/ProposalHistoryDrawer.js.map +0 -1
- package/views/change-request/ChangeRequestContext.js.map +0 -1
- package/views/change-request/Proposals.d.ts +0 -40
- package/views/change-request/Proposals.js.map +0 -1
- package/views/change-request/Summary.js +0 -59
- package/views/change-request/Summary.js.map +0 -1
- package/views/change-request/TransitionHistory.js.map +0 -1
- package/views/change-request/TransitionOptions.js.map +0 -1
- package/views/change-request/objectChangeset.js.map +0 -1
- package/views/change-request/util.d.ts +0 -4
- package/views/change-request/util.js +0 -14
- package/views/change-request/util.js.map +0 -1
- /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,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  \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;
|