@riboseinc/paneron-registry-kit 2.0.10 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +8 -14
- package/index.js.map +1 -1
- package/migrations/initial.d.ts +3 -3
- package/migrations/initial.js +27 -7
- package/migrations/initial.js.map +1 -1
- package/package.json +2 -4
- package/site-builder/index.d.ts +6 -0
- package/site-builder/index.js +29 -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 +22 -0
- package/site-builder/page.js.map +1 -0
- package/types/item.d.ts +0 -8
- package/types/item.js.map +1 -1
- package/views/BrowserCtx.d.ts +4 -0
- package/views/BrowserCtx.js.map +1 -1
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js +23 -15
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -1
- package/views/FilterCriteria/criteriaToNodes.js +3 -1
- package/views/FilterCriteria/criteriaToNodes.js.map +1 -1
- package/views/FilterCriteria/index.js +4 -4
- package/views/FilterCriteria/index.js.map +1 -1
- package/views/GenericRelatedItemView.js +8 -7
- package/views/GenericRelatedItemView.js.map +1 -1
- package/views/RegisterStakeholder.js +3 -1
- package/views/RegisterStakeholder.js.map +1 -1
- package/views/SearchQuery.js +1 -1
- package/views/SearchQuery.js.map +1 -1
- package/views/change-request/ChangeRequestContext.js +3 -3
- package/views/change-request/ChangeRequestContext.js.map +1 -1
- package/views/change-request/Proposals.js +38 -30
- package/views/change-request/Proposals.js.map +1 -1
- package/views/change-request/objectChangeset.js +5 -3
- package/views/change-request/objectChangeset.js.map +1 -1
- package/views/detail/ChangeRequest/index.js +16 -14
- package/views/detail/ChangeRequest/index.js.map +1 -1
- package/views/detail/ChangeRequest/transitions.js +18 -12
- package/views/detail/ChangeRequest/transitions.js.map +1 -1
- package/views/detail/CustomView/index.js +6 -2
- package/views/detail/CustomView/index.js.map +1 -1
- package/views/detail/RegisterHome/index.js +6 -5
- package/views/detail/RegisterHome/index.js.map +1 -1
- package/views/detail/RegisterItem/RelatedItems.js.map +1 -1
- package/views/detail/RegisterItem/SupersedingItemMenu.js.map +1 -1
- package/views/detail/RegisterItem/index.js +23 -19
- package/views/detail/RegisterItem/index.js.map +1 -1
- package/views/detail/RegisterMeta/RegisterMetaForm.js +10 -10
- package/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -1
- package/views/detail/RegisterMeta/index.js +1 -1
- package/views/detail/RegisterMeta/index.js.map +1 -1
- package/views/detail/index.js +3 -3
- package/views/detail/index.js.map +1 -1
- package/views/diffing/StructuredDiff.js +1 -1
- package/views/diffing/StructuredDiff.js.map +1 -1
- package/views/hooks/useItemRef.js +3 -3
- package/views/hooks/useItemRef.js.map +1 -1
- package/views/hooks/useSingleRegisterItemData.js +3 -1
- package/views/hooks/useSingleRegisterItemData.js.map +1 -1
- package/views/index.js +11 -8
- package/views/index.js.map +1 -1
- package/views/itemPathUtils.js +5 -3
- package/views/itemPathUtils.js.map +1 -1
- package/views/sidebar/Browse/index.js +18 -16
- package/views/sidebar/Browse/index.js.map +1 -1
- package/views/sidebar/Export/index.js +3 -3
- package/views/sidebar/Export/index.js.map +1 -1
- package/views/sidebar/ListItem.js.map +1 -1
- package/views/sidebar/Registration/index.js.map +1 -1
- package/views/sidebar/Search/index.js +7 -5
- package/views/sidebar/Search/index.js.map +1 -1
- package/views/util.js +3 -1
- package/views/util.js.map +1 -1
- package/views/detail/ChangeRequest/Proposal.d.ts +0 -0
- package/views/detail/ChangeRequest/Proposal.js +0 -142
- package/views/detail/ChangeRequest/Proposal.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/sidebar/Search/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useEffect } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport { PersistentStateReducerHook } from '@riboseinc/paneron-extension-kit/usePersistentStateReducer';\nimport { TabbedWorkspaceContext } from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context';\nimport makeSearchResultList from '@riboseinc/paneron-extension-kit/widgets/SearchResultList';\nimport useDebounce from '@riboseinc/paneron-extension-kit/useDebounce';\nimport { type CriteriaGroup, BLANK_CRITERIA } from '../../FilterCriteria/models';\nimport criteriaGroupToQueryExpression from '../../FilterCriteria/criteriaGroupToQueryExpression';\nimport { RAW_SUBSTRING } from '../../FilterCriteria/CRITERIA_CONFIGURATION';\nimport { ChangeRequestContext } from '../../change-request/ChangeRequestContext';\nimport type { RegisterItem } from '../../../types';\nimport { itemRefToItemPath } from '../../itemPathUtils';\nimport { getRegisterItemQuery } from '../../itemQueryUtils';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport SearchQuery from '../../SearchQuery';\nimport ListItem from '../ListItem';\nimport { Protocols } from '../../protocolRegistry';\n\n\n// TODO: Move Search widget core out of sidebar, as it’s used elsewhere too.\n\n\ninterface Query {\n criteria: CriteriaGroup;\n}\ninterface State {\n query: Query;\n quickSubstringQuery: string;\n selectedItemPath: string | null;\n}\ntype Action =\n | { type: 'update-query'; payload: { query: Query; }; }\n | { type: 'update-quick-substring-query'; payload: { substring: string; }; }\n | { type: 'select-item'; payload: { itemPath: string | null; }; }\n\nconst Search: React.FC<{\n /**\n * Criteria that will always apply.\n * Used e.g. in superseding item selection\n * (to limit to the same item class).\n */\n implicitCriteria?: CriteriaGroup,\n\n availableClassIDs?: string[]\n onOpenItem?: (itemPath: string) => void\n\n stateName?: string\n\n className?: string\n style?: React.CSSProperties\n}> =\nfunction ({ implicitCriteria, availableClassIDs, stateName, onOpenItem, className, style }) {\n const { usePersistentDatasetStateReducer } = useContext(DatasetContext);\n const { spawnTab } = useContext(TabbedWorkspaceContext);\n const { keyExpression, itemClasses, subregisters, selectedRegisterItem } = useContext(BrowserCtx);\n const { changeRequest } = useContext(ChangeRequestContext);\n\n const initialState: State = {\n query: { criteria: BLANK_CRITERIA },\n quickSubstringQuery: '',\n selectedItemPath: null,\n };\n\n const [ state, dispatch, stateRecalled ] = (usePersistentDatasetStateReducer as PersistentStateReducerHook<State, Action>)(\n stateName ?? 'search-sidebar',\n undefined,\n undefined,\n (prevState, action) => {\n switch (action.type) {\n case 'update-query':\n return {\n ...prevState,\n query: action.payload.query,\n };\n case 'update-quick-substring-query':\n return {\n ...prevState,\n quickSubstringQuery: action.payload.substring,\n };\n case 'select-item':\n return {\n ...prevState,\n selectedItemPath: action.payload.itemPath,\n };\n default:\n throw new Error(\"Unexpected search state\");\n }\n },\n initialState,\n null);\n\n const selectedItemPath = selectedRegisterItem?.ref\n ? itemRefToItemPath(selectedRegisterItem.ref, changeRequest?.id)\n : null;\n useEffect(() => {\n if (selectedItemPath) {\n dispatch({ type: 'select-item', payload: { itemPath: selectedItemPath } });\n }\n }, [selectedItemPath]);\n\n const quickSearchString = (state.quickSubstringQuery ?? '').trim();\n const withSearchString: CriteriaGroup = state.query.criteria.criteria.length < 1 && quickSearchString !== ''\n ? {\n require: 'all',\n criteria: [\n {\n key: 'raw-substring',\n query: RAW_SUBSTRING.toQuery(\n { substring: quickSearchString },\n { itemClasses, subregisters }),\n },\n ],\n }\n : state.query.criteria;\n\n const withImplicit: CriteriaGroup = implicitCriteria\n ? {\n require: 'all',\n criteria: [ implicitCriteria, withSearchString ],\n }\n : withSearchString;\n\n const effectiveQueryExpression = withImplicit.criteria.length > 0\n ? criteriaGroupToQueryExpression(withImplicit)\n // If no criteria provided, don’t show anything by default.\n : 'false';\n\n const stateRecalledDebounced = useDebounce(stateRecalled, 100);\n const queryExpressionDebounced = useDebounce(\n effectiveQueryExpression,\n stateRecalledDebounced ? 500 : 0,\n );\n\n const datasetObjectSearchQueryExpression = queryExpressionDebounced != 'false'\n ? getRegisterItemQuery(queryExpressionDebounced, changeRequest ?? undefined)\n : 'return false';\n\n return (\n <div css={css`display: flex; flex-flow: column nowrap;`} className={className} style={style}>\n <SearchQuery\n rootCriteria={state.query.criteria}\n quickSearchString={state.quickSubstringQuery}\n availableClassIDs={availableClassIDs}\n onCriteriaChange={criteria => dispatch({ type: 'update-query', payload: { query: { criteria } } })}\n onQuickSearchStringChange={substring => dispatch({ type: 'update-quick-substring-query', payload: { substring } })}\n css={css`padding: 5px;`}\n />\n <div css={css`flex: 1;`}>\n {stateRecalledDebounced\n ? <SearchResultList\n queryExpression={datasetObjectSearchQueryExpression}\n keyExpression={keyExpression}\n selectedItemPath={state.selectedItemPath}\n onSelectItem={itemPath => dispatch({ type: 'select-item', payload: { itemPath }})}\n onOpenItem={onOpenItem ?? (itemPath => spawnTab(`${Protocols.ITEM_DETAILS}:${itemPath}`))}\n />\n : null}\n </div>\n </div>\n );\n};\n\n\nconst SearchResultList = makeSearchResultList<RegisterItem<any>>(ListItem, (objPath) => ({\n name: 'reg. item',\n iconProps: {\n icon: 'document',\n title: objPath,\n htmlTitle: `Icon for item at ${objPath}`,\n },\n}));\n\n\nexport default Search;\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/sidebar/Search/index.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAC1G,OAAO,oBAAoB,MAAM,2DAA2D,CAAC;AAC7F,OAAO,WAAW,MAAM,8CAA8C,CAAC;AACvE,OAAO,EAAsB,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,8BAA8B,MAAM,qDAAqD,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAmBnD,MAAM,MAAM,GAgBZ,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;;IACxF,MAAM,EAAE,gCAAgC,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACxE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACxD,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAClG,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAE3D,MAAM,YAAY,GAAU;QAC1B,KAAK,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE;QACnC,mBAAmB,EAAE,EAAE;QACvB,gBAAgB,EAAE,IAAI;KACvB,CAAC;IAEF,MAAM,CAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAE,GAAI,gCAA8E,CACxH,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,gBAAgB,EAC7B,SAAS,EACT,SAAS,EACT,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;QACpB,QAAQ,MAAM,CAAC,IAAI,EAAE;YACnB,KAAK,cAAc;gBACjB,OAAO;oBACL,GAAG,SAAS;oBACZ,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;iBAC5B,CAAC;YACJ,KAAK,8BAA8B;gBACjC,OAAO;oBACL,GAAG,SAAS;oBACZ,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;iBAC9C,CAAC;YACJ,KAAK,aAAa;gBAChB,OAAO;oBACL,GAAG,SAAS;oBACZ,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;iBAC1C,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC9C;IACH,CAAC,EACD,YAAY,EACZ,IAAI,CAAC,CAAC;IAER,MAAM,gBAAgB,GAAG,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,GAAG;QAChD,CAAC,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,CAAC;QAChE,CAAC,CAAC,IAAI,CAAC;IACT,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,gBAAgB,EAAE;YACpB,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;SAC5E;IACH,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,iBAAiB,GAAG,CAAC,MAAA,KAAK,CAAC,mBAAmB,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,MAAM,gBAAgB,GAAkB,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,KAAK,EAAE;QAC1G,CAAC,CAAC;YACE,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,eAAe;oBACpB,KAAK,EAAE,aAAa,CAAC,OAAO,CAC1B,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAChC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;iBACjC;aACF;SACF;QACH,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;IAEzB,MAAM,YAAY,GAAkB,gBAAgB;QAClD,CAAC,CAAC;YACE,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,CAAE,gBAAgB,EAAE,gBAAgB,CAAE;SACjD;QACH,CAAC,CAAC,gBAAgB,CAAC;IAErB,MAAM,wBAAwB,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC/D,CAAC,CAAC,8BAA8B,CAAC,YAAY,CAAC;QAC9C,2DAA2D;QAC3D,CAAC,CAAC,OAAO,CAAC;IAEZ,MAAM,sBAAsB,GAAG,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,wBAAwB,GAAG,WAAW,CAC1C,wBAAwB,EACxB,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACjC,CAAC;IAEF,MAAM,kCAAkC,GAAG,wBAAwB,IAAI,OAAO;QAC5E,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,SAAS,CAAC;QAC5E,CAAC,CAAC,cAAc,CAAC;IAEnB,OAAO,CACL,aAAK,GAAG,EAAE,GAAG,CAAA,0CAA0C,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK;QACzF,IAAC,WAAW,IACV,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAClC,iBAAiB,EAAE,KAAK,CAAC,mBAAmB,EAC5C,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAClG,yBAAyB,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,EAClH,GAAG,EAAE,GAAG,CAAA,eAAe,GACvB;QACF,aAAK,GAAG,EAAE,GAAG,CAAA,UAAU,IACpB,sBAAsB;YACrB,CAAC,CAAC,IAAC,gBAAgB,IACf,eAAe,EAAE,kCAAkC,EACnD,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAC,CAAC,EACjF,UAAU,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC,GACzF;YACJ,CAAC,CAAC,IAAI,CACJ,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,gBAAgB,GAAG,oBAAoB,CAAoB,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvF,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE;QACT,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,oBAAoB,OAAO,EAAE;KACzC;CACF,CAAC,CAAC,CAAC;AAGJ,eAAe,MAAM,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useEffect } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport { PersistentStateReducerHook } from '@riboseinc/paneron-extension-kit/usePersistentStateReducer';\nimport { TabbedWorkspaceContext } from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context';\nimport makeSearchResultList from '@riboseinc/paneron-extension-kit/widgets/SearchResultList';\nimport useDebounce from '@riboseinc/paneron-extension-kit/useDebounce';\nimport { type CriteriaGroup, BLANK_CRITERIA } from '../../FilterCriteria/models';\nimport criteriaGroupToQueryExpression from '../../FilterCriteria/criteriaGroupToQueryExpression';\nimport { RAW_SUBSTRING } from '../../FilterCriteria/CRITERIA_CONFIGURATION';\nimport { ChangeRequestContext } from '../../change-request/ChangeRequestContext';\nimport type { RegisterItem } from '../../../types';\nimport { itemRefToItemPath } from '../../itemPathUtils';\nimport { getRegisterItemQuery } from '../../itemQueryUtils';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport SearchQuery from '../../SearchQuery';\nimport ListItem from '../ListItem';\nimport { Protocols } from '../../protocolRegistry';\n\n\n// TODO: Move Search widget core out of sidebar, as it’s used elsewhere too.\n\n\ninterface Query {\n criteria: CriteriaGroup;\n}\ninterface State {\n query: Query;\n quickSubstringQuery: string;\n selectedItemPath: string | null;\n}\ntype Action =\n | { type: 'update-query'; payload: { query: Query; }; }\n | { type: 'update-quick-substring-query'; payload: { substring: string; }; }\n | { type: 'select-item'; payload: { itemPath: string | null; }; }\n\nconst Search: React.FC<{\n /**\n * Criteria that will always apply.\n * Used e.g. in superseding item selection\n * (to limit to the same item class).\n */\n implicitCriteria?: CriteriaGroup,\n\n availableClassIDs?: string[]\n onOpenItem?: (itemPath: string) => void\n\n stateName?: string\n\n className?: string\n style?: React.CSSProperties\n}> =\nfunction ({ implicitCriteria, availableClassIDs, stateName, onOpenItem, className, style }) {\n const { usePersistentDatasetStateReducer } = useContext(DatasetContext);\n const { spawnTab } = useContext(TabbedWorkspaceContext);\n const { keyExpression, itemClasses, subregisters, selectedRegisterItem } = useContext(BrowserCtx);\n const { changeRequest } = useContext(ChangeRequestContext);\n\n const initialState: State = {\n query: { criteria: BLANK_CRITERIA },\n quickSubstringQuery: '',\n selectedItemPath: null,\n };\n\n const [ state, dispatch, stateRecalled ] = (usePersistentDatasetStateReducer as PersistentStateReducerHook<State, Action>)(\n stateName ?? 'search-sidebar',\n undefined,\n undefined,\n (prevState, action) => {\n switch (action.type) {\n case 'update-query':\n return {\n ...prevState,\n query: action.payload.query,\n };\n case 'update-quick-substring-query':\n return {\n ...prevState,\n quickSubstringQuery: action.payload.substring,\n };\n case 'select-item':\n return {\n ...prevState,\n selectedItemPath: action.payload.itemPath,\n };\n default:\n throw new Error(\"Unexpected search state\");\n }\n },\n initialState,\n null);\n\n const selectedItemPath = selectedRegisterItem?.ref\n ? itemRefToItemPath(selectedRegisterItem.ref, changeRequest?.id)\n : null;\n useEffect(() => {\n if (selectedItemPath) {\n dispatch({ type: 'select-item', payload: { itemPath: selectedItemPath } });\n }\n }, [selectedItemPath]);\n\n const quickSearchString = (state.quickSubstringQuery ?? '').trim();\n const withSearchString: CriteriaGroup = state.query.criteria.criteria.length < 1 && quickSearchString !== ''\n ? {\n require: 'all',\n criteria: [\n {\n key: 'raw-substring',\n query: RAW_SUBSTRING.toQuery(\n { substring: quickSearchString },\n { itemClasses, subregisters }),\n },\n ],\n }\n : state.query.criteria;\n\n const withImplicit: CriteriaGroup = implicitCriteria\n ? {\n require: 'all',\n criteria: [ implicitCriteria, withSearchString ],\n }\n : withSearchString;\n\n const effectiveQueryExpression = withImplicit.criteria.length > 0\n ? criteriaGroupToQueryExpression(withImplicit)\n // If no criteria provided, don’t show anything by default.\n : 'false';\n\n const stateRecalledDebounced = useDebounce(stateRecalled, 100);\n const queryExpressionDebounced = useDebounce(\n effectiveQueryExpression,\n stateRecalledDebounced ? 500 : 0,\n );\n\n const datasetObjectSearchQueryExpression = queryExpressionDebounced != 'false'\n ? getRegisterItemQuery(queryExpressionDebounced, changeRequest ?? undefined)\n : 'return false';\n\n return (\n <div css={css`display: flex; flex-flow: column nowrap;`} className={className} style={style}>\n <SearchQuery\n rootCriteria={state.query.criteria}\n quickSearchString={state.quickSubstringQuery}\n availableClassIDs={availableClassIDs}\n onCriteriaChange={criteria => dispatch({ type: 'update-query', payload: { query: { criteria } } })}\n onQuickSearchStringChange={substring => dispatch({ type: 'update-quick-substring-query', payload: { substring } })}\n css={css`padding: 5px;`}\n />\n <div css={css`flex: 1;`}>\n {stateRecalledDebounced\n ? <SearchResultList\n queryExpression={datasetObjectSearchQueryExpression}\n keyExpression={keyExpression}\n selectedItemPath={state.selectedItemPath}\n onSelectItem={itemPath => dispatch({ type: 'select-item', payload: { itemPath }})}\n onOpenItem={onOpenItem ?? (itemPath => spawnTab(`${Protocols.ITEM_DETAILS}:${itemPath}`))}\n />\n : null}\n </div>\n </div>\n );\n};\n\n\nconst SearchResultList = makeSearchResultList<RegisterItem<any>>(ListItem, (objPath) => ({\n name: 'reg. item',\n iconProps: {\n icon: 'document',\n title: objPath,\n htmlTitle: `Icon for item at ${objPath}`,\n },\n}));\n\n\nexport default Search;\n"]}
|
package/views/util.js
CHANGED
|
@@ -77,10 +77,12 @@ const Datestamp = function ({
|
|
|
77
77
|
title,
|
|
78
78
|
className
|
|
79
79
|
}) {
|
|
80
|
+
var _a;
|
|
81
|
+
|
|
80
82
|
const asString = formatDate(date);
|
|
81
83
|
return (0, _react2.jsx)("span", {
|
|
82
84
|
className: className,
|
|
83
|
-
title: `${title ? `${title}: ` : ''}${(date === null || date === void 0 ? void 0 : date.toString())
|
|
85
|
+
title: `${title ? `${title}: ` : ''}${(_a = date === null || date === void 0 ? void 0 : date.toString()) !== null && _a !== void 0 ? _a : 'N/A'}`
|
|
84
86
|
}, asString);
|
|
85
87
|
};
|
|
86
88
|
/** Foramts given date as plain text. */
|
package/views/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/views/util.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,iCAAiC;AACjC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAe,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAkB,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,YAAoB,EAAE;IAEtB,OAAO,GAAG,CAAC,MAAM,GAAG,SAAS;QAC3B,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG;QAC/B,CAAC,CAAC,GAAG,CAAC;AACV,CAAC;AAGD,MAAM,CAAC,MAAM,cAAc,GAA0B,UAAU,KAAK;IAClE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAE3D,OAAO,CACL,IAAC,MAAM,IACH,aAAa,EAAE,SAAS,YAAY,WAAW,EAC/C,YAAY,EAAE,GAAG,YAAY,WAAW,IACzC,KAAK,CAAC,QAAQ,CACR,CACV,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,kBAAkB,GAI1B,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE;IACxD,OAAO,IAAC,SAAS,IACb,KAAK,EAAE,GAAG,KAAK,GAAG,EAClB,SAAS,EAAE,cAAc,EACzB,GAAG,EAAE,GAAG,CAAA,+EAA+E,EACvF,MAAM,EAAE,MAAM,IACf,QAAQ,CACC,CAAC;AACf,CAAC,CAAC;AAGF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,SAAS,GAIjB,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/views/util.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\n//import log from 'electron-log';\nimport format from 'date-fns/format';\nimport React, { useContext } from 'react';\nimport { Helmet, HelmetProps } from 'react-helmet';\nimport { css, jsx } from '@emotion/react';\nimport { FormGroup, FormGroupProps, Colors } from '@blueprintjs/core';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport type { ItemClassConfiguration, RelatedItemClassConfiguration } from '../types';\nexport { GenericRelatedItemView } from './GenericRelatedItemView';\n\n\n/**\n * Get give string truncated & with ellipsis appended\n * if its length exceeds given number of characters.\n */\nexport function maybeEllipsizeString(\n str: string,\n maxLength: number = 20,\n): string {\n return str.length > maxLength\n ? `${str.slice(0, maxLength)}…`\n : str;\n}\n\n\nexport const RegisterHelmet: React.FC<HelmetProps> = function (props) {\n const { title: datasetTitle } = useContext(DatasetContext);\n\n return (\n <Helmet\n titleTemplate={`%s in ${datasetTitle} register`}\n defaultTitle={`${datasetTitle} register`}>\n {props.children}\n </Helmet>\n );\n};\n\n\nexport const PropertyDetailView: React.FC<{\n title: FormGroupProps[\"label\"]\n secondaryTitle?: FormGroupProps[\"labelInfo\"]\n inline?: FormGroupProps[\"inline\"]\n}> = function ({ title, inline, children, secondaryTitle }) {\n return <FormGroup\n label={`${title}:`}\n labelInfo={secondaryTitle}\n css={css`&, &.bp4-inline { label.bp4-label { font-weight: bold; line-height: unset } }`}\n inline={inline}>\n {children}\n </FormGroup>;\n};\n\n\n/** Formats given date as a span with tooltip set to full ISO date & time. */\nexport const Datestamp: React.FC<{\n date: Date\n title?: string\n className?: string\n}> = function ({ date, title, className }) {\n const asString = formatDate(date);\n return <span\n className={className}\n title={`${title ? `${title}: ` : ''}${date?.toString() ?? 'N/A'}`}>\n {asString}\n </span>;\n};\n\n\n/** Foramts given date as plain text. */\nexport function formatDate(date: Date): string {\n try {\n return format(date, 'yyyy-MM-dd');\n } catch (e) {\n return `Invalid date (${e})`;\n }\n}\n\n\nexport const _getRelatedClass = (classes: Record<string, ItemClassConfiguration<any>>) => {\n return (clsID: string): RelatedItemClassConfiguration => {\n const cfg = classes[clsID];\n return {\n title: cfg.meta.title,\n // TODO: The itemView/listItemView inconsistency is annoying\n itemView: cfg.views.listItemView,\n };\n };\n};\n\n\n/**\n * Suitable for use as tab contents for TabbedWorkspace.\n * Provides top bar with actions and main content.\n */\nexport const TabContentsWithActions: React.FC<{\n actions: JSX.Element;\n main: JSX.Element;\n className?: string;\n}> = function ({ actions, main, className }) {\n return (\n <div css={css`\n position: absolute; inset: 0;\n display: flex; flex-flow: column nowrap;\n `} className={className}>\n <div css={css`flex: 0; padding: 10px; display: flex; flex-flow: row wrap; gap: 10px;`}>\n {actions}\n </div>\n <div css={css`\n position: relative;\n flex: 1;\n padding: 10px;\n overflow-y: auto;\n background: ${Colors.GRAY5};\n .bp4-dark & { background: ${Colors.DARK_GRAY2}; }\n `}>\n {main}\n </div>\n </div>\n )\n}\n"]}
|
|
File without changes
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
"use strict"; // /** @jsx jsx */
|
|
2
|
-
// /** @jsxFrag React.Fragment */
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
// import React from 'react';
|
|
6
|
-
//
|
|
7
|
-
// import { jsx, css } from '@emotion/react';
|
|
8
|
-
//
|
|
9
|
-
// import {
|
|
10
|
-
// FormGroup,
|
|
11
|
-
// InputGroup,
|
|
12
|
-
// NonIdealState,
|
|
13
|
-
// HTMLSelect,
|
|
14
|
-
// H4,
|
|
15
|
-
// } from '@blueprintjs/core';
|
|
16
|
-
//
|
|
17
|
-
// import useItemClassConfig from '../../hooks/useItemClassConfig';
|
|
18
|
-
//
|
|
19
|
-
// import type {
|
|
20
|
-
// ChangeProposal,
|
|
21
|
-
// Payload,
|
|
22
|
-
// InternalItemReference,
|
|
23
|
-
// } from '../../../types';
|
|
24
|
-
//
|
|
25
|
-
// import { PROPOSAL_TYPES } from '../../../types';
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
// const ProposalDetails: React.FC<{
|
|
29
|
-
// itemRef: InternalItemReference
|
|
30
|
-
// proposal: ChangeProposal
|
|
31
|
-
//
|
|
32
|
-
// existingItemData?: Payload
|
|
33
|
-
//
|
|
34
|
-
// onAccept?: (itemID: string, clsID: string) => void
|
|
35
|
-
// onChange?: (val: ChangeProposal) => void
|
|
36
|
-
// onDelete?: () => void
|
|
37
|
-
// }> = function ({
|
|
38
|
-
// itemRef,
|
|
39
|
-
// proposal,
|
|
40
|
-
// onChange,
|
|
41
|
-
// existingItemData,
|
|
42
|
-
// }) {
|
|
43
|
-
// const { value: classConfig } = useItemClassConfig(itemRef.classID ?? 'NONEXISTENT_CLASS_ID');
|
|
44
|
-
// const itemClass = classConfig;
|
|
45
|
-
//
|
|
46
|
-
// let itemView: JSX.Element;
|
|
47
|
-
// let proposalProperties: JSX.Element | null;
|
|
48
|
-
//
|
|
49
|
-
// if (proposal.type === 'amendment') {
|
|
50
|
-
// proposalProperties = (
|
|
51
|
-
// <FormGroup inline label="Supersede with:">
|
|
52
|
-
// <InputGroup
|
|
53
|
-
// value={proposal.amendmentType === 'supersession' ? proposal.supersedingItemID : ''}
|
|
54
|
-
// disabled={!onChange}
|
|
55
|
-
// placeholder="Item ID"
|
|
56
|
-
// onChange={onChange
|
|
57
|
-
// ? (evt: React.FormEvent<HTMLInputElement>) => {
|
|
58
|
-
// if (!onChange) { return; }
|
|
59
|
-
// const itemID = evt.currentTarget.value;
|
|
60
|
-
// if (itemID.trim() === '') {
|
|
61
|
-
// const newVal = update(proposal, { $unset: ['supersedingItemID'] });
|
|
62
|
-
// onChange({ ...newVal, amendmentType: 'retirement' });
|
|
63
|
-
// } else {
|
|
64
|
-
// onChange({ ...proposal, amendmentType: 'supersession', supersedingItemID: itemID });
|
|
65
|
-
// }
|
|
66
|
-
// }
|
|
67
|
-
// : undefined}/>
|
|
68
|
-
// </FormGroup>
|
|
69
|
-
// );
|
|
70
|
-
// } else {
|
|
71
|
-
// proposalProperties = null;
|
|
72
|
-
// }
|
|
73
|
-
//
|
|
74
|
-
// const itemData: Payload | undefined = proposal.type === 'addition'
|
|
75
|
-
// ? proposal.payload
|
|
76
|
-
// : existingItemData;
|
|
77
|
-
//
|
|
78
|
-
// if (itemData === undefined || !itemClass) {
|
|
79
|
-
// itemView = <NonIdealState icon="heart-broken" title="Unable to display this item" />;
|
|
80
|
-
// } else if (onChange && proposal.type !== 'amendment') {
|
|
81
|
-
// const EditView = itemClass.views.editView;// as ItemEditView<any>;
|
|
82
|
-
// itemView = <EditView
|
|
83
|
-
// itemRef={itemRef}
|
|
84
|
-
// itemData={itemData}
|
|
85
|
-
// onChange={onChange
|
|
86
|
-
// ? (payload) => onChange ? onChange({ ...proposal, payload }) : void 0
|
|
87
|
-
// : undefined} />;
|
|
88
|
-
// } else {
|
|
89
|
-
// const DetailView = itemClass.views.detailView ?? itemClass!.views.editView;// as ItemDetailView<any>;
|
|
90
|
-
// itemView = <DetailView
|
|
91
|
-
// itemRef={itemRef}
|
|
92
|
-
// itemData={itemData} />;
|
|
93
|
-
// }
|
|
94
|
-
//
|
|
95
|
-
// const canChangeProposalType = proposal.type !== 'addition';
|
|
96
|
-
//
|
|
97
|
-
// function handleTypeChange(type: string) {
|
|
98
|
-
// const pt = type as typeof PROPOSAL_TYPES[number];
|
|
99
|
-
//
|
|
100
|
-
// if (PROPOSAL_TYPES.indexOf(pt) < 0) { return; }
|
|
101
|
-
// if (!onChange || !canChangeProposalType || pt === 'addition' || existingItemData === undefined) { return; }
|
|
102
|
-
//
|
|
103
|
-
// if (pt === 'amendment') {
|
|
104
|
-
// onChange(update(proposal, {
|
|
105
|
-
// type: { $set: pt },
|
|
106
|
-
// amendmentType: { $set: 'retirement' },
|
|
107
|
-
// $unset: ['payload'],
|
|
108
|
-
// }));
|
|
109
|
-
// } else {
|
|
110
|
-
// onChange(update(proposal, {
|
|
111
|
-
// type: { $set: pt },
|
|
112
|
-
// payload: existingItemData,
|
|
113
|
-
// }));
|
|
114
|
-
// }
|
|
115
|
-
// }
|
|
116
|
-
//
|
|
117
|
-
// return (
|
|
118
|
-
// <div css={css`flex: 1; display: flex; flex-flow: column nowrap;`}>
|
|
119
|
-
// <div css={css`flex-shrink: 0; display: flex; flex-flow: row nowrap; align-items: center; margin-bottom: 1rem;`}>
|
|
120
|
-
// <HTMLSelect
|
|
121
|
-
// options={PROPOSAL_TYPES.map(pt => ({ value: pt, label: pt }))}
|
|
122
|
-
// //iconProps={{ icon: PROPOSAL_ICON[proposal.type] }}
|
|
123
|
-
// value={proposal.type}
|
|
124
|
-
// disabled={!onChange || !canChangeProposalType || existingItemData === undefined}
|
|
125
|
-
// onChange={(onChange && canChangeProposalType && existingItemData !== undefined)
|
|
126
|
-
// ? (evt) => handleTypeChange(evt.currentTarget.value)
|
|
127
|
-
// : undefined} />
|
|
128
|
-
//  
|
|
129
|
-
// of a
|
|
130
|
-
//  
|
|
131
|
-
// <H4 css={css`margin: 0;`}>{classConfig?.meta.title ?? 'unknown class'}</H4>
|
|
132
|
-
// {proposalProperties}
|
|
133
|
-
// </div>
|
|
134
|
-
//
|
|
135
|
-
// <div css={css`flex: 1; overflow-y: auto;`}>
|
|
136
|
-
// {itemView}
|
|
137
|
-
// </div>
|
|
138
|
-
// </div>
|
|
139
|
-
// );
|
|
140
|
-
// };
|
|
141
|
-
//
|
|
142
|
-
// export default ProposalDetails;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Proposal.js","sourceRoot":"","sources":["../../../../src/views/detail/ChangeRequest/Proposal.tsx"],"names":[],"mappings":";AAAA,kBAAkB;AAClB,iCAAiC;AACjC,GAAG;AACH,GAAG;AACH,6BAA6B;AAC7B,GAAG;AACH,6CAA6C;AAC7C,GAAG;AACH,WAAW;AACX,eAAe;AACf,gBAAgB;AAChB,mBAAmB;AACnB,gBAAgB;AAChB,QAAQ;AACR,8BAA8B;AAC9B,GAAG;AACH,mEAAmE;AACnE,GAAG;AACH,gBAAgB;AAChB,oBAAoB;AACpB,aAAa;AACb,2BAA2B;AAC3B,2BAA2B;AAC3B,GAAG;AACH,mDAAmD;AACnD,GAAG;AACH,GAAG;AACH,oCAAoC;AACpC,mCAAmC;AACnC,6BAA6B;AAC7B,GAAG;AACH,+BAA+B;AAC/B,GAAG;AACH,uDAAuD;AACvD,6CAA6C;AAC7C,0BAA0B;AAC1B,mBAAmB;AACnB,aAAa;AACb,cAAc;AACd,cAAc;AACd,sBAAsB;AACtB,OAAO;AACP,kGAAkG;AAClG,mCAAmC;AACnC,GAAG;AACH,+BAA+B;AAC/B,gDAAgD;AAChD,GAAG;AACH,yCAAyC;AACzC,6BAA6B;AAC7B,mDAAmD;AACnD,sBAAsB;AACtB,gGAAgG;AAChG,iCAAiC;AACjC,kCAAkC;AAClC,+BAA+B;AAC/B,8DAA8D;AAC9D,6CAA6C;AAC7C,0DAA0D;AAC1D,8CAA8C;AAC9C,wFAAwF;AACxF,0EAA0E;AAC1E,2BAA2B;AAC3B,yGAAyG;AACzG,oBAAoB;AACpB,kBAAkB;AAClB,6BAA6B;AAC7B,qBAAqB;AACrB,SAAS;AACT,aAAa;AACb,iCAAiC;AACjC,MAAM;AACN,GAAG;AACH,uEAAuE;AACvE,yBAAyB;AACzB,0BAA0B;AAC1B,GAAG;AACH,gDAAgD;AAChD,4FAA4F;AAC5F,4DAA4D;AAC5D,yEAAyE;AACzE,2BAA2B;AAC3B,0BAA0B;AAC1B,4BAA4B;AAC5B,2BAA2B;AAC3B,gFAAgF;AAChF,2BAA2B;AAC3B,aAAa;AACb,4GAA4G;AAC5G,6BAA6B;AAC7B,0BAA0B;AAC1B,gCAAgC;AAChC,MAAM;AACN,GAAG;AACH,gEAAgE;AAChE,GAAG;AACH,8CAA8C;AAC9C,wDAAwD;AACxD,GAAG;AACH,sDAAsD;AACtD,kHAAkH;AAClH,GAAG;AACH,gCAAgC;AAChC,oCAAoC;AACpC,8BAA8B;AAC9B,iDAAiD;AACjD,+BAA+B;AAC/B,aAAa;AACb,eAAe;AACf,oCAAoC;AACpC,8BAA8B;AAC9B,qCAAqC;AACrC,aAAa;AACb,QAAQ;AACR,MAAM;AACN,GAAG;AACH,aAAa;AACb,yEAAyE;AACzE,yHAAyH;AACzH,sBAAsB;AACtB,2EAA2E;AAC3E,iEAAiE;AACjE,kCAAkC;AAClC,6FAA6F;AAC7F,4FAA4F;AAC5F,mEAAmE;AACnE,8BAA8B;AAC9B,iBAAiB;AACjB,eAAe;AACf,iBAAiB;AACjB,sFAAsF;AACtF,+BAA+B;AAC/B,eAAe;AACf,GAAG;AACH,oDAAoD;AACpD,qBAAqB;AACrB,eAAe;AACf,aAAa;AACb,OAAO;AACP,KAAK;AACL,GAAG;AACH,kCAAkC","sourcesContent":["// /** @jsx jsx */\n// /** @jsxFrag React.Fragment */\n// \n// \n// import React from 'react';\n// \n// import { jsx, css } from '@emotion/react';\n// \n// import {\n// FormGroup,\n// InputGroup,\n// NonIdealState,\n// HTMLSelect,\n// H4,\n// } from '@blueprintjs/core';\n// \n// import useItemClassConfig from '../../hooks/useItemClassConfig';\n// \n// import type {\n// ChangeProposal,\n// Payload,\n// InternalItemReference,\n// } from '../../../types';\n// \n// import { PROPOSAL_TYPES } from '../../../types';\n// \n// \n// const ProposalDetails: React.FC<{\n// itemRef: InternalItemReference\n// proposal: ChangeProposal\n// \n// existingItemData?: Payload\n// \n// onAccept?: (itemID: string, clsID: string) => void\n// onChange?: (val: ChangeProposal) => void\n// onDelete?: () => void\n// }> = function ({\n// itemRef,\n// proposal,\n// onChange,\n// existingItemData,\n// }) {\n// const { value: classConfig } = useItemClassConfig(itemRef.classID ?? 'NONEXISTENT_CLASS_ID');\n// const itemClass = classConfig;\n// \n// let itemView: JSX.Element;\n// let proposalProperties: JSX.Element | null;\n// \n// if (proposal.type === 'amendment') {\n// proposalProperties = (\n// <FormGroup inline label=\"Supersede with:\">\n// <InputGroup\n// value={proposal.amendmentType === 'supersession' ? proposal.supersedingItemID : ''}\n// disabled={!onChange}\n// placeholder=\"Item ID\"\n// onChange={onChange\n// ? (evt: React.FormEvent<HTMLInputElement>) => {\n// if (!onChange) { return; }\n// const itemID = evt.currentTarget.value;\n// if (itemID.trim() === '') {\n// const newVal = update(proposal, { $unset: ['supersedingItemID'] });\n// onChange({ ...newVal, amendmentType: 'retirement' });\n// } else {\n// onChange({ ...proposal, amendmentType: 'supersession', supersedingItemID: itemID });\n// }\n// }\n// : undefined}/>\n// </FormGroup>\n// );\n// } else {\n// proposalProperties = null;\n// }\n// \n// const itemData: Payload | undefined = proposal.type === 'addition'\n// ? proposal.payload\n// : existingItemData;\n// \n// if (itemData === undefined || !itemClass) {\n// itemView = <NonIdealState icon=\"heart-broken\" title=\"Unable to display this item\" />;\n// } else if (onChange && proposal.type !== 'amendment') {\n// const EditView = itemClass.views.editView;// as ItemEditView<any>;\n// itemView = <EditView\n// itemRef={itemRef}\n// itemData={itemData}\n// onChange={onChange\n// ? (payload) => onChange ? onChange({ ...proposal, payload }) : void 0\n// : undefined} />;\n// } else {\n// const DetailView = itemClass.views.detailView ?? itemClass!.views.editView;// as ItemDetailView<any>;\n// itemView = <DetailView\n// itemRef={itemRef}\n// itemData={itemData} />;\n// }\n// \n// const canChangeProposalType = proposal.type !== 'addition';\n// \n// function handleTypeChange(type: string) {\n// const pt = type as typeof PROPOSAL_TYPES[number];\n// \n// if (PROPOSAL_TYPES.indexOf(pt) < 0) { return; }\n// if (!onChange || !canChangeProposalType || pt === 'addition' || existingItemData === undefined) { return; }\n// \n// if (pt === 'amendment') {\n// onChange(update(proposal, {\n// type: { $set: pt },\n// amendmentType: { $set: 'retirement' },\n// $unset: ['payload'],\n// }));\n// } else {\n// onChange(update(proposal, {\n// type: { $set: pt },\n// payload: existingItemData,\n// }));\n// }\n// }\n// \n// return (\n// <div css={css`flex: 1; display: flex; flex-flow: column nowrap;`}>\n// <div css={css`flex-shrink: 0; display: flex; flex-flow: row nowrap; align-items: center; margin-bottom: 1rem;`}>\n// <HTMLSelect\n// options={PROPOSAL_TYPES.map(pt => ({ value: pt, label: pt }))}\n// //iconProps={{ icon: PROPOSAL_ICON[proposal.type] }}\n// value={proposal.type}\n// disabled={!onChange || !canChangeProposalType || existingItemData === undefined}\n// onChange={(onChange && canChangeProposalType && existingItemData !== undefined)\n// ? (evt) => handleTypeChange(evt.currentTarget.value)\n// : undefined} />\n//  \n// of a\n//  \n// <H4 css={css`margin: 0;`}>{classConfig?.meta.title ?? 'unknown class'}</H4>\n// {proposalProperties}\n// </div>\n// \n// <div css={css`flex: 1; overflow-y: auto;`}>\n// {itemView}\n// </div>\n// </div>\n// );\n// };\n// \n// export default ProposalDetails;\n"]}
|