@riboseinc/paneron-registry-kit 2.2.10 → 2.2.12
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 -4
- package/index.js +18 -0
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/site-builder/index.d.ts +3 -0
- package/site-builder/index.js +75 -0
- package/site-builder/index.js.map +1 -0
- package/site-builder/jsx-runtime.d.ts +18 -0
- package/site-builder/jsx-runtime.js +107 -0
- package/site-builder/jsx-runtime.js.map +1 -0
- package/site-builder/page.d.ts +6 -0
- package/site-builder/page.js +24 -0
- package/site-builder/page.js.map +1 -0
- package/types/cr.d.ts +22 -0
- package/types/cr.js +41 -1
- package/types/cr.js.map +1 -1
- package/types/item.d.ts +1 -1
- package/types/item.js.map +1 -1
- package/types/stakeholder.d.ts +3 -1
- package/types/stakeholder.js +20 -0
- package/types/stakeholder.js.map +1 -1
- package/types/util.d.ts +2 -0
- package/types/util.js.map +1 -1
- package/types/views.d.ts +22 -0
- package/types/views.js.map +1 -1
- package/views/AnnotatedChange.js +7 -5
- package/views/AnnotatedChange.js.map +1 -1
- package/views/BrowserCtx.d.ts +3 -11
- package/views/BrowserCtx.js +1 -0
- package/views/BrowserCtx.js.map +1 -1
- package/views/FilterCriteria/criteriaGroupToQueryExpression.d.ts +1 -1
- package/views/FilterCriteria/criteriaGroupToQueryExpression.js.map +1 -1
- package/views/FilterCriteria/models.d.ts +1 -1
- package/views/FilterCriteria/models.js.map +1 -1
- package/views/GenericRelatedItemView.js +11 -51
- package/views/GenericRelatedItemView.js.map +1 -1
- package/views/ItemDrawer.d.ts +11 -0
- package/views/ItemDrawer.js +69 -0
- package/views/ItemDrawer.js.map +1 -0
- package/views/SearchQuery.js +25 -14
- package/views/SearchQuery.js.map +1 -1
- package/views/change-request/ChangeProposalContext.d.ts +3 -0
- package/views/change-request/ChangeProposalContext.js +4 -0
- package/views/change-request/ChangeProposalContext.js.map +1 -0
- package/views/change-request/ChangeRequestContext.d.ts +18 -2
- package/views/change-request/ChangeRequestContext.js +29 -5
- package/views/change-request/ChangeRequestContext.js.map +1 -1
- package/views/change-request/Proposals.d.ts +2 -0
- package/views/change-request/Proposals.js +116 -80
- package/views/change-request/Proposals.js.map +1 -1
- package/views/change-request/State.d.ts +0 -0
- package/views/change-request/State.js +1 -0
- package/views/change-request/State.js.map +1 -0
- package/views/change-request/Summary.d.ts +12 -0
- package/views/change-request/Summary.js +59 -0
- package/views/change-request/Summary.js.map +1 -0
- package/views/change-request/TransitionHistory.d.ts +30 -0
- package/views/change-request/TransitionHistory.js +307 -0
- package/views/change-request/TransitionHistory.js.map +1 -0
- package/views/change-request/TransitionOptions.d.ts +38 -0
- package/views/{detail/ChangeRequest/transitions.js → change-request/TransitionOptions.js} +61 -51
- package/views/change-request/TransitionOptions.js.map +1 -0
- package/views/change-request/objectChangeset.d.ts +7 -4
- package/views/change-request/objectChangeset.js +60 -23
- package/views/change-request/objectChangeset.js.map +1 -1
- package/views/detail/ChangeRequest/index.js +129 -142
- package/views/detail/ChangeRequest/index.js.map +1 -1
- package/views/detail/RegisterHome/ActiveProposalDetails.d.ts +15 -0
- package/views/detail/RegisterHome/ActiveProposalDetails.js +104 -0
- package/views/detail/RegisterHome/ActiveProposalDetails.js.map +1 -0
- package/views/detail/RegisterHome/Block.d.ts +19 -0
- package/views/detail/RegisterHome/Block.js +49 -0
- package/views/detail/RegisterHome/Block.js.map +1 -0
- package/views/detail/RegisterHome/MetaSummary.d.ts +9 -0
- package/views/detail/RegisterHome/MetaSummary.js +39 -0
- package/views/detail/RegisterHome/MetaSummary.js.map +1 -0
- package/views/detail/RegisterHome/Proposal.d.ts +14 -0
- package/views/detail/RegisterHome/Proposal.js +296 -0
- package/views/detail/RegisterHome/Proposal.js.map +1 -0
- package/views/detail/RegisterHome/index.js +345 -141
- package/views/detail/RegisterHome/index.js.map +1 -1
- package/views/detail/RegisterItem/index.d.ts +2 -3
- package/views/detail/RegisterItem/index.js +238 -140
- package/views/detail/RegisterItem/index.js.map +1 -1
- package/views/detail/RegisterMeta/RegisterMetaForm.js +37 -45
- package/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -1
- package/views/detail/RegisterMeta/index.js +14 -11
- package/views/detail/RegisterMeta/index.js.map +1 -1
- package/views/diffing/InlineDiff.d.ts +27 -1
- package/views/diffing/InlineDiff.js +113 -2
- package/views/diffing/InlineDiff.js.map +1 -1
- package/views/hooks/useCustomView.js +1 -1
- package/views/hooks/useCustomView.js.map +1 -1
- package/views/index.js +4 -2
- package/views/index.js.map +1 -1
- package/views/sidebar/Search/index.js +12 -2
- package/views/sidebar/Search/index.js.map +1 -1
- package/views/util.d.ts +43 -6
- package/views/util.js +240 -11
- package/views/util.js.map +1 -1
- package/views/detail/ChangeRequest/transitions.d.ts +0 -28
- package/views/detail/ChangeRequest/transitions.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ItemDrawer.js","sourceRoot":"","sources":["../../src/views/ItemDrawer.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAc,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,gBAAgB,GAKjB,UAAU,EACb,MAAM,EAAE,OAAO,EAAE,YAAY,EAC7B,iBAAiB,GAClB;IACC,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEhD,MAAM,aAAa,GAAgB,OAAO,CAAC,GAAG,EAAE,CAAC,CAC/C,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9B,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,sBAAsB,KAAK,WAAW;KAC9C,CAAC,CAAC,CACJ,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEnC,MAAM,gBAAgB,GAA8B,OAAO,CAAC,GAAG,EAAE,CAAC,CAChE,aAAa,CAAC,MAAM,GAAG,CAAC;QACtB,CAAC,CAAC;YACE,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,aAAa;SACxB;QACH,CAAC,CAAC,SAAS,CACd,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9C,YAAY,CAAC,iBAAiB,CAAC,YAAY,KAAK,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtE,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5B,OAAO,CACL,IAAC,MAAM,IACH,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,KAAK,EACnB,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;QACzC,IAAC,MAAM,IACL,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAC/E,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAC,kCAAkC,EAC5C,UAAU,EAAE,cAAc,GAC1B,CACK,CACV,CAAC;AACJ,CAAC,CAAC;AAGF,eAAe,gBAAgB,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx } from '@emotion/react';\nimport React, { useContext, useMemo, useCallback } from 'react';\nimport { Drawer } from '@blueprintjs/core';\nimport type { InternalItemReference } from '../types';\nimport type { Criterion, CriteriaGroup } from './FilterCriteria/models';\nimport { BrowserCtx } from './BrowserCtx';\nimport Search from './sidebar/Search';\nimport { itemPathToItemRef } from './itemPathUtils';\n\n\nconst ItemSearchDrawer: React.FC<{\n isOpen: boolean\n onClose: () => void\n onChooseItem: (itemRef: InternalItemReference) => void\n availableClassIDs: string[]\n}> = function ({\n isOpen, onClose, onChooseItem,\n availableClassIDs,\n}) {\n const { subregisters } = useContext(BrowserCtx);\n\n const classCriteria: Criterion[] = useMemo(() => (\n availableClassIDs.map(clsID => ({\n key: 'item-class',\n query: `objPath.indexOf(\\\"/${clsID}/\\\") >= 0`,\n }))\n ), [availableClassIDs.toString()]);\n\n const implicitCriteria: CriteriaGroup | undefined = useMemo(() => (\n classCriteria.length > 0\n ? {\n require: 'any',\n criteria: classCriteria,\n }\n : undefined\n ), [classCriteria]);\n\n const handleOpenItem = useCallback((itemPath) => {\n onChooseItem(itemPathToItemRef(subregisters !== undefined, itemPath));\n onClose();\n }, [onChooseItem, onClose]);\n\n return (\n <Drawer\n isOpen={isOpen}\n onClose={onClose}\n enforceFocus={false}\n style={{ padding: '0', width: 'unset' }}>\n <Search\n style={{ height: '100vh', width: '80vw', minWidth: '500px', maxWidth: '100vw' }}\n availableClassIDs={availableClassIDs}\n implicitCriteria={implicitCriteria}\n stateName=\"superseding-item-selector-search\"\n onOpenItem={handleOpenItem}\n />\n </Drawer>\n );\n};\n\n\nexport default ItemSearchDrawer;\n"]}
|
package/views/SearchQuery.js
CHANGED
|
@@ -39,23 +39,35 @@ const SearchQuery = (0, _react.memo)(function ({
|
|
|
39
39
|
}) {
|
|
40
40
|
const {
|
|
41
41
|
itemClasses,
|
|
42
|
-
subregisters
|
|
42
|
+
subregisters,
|
|
43
|
+
getQuickSearchPredicate
|
|
43
44
|
} = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
44
45
|
const [editingAdvanced, toggleEditingAdvanced] = (0, _react.useState)(false);
|
|
45
46
|
const classIDs = availableClassIDs !== null && availableClassIDs !== void 0 ? availableClassIDs : Object.keys(itemClasses);
|
|
46
47
|
const hasAdvancedQuery = rootCriteria.criteria.length > 0;
|
|
47
|
-
|
|
48
|
-
function makeDefaultCriteria() {
|
|
48
|
+
const makeDefaultCriteria = (0, _react.useCallback)(function makeDefaultCriteria() {
|
|
49
49
|
if (quickSearchString) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
50
|
+
if (getQuickSearchPredicate) {
|
|
51
|
+
return {
|
|
52
|
+
key: 'custom',
|
|
53
|
+
query: _CRITERIA_CONFIGURATION.CUSTOM_CONDITION.toQuery({
|
|
54
|
+
customExpression: getQuickSearchPredicate(quickSearchString)
|
|
55
|
+
}, {
|
|
56
|
+
itemClasses,
|
|
57
|
+
subregisters
|
|
58
|
+
})
|
|
59
|
+
};
|
|
60
|
+
} else {
|
|
61
|
+
return {
|
|
62
|
+
key: 'raw-substring',
|
|
63
|
+
query: _CRITERIA_CONFIGURATION.RAW_SUBSTRING.toQuery({
|
|
64
|
+
substring: quickSearchString
|
|
65
|
+
}, {
|
|
66
|
+
itemClasses,
|
|
67
|
+
subregisters
|
|
68
|
+
})
|
|
69
|
+
};
|
|
70
|
+
}
|
|
59
71
|
} else {
|
|
60
72
|
return {
|
|
61
73
|
key: 'custom',
|
|
@@ -67,8 +79,7 @@ const SearchQuery = (0, _react.memo)(function ({
|
|
|
67
79
|
})
|
|
68
80
|
};
|
|
69
81
|
}
|
|
70
|
-
}
|
|
71
|
-
|
|
82
|
+
}, [quickSearchString, getQuickSearchPredicate, itemClasses, subregisters]);
|
|
72
83
|
return (0, _react2.jsx)(_core.ControlGroup, {
|
|
73
84
|
fill: true,
|
|
74
85
|
vertical: true,
|
package/views/SearchQuery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchQuery.js","sourceRoot":"","sources":["../../src/views/SearchQuery.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchQuery.js","sourceRoot":"","sources":["../../src/views/SearchQuery.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { memo, useState, useContext, useCallback } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport { Button, ControlGroup, Colors, InputGroup, Tag, ButtonGroup } from '@blueprintjs/core';\nimport CriteriaTree from './FilterCriteria';\nimport { CUSTOM_CONDITION, RAW_SUBSTRING } from './FilterCriteria/CRITERIA_CONFIGURATION';\nimport { CriteriaGroup, Criterion } from './FilterCriteria/models';\nimport criteriaGroupToQueryExpression from './FilterCriteria/criteriaGroupToQueryExpression';\n//import criteriaGroupToSummary from './FilterCriteria/criteriaGroupToSummary';\nimport { BrowserCtx } from './BrowserCtx';\n\n\nconst SearchQuery: React.FC<{\n rootCriteria: CriteriaGroup;\n onCriteriaChange?: (rootCriteria: CriteriaGroup) => void;\n\n quickSearchString: string;\n onQuickSearchStringChange?: (searchString: string) => void;\n\n availableClassIDs?: string[];\n className?: string;\n}> = memo(function ({\n rootCriteria,\n onCriteriaChange,\n quickSearchString,\n onQuickSearchStringChange,\n availableClassIDs,\n className,\n}) {\n const { itemClasses, subregisters, getQuickSearchPredicate } = useContext(BrowserCtx);\n\n const [ editingAdvanced, toggleEditingAdvanced ] = useState<boolean>(false);\n\n const classIDs = availableClassIDs ?? Object.keys(itemClasses);\n\n const hasAdvancedQuery = rootCriteria.criteria.length > 0;\n\n const makeDefaultCriteria = useCallback(function makeDefaultCriteria(): Criterion {\n if (quickSearchString) {\n if (getQuickSearchPredicate) {\n return {\n key: 'custom',\n query: CUSTOM_CONDITION.toQuery(\n { customExpression: getQuickSearchPredicate(quickSearchString) },\n { itemClasses, subregisters },\n ),\n }\n } else {\n return {\n key: 'raw-substring',\n query: RAW_SUBSTRING.toQuery(\n { substring: quickSearchString },\n { itemClasses, subregisters },\n ),\n }\n }\n } else {\n return {\n key: 'custom',\n query: CUSTOM_CONDITION.toQuery(\n { customExpression: 'false' },\n { itemClasses, subregisters },\n ),\n }\n }\n }, [quickSearchString, getQuickSearchPredicate, itemClasses, subregisters]);\n\n return (\n <ControlGroup fill vertical className={className}>\n <InputGroup\n fill\n small\n disabled={!onQuickSearchStringChange || hasAdvancedQuery}\n value={hasAdvancedQuery ? '' : quickSearchString}\n leftIcon=\"search\"\n placeholder=\"Quick search\"\n title={!hasAdvancedQuery\n ? \"Search for a substring occurring anywhere within serialized item data.\"\n : \"Advanced query overrides quick search.\"}\n css={css`width: 200px; ${quickSearchString !== '' && !hasAdvancedQuery ? 'input { font-weight: bold; }' : ''}`}\n rightElement={<Button\n disabled={!onQuickSearchStringChange || quickSearchString === '' || hasAdvancedQuery}\n onClick={() => onQuickSearchStringChange?.('')}\n small\n minimal\n icon=\"cross\"\n title=\"Clear quick search\" />}\n onChange={evt => onQuickSearchStringChange?.(evt.currentTarget.value)} />\n <ButtonGroup fill>\n <Button\n fill\n small\n title=\"Edit advanced search query\"\n icon='filter'\n onClick={!hasAdvancedQuery\n ? (() => {\n onCriteriaChange!({ criteria: [makeDefaultCriteria()], require: 'all' });\n toggleEditingAdvanced(true);\n })\n : () => toggleEditingAdvanced(v => !v)}\n active={editingAdvanced && hasAdvancedQuery}\n disabled={!hasAdvancedQuery && !onCriteriaChange}\n rightIcon={rootCriteria.criteria.length > 0\n ? <Tag intent=\"success\" round>on</Tag>\n : <Tag round>off</Tag>}>\n Advanced\n </Button>\n </ButtonGroup>\n {hasAdvancedQuery && editingAdvanced\n ? <>\n <CriteriaTree\n key=\"tree\"\n criteria={rootCriteria}\n onChange={onCriteriaChange}\n itemClasses={itemClasses}\n availableClassIDs={classIDs}\n subregisters={subregisters}\n css={css`max-height: 50vh; overflow-y: auto;`} />\n <div\n key=\"query\"\n css={css`\n margin-top: 5px;\n padding: 0 10px 10px 10px;\n color: ${Colors.GRAY3};\n font-size: 90%;\n overflow-wrap: break-word;\n `}>\n Query used: <code>{criteriaGroupToQueryExpression(rootCriteria)}</code>\n </div>\n </>\n : null}\n </ControlGroup>\n );\n});\n\nexport default SearchQuery;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangeProposalContext.js","sourceRoot":"","sources":["../../../src/views/change-request/ChangeProposalContext.tsx"],"names":[],"mappings":";AAAA;;GAEG","sourcesContent":["/**\n * Context pertaining to given register item changes within active proposal, if any.\n */\n"]}
|
|
@@ -5,14 +5,30 @@ import { type SomeCR as CR } from '../../types/cr';
|
|
|
5
5
|
export interface ChangeRequestContextSpec {
|
|
6
6
|
/**
|
|
7
7
|
* Change request object, undefined if not available/loading,
|
|
8
|
-
* null
|
|
8
|
+
* null is out of ordinary (i.e. changeRequestID is not given).
|
|
9
9
|
*/
|
|
10
10
|
changeRequest?: CR | null;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Contents of current CR can be edited by current stakeholder.
|
|
13
13
|
* Always false if `changeRequest` is not defined or `null`.
|
|
14
14
|
*/
|
|
15
15
|
canEdit: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Current CR can be transitioned by current stsakeholder.
|
|
18
|
+
* Always false if `changeRequest` is not defined or `null`.
|
|
19
|
+
*/
|
|
20
|
+
canTransition: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Current CR can be deleted by current stakeholder.
|
|
23
|
+
* Always false if `changeRequest` is not defined or `null`.
|
|
24
|
+
*/
|
|
25
|
+
canDelete: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Function that performs CR deletion.
|
|
28
|
+
* May not be present if operation is not possible right now,
|
|
29
|
+
* but otherwise is present if `canDelete` is true.
|
|
30
|
+
*/
|
|
31
|
+
deleteCR?: () => Promise<void>;
|
|
16
32
|
}
|
|
17
33
|
export declare const ChangeRequestContext: React.Context<ChangeRequestContextSpec>;
|
|
18
34
|
export declare const ChangeRequestContextProvider: React.FC<{
|
|
@@ -15,6 +15,10 @@ var _cr = require("../../types/cr");
|
|
|
15
15
|
|
|
16
16
|
var _BrowserCtx = require("../BrowserCtx");
|
|
17
17
|
|
|
18
|
+
var _itemPathUtils = require("../itemPathUtils");
|
|
19
|
+
|
|
20
|
+
var _TransitionOptions = require("./TransitionOptions");
|
|
21
|
+
|
|
18
22
|
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); }
|
|
19
23
|
|
|
20
24
|
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; }
|
|
@@ -24,7 +28,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
24
28
|
/** @jsxFrag React.Fragment */
|
|
25
29
|
const ChangeRequestContext = _react2.default.createContext({
|
|
26
30
|
changeRequest: null,
|
|
27
|
-
canEdit: false
|
|
31
|
+
canEdit: false,
|
|
32
|
+
canTransition: false,
|
|
33
|
+
canDelete: false
|
|
28
34
|
});
|
|
29
35
|
|
|
30
36
|
exports.ChangeRequestContext = ChangeRequestContext;
|
|
@@ -33,10 +39,13 @@ const ChangeRequestContextProvider = function ({
|
|
|
33
39
|
changeRequestID,
|
|
34
40
|
children
|
|
35
41
|
}) {
|
|
36
|
-
var _a, _b;
|
|
42
|
+
var _a, _b, _c;
|
|
37
43
|
|
|
38
44
|
const {
|
|
39
|
-
useObjectData
|
|
45
|
+
useObjectData,
|
|
46
|
+
updateTree,
|
|
47
|
+
performOperation,
|
|
48
|
+
isBusy
|
|
40
49
|
} = (0, _react2.useContext)(_context.DatasetContext);
|
|
41
50
|
const {
|
|
42
51
|
stakeholder
|
|
@@ -47,10 +56,25 @@ const ChangeRequestContextProvider = function ({
|
|
|
47
56
|
nounLabel: 'proposal(s)'
|
|
48
57
|
}).value) === null || _a === void 0 ? void 0 : _a.data[crPath !== null && crPath !== void 0 ? crPath : '']) !== null && _b !== void 0 ? _b : crPath ? undefined : null;
|
|
49
58
|
const canEdit = changeRequest && stakeholder && (0, _cr.canBeEditedBy)(stakeholder, changeRequest) ? true : false;
|
|
59
|
+
const canTransition = changeRequest && stakeholder && (0, _TransitionOptions.canBeTransitionedBy)(stakeholder, changeRequest) ? true : false;
|
|
60
|
+
const canDelete = changeRequest && stakeholder && (0, _cr.canBeDeletedBy)(stakeholder, changeRequest) ? true : false;
|
|
61
|
+
const crItemEntries = Object.entries((_c = changeRequest === null || changeRequest === void 0 ? void 0 : changeRequest.items) !== null && _c !== void 0 ? _c : []).map(i => JSON.stringify(i));
|
|
62
|
+
const hasItems = crItemEntries.length > 0;
|
|
63
|
+
const deleteCR = (0, _react2.useMemo)(() => !isBusy && canDelete && updateTree ? performOperation('deleting proposal', async function handleDelete() {
|
|
64
|
+
const subtreeRoot = (0, _itemPathUtils.crIDToCRPath)(changeRequest.id).replace('/main.yaml', '');
|
|
65
|
+
await updateTree({
|
|
66
|
+
subtreeRoot,
|
|
67
|
+
newSubtreeRoot: null,
|
|
68
|
+
commitMessage: 'remove unproposed CR draft'
|
|
69
|
+
});
|
|
70
|
+
}) : undefined, [isBusy, performOperation, updateTree, hasItems, canDelete]);
|
|
50
71
|
const ctx = (0, _react2.useMemo)(() => ({
|
|
51
72
|
changeRequest,
|
|
52
|
-
canEdit
|
|
53
|
-
|
|
73
|
+
canEdit,
|
|
74
|
+
canTransition,
|
|
75
|
+
canDelete,
|
|
76
|
+
deleteCR
|
|
77
|
+
}), [changeRequest, canEdit, deleteCR, canDelete]);
|
|
54
78
|
return (0, _react.jsx)(ChangeRequestContext.Provider, {
|
|
55
79
|
value: ctx
|
|
56
80
|
}, children);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangeRequestContext.js","sourceRoot":"","sources":["../../../src/views/change-request/ChangeRequestContext.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAqB,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChangeRequestContext.js","sourceRoot":"","sources":["../../../src/views/change-request/ChangeRequestContext.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAqB,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAqC1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAA2B;IAChF,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAEpC,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE;;IAC1C,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3F,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,eAAe;QAC5B,CAAC,CAAC,cAAc,eAAe,YAAY;QAC3C,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,aAAa,GAAG,MAAA,MAAA,aAAa,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACnC,SAAS,EAAE,aAAa;KACzB,CAAC,CAAC,KAAK,0CAAE,IAAI,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAO,mCAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAElE,MAAM,OAAO,GAAG,aAAa;WACxB,WAAW;WACX,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC;QAC1C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAC;IAEZ,MAAM,aAAa,GAAG,aAAa;WAC9B,WAAW;WACX,mBAAmB,CAAC,WAAW,EAAE,aAAa,CAAC;QAChD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAC;IAEZ,MAAM,SAAS,GAAG,aAAa;WAC1B,WAAW;WACX,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC;QAC3C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAC;IAEZ,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,CAC7B,CAAC,MAAM,IAAI,SAAS,IAAI,UAAU;QAClC,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,KAAK,UAAU,YAAY;YAC/D,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC7E,MAAM,UAAU,CAAC;gBACf,WAAW;gBACX,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,4BAA4B;aAC5C,CAAC,CAAC;QACL,CAAC,CAAC;QACJ,CAAC,CAAC,SAAS,CACZ,EAAE;QACD,MAAM,EAAE,gBAAgB;QACxB,UAAU;QACV,QAAQ,EAAE,SAAS;KACpB,CAAC,CAAC;IAEH,MAAM,GAAG,GAA6B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,aAAa;QACb,OAAO;QACP,aAAa;QACb,SAAS;QACT,QAAQ;KACT,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAEpD,OAAO,CACL,IAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,IACtC,QAAQ,CACqB,CACjC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx } from '@emotion/react';\nimport React, { useMemo, useContext } from 'react';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport { type SomeCR as CR, canBeDeletedBy, canBeEditedBy } from '../../types/cr';\nimport { BrowserCtx } from '../BrowserCtx';\nimport { crIDToCRPath } from '../itemPathUtils';\nimport { canBeTransitionedBy } from './TransitionOptions';\n\n\nexport interface ChangeRequestContextSpec {\n /**\n * Change request object, undefined if not available/loading,\n * null is out of ordinary (i.e. changeRequestID is not given).\n */\n changeRequest?: CR | null\n\n /**\n * Contents of current CR can be edited by current stakeholder.\n * Always false if `changeRequest` is not defined or `null`.\n */\n canEdit: boolean\n\n /**\n * Current CR can be transitioned by current stsakeholder.\n * Always false if `changeRequest` is not defined or `null`.\n */\n canTransition: boolean\n\n /**\n * Current CR can be deleted by current stakeholder.\n * Always false if `changeRequest` is not defined or `null`.\n */\n canDelete: boolean\n\n /**\n * Function that performs CR deletion.\n * May not be present if operation is not possible right now,\n * but otherwise is present if `canDelete` is true.\n */\n deleteCR?: () => Promise<void>\n\n}\n\nexport const ChangeRequestContext = React.createContext<ChangeRequestContextSpec>({\n changeRequest: null,\n canEdit: false,\n canTransition: false,\n canDelete: false,\n});\n\nexport const ChangeRequestContextProvider: React.FC<{\n changeRequestID: string | null\n}> = function ({ changeRequestID, children }) {\n const { useObjectData, updateTree, performOperation, isBusy } = useContext(DatasetContext);\n const { stakeholder } = useContext(BrowserCtx);\n\n const crPath = changeRequestID\n ? `/proposals/${changeRequestID}/main.yaml`\n : null;\n\n const changeRequest = useObjectData({\n objectPaths: crPath ? [crPath] : [],\n nounLabel: 'proposal(s)',\n }).value?.data[crPath ?? ''] as CR ?? (crPath ? undefined : null);\n\n const canEdit = changeRequest\n && stakeholder\n && canBeEditedBy(stakeholder, changeRequest)\n ? true\n : false;\n\n const canTransition = changeRequest\n && stakeholder\n && canBeTransitionedBy(stakeholder, changeRequest)\n ? true\n : false;\n\n const canDelete = changeRequest\n && stakeholder\n && canBeDeletedBy(stakeholder, changeRequest)\n ? true\n : false;\n\n const crItemEntries = Object.entries(changeRequest?.items ?? []).map(i => JSON.stringify(i));\n const hasItems = crItemEntries.length > 0;\n\n const deleteCR = useMemo((() =>\n !isBusy && canDelete && updateTree\n ? performOperation('deleting proposal', async function handleDelete() {\n const subtreeRoot = crIDToCRPath(changeRequest.id).replace('/main.yaml', '');\n await updateTree({\n subtreeRoot,\n newSubtreeRoot: null,\n commitMessage: 'remove unproposed CR draft',\n });\n })\n : undefined\n ), [\n isBusy, performOperation,\n updateTree,\n hasItems, canDelete,\n ]);\n\n const ctx: ChangeRequestContextSpec = useMemo((() => ({\n changeRequest,\n canEdit,\n canTransition,\n canDelete,\n deleteCR,\n })), [changeRequest, canEdit, deleteCR, canDelete]);\n\n return (\n <ChangeRequestContext.Provider value={ctx}>\n {children}\n </ChangeRequestContext.Provider>\n );\n};\n"]}
|
|
@@ -9,7 +9,9 @@ declare const Proposals: React.FC<{
|
|
|
9
9
|
}>;
|
|
10
10
|
interface ProposalProps<P extends ChangeProposal> {
|
|
11
11
|
proposal: P;
|
|
12
|
+
/** Highlight changes. */
|
|
12
13
|
showDiff?: boolean;
|
|
14
|
+
/** In diff mode, only show changed data. (Provisional.) */
|
|
13
15
|
showOnlyChanged?: boolean;
|
|
14
16
|
itemRef: InternalItemReference;
|
|
15
17
|
item: RegisterItem<Payload>;
|
|
@@ -9,8 +9,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
|
|
10
10
|
var _react2 = require("@emotion/react");
|
|
11
11
|
|
|
12
|
-
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
13
|
-
|
|
14
12
|
var _core = require("@blueprintjs/core");
|
|
15
13
|
|
|
16
14
|
var _select = require("@blueprintjs/select");
|
|
@@ -19,6 +17,8 @@ var _HelpTooltip = _interopRequireDefault(require("@riboseinc/paneron-extension-
|
|
|
19
17
|
|
|
20
18
|
var _ErrorBoundary = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/ErrorBoundary"));
|
|
21
19
|
|
|
20
|
+
var _ErrorState = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/ErrorState"));
|
|
21
|
+
|
|
22
22
|
var _protocolRegistry = require("../protocolRegistry");
|
|
23
23
|
|
|
24
24
|
var _BrowserCtx = require("../BrowserCtx");
|
|
@@ -27,7 +27,7 @@ var _itemPathUtils = require("../itemPathUtils");
|
|
|
27
27
|
|
|
28
28
|
var _useItemClassConfig = _interopRequireDefault(require("../hooks/useItemClassConfig"));
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _InlineDiff = require("../diffing/InlineDiff");
|
|
31
31
|
|
|
32
32
|
var _RegisterItem = require("../detail/RegisterItem");
|
|
33
33
|
|
|
@@ -48,11 +48,13 @@ const Proposals = function ({
|
|
|
48
48
|
proposals,
|
|
49
49
|
className
|
|
50
50
|
}) {
|
|
51
|
-
var _a, _b
|
|
51
|
+
var _a, _b;
|
|
52
|
+
|
|
53
|
+
const [selectedProposal, selectProposal] = (0, _react.useState)(null);
|
|
54
|
+
const [preferDiff, setPreferDiff] = (0, _react.useState)(false); // TODO: Temporarily unsupported
|
|
55
|
+
// (limitations of current change annotation implementation)
|
|
56
|
+
//const [ showOnlyChanged, setShowOnlyChanged ] = useState(true);
|
|
52
57
|
|
|
53
|
-
const [_selectedProposal, selectProposal] = (0, _react.useState)(null);
|
|
54
|
-
const [showDiff, setShowDiff] = (0, _react.useState)(false);
|
|
55
|
-
const [showOnlyChanged, setShowOnlyChanged] = (0, _react.useState)(true);
|
|
56
58
|
const outerBrowserCtx = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
57
59
|
const {
|
|
58
60
|
jumpTo,
|
|
@@ -78,16 +80,7 @@ const Proposals = function ({
|
|
|
78
80
|
const proposalBrowserCtx = (0, _react.useMemo)(() => ({ ...outerBrowserCtx,
|
|
79
81
|
jumpTo: handleCRJump
|
|
80
82
|
}), [handleCRJump, outerBrowserCtx]);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const selectedProposal = (_b = (_a = _selectedProposal && proposals[_selectedProposal] ? _selectedProposal : null) !== null && _a !== void 0 ? _a : firstProposal) !== null && _b !== void 0 ? _b : undefined; // Force select available proposal
|
|
84
|
-
|
|
85
|
-
(0, _react.useEffect)(() => {
|
|
86
|
-
if (firstProposal && (_selectedProposal === null || !proposals[_selectedProposal])) {
|
|
87
|
-
selectProposal(firstProposal !== null && firstProposal !== void 0 ? firstProposal : null);
|
|
88
|
-
}
|
|
89
|
-
}, [firstProposal, _selectedProposal, proposals]);
|
|
90
|
-
const selectedItemRef = (0, _itemPathUtils.useItemRef)(subregisters !== undefined, selectedProposal); // Data for proposed items
|
|
83
|
+
/** Paths of register items in proposal. */
|
|
91
84
|
|
|
92
85
|
const proposedItemPaths = Object.entries(proposals).map(([itemPath, proposal]) => {
|
|
93
86
|
if (proposal.type === 'clarification' || proposal.type === 'addition') {
|
|
@@ -96,9 +89,12 @@ const Proposals = function ({
|
|
|
96
89
|
return undefined;
|
|
97
90
|
}
|
|
98
91
|
}).filter(s => s !== undefined);
|
|
92
|
+
/** Proposed data of register items in proposal. */
|
|
93
|
+
|
|
99
94
|
const proposedItemDataReq = useRegisterItemData({
|
|
100
95
|
itemPaths: proposedItemPaths
|
|
101
|
-
});
|
|
96
|
+
});
|
|
97
|
+
/** Pre-existing data of register items in proposal. */
|
|
102
98
|
|
|
103
99
|
const currentItemDataReq = useRegisterItemData({
|
|
104
100
|
itemPaths: Object.keys(proposals),
|
|
@@ -114,8 +110,13 @@ const Proposals = function ({
|
|
|
114
110
|
|
|
115
111
|
return (_a = proposedItemDataReq.value[itemPath]) !== null && _a !== void 0 ? _a : null;
|
|
116
112
|
}, [proposedItemDataReq.value]);
|
|
117
|
-
|
|
118
|
-
|
|
113
|
+
/** Current register item (if any) corresponding to selected proposal. */
|
|
114
|
+
|
|
115
|
+
const selectedItemCurrent = selectedProposal ? getCurrentItem(selectedProposal) : null;
|
|
116
|
+
/** Proposed register item corresponding to selected proposal. */
|
|
117
|
+
|
|
118
|
+
const selectedItemProposed = selectedProposal ? getProposedItem(selectedProposal) : null;
|
|
119
|
+
const selectedItemRef = (0, _itemPathUtils.useItemRef)(subregisters !== undefined, selectedProposal);
|
|
119
120
|
const handleItemSelect = (0, _react.useCallback)(item => selectProposal(item.itemPath), [selectProposal]);
|
|
120
121
|
const activeItem = (0, _react.useMemo)(() => selectedProposal ? {
|
|
121
122
|
itemPath: selectedProposal,
|
|
@@ -134,34 +135,51 @@ const Proposals = function ({
|
|
|
134
135
|
itemBefore: undefined,
|
|
135
136
|
itemRef: (0, _itemPathUtils.itemPathToItemRef)(subregisters !== undefined, itemPath)
|
|
136
137
|
};
|
|
137
|
-
})
|
|
138
|
+
}), [proposals, getCurrentItem, getProposedItem]);
|
|
139
|
+
const haveSelectedItem = selectedProposal && selectedItemRef && proposals[selectedProposal] && (selectedItemProposed || selectedItemCurrent);
|
|
140
|
+
const proposalCount = Object.keys(proposals).length;
|
|
141
|
+
(0, _react.useEffect)(() => {
|
|
142
|
+
if (!selectedProposal) {
|
|
143
|
+
const firstProposal = Object.keys(proposals)[0];
|
|
138
144
|
|
|
139
|
-
|
|
140
|
-
|
|
145
|
+
if (firstProposal) {
|
|
146
|
+
if (getCurrentItem(firstProposal) || getProposedItem(firstProposal)) {
|
|
147
|
+
selectProposal(firstProposal);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}, [proposalCount, selectedProposal, getCurrentItem, getProposedItem]);
|
|
152
|
+
const canShowDiff = haveSelectedItem && ((_a = proposals[selectedProposal]) === null || _a === void 0 ? void 0 : _a.type) === 'clarification' ? true : false;
|
|
153
|
+
const showDiff = canShowDiff && preferDiff;
|
|
154
|
+
|
|
155
|
+
if (!currentItemDataReq.isUpdating && !proposedItemDataReq.isUpdating) {
|
|
156
|
+
const selectedItemSummary = haveSelectedItem ? (0, _react2.jsx)(ProposalSummary, {
|
|
141
157
|
itemRef: selectedItemRef,
|
|
142
158
|
item: selectedItemProposed !== null && selectedItemProposed !== void 0 ? selectedItemProposed : selectedItemCurrent,
|
|
143
159
|
itemBefore: selectedItemCurrent !== null && selectedItemCurrent !== void 0 ? selectedItemCurrent : undefined,
|
|
144
160
|
proposal: proposals[selectedProposal]
|
|
145
|
-
});
|
|
161
|
+
}) : (0, _react2.jsx)(_react.default.Fragment, null, "Select item\u2026");
|
|
162
|
+
const icon = haveSelectedItem ? getProposalIcon(proposals[selectedProposal]) : undefined;
|
|
146
163
|
return (0, _react2.jsx)("div", {
|
|
147
164
|
css: (0, _react2.css)`display: flex; flex-flow: column nowrap;`,
|
|
148
165
|
className: className
|
|
149
|
-
},
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
css: (0, _react2.css)`margin-right: 1em !important`
|
|
154
|
-
}), (0, _react2.jsx)(_core.Switch, {
|
|
155
|
-
checked: showDiff && showOnlyChanged,
|
|
156
|
-
disabled: !showDiff,
|
|
157
|
-
onChange: evt => setShowOnlyChanged(evt.currentTarget.checked),
|
|
158
|
-
label: "Show clarified properties only"
|
|
159
|
-
})), (0, _react2.jsx)(_core.ButtonGroup, null, (0, _react2.jsx)(_core.Button, {
|
|
160
|
-
disabled: !jumpTo || ((_c = proposals[selectedProposal]) === null || _c === void 0 ? void 0 : _c.type) === 'addition',
|
|
166
|
+
}, proposalCount > 0 ? (0, _react2.jsx)(_core.ButtonGroup, {
|
|
167
|
+
css: (0, _react2.css)`margin: 5px 0 0 5px;`
|
|
168
|
+
}, haveSelectedItem ? (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_core.Button, {
|
|
169
|
+
disabled: !jumpTo || ((_b = proposals[selectedProposal]) === null || _b === void 0 ? void 0 : _b.type) === 'addition',
|
|
161
170
|
icon: 'locate',
|
|
162
171
|
onClick: () => jumpTo === null || jumpTo === void 0 ? void 0 : jumpTo(`${_protocolRegistry.Protocols.ITEM_DETAILS}:${selectedProposal}`),
|
|
163
172
|
title: "Open selected item in a new tab (not applicable to proposed additions)"
|
|
164
|
-
}
|
|
173
|
+
}), (0, _react2.jsx)(_core.Button, {
|
|
174
|
+
active: preferDiff,
|
|
175
|
+
onClick: () => setPreferDiff(v => !v),
|
|
176
|
+
// Diffing only makes sense for clarifications.
|
|
177
|
+
// Additions are entire new items, and for amendments
|
|
178
|
+
// item data is unchanged.
|
|
179
|
+
disabled: !canShowDiff,
|
|
180
|
+
icon: "changes",
|
|
181
|
+
title: "Annotate proposed clarifications for this item"
|
|
182
|
+
})) : null, (0, _react2.jsx)(_react2.ClassNames, null, ({
|
|
165
183
|
css: css2
|
|
166
184
|
}) => (0, _react2.jsx)(_select.Select2, {
|
|
167
185
|
filterable: false,
|
|
@@ -179,13 +197,9 @@ const Proposals = function ({
|
|
|
179
197
|
onItemSelect: handleItemSelect
|
|
180
198
|
}, (0, _react2.jsx)(_core.Button, {
|
|
181
199
|
rightIcon: "chevron-down",
|
|
182
|
-
icon:
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
alignText: "left",
|
|
186
|
-
icon: getProposalIcon(proposals[selectedProposal]),
|
|
187
|
-
rightIcon: "chevron-down"
|
|
188
|
-
}, selectedItemSummary))), (0, _react2.jsx)("div", {
|
|
200
|
+
icon: icon,
|
|
201
|
+
css: (0, _react2.css)`white-space: nowrap;`
|
|
202
|
+
}, selectedItemSummary)))) : null, haveSelectedItem ? (0, _react2.jsx)("div", {
|
|
189
203
|
css: (0, _react2.css)`position: relative; flex: 1;`
|
|
190
204
|
}, (0, _react2.jsx)(_BrowserCtx.BrowserCtx.Provider, {
|
|
191
205
|
value: proposalBrowserCtx
|
|
@@ -194,11 +208,11 @@ const Proposals = function ({
|
|
|
194
208
|
}, (0, _react2.jsx)(ProposalDetail, {
|
|
195
209
|
itemRef: selectedItemRef,
|
|
196
210
|
showDiff: showDiff,
|
|
197
|
-
showOnlyChanged
|
|
211
|
+
//showOnlyChanged={showOnlyChanged}
|
|
198
212
|
item: selectedItemProposed !== null && selectedItemProposed !== void 0 ? selectedItemProposed : selectedItemCurrent,
|
|
199
213
|
itemBefore: selectedItemCurrent !== null && selectedItemCurrent !== void 0 ? selectedItemCurrent : undefined,
|
|
200
214
|
proposal: proposals[selectedProposal]
|
|
201
|
-
})))));
|
|
215
|
+
})))) : null);
|
|
202
216
|
} else {
|
|
203
217
|
return (0, _react2.jsx)(_core.NonIdealState, {
|
|
204
218
|
icon: 'clean',
|
|
@@ -213,21 +227,31 @@ const ChangeProposalItemView = (item, {
|
|
|
213
227
|
modifiers,
|
|
214
228
|
query
|
|
215
229
|
}) => {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
230
|
+
if (item.item !== null) {
|
|
231
|
+
const i = item;
|
|
232
|
+
const proposalConfig = item.proposal.type === 'amendment' ? PROPOSAL_VIEWS[item.proposal.amendmentType] : PROPOSAL_VIEWS[item.proposal.type];
|
|
233
|
+
const ProposalTypeLabel = proposalConfig.summary;
|
|
234
|
+
return (0, _react2.jsx)(_core.MenuItem, {
|
|
235
|
+
active: modifiers.active,
|
|
236
|
+
disabled: modifiers.disabled,
|
|
237
|
+
labelElement: (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(ProposalTypeLabel, { ...i
|
|
238
|
+
}), " ", (0, _react2.jsx)(_HelpTooltip.default, {
|
|
239
|
+
content: (0, _react2.jsx)(_react.default.Fragment, null, "Proposed to be ", proposalConfig.hint)
|
|
240
|
+
})),
|
|
241
|
+
key: item.itemPath,
|
|
242
|
+
onClick: handleClick,
|
|
243
|
+
icon: getProposalIcon(item.proposal),
|
|
244
|
+
text: (0, _react2.jsx)(ProposalSummary, { ...i
|
|
245
|
+
})
|
|
246
|
+
});
|
|
247
|
+
} else {
|
|
248
|
+
return (0, _react2.jsx)(_core.MenuItem, {
|
|
249
|
+
disabled: true,
|
|
250
|
+
icon: "heart-broken",
|
|
251
|
+
onClick: handleClick,
|
|
252
|
+
text: `Broken proposal entry at path ${item.itemPath}`
|
|
253
|
+
});
|
|
254
|
+
}
|
|
231
255
|
};
|
|
232
256
|
|
|
233
257
|
const ProposalDetail = (0, _react.memo)(function ({
|
|
@@ -239,7 +263,7 @@ const ProposalDetail = (0, _react.memo)(function ({
|
|
|
239
263
|
itemBefore,
|
|
240
264
|
onChange
|
|
241
265
|
}) {
|
|
242
|
-
var _a
|
|
266
|
+
var _a;
|
|
243
267
|
|
|
244
268
|
const itemClass = (0, _useItemClassConfig.default)((_a = itemRef.classID) !== null && _a !== void 0 ? _a : 'NONEXISTENT_CLASS_ID');
|
|
245
269
|
|
|
@@ -247,17 +271,23 @@ const ProposalDetail = (0, _react.memo)(function ({
|
|
|
247
271
|
throw new Error(`Unknown item class “${itemRef.classID}”!`);
|
|
248
272
|
}
|
|
249
273
|
|
|
250
|
-
const view = showDiff ? (0, _react2.jsx)(
|
|
251
|
-
item1:
|
|
252
|
-
item2: item
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
274
|
+
const view = showDiff ? (0, _react2.jsx)(_InlineDiff.InlineDiffGeneric, {
|
|
275
|
+
item1: itemBefore !== null && itemBefore !== void 0 ? itemBefore : {},
|
|
276
|
+
item2: item,
|
|
277
|
+
css: (0, _react2.css)`
|
|
278
|
+
position: absolute; inset: 0; padding: 10px; overflow: auto;
|
|
279
|
+
background-color: white;
|
|
280
|
+
.bp4-dark & {
|
|
281
|
+
background-color: ${_core.Colors.DARK_GRAY2};
|
|
282
|
+
}
|
|
283
|
+
`,
|
|
284
|
+
className: `${_core.Classes.ELEVATION_2} ${_core.Classes.RUNNING_TEXT}`
|
|
256
285
|
}) : (0, _react2.jsx)(_RegisterItem.ItemDetail, {
|
|
257
286
|
itemRef: itemRef,
|
|
258
287
|
item: item,
|
|
259
288
|
itemClass: itemClass,
|
|
260
|
-
key: JSON.stringify(itemRef)
|
|
289
|
+
key: JSON.stringify(itemRef),
|
|
290
|
+
compactHeader: true
|
|
261
291
|
});
|
|
262
292
|
return (0, _react2.jsx)("div", {
|
|
263
293
|
css: (0, _react2.css)`position: absolute; inset: 0; display: flex; flex-flow: column;`
|
|
@@ -272,17 +302,28 @@ const ProposalSummary = function ({
|
|
|
272
302
|
itemBefore,
|
|
273
303
|
onChange
|
|
274
304
|
}) {
|
|
305
|
+
var _a, _b;
|
|
306
|
+
|
|
275
307
|
const {
|
|
276
308
|
itemClasses
|
|
277
309
|
} = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
278
310
|
const {
|
|
279
311
|
classID
|
|
280
312
|
} = itemRef;
|
|
281
|
-
const ListItemView = itemClasses[classID].views.listItemView;
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
313
|
+
const ListItemView = (_b = (_a = itemClasses[classID]) === null || _a === void 0 ? void 0 : _a.views) === null || _b === void 0 ? void 0 : _b.listItemView;
|
|
314
|
+
|
|
315
|
+
if (ListItemView) {
|
|
316
|
+
return (0, _react2.jsx)(ListItemView, {
|
|
317
|
+
itemRef: itemRef,
|
|
318
|
+
itemData: item.data
|
|
319
|
+
});
|
|
320
|
+
} else {
|
|
321
|
+
return (0, _react2.jsx)(_ErrorState.default, {
|
|
322
|
+
viewName: "list item view",
|
|
323
|
+
inline: true,
|
|
324
|
+
error: "unable to load list item view"
|
|
325
|
+
});
|
|
326
|
+
}
|
|
286
327
|
};
|
|
287
328
|
|
|
288
329
|
exports.ProposalSummary = ProposalSummary;
|
|
@@ -326,10 +367,6 @@ const invalidation = {
|
|
|
326
367
|
item
|
|
327
368
|
}) => (0, _react2.jsx)(_react.default.Fragment, null, "Invalidation"), () => true)
|
|
328
369
|
};
|
|
329
|
-
const MaximizedStructuredDiff = (0, _styled.default)(_StructuredDiff.default)`
|
|
330
|
-
position: absolute;
|
|
331
|
-
inset: 0;
|
|
332
|
-
`;
|
|
333
370
|
const PROPOSAL_VIEWS = {
|
|
334
371
|
clarification,
|
|
335
372
|
addition,
|
|
@@ -343,5 +380,4 @@ function getProposalIcon(proposal) {
|
|
|
343
380
|
}
|
|
344
381
|
|
|
345
382
|
var _default = Proposals;
|
|
346
|
-
exports.default = _default;
|
|
347
|
-
const ITEM_DATA_PLACEHOLDER = {};
|
|
383
|
+
exports.default = _default;
|