@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/detail/RegisterItem/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useState, useCallback } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n Button, ButtonGroup,\n Card,\n Classes,\n FormGroup as BaseFormGroup,\n ControlGroup,\n InputGroup,\n NonIdealState,\n UL,\n H5,\n} from '@blueprintjs/core';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport { TabbedWorkspaceContext } from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context';\nimport useItemRef from '../../hooks/useItemRef';\nimport useSingleRegisterItemData from '../../hooks/useSingleRegisterItemData';\nimport useItemClassConfig from '../../hooks/useItemClassConfig';\nimport { Protocols } from '../../protocolRegistry';\nimport {\n type ChangeProposal,\n type InternalItemReference,\n type RegisterItem,\n isRegisterItem,\n} from '../../../types';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport {\n RegisterHelmet as Helmet,\n maybeEllipsizeString,\n TabContentsWithActions,\n} from '../../util';\nimport { itemRefToItemPath, crIDToCRPath, getCRIDFromProposedItemPath } from '../../itemPathUtils';\nimport { updateCRObjectChangeset, } from '../../change-request/objectChangeset';\nimport { ChangeRequestContext } from '../../change-request/ChangeRequestContext';\nimport { RelatedItems } from './RelatedItems';\n\n\n/**\n * Main register item view.\n *\n * NOTE: while generally intended as tab content handler,\n * is also reused within change request view.\n */\nconst ItemDetail: React.FC<{ uri: string, inProposalWithID?: string }> = function ({ uri, inProposalWithID }) {\n const { value: ref } = useItemRef(uri);\n const { value: clsConfig } = useItemClassConfig(ref?.classID ?? 'NONEXISTENT_CLASS_ID');\n //const { value: itemData } = useSingleRegisterItemData(ref);\n const { updateObjects, makeRandomID, performOperation, operationKey } = useContext(DatasetContext);\n const { spawnTab } = useContext(TabbedWorkspaceContext);\n const isBusy = operationKey !== undefined;\n const {\n jumpTo,\n subregisters,\n useRegisterItemData,\n activeChangeRequestID: globallyActiveCRID,\n } = useContext(BrowserCtx);\n\n const { changeRequest: activeCR, canEdit: activeCRIsEditable } = useContext(ChangeRequestContext);\n\n const itemClass = clsConfig;\n const itemClassID = itemClass?.meta?.id;\n const itemRef = ref ?? dummyRef;\n const { itemID, subregisterID } = itemRef;\n\n const _itemPath = `${itemClassID ?? 'NONEXISTENT_CLASS'}/${itemID}.yaml`;\n const itemPath = subregisterID ? `/subregisters/${subregisterID}/${_itemPath}` : `/${_itemPath}`;\n const itemRequest = {\n itemPaths: [itemPath],\n };\n const itemResponse = useRegisterItemData(itemRequest);\n const itemData = itemResponse.value[itemPath];\n\n const [ editedClarification, setEditedClarification ] = useState<RegisterItem<any>[\"data\"] | null>(null);\n\n //const [ diffMode, setDiffMode ] = useState<boolean>(false);\n // TODO: Implement diff mode\n const diffMode = false;\n\n const proposal = ((activeCR && activeCR.items[itemPath])\n ? activeCR.items[itemPath]\n : null) ?? null;\n\n const handleClearProposal = () => performProposalOperation(\"draft: clear proposal\", null);\n const handleRetire = () => performProposalOperation(\"draft: propose retirement\", {\n type: 'amendment',\n amendmentType: 'retirement',\n });\n const handleInvalidate = () => performProposalOperation(\"draft: propose invalidation\", {\n type: 'amendment',\n amendmentType: 'invalidation',\n });\n const handleSupersedeWith = (items: string[]) => performProposalOperation(\"draft: propose supersession\", {\n type: 'amendment',\n amendmentType: 'supersession',\n supersedingItemIDs: items,\n });\n const handleClarify = async () => {\n await performProposalOperation(\"draft: clarify item\", {\n type: 'clarification',\n });\n setEditedClarification(null);\n };\n const handleEditAddition = async () => {\n await performProposalOperation(\"draft: edit added item\", {\n type: 'addition',\n });\n setEditedClarification(null);\n };\n\n async function performProposalOperation(summary: string, proposal: ChangeProposal | null) {\n return await performOperation(summary, handleSetProposal)(summary, proposal);\n }\n\n const handleSetProposal = useCallback(async function _handleSetProposal(\n summary: string,\n proposal: ChangeProposal | null,\n ): Promise<void> {\n if (!activeCRIsEditable || !updateObjects || !isRegisterItem(itemData)) {\n throw new Error(\"Proposal isn’t editable\")\n }\n if (proposal && proposal?.type !== 'amendment' && !editedClarification) {\n throw new Error(\"Missing item data\");\n }\n await updateObjects({\n commitMessage: `${summary} for ${itemPath}`,\n objectChangeset: updateCRObjectChangeset(\n // TODO: We are sure it’s editable already, but casting should be avoided\n activeCR as any,\n { [itemPath]: proposal },\n ((proposal && proposal?.type !== 'amendment') && editedClarification)\n ? { [itemPath]: { ...itemData, data: editedClarification } }\n : {},\n ),\n // We need this because updateCRObjectChangeset\n // omits oldValue for item data payloads.\n _dangerouslySkipValidation: true,\n });\n }, [\n updateObjects,\n activeCRIsEditable,\n itemPath,\n JSON.stringify(activeCR),\n JSON.stringify(itemData),\n JSON.stringify(editedClarification),\n ]);\n\n // TODO: Very similar to `handleAdd()` in Browse sidebar menu; refactor?\n const handleProposeLikeThis = useCallback(async function _handleProposeLikeThis(): Promise<void> {\n if (!updateObjects || !makeRandomID || !activeCRIsEditable || !activeCR || !itemClass || !isRegisterItem(itemData)) {\n throw new Error(\"Unable to create item: likely current proposal is not editable or dataset is read-only\");\n }\n const { classID, subregisterID } = itemRef;\n const itemID = await makeRandomID();\n const newRef = { classID, subregisterID, itemID };\n const newItem: RegisterItem<any> = {\n id: itemID,\n dateAccepted: new Date(),\n status: 'valid',\n data: { ...itemData.data },\n };\n if (isRegisterItem(newItem)) {\n const newPath = itemRefToItemPath(newRef);\n await updateObjects({\n commitMessage: `clone ${itemRef.itemID} to propose a new item`,\n objectChangeset: updateCRObjectChangeset(\n activeCR as any,\n { [newPath]: { type: 'addition' } },\n { [newPath]: newItem },\n ),\n _dangerouslySkipValidation: true,\n });\n if (activeCR.id === globallyActiveCRID) {\n spawnTab(`${Protocols.ITEM_DETAILS}:${itemRefToItemPath(newRef, activeCR.id)}`);\n }\n } else {\n throw new Error(\"Newly created item did not pass validation (this is likely a bug in RegistryKit\");\n }\n }, [\n updateObjects,\n activeCRIsEditable,\n itemPath,\n JSON.stringify(activeCR),\n JSON.stringify(itemData),\n ]);\n\n if (!itemClass) {\n return <NonIdealState\n icon=\"heart-broken\"\n title=\"Unable to show item\"\n description={`View for ${ref?.itemID ?? uri} cannot be retrieved from item class configuration`}\n />;\n\n } else if (isRegisterItem(itemData)) {\n let details: JSX.Element;\n\n if (editedClarification !== null && activeCRIsEditable) {\n const EditView = itemClass.views.editView;\n details = (\n <EditView\n itemData={editedClarification}\n itemRef={itemRef}\n onChange={!isBusy\n ? (newData) => {\n setEditedClarification(newData);\n }\n : undefined}\n />\n );\n\n } else {\n const DetailView = itemClass.views.detailView ?? itemClass.views.editView;\n details = (\n <DetailView\n itemRef={itemRef}\n itemData={itemData.data}\n />\n );\n }\n\n //const canAmend = activeCR && itemData.status === 'valid';\n const itemStatus =\n <FormGroup inline label=\"status:\" css={css`margin: 0;`}>\n <ControlGroup fill>\n <InputGroup\n value={proposal?.type === 'amendment'\n ? `${proposal.amendmentType} proposed`\n : proposal?.type === 'addition'\n ? \"addition proposed\"\n : itemData.status}\n intent={proposal?.type === 'amendment'\n ? 'warning'\n : proposal?.type === 'addition'\n ? 'primary'\n : itemData.status === 'valid'\n ? 'success'\n : undefined}\n leftIcon={proposal && (proposal.type === 'amendment' || proposal.type === 'addition')\n ? 'asterisk'\n : itemData.status === 'valid'\n ? 'tick'\n : itemData.status === 'invalid'\n ? 'ban-circle'\n : 'warning-sign'}\n readOnly\n />\n {activeCRIsEditable && !editedClarification\n ? <>\n {proposal?.type === 'addition'\n ? <Button\n intent=\"warning\"\n title=\"Remove the proposal to add this new item.\"\n disabled={isBusy}\n onClick={handleClearProposal}>\n Remove proposed addition\n </Button>\n : null}\n {proposal?.type === 'amendment'\n ? <Button\n intent=\"warning\"\n title={`Remove amendment (${proposal.amendmentType}) for this item from current proposal.`}\n disabled={isBusy}\n onClick={handleClearProposal}>\n Clear proposed amendment\n </Button>\n : !proposal && itemData.status === 'valid'\n ? <ButtonGroup>\n <Button\n intent=\"primary\"\n disabled={isBusy}\n onClick={handleRetire}>\n Retire\n </Button>\n <Button\n intent=\"primary\"\n disabled={isBusy}\n onClick={handleInvalidate}>\n Invalidate\n </Button>\n </ButtonGroup>\n : null}\n </>\n : null}\n </ControlGroup>\n </FormGroup>;\n\n const supersedingItems = (\n // It’s superseded (whether in current proposal or not)\n itemData.status === 'superseded'\n // Item is valid, proposal is editable, and no change to this item is proposed yet\n || (activeCRIsEditable && !proposal && !editedClarification && itemData.status === 'valid')\n // This item is being superseded in active proposal\n // XXX: Redundant condition with the first one?\n || (proposal?.type === 'amendment' && proposal.amendmentType === 'supersession'))\n ? <FormGroup inline label=\"superseded by: \" css={css`margin: 0;`}>\n <RelatedItems\n availableClassIDs={[itemClass.meta.id]}\n itemRefs={proposal?.type === 'amendment' && proposal.amendmentType === 'supersession'\n ? proposal.supersedingItemIDs.\n map(id => ({ itemID: id, classID: itemClass.meta.id, subregisterID }))\n : (itemData.supersededBy ?? [])}\n onChange={!isBusy && activeCRIsEditable && (\n (proposal?.type === 'amendment' && proposal.amendmentType === 'supersession') ||\n (!proposal && itemData.status === 'valid'))\n ? (items) => items.length > 0\n ? handleSupersedeWith(items.map(ref => ref.itemID))\n : handleClearProposal()\n : undefined}\n />\n </FormGroup>\n : null;\n\n const clarificationHasChanges = JSON.stringify(editedClarification) !== JSON.stringify(itemData.data);\n\n const clarificationAction = (\n (proposal && proposal?.type !== 'amendment')\n || (activeCRIsEditable && !proposal && itemData.status === 'valid'))\n ? <FormGroup inline label={`${proposal?.type ?? \"clarification\"}: `} css={css`margin: 0;`}>\n {activeCRIsEditable\n ? <ButtonGroup>\n {editedClarification\n ? <>\n <Button\n intent={clarificationHasChanges ? \"primary\" : undefined}\n // TODO(perf): this is expensive if renders are frequent…\n disabled={!clarificationHasChanges || isBusy}\n onClick={(!proposal || proposal?.type === 'clarification')\n ? handleClarify\n : handleEditAddition}>\n Save\n </Button>\n <Button onClick={() => setEditedClarification(null)}>Do not save</Button>\n </>\n : <>\n <Button\n disabled={diffMode || isBusy}\n intent=\"primary\"\n outlined\n onClick={() => setEditedClarification(itemData.data)}>\n {!proposal ? \"Clarify\" : \"Edit\"}\n </Button>\n {proposal?.type === 'clarification'\n ? <>\n <Button\n disabled={diffMode || isBusy || proposal?.type !== 'clarification'}\n intent=\"warning\"\n onClick={handleClearProposal}>\n Clear\n </Button>\n </>\n : null}\n </>}\n </ButtonGroup>\n : <Button disabled>\n {proposal?.type === 'clarification' ? \"Clarified\" : \"Added\"} in active proposal\n </Button>}\n </FormGroup>\n : null;\n\n const proposeLikeThis = activeCRIsEditable && !editedClarification\n ? <Button\n title=\"Propose a new item in current proposal, using this item as template.\"\n icon='plus'\n disabled={isBusy}\n outlined\n onClick={performOperation('duplicating item', handleProposeLikeThis)}>\n Propose another like this\n </Button>\n : null;\n\n // If there’s a CR context without active CR,\n // or active CR isn’t the same as the one in CR context,\n // then we can assume that the item is shown in proposal window\n // and we’d set window title to proposal’s title rather than item’s.\n // If there’s a CR context and active CR and they’re the same\n // then it *could* be that the item is shown in its own tab;\n // we will render proposal’s title if the item appears in the change request\n // (makes sense because the user *is* technically viewing a proposal then).\n const windowTitle: string = (\n activeCR && (\n !globallyActiveCRID\n || activeCR.id !== globallyActiveCRID\n || activeCR.items[itemPath]\n )\n ) ? `Proposal ${maybeEllipsizeString(activeCR.justification, 20)}…`\n : `${itemClass.meta.title ?? 'register item'} #${itemData.id}`;\n\n return (\n <TabContentsWithActions\n actions={<>\n <FormGroup\n inline\n labelInfo={<HelpTooltip\n icon='info-sign'\n content={<>\n <H5>{itemClass.meta.title}</H5>\n {itemClass.meta.description ?? \"No description is provided for this register item class.\"}\n <UL>\n <li>Class ID: {itemClassID}</li>\n <li>Subregister ID: {subregisterID ?? 'N/A'}</li>\n <li>UUID: {itemID}</li>\n </UL>\n </>}\n />}\n label={<>\n <strong>{itemClass.meta.title}</strong>\n {subregisterID\n ? <span title=\"Subregister\"> in {subregisters?.[subregisterID]?.title ?? subregisterID}</span>\n : null}\n </>}\n css={css`margin: 0; .bp4-form-content { display: flex; flex-flow: row wrap; gap: 10px; }`}>\n {itemStatus}\n {supersedingItems}\n {clarificationAction}\n {proposeLikeThis}\n </FormGroup>\n </>}\n main={\n <Card css={css`position: absolute; inset: ${inProposalWithID ? '0' : '10px'}; overflow-y: auto;`}>\n <Helmet><title>{windowTitle}</title></Helmet>\n {details}\n </Card>\n }\n />\n );\n\n } else if (itemResponse.isUpdating) {\n return <div className={Classes.SKELETON}>Loading…</div>;\n\n } else {\n const inCRWithID = getCRIDFromProposedItemPath(uri);\n if (inCRWithID !== null && activeCR?.id !== inCRWithID) {\n return <NonIdealState\n icon=\"help\"\n title=\"This item does not exist…\"\n description={\n <>\n …but it might be proposed.\n <br />\n {jumpTo\n ? <Button\n css={css`margin: 10px;`}\n intent=\"primary\"\n onClick={() => jumpTo?.(`${Protocols.CHANGE_REQUEST}:${crIDToCRPath(inCRWithID)}`)}>\n Go to proposal\n </Button>\n : null}\n </>\n }\n />;\n } else {\n const desc = itemData === null || itemData === undefined\n ? \"does not exist or could not be deserialized\"\n : \"may use unexpected data format\";\n return <NonIdealState\n icon=\"heart-broken\"\n title=\"Unable to show item\"\n description={`Item at ${itemPath} ${desc}`}\n />;\n }\n }\n};\n\n\nconst ItemTitle: React.FC<{ uri: string }> = function ({ uri }) {\n const { value: ref } = useItemRef(uri);\n const { value: clsConfig } = useItemClassConfig(ref?.classID ?? 'NONEXISTENT_CLASS_ID');\n const { value: itemData } = useSingleRegisterItemData(ref);\n const fallbackView = (() => <>{ref?.itemID ?? uri}</>);\n const View = itemData ? (clsConfig?.views.listItemView ?? fallbackView) : fallbackView;\n return <View\n itemRef={ref ?? dummyRef}\n itemData={itemData}\n />;\n}\n\n\nexport default {\n main: ItemDetail,\n title: ItemTitle,\n};\n\n\nconst dummyRef: InternalItemReference = {\n itemID: 'NONEXISTENT_ITEM_ID',\n classID: 'NONEXISTENT_CLASS_ID',\n subregisterID: undefined,\n};\n\n\nconst FormGroup = styled(BaseFormGroup)`\n margin: 0;\n label.bp4-label {\n white-space: nowrap;\n }\n`;\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterItem/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useState, useCallback } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n Button, ButtonGroup,\n Card,\n Classes,\n FormGroup as BaseFormGroup,\n ControlGroup,\n InputGroup,\n NonIdealState,\n UL,\n H5,\n} from '@blueprintjs/core';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport { TabbedWorkspaceContext } from '@riboseinc/paneron-extension-kit/widgets/TabbedWorkspace/context';\nimport useItemRef from '../../hooks/useItemRef';\nimport useSingleRegisterItemData from '../../hooks/useSingleRegisterItemData';\nimport useItemClassConfig from '../../hooks/useItemClassConfig';\nimport { Protocols } from '../../protocolRegistry';\nimport {\n type ChangeProposal,\n type InternalItemReference,\n type RegisterItem,\n isRegisterItem,\n} from '../../../types';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport {\n RegisterHelmet as Helmet,\n maybeEllipsizeString,\n TabContentsWithActions,\n} from '../../util';\nimport { itemRefToItemPath, crIDToCRPath, getCRIDFromProposedItemPath } from '../../itemPathUtils';\nimport { updateCRObjectChangeset, } from '../../change-request/objectChangeset';\nimport { ChangeRequestContext } from '../../change-request/ChangeRequestContext';\nimport { RelatedItems } from './RelatedItems';\n\n\n/**\n * Main register item view.\n *\n * NOTE: while generally intended as tab content handler,\n * is also reused within change request view.\n */\nconst ItemDetail: React.FC<{ uri: string, inProposalWithID?: string }> = function ({ uri, inProposalWithID }) {\n const { value: ref } = useItemRef(uri);\n const { value: clsConfig } = useItemClassConfig(ref?.classID ?? 'NONEXISTENT_CLASS_ID');\n //const { value: itemData } = useSingleRegisterItemData(ref);\n const { updateObjects, makeRandomID, performOperation, operationKey } = useContext(DatasetContext);\n const { spawnTab } = useContext(TabbedWorkspaceContext);\n const isBusy = operationKey !== undefined;\n const {\n jumpTo,\n subregisters,\n useRegisterItemData,\n activeChangeRequestID: globallyActiveCRID,\n } = useContext(BrowserCtx);\n\n const { changeRequest: activeCR, canEdit: activeCRIsEditable } = useContext(ChangeRequestContext);\n\n const itemClass = clsConfig;\n const itemClassID = itemClass?.meta?.id;\n const itemRef = ref ?? dummyRef;\n const { itemID, subregisterID } = itemRef;\n\n const _itemPath = `${itemClassID ?? 'NONEXISTENT_CLASS'}/${itemID}.yaml`;\n const itemPath = subregisterID ? `/subregisters/${subregisterID}/${_itemPath}` : `/${_itemPath}`;\n const itemRequest = {\n itemPaths: [itemPath],\n };\n const itemResponse = useRegisterItemData(itemRequest);\n const itemData = itemResponse.value[itemPath];\n\n const [ editedClarification, setEditedClarification ] = useState<RegisterItem<any>[\"data\"] | null>(null);\n\n //const [ diffMode, setDiffMode ] = useState<boolean>(false);\n // TODO: Implement diff mode\n const diffMode = false;\n\n const proposal = ((activeCR && activeCR.items[itemPath])\n ? activeCR.items[itemPath]\n : null) ?? null;\n\n const handleClearProposal = () => performProposalOperation(\"draft: clear proposal\", null);\n const handleRetire = () => performProposalOperation(\"draft: propose retirement\", {\n type: 'amendment',\n amendmentType: 'retirement',\n });\n const handleInvalidate = () => performProposalOperation(\"draft: propose invalidation\", {\n type: 'amendment',\n amendmentType: 'invalidation',\n });\n const handleSupersedeWith = (items: string[]) => performProposalOperation(\"draft: propose supersession\", {\n type: 'amendment',\n amendmentType: 'supersession',\n supersedingItemIDs: items,\n });\n const handleClarify = async () => {\n await performProposalOperation(\"draft: clarify item\", {\n type: 'clarification',\n });\n setEditedClarification(null);\n };\n const handleEditAddition = async () => {\n await performProposalOperation(\"draft: edit added item\", {\n type: 'addition',\n });\n setEditedClarification(null);\n };\n\n async function performProposalOperation(summary: string, proposal: ChangeProposal | null) {\n return await performOperation(summary, handleSetProposal)(summary, proposal);\n }\n\n const handleSetProposal = useCallback(async function _handleSetProposal(\n summary: string,\n proposal: ChangeProposal | null,\n ): Promise<void> {\n if (!activeCRIsEditable || !updateObjects || !isRegisterItem(itemData)) {\n throw new Error(\"Proposal isn’t editable\")\n }\n if (proposal && proposal?.type !== 'amendment' && !editedClarification) {\n throw new Error(\"Missing item data\");\n }\n await updateObjects({\n commitMessage: `${summary} for ${itemPath}`,\n objectChangeset: updateCRObjectChangeset(\n // TODO: We are sure it’s editable already, but casting should be avoided\n activeCR as any,\n { [itemPath]: proposal },\n ((proposal && proposal?.type !== 'amendment') && editedClarification)\n ? { [itemPath]: { ...itemData, data: editedClarification } }\n : {},\n ),\n // We need this because updateCRObjectChangeset\n // omits oldValue for item data payloads.\n _dangerouslySkipValidation: true,\n });\n }, [\n updateObjects,\n activeCRIsEditable,\n itemPath,\n JSON.stringify(activeCR),\n JSON.stringify(itemData),\n JSON.stringify(editedClarification),\n ]);\n\n // TODO: Very similar to `handleAdd()` in Browse sidebar menu; refactor?\n const handleProposeLikeThis = useCallback(async function _handleProposeLikeThis(): Promise<void> {\n if (!updateObjects || !makeRandomID || !activeCRIsEditable || !activeCR || !itemClass || !isRegisterItem(itemData)) {\n throw new Error(\"Unable to create item: likely current proposal is not editable or dataset is read-only\");\n }\n const { classID, subregisterID } = itemRef;\n const itemID = await makeRandomID();\n const newRef = { classID, subregisterID, itemID };\n const newItem: RegisterItem<any> = {\n id: itemID,\n dateAccepted: new Date(),\n status: 'valid',\n data: { ...itemData.data },\n };\n if (isRegisterItem(newItem)) {\n const newPath = itemRefToItemPath(newRef);\n await updateObjects({\n commitMessage: `clone ${itemRef.itemID} to propose a new item`,\n objectChangeset: updateCRObjectChangeset(\n activeCR as any,\n { [newPath]: { type: 'addition' } },\n { [newPath]: newItem },\n ),\n _dangerouslySkipValidation: true,\n });\n if (activeCR.id === globallyActiveCRID) {\n spawnTab(`${Protocols.ITEM_DETAILS}:${itemRefToItemPath(newRef, activeCR.id)}`);\n }\n } else {\n throw new Error(\"Newly created item did not pass validation (this is likely a bug in RegistryKit\");\n }\n }, [\n updateObjects,\n activeCRIsEditable,\n itemPath,\n JSON.stringify(activeCR),\n JSON.stringify(itemData),\n ]);\n\n if (!itemClass) {\n return <NonIdealState\n icon=\"heart-broken\"\n title=\"Unable to show item\"\n description={`View for ${ref?.itemID ?? uri} cannot be retrieved from item class configuration`}\n />;\n\n } else if (isRegisterItem(itemData)) {\n let details: JSX.Element;\n\n if (editedClarification !== null && activeCRIsEditable) {\n const EditView = itemClass.views.editView;\n details = (\n <EditView\n itemData={editedClarification}\n itemRef={itemRef}\n onChange={!isBusy\n ? (newData) => {\n setEditedClarification(newData);\n }\n : undefined}\n />\n );\n\n } else {\n const DetailView = itemClass.views.detailView ?? itemClass.views.editView;\n details = (\n <DetailView\n itemRef={itemRef}\n itemData={itemData.data}\n />\n );\n }\n\n //const canAmend = activeCR && itemData.status === 'valid';\n const itemStatus =\n <FormGroup inline label=\"status:\" css={css`margin: 0;`}>\n <ControlGroup fill>\n <InputGroup\n value={proposal?.type === 'amendment'\n ? `${proposal.amendmentType} proposed`\n : proposal?.type === 'addition'\n ? \"addition proposed\"\n : itemData.status}\n intent={proposal?.type === 'amendment'\n ? 'warning'\n : proposal?.type === 'addition'\n ? 'primary'\n : itemData.status === 'valid'\n ? 'success'\n : undefined}\n leftIcon={proposal && (proposal.type === 'amendment' || proposal.type === 'addition')\n ? 'asterisk'\n : itemData.status === 'valid'\n ? 'tick'\n : itemData.status === 'invalid'\n ? 'ban-circle'\n : 'warning-sign'}\n readOnly\n />\n {activeCRIsEditable && !editedClarification\n ? <>\n {proposal?.type === 'addition'\n ? <Button\n intent=\"warning\"\n title=\"Remove the proposal to add this new item.\"\n disabled={isBusy}\n onClick={handleClearProposal}>\n Remove proposed addition\n </Button>\n : null}\n {proposal?.type === 'amendment'\n ? <Button\n intent=\"warning\"\n title={`Remove amendment (${proposal.amendmentType}) for this item from current proposal.`}\n disabled={isBusy}\n onClick={handleClearProposal}>\n Clear proposed amendment\n </Button>\n : !proposal && itemData.status === 'valid'\n ? <ButtonGroup>\n <Button\n intent=\"primary\"\n disabled={isBusy}\n onClick={handleRetire}>\n Retire\n </Button>\n <Button\n intent=\"primary\"\n disabled={isBusy}\n onClick={handleInvalidate}>\n Invalidate\n </Button>\n </ButtonGroup>\n : null}\n </>\n : null}\n </ControlGroup>\n </FormGroup>;\n\n const supersedingItems = (\n // It’s superseded (whether in current proposal or not)\n itemData.status === 'superseded'\n // Item is valid, proposal is editable, and no change to this item is proposed yet\n || (activeCRIsEditable && !proposal && !editedClarification && itemData.status === 'valid')\n // This item is being superseded in active proposal\n // XXX: Redundant condition with the first one?\n || (proposal?.type === 'amendment' && proposal.amendmentType === 'supersession'))\n ? <FormGroup inline label=\"superseded by: \" css={css`margin: 0;`}>\n <RelatedItems\n availableClassIDs={[itemClass.meta.id]}\n itemRefs={proposal?.type === 'amendment' && proposal.amendmentType === 'supersession'\n ? proposal.supersedingItemIDs.\n map(id => ({ itemID: id, classID: itemClass.meta.id, subregisterID }))\n : (itemData.supersededBy ?? [])}\n onChange={!isBusy && activeCRIsEditable && (\n (proposal?.type === 'amendment' && proposal.amendmentType === 'supersession') ||\n (!proposal && itemData.status === 'valid'))\n ? (items) => items.length > 0\n ? handleSupersedeWith(items.map(ref => ref.itemID))\n : handleClearProposal()\n : undefined}\n />\n </FormGroup>\n : null;\n\n const clarificationHasChanges = JSON.stringify(editedClarification) !== JSON.stringify(itemData.data);\n\n const clarificationAction = (\n (proposal && proposal?.type !== 'amendment')\n || (activeCRIsEditable && !proposal && itemData.status === 'valid'))\n ? <FormGroup inline label={`${proposal?.type ?? \"clarification\"}: `} css={css`margin: 0;`}>\n {activeCRIsEditable\n ? <ButtonGroup>\n {editedClarification\n ? <>\n <Button\n intent={clarificationHasChanges ? \"primary\" : undefined}\n // TODO(perf): this is expensive if renders are frequent…\n disabled={!clarificationHasChanges || isBusy}\n onClick={(!proposal || proposal?.type === 'clarification')\n ? handleClarify\n : handleEditAddition}>\n Save\n </Button>\n <Button onClick={() => setEditedClarification(null)}>Do not save</Button>\n </>\n : <>\n <Button\n disabled={diffMode || isBusy}\n intent=\"primary\"\n outlined\n onClick={() => setEditedClarification(itemData.data)}>\n {!proposal ? \"Clarify\" : \"Edit\"}\n </Button>\n {proposal?.type === 'clarification'\n ? <>\n <Button\n disabled={diffMode || isBusy || proposal?.type !== 'clarification'}\n intent=\"warning\"\n onClick={handleClearProposal}>\n Clear\n </Button>\n </>\n : null}\n </>}\n </ButtonGroup>\n : <Button disabled>\n {proposal?.type === 'clarification' ? \"Clarified\" : \"Added\"} in active proposal\n </Button>}\n </FormGroup>\n : null;\n\n const proposeLikeThis = activeCRIsEditable && !editedClarification\n ? <Button\n title=\"Propose a new item in current proposal, using this item as template.\"\n icon='plus'\n disabled={isBusy}\n outlined\n onClick={performOperation('duplicating item', handleProposeLikeThis)}>\n Propose another like this\n </Button>\n : null;\n\n // If there’s a CR context without active CR,\n // or active CR isn’t the same as the one in CR context,\n // then we can assume that the item is shown in proposal window\n // and we’d set window title to proposal’s title rather than item’s.\n // If there’s a CR context and active CR and they’re the same\n // then it *could* be that the item is shown in its own tab;\n // we will render proposal’s title if the item appears in the change request\n // (makes sense because the user *is* technically viewing a proposal then).\n const windowTitle: string = (\n activeCR && (\n !globallyActiveCRID\n || activeCR.id !== globallyActiveCRID\n || activeCR.items[itemPath]\n )\n ) ? `Proposal ${maybeEllipsizeString(activeCR.justification, 20)}…`\n : `${itemClass.meta.title ?? 'register item'} #${itemData.id}`;\n\n return (\n <TabContentsWithActions\n actions={<>\n <FormGroup\n inline\n labelInfo={<HelpTooltip\n icon='info-sign'\n content={<>\n <H5>{itemClass.meta.title}</H5>\n {itemClass.meta.description ?? \"No description is provided for this register item class.\"}\n <UL>\n <li>Class ID: {itemClassID}</li>\n <li>Subregister ID: {subregisterID ?? 'N/A'}</li>\n <li>UUID: {itemID}</li>\n </UL>\n </>}\n />}\n label={<>\n <strong>{itemClass.meta.title}</strong>\n {subregisterID\n ? <span title=\"Subregister\"> in {subregisters?.[subregisterID]?.title ?? subregisterID}</span>\n : null}\n </>}\n css={css`margin: 0; .bp4-form-content { display: flex; flex-flow: row wrap; gap: 10px; }`}>\n {itemStatus}\n {supersedingItems}\n {clarificationAction}\n {proposeLikeThis}\n </FormGroup>\n </>}\n main={\n <Card css={css`position: absolute; inset: ${inProposalWithID ? '0' : '10px'}; overflow-y: auto;`}>\n <Helmet><title>{windowTitle}</title></Helmet>\n {details}\n </Card>\n }\n />\n );\n\n } else if (itemResponse.isUpdating) {\n return <div className={Classes.SKELETON}>Loading…</div>;\n\n } else {\n const inCRWithID = getCRIDFromProposedItemPath(uri);\n if (inCRWithID !== null && activeCR?.id !== inCRWithID) {\n return <NonIdealState\n icon=\"help\"\n title=\"This item does not exist…\"\n description={\n <>\n …but it might be proposed.\n <br />\n {jumpTo\n ? <Button\n css={css`margin: 10px;`}\n intent=\"primary\"\n onClick={() => jumpTo?.(`${Protocols.CHANGE_REQUEST}:${crIDToCRPath(inCRWithID)}`)}>\n Go to proposal\n </Button>\n : null}\n </>\n }\n />;\n } else {\n const desc = itemData === null || itemData === undefined\n ? \"does not exist or could not be deserialized\"\n : \"may use unexpected data format\";\n return <NonIdealState\n icon=\"heart-broken\"\n title=\"Unable to show item\"\n description={`Item at ${itemPath} ${desc}`}\n />;\n }\n }\n};\n\n\nconst ItemTitle: React.FC<{ uri: string }> = function ({ uri }) {\n const { value: ref } = useItemRef(uri);\n const { value: clsConfig } = useItemClassConfig(ref?.classID ?? 'NONEXISTENT_CLASS_ID');\n const { value: itemData } = useSingleRegisterItemData(ref);\n const fallbackView = (() => <>{ref?.itemID ?? uri}</>);\n const View = itemData ? (clsConfig?.views.listItemView ?? fallbackView) : fallbackView;\n return <View\n itemRef={ref ?? dummyRef}\n itemData={itemData}\n />;\n}\n\n\nexport default {\n main: ItemDetail,\n title: ItemTitle,\n};\n\n\nconst dummyRef: InternalItemReference = {\n itemID: 'NONEXISTENT_ITEM_ID',\n classID: 'NONEXISTENT_CLASS_ID',\n subregisterID: undefined,\n};\n\n\nconst FormGroup = styled(BaseFormGroup)`\n margin: 0;\n label.bp4-label {\n white-space: nowrap;\n }\n`;\n"]}
|
|
@@ -52,12 +52,12 @@ const RegisterMetaForm = function ({
|
|
|
52
52
|
onChange,
|
|
53
53
|
className
|
|
54
54
|
}) {
|
|
55
|
-
var
|
|
55
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
56
56
|
|
|
57
57
|
function handleOperatingLanguageChange(fieldName) {
|
|
58
58
|
return evt => {
|
|
59
59
|
const newValue = (0, _immutabilityHelper.default)(value, {
|
|
60
|
-
operatingLanguage: op => (0, _immutabilityHelper.default)(op
|
|
60
|
+
operatingLanguage: op => (0, _immutabilityHelper.default)(op !== null && op !== void 0 ? op : {}, {
|
|
61
61
|
[fieldName]: {
|
|
62
62
|
$set: evt.currentTarget.value
|
|
63
63
|
}
|
|
@@ -77,7 +77,7 @@ const RegisterMetaForm = function ({
|
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
const stakeholders = value.stakeholders
|
|
80
|
+
const stakeholders = (_a = value.stakeholders) !== null && _a !== void 0 ? _a : [];
|
|
81
81
|
|
|
82
82
|
function makeStakeholderChangeHandler(idx, func) {
|
|
83
83
|
return makeFormEventHandler(val => ({
|
|
@@ -140,17 +140,17 @@ const RegisterMetaForm = function ({
|
|
|
140
140
|
}, (0, _react2.jsx)(_core.InputGroup, {
|
|
141
141
|
readOnly: !onChange,
|
|
142
142
|
placeholder: "E.g., Welsh",
|
|
143
|
-
value: ((
|
|
143
|
+
value: (_c = (_b = value.operatingLanguage) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : '',
|
|
144
144
|
onChange: handleOperatingLanguageChange('name')
|
|
145
145
|
}), (0, _react2.jsx)(_core.InputGroup, {
|
|
146
146
|
readOnly: !onChange,
|
|
147
147
|
placeholder: "3-character numerical country code from ISO 3166-1",
|
|
148
|
-
value: ((
|
|
148
|
+
value: (_e = (_d = value.operatingLanguage) === null || _d === void 0 ? void 0 : _d.country) !== null && _e !== void 0 ? _e : '',
|
|
149
149
|
onChange: handleOperatingLanguageChange('country')
|
|
150
150
|
}), (0, _react2.jsx)(_core.InputGroup, {
|
|
151
151
|
readOnly: !onChange,
|
|
152
152
|
placeholder: "3-character language code from ISO 639-2",
|
|
153
|
-
value: ((
|
|
153
|
+
value: (_g = (_f = value.operatingLanguage) === null || _f === void 0 ? void 0 : _f.languageCode) !== null && _g !== void 0 ? _g : '',
|
|
154
154
|
onChange: handleOperatingLanguageChange('languageCode')
|
|
155
155
|
})))), (0, _react2.jsx)(SuperFormGroup, {
|
|
156
156
|
label: "Version: ",
|
|
@@ -158,11 +158,11 @@ const RegisterMetaForm = function ({
|
|
|
158
158
|
}, (0, _react2.jsx)(FormGroup, {
|
|
159
159
|
label: "Identifier: "
|
|
160
160
|
}, (0, _react2.jsx)(_core.InputGroup, {
|
|
161
|
-
value: ((
|
|
161
|
+
value: (_j = (_h = value.version) === null || _h === void 0 ? void 0 : _h.id) !== null && _j !== void 0 ? _j : '',
|
|
162
162
|
readOnly: !onChange,
|
|
163
163
|
placeholder: "E.g., 1.2",
|
|
164
164
|
onChange: makeFormEventHandler(val => ({
|
|
165
|
-
version: v => (0, _immutabilityHelper.default)(v
|
|
165
|
+
version: v => (0, _immutabilityHelper.default)(v !== null && v !== void 0 ? v : DUMMY_VERSION, {
|
|
166
166
|
id: {
|
|
167
167
|
$set: val
|
|
168
168
|
}
|
|
@@ -176,10 +176,10 @@ const RegisterMetaForm = function ({
|
|
|
176
176
|
}, (0, _react2.jsx)(_datetime.DatePicker, {
|
|
177
177
|
css: (0, _react2.css)`margin: 0 -${PADDING_PX - 1}px;`,
|
|
178
178
|
timePrecision: _datetime.TimePrecision.MINUTE,
|
|
179
|
-
value: ((
|
|
179
|
+
value: (_l = (_k = value.version) === null || _k === void 0 ? void 0 : _k.timestamp) !== null && _l !== void 0 ? _l : null,
|
|
180
180
|
showActionsBar: onChange ? true : false,
|
|
181
181
|
onChange: val => onChange((0, _immutabilityHelper.default)(value, val !== null ? {
|
|
182
|
-
version: v => (0, _immutabilityHelper.default)(v
|
|
182
|
+
version: v => (0, _immutabilityHelper.default)(v !== null && v !== void 0 ? v : DUMMY_VERSION, {
|
|
183
183
|
timestamp: {
|
|
184
184
|
$set: val
|
|
185
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisterMetaForm.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterMeta/RegisterMetaForm.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport update, { Spec } from 'immutability-helper';\nimport React from 'react';\nimport { jsx, css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n FormGroupProps,\n FormGroup as BaseFormGroup,\n Classes,\n Colors,\n ControlGroup,\n InputGroup,\n TextArea,\n HTMLTable,\n HTMLSelect,\n Button,\n ButtonGroup,\n} from '@blueprintjs/core';\nimport { DatePicker, TimePrecision } from '@blueprintjs/datetime';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport type { Register, RegisterStakeholder, Locale } from '../../../types';\nimport { isStakeholderRole } from '../../../types';\nimport { STAKEHOLDER_ROLES, StakeholderRole } from '../../../types/stakeholder';\n\n\n\nconst DUMMY_VERSION: Register[\"version\"] = { id: '', timestamp: new Date() };\nconst DUMMY_CONTACT: Register[\"stakeholders\"][number][\"parties\"][number][\"contacts\"][number] = {\n label: 'email',\n value: ''\n}\nconst DUMMY_PARTY: Register[\"stakeholders\"][number][\"parties\"][number] = {\n name: '',\n contacts: [DUMMY_CONTACT],\n};\nconst DUMMY_STAKEHOLDER: Register[\"stakeholders\"][number] = {\n role: StakeholderRole.Submitter,\n name: '',\n gitServerUsername: undefined,\n parties: [DUMMY_PARTY],\n};\n\n\nconst RegisterMetaForm: React.FC<{\n value: Register;\n onChange?: (newMeta: Register) => void;\n className?: string;\n}> = function ({ value, onChange, className }) {\n\n function handleOperatingLanguageChange(fieldName: keyof Omit<Locale, 'characterEncoding'>) {\n return (evt: React.FormEvent<HTMLInputElement>) => {\n const newValue = update(value, { operatingLanguage: op => update(op ?? {}, { [fieldName]: { $set: evt.currentTarget.value } }) });\n onChange!(newValue);\n }\n }\n\n function makeFormEventHandler\n <T extends HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement = HTMLInputElement>\n (func: (val: string) => Spec<typeof value>) {\n return (evt: React.FormEvent<T>) => {\n const spec = func(evt.currentTarget.value);\n if (spec) {\n onChange!(update(value, spec));\n }\n };\n }\n\n const stakeholders = value.stakeholders ?? [];\n function makeStakeholderChangeHandler<T extends HTMLInputElement | HTMLSelectElement>(\n idx: number,\n func: (val: string) => Spec<typeof value[\"stakeholders\"][number]>,\n ) {\n return makeFormEventHandler<T>(val => ({ stakeholders: { [idx]: func(val) } }));\n }\n function handleStakeholderAdd() {\n onChange!({ ...value, stakeholders: [ ...stakeholders, DUMMY_STAKEHOLDER ] });\n }\n return (\n <div css={css`display: flex; flex-flow: row wrap; align-content: flex-start; align-items: flex-start; gap: 10px;`} className={className}>\n\n <SuperFormGroup label=\"Basics:\">\n <FormGroup label=\"Name:\">\n <InputGroup\n fill\n value={value.name || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler(val => ({ name: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Uniform resource identifier:\">\n <InputGroup\n fill\n type=\"url\"\n value={value.uniformResourceIdentifier || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler(val => ({ uniformResourceIdentifier: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Content summary:\">\n <TextArea\n fill\n value={value.contentSummary || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler<HTMLTextAreaElement>(val => ({ contentSummary: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Operating language (locale):\" helperText=\"Name, country and ISO 639-2 language code.\">\n <ControlGroup vertical>\n <InputGroup\n readOnly={!onChange}\n placeholder=\"E.g., Welsh\"\n value={value.operatingLanguage?.name ?? ''}\n onChange={handleOperatingLanguageChange('name')} />\n <InputGroup\n readOnly={!onChange}\n placeholder=\"3-character numerical country code from ISO 3166-1\"\n value={value.operatingLanguage?.country ?? ''}\n onChange={handleOperatingLanguageChange('country')} />\n <InputGroup\n readOnly={!onChange}\n placeholder=\"3-character language code from ISO 639-2\"\n value={value.operatingLanguage?.languageCode ?? ''}\n onChange={handleOperatingLanguageChange('languageCode')} />\n </ControlGroup>\n </FormGroup>\n </SuperFormGroup>\n\n <SuperFormGroup label=\"Version: \" css={css`padding-bottom: 0;`}>\n <FormGroup label=\"Identifier: \">\n <InputGroup\n value={value.version?.id ?? ''}\n readOnly={!onChange}\n placeholder=\"E.g., 1.2\"\n onChange={makeFormEventHandler(val =>\n ({ version: v => update(v ?? DUMMY_VERSION, { id: { $set: val } }) })\n )}\n />\n </FormGroup>\n <FormGroup\n label=\"Published on: \"\n helperText={\n <>\n Date and time are\n <br />\n in {Intl.DateTimeFormat().resolvedOptions().timeZone}.\n {\" \"}\n <HelpTooltip content={<>\n Times are in your computer’s current time zone.\n {onChange\n ? \" When specifying, make sure to offset accordingly if it is different than register publication time zone.\"\n : null}\n </>} />\n </>}>\n <DatePicker\n css={css`margin: 0 -${PADDING_PX - 1}px;`}\n timePrecision={TimePrecision.MINUTE}\n value={value.version?.timestamp ?? null}\n showActionsBar={onChange ? true : false}\n onChange={(val: Date | null) =>\n onChange!(update(value, val !== null\n ? { version: v => update(v ?? DUMMY_VERSION, { timestamp: { $set: val } }) }\n : { $unset: ['version'] }))\n }\n />\n </FormGroup>\n </SuperFormGroup>\n\n <SuperFormGroup\n label=\"Stakeholders:\"\n helperText={onChange\n ? <Button onClick={handleStakeholderAdd} icon=\"add\">Add</Button>\n : null}>\n {stakeholders.length > 0\n ? <HTMLTable css={css`margin: 0 -${PADDING_PX}px;`}>\n <thead>\n <tr css={css`& > * { white-space: nowrap }`}>\n <th>Role</th>\n <th>Name</th>\n <th>Git server username</th>\n <th>Parties</th>\n <th>Name</th>\n <th>Email</th>\n </tr>\n </thead>\n <tbody>\n {[ ...stakeholders.entries() ].map(([idx, s]) =>\n <tr key={idx}>\n <td>\n <HTMLSelect\n options={STAKEHOLDER_ROLES.map(r => ({ value: r, label: r }))}\n disabled={!onChange}\n onChange={makeStakeholderChangeHandler<HTMLSelectElement>(idx, (val) =>\n isStakeholderRole(val)\n ? { role: { $set: val } } as Spec<RegisterStakeholder> // Why do we need to cast this\n : {}\n )}\n value={s.role} />\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ name: { $set: val } })\n )}\n value={s.name} />\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ gitServerUsername: { $set: val || undefined } })\n )}\n value={s.gitServerUsername || ''} />\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <ButtonGroup key={partyIdx}>\n <Button\n key=\"delete\"\n outlined\n disabled={!onChange || s.parties.length < 2 || party.name !== ''}\n title=\"Delete this party\"\n onClick={() => onChange!(update(value, { stakeholders: { [idx]: { parties: { $splice: [[ partyIdx, 1 ]] } } } }))}\n icon=\"cross\"\n />\n {partyIdx === s.parties.length - 1\n ? <Button\n key=\"add\"\n outlined\n disabled={!onChange}\n onClick={() => onChange!(update(value, { stakeholders: { [idx]: { parties: { $push: [DUMMY_PARTY] } } } }))}\n title=\"Append a party\"\n icon=\"plus\"\n />\n : null}\n </ButtonGroup>\n )}\n </ControlGroup>\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <InputGroup\n key={partyIdx}\n readOnly={!onChange}\n placeholder=\"Individual or organization\"\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ parties: { [partyIdx]: { name: { $set: val } } } })\n )}\n value={(party as { name: string }).name}\n />\n )}\n </ControlGroup>\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <InputGroup\n key={partyIdx}\n type=\"email\"\n placeholder=\"Contact email\"\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ parties: { [partyIdx]: { contacts: { 0: { value: { $set: val } } } } } })\n )}\n value={party.contacts[0].value || ''} />\n )}\n </ControlGroup>\n </td>\n </tr>)}\n </tbody>\n </HTMLTable>\n : null}\n </SuperFormGroup>\n </div>\n );\n};\n\n\nconst PADDING_PX = 11;\nconst FormGroup = styled(BaseFormGroup)`\n margin: 0;\n`;\nconst SuperFormGroup_ = styled(FormGroup)`\n border-radius: 5px;\n padding: ${PADDING_PX}px;\n\n > label.bp4-label {\n font-weight: bold;\n margin-bottom: ${PADDING_PX}px;\n }\n > .bp4-form-content {\n display: flex;\n flex-flow: column nowrap;\n gap: ${PADDING_PX}px;\n }\n\n /* Note: these colors are picked to work with date input widget specifically. */\n background: ${Colors.WHITE};\n .bp4-dark & { background: ${Colors.DARK_GRAY3}; }\n`;\n\nconst SuperFormGroup: React.FC<FormGroupProps> = function (props) {\n return <SuperFormGroup_ {...props} className={Classes.ELEVATION_3} />\n}\n\n\nexport default RegisterMetaForm;\n"]}
|
|
1
|
+
{"version":3,"file":"RegisterMetaForm.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterMeta/RegisterMetaForm.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport update, { Spec } from 'immutability-helper';\nimport React from 'react';\nimport { jsx, css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n FormGroupProps,\n FormGroup as BaseFormGroup,\n Classes,\n Colors,\n ControlGroup,\n InputGroup,\n TextArea,\n HTMLTable,\n HTMLSelect,\n Button,\n ButtonGroup,\n} from '@blueprintjs/core';\nimport { DatePicker, TimePrecision } from '@blueprintjs/datetime';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport type { Register, RegisterStakeholder, Locale } from '../../../types';\nimport { isStakeholderRole } from '../../../types';\nimport { STAKEHOLDER_ROLES, StakeholderRole } from '../../../types/stakeholder';\n\n\n\nconst DUMMY_VERSION: Register[\"version\"] = { id: '', timestamp: new Date() };\nconst DUMMY_CONTACT: Register[\"stakeholders\"][number][\"parties\"][number][\"contacts\"][number] = {\n label: 'email',\n value: ''\n}\nconst DUMMY_PARTY: Register[\"stakeholders\"][number][\"parties\"][number] = {\n name: '',\n contacts: [DUMMY_CONTACT],\n};\nconst DUMMY_STAKEHOLDER: Register[\"stakeholders\"][number] = {\n role: StakeholderRole.Submitter,\n name: '',\n gitServerUsername: undefined,\n parties: [DUMMY_PARTY],\n};\n\n\nconst RegisterMetaForm: React.FC<{\n value: Register;\n onChange?: (newMeta: Register) => void;\n className?: string;\n}> = function ({ value, onChange, className }) {\n\n function handleOperatingLanguageChange(fieldName: keyof Omit<Locale, 'characterEncoding'>) {\n return (evt: React.FormEvent<HTMLInputElement>) => {\n const newValue = update(value, { operatingLanguage: op => update(op ?? {}, { [fieldName]: { $set: evt.currentTarget.value } }) });\n onChange!(newValue);\n }\n }\n\n function makeFormEventHandler\n <T extends HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement = HTMLInputElement>\n (func: (val: string) => Spec<typeof value>) {\n return (evt: React.FormEvent<T>) => {\n const spec = func(evt.currentTarget.value);\n if (spec) {\n onChange!(update(value, spec));\n }\n };\n }\n\n const stakeholders = value.stakeholders ?? [];\n function makeStakeholderChangeHandler<T extends HTMLInputElement | HTMLSelectElement>(\n idx: number,\n func: (val: string) => Spec<typeof value[\"stakeholders\"][number]>,\n ) {\n return makeFormEventHandler<T>(val => ({ stakeholders: { [idx]: func(val) } }));\n }\n function handleStakeholderAdd() {\n onChange!({ ...value, stakeholders: [ ...stakeholders, DUMMY_STAKEHOLDER ] });\n }\n return (\n <div css={css`display: flex; flex-flow: row wrap; align-content: flex-start; align-items: flex-start; gap: 10px;`} className={className}>\n\n <SuperFormGroup label=\"Basics:\">\n <FormGroup label=\"Name:\">\n <InputGroup\n fill\n value={value.name || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler(val => ({ name: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Uniform resource identifier:\">\n <InputGroup\n fill\n type=\"url\"\n value={value.uniformResourceIdentifier || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler(val => ({ uniformResourceIdentifier: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Content summary:\">\n <TextArea\n fill\n value={value.contentSummary || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler<HTMLTextAreaElement>(val => ({ contentSummary: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Operating language (locale):\" helperText=\"Name, country and ISO 639-2 language code.\">\n <ControlGroup vertical>\n <InputGroup\n readOnly={!onChange}\n placeholder=\"E.g., Welsh\"\n value={value.operatingLanguage?.name ?? ''}\n onChange={handleOperatingLanguageChange('name')} />\n <InputGroup\n readOnly={!onChange}\n placeholder=\"3-character numerical country code from ISO 3166-1\"\n value={value.operatingLanguage?.country ?? ''}\n onChange={handleOperatingLanguageChange('country')} />\n <InputGroup\n readOnly={!onChange}\n placeholder=\"3-character language code from ISO 639-2\"\n value={value.operatingLanguage?.languageCode ?? ''}\n onChange={handleOperatingLanguageChange('languageCode')} />\n </ControlGroup>\n </FormGroup>\n </SuperFormGroup>\n\n <SuperFormGroup label=\"Version: \" css={css`padding-bottom: 0;`}>\n <FormGroup label=\"Identifier: \">\n <InputGroup\n value={value.version?.id ?? ''}\n readOnly={!onChange}\n placeholder=\"E.g., 1.2\"\n onChange={makeFormEventHandler(val =>\n ({ version: v => update(v ?? DUMMY_VERSION, { id: { $set: val } }) })\n )}\n />\n </FormGroup>\n <FormGroup\n label=\"Published on: \"\n helperText={\n <>\n Date and time are\n <br />\n in {Intl.DateTimeFormat().resolvedOptions().timeZone}.\n {\" \"}\n <HelpTooltip content={<>\n Times are in your computer’s current time zone.\n {onChange\n ? \" When specifying, make sure to offset accordingly if it is different than register publication time zone.\"\n : null}\n </>} />\n </>}>\n <DatePicker\n css={css`margin: 0 -${PADDING_PX - 1}px;`}\n timePrecision={TimePrecision.MINUTE}\n value={value.version?.timestamp ?? null}\n showActionsBar={onChange ? true : false}\n onChange={(val: Date | null) =>\n onChange!(update(value, val !== null\n ? { version: v => update(v ?? DUMMY_VERSION, { timestamp: { $set: val } }) }\n : { $unset: ['version'] }))\n }\n />\n </FormGroup>\n </SuperFormGroup>\n\n <SuperFormGroup\n label=\"Stakeholders:\"\n helperText={onChange\n ? <Button onClick={handleStakeholderAdd} icon=\"add\">Add</Button>\n : null}>\n {stakeholders.length > 0\n ? <HTMLTable css={css`margin: 0 -${PADDING_PX}px;`}>\n <thead>\n <tr css={css`& > * { white-space: nowrap }`}>\n <th>Role</th>\n <th>Name</th>\n <th>Git server username</th>\n <th>Parties</th>\n <th>Name</th>\n <th>Email</th>\n </tr>\n </thead>\n <tbody>\n {[ ...stakeholders.entries() ].map(([idx, s]) =>\n <tr key={idx}>\n <td>\n <HTMLSelect\n options={STAKEHOLDER_ROLES.map(r => ({ value: r, label: r }))}\n disabled={!onChange}\n onChange={makeStakeholderChangeHandler<HTMLSelectElement>(idx, (val) =>\n isStakeholderRole(val)\n ? { role: { $set: val } } as Spec<RegisterStakeholder> // Why do we need to cast this\n : {}\n )}\n value={s.role} />\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ name: { $set: val } })\n )}\n value={s.name} />\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ gitServerUsername: { $set: val || undefined } })\n )}\n value={s.gitServerUsername || ''} />\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <ButtonGroup key={partyIdx}>\n <Button\n key=\"delete\"\n outlined\n disabled={!onChange || s.parties.length < 2 || party.name !== ''}\n title=\"Delete this party\"\n onClick={() => onChange!(update(value, { stakeholders: { [idx]: { parties: { $splice: [[ partyIdx, 1 ]] } } } }))}\n icon=\"cross\"\n />\n {partyIdx === s.parties.length - 1\n ? <Button\n key=\"add\"\n outlined\n disabled={!onChange}\n onClick={() => onChange!(update(value, { stakeholders: { [idx]: { parties: { $push: [DUMMY_PARTY] } } } }))}\n title=\"Append a party\"\n icon=\"plus\"\n />\n : null}\n </ButtonGroup>\n )}\n </ControlGroup>\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <InputGroup\n key={partyIdx}\n readOnly={!onChange}\n placeholder=\"Individual or organization\"\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ parties: { [partyIdx]: { name: { $set: val } } } })\n )}\n value={(party as { name: string }).name}\n />\n )}\n </ControlGroup>\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <InputGroup\n key={partyIdx}\n type=\"email\"\n placeholder=\"Contact email\"\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ parties: { [partyIdx]: { contacts: { 0: { value: { $set: val } } } } } })\n )}\n value={party.contacts[0].value || ''} />\n )}\n </ControlGroup>\n </td>\n </tr>)}\n </tbody>\n </HTMLTable>\n : null}\n </SuperFormGroup>\n </div>\n );\n};\n\n\nconst PADDING_PX = 11;\nconst FormGroup = styled(BaseFormGroup)`\n margin: 0;\n`;\nconst SuperFormGroup_ = styled(FormGroup)`\n border-radius: 5px;\n padding: ${PADDING_PX}px;\n\n > label.bp4-label {\n font-weight: bold;\n margin-bottom: ${PADDING_PX}px;\n }\n > .bp4-form-content {\n display: flex;\n flex-flow: column nowrap;\n gap: ${PADDING_PX}px;\n }\n\n /* Note: these colors are picked to work with date input widget specifically. */\n background: ${Colors.WHITE};\n .bp4-dark & { background: ${Colors.DARK_GRAY3}; }\n`;\n\nconst SuperFormGroup: React.FC<FormGroupProps> = function (props) {\n return <SuperFormGroup_ {...props} className={Classes.ELEVATION_3} />\n}\n\n\nexport default RegisterMetaForm;\n"]}
|
|
@@ -87,7 +87,7 @@ const RegisterMeta = function () {
|
|
|
87
87
|
disabled: !didChange || !canChange
|
|
88
88
|
}, "Clear changes"))),
|
|
89
89
|
main: (0, _react2.jsx)(_RegisterMetaForm.default, {
|
|
90
|
-
value: editedMetadata
|
|
90
|
+
value: editedMetadata !== null && editedMetadata !== void 0 ? editedMetadata : registerMetadata,
|
|
91
91
|
onChange: updateObjects ? setEditedMetadata : undefined
|
|
92
92
|
})
|
|
93
93
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterMeta/index.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAiB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAGlD,MAAM,YAAY,GAAmC;IACnD,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEjE,MAAM,CAAE,cAAc,EAAE,iBAAiB,CAAE,GAAG,QAAQ,CAAkB,IAAI,CAAC,CAAC;IAE9E,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/C,MAAM,SAAS,GAAG,gBAAgB,IAAI,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAE5H,SAAS,WAAW;QAClB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,KAAK,UAAU,UAAU;QACvB,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACtE;QACD,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE;YACvC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;SAC9C;QACD,MAAM,gBAAgB,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;YAC5D,aAAa,EAAE,0BAA0B;YACzC,eAAe,EAAE;gBACf,CAAC,0BAA0B,CAAC,EAAE;oBAC5B,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc;iBACzB;aACF;SACF,CAAC,CAAC;QACH,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,gBAAgB,EAAE;QACpB,OAAO,CACL,IAAC,sBAAsB,IACrB,OAAO,EAAE;gBACP,IAAC,WAAW;oBACV,IAAC,MAAM,IACH,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,CAAC,SAAS,IAAI,CAAC,SAAS,EAClC,MAAM,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,WAEjD;oBACT,IAAC,MAAM,IACH,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,SAAS,IAAI,CAAC,SAAS,oBAE7B,CACG,CACb,EACH,IAAI,EACF,IAAC,gBAAgB,IACf,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterMeta/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useState, useContext } from 'react';\nimport { jsx } from '@emotion/react';\nimport { Button, ButtonGroup, NonIdealState, Spinner } from '@blueprintjs/core';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport { isRegisterMetadata, type Register } from '../../../types';\nimport { isOwner } from '../../../types/stakeholder';\nimport { REGISTER_METADATA_FILENAME } from '../../../common';\nimport { TabContentsWithActions } from '../../util';\nimport RegisterMetaForm from './RegisterMetaForm';\n\n\nconst RegisterMeta: React.FC<Record<never, never>> = function () {\n const { updateObjects, performOperation } = useContext(DatasetContext);\n const { registerMetadata, stakeholder } = useContext(BrowserCtx);\n\n const [ editedMetadata, setEditedMetadata ] = useState<Register | null>(null);\n\n const canChange = updateObjects ? true : false;\n const didChange = registerMetadata && editedMetadata && JSON.stringify(editedMetadata) !== JSON.stringify(registerMetadata);\n\n function handleClear() {\n setEditedMetadata(null);\n }\n async function handleSave() {\n if (!updateObjects) {\n throw new Error(\"Dataset is read-only\");\n }\n if (!stakeholder || !isOwner(stakeholder)) {\n throw new Error(\"Register meta is only meant to be edited by owner\");\n }\n if (!isRegisterMetadata(editedMetadata)) {\n throw new Error(\"Invalid register metadata\");\n }\n await performOperation('saving register meta', updateObjects)({\n commitMessage: \"edited register metadata\",\n objectChangeset: {\n [REGISTER_METADATA_FILENAME]: {\n oldValue: registerMetadata,\n newValue: editedMetadata,\n },\n },\n });\n setEditedMetadata(null);\n }\n\n if (registerMetadata) {\n return (\n <TabContentsWithActions\n actions={<>\n <ButtonGroup>\n <Button\n onClick={handleSave}\n disabled={!didChange || !canChange}\n intent={didChange && canChange ? \"primary\" : undefined}>\n Save\n </Button>\n <Button\n onClick={handleClear}\n disabled={!didChange || !canChange}>\n Clear changes\n </Button>\n </ButtonGroup>\n </>}\n main={\n <RegisterMetaForm\n value={editedMetadata ?? registerMetadata}\n onChange={updateObjects ? setEditedMetadata : undefined}\n />\n }\n />\n );\n } else if (registerMetadata === undefined) {\n return <NonIdealState icon={<Spinner />} />\n } else {\n return <NonIdealState icon=\"heart-broken\" description=\"Failed to read registry metadata.\" />\n }\n};\n\nexport default {\n main: RegisterMeta,\n title: () => <>Register Metadata</>,\n plainTitle: async () => \"register metadata\",\n};\n"]}
|
package/views/detail/index.js
CHANGED
|
@@ -12,12 +12,12 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
12
12
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
13
|
|
|
14
14
|
async function getPlainTitle(uri) {
|
|
15
|
+
var _a, _b, _c;
|
|
16
|
+
|
|
15
17
|
const [proto, _path] = uri.split(':');
|
|
16
18
|
|
|
17
19
|
if ((0, _protocolRegistry.isValidProtocol)(proto)) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return (await ((_protocolRegistry$pro = (_protocolRegistry$pro2 = _protocolRegistry.default[proto]).plainTitle) === null || _protocolRegistry$pro === void 0 ? void 0 : _protocolRegistry$pro.call(_protocolRegistry$pro2, _path))) ?? 'N/A';
|
|
20
|
+
return (_c = await ((_b = (_a = _protocolRegistry.default[proto]).plainTitle) === null || _b === void 0 ? void 0 : _b.call(_a, _path))) !== null && _c !== void 0 ? _c : 'N/A';
|
|
21
21
|
} else {
|
|
22
22
|
throw new Error("Invalid protocol");
|
|
23
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/detail/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,EAAE,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/detail/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,EAAE,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;;IAC7C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;QAC1B,OAAO,MAAA,MAAM,CAAA,MAAA,MAAA,gBAAgB,CAAC,KAAK,CAAC,EAAC,UAAU,mDAAG,KAAK,CAAC,CAAA,mCAAI,KAAK,CAAC;KACnE;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACrC;AACH,CAAC","sourcesContent":["import protocolRegistry, { isValidProtocol } from '../protocolRegistry';\n\nexport async function getPlainTitle(uri: string): Promise<string> {\n const [proto, _path] = uri.split(':');\n if (isValidProtocol(proto)) {\n return await protocolRegistry[proto].plainTitle?.(_path) ?? 'N/A';\n } else {\n throw new Error(\"Invalid protocol\");\n }\n}\n"]}
|
|
@@ -35,7 +35,7 @@ const StructuredDiff = _react2.default.memo(({
|
|
|
35
35
|
if (diffContainerRef.current) {
|
|
36
36
|
const delta = (0, _jsondiffpatch.diff)(item1, item2);
|
|
37
37
|
|
|
38
|
-
_jsondiffpatch.formatters.html.showUnchanged(showUnchanged
|
|
38
|
+
_jsondiffpatch.formatters.html.showUnchanged(showUnchanged !== null && showUnchanged !== void 0 ? showUnchanged : _showUnchanged);
|
|
39
39
|
|
|
40
40
|
if (delta) {
|
|
41
41
|
diffContainerRef.current.innerHTML = _jsondiffpatch.formatters.html.format(delta, item1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StructuredDiff.js","sourceRoot":"","sources":["../../../src/views/diffing/StructuredDiff.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,cAAc,GAKf,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE;IAC7D,MAAM,gBAAgB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEtD,kCAAkC;IAClC,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE3D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,gBAAgB,CAAC,OAAO,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACjC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"StructuredDiff.js","sourceRoot":"","sources":["../../../src/views/diffing/StructuredDiff.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,cAAc,GAKf,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE;IAC7D,MAAM,gBAAgB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEtD,kCAAkC;IAClC,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE3D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,gBAAgB,CAAC,OAAO,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACjC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,cAAc,CAAC,CAAC;YAC/D,IAAI,KAAK,EAAE;gBACT,gBAAgB,CAAC,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aAC3E;iBAAM;gBACL,gBAAgB,CAAC,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;aACxE;SACF;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;IAEpF,iGAAiG;IACjG,mDAAmD;IACnD,yFAAyF;IACzF,0EAA0E;IAE1E,OAAO,aAAK,GAAG,EAAE,GAAG,CAAA,0CAA0C,EAAE,SAAS,EAAE,SAAS;QACjF,aAAa,KAAK,SAAS;YAC1B,CAAC,CAAC,IAAC,MAAM,IACL,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAC5D,KAAK,EAAC,2BAA2B,GACjC;YACJ,CAAC,CAAC,IAAI;QACR,aAAK,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAA,0BAA0B,GAAQ,CAClE,CAAA;AACR,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAC1B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;IACnE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;IACnE,SAAS,CAAC,aAAa,KAAK,SAAS,CAAC,aAAa,CACpD,CAAC;AAGF,eAAe,cAAc,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { diff, formatters } from 'jsondiffpatch';\nimport { jsx, css } from '@emotion/react';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Switch } from '@blueprintjs/core';\nimport { RegisterItem } from '../../types/item';\n\n\nconst StructuredDiff: React.FC<{\n item1: RegisterItem<any>[\"data\"]\n item2: RegisterItem<any>[\"data\"]\n showUnchanged?: boolean\n className?: string\n}> = React.memo(({ item1, item2, showUnchanged, className }) => {\n const diffContainerRef = useRef<HTMLDivElement>(null);\n\n // Is ignored if managed via prop.\n const [_showUnchanged, setShowUnchanged] = useState(false);\n\n const item1json = JSON.stringify(item1);\n const item2json = JSON.stringify(item2);\n\n useEffect(() => {\n if (diffContainerRef.current) {\n const delta = diff(item1, item2);\n formatters.html.showUnchanged(showUnchanged ?? _showUnchanged);\n if (delta) {\n diffContainerRef.current.innerHTML = formatters.html.format(delta, item1);\n } else {\n diffContainerRef.current.innerHTML = formatters.html.format({}, item1);\n }\n }\n }, [item1json, item2json, diffContainerRef.current, showUnchanged, _showUnchanged]);\n\n // TODO: Make VisualDiff work. Currently, it doesn’t apparently when item detail views use hooks.\n // Which is often. Either make item views hook-free\n // (which means primarily eliminating useRegisterItemData() by inferring and pre-fetching\n // related item data), or work out another way to diff two React elements.\n\n return <div css={css`display: flex; flex-flow: column nowrap;`} className={className}>\n {showUnchanged === undefined\n ? <Switch\n checked={_showUnchanged}\n onChange={evt => setShowUnchanged(evt.currentTarget.checked)}\n label=\"Show unchanged properties\"\n />\n : null}\n <div ref={diffContainerRef} css={css`flex: 1; overflow: auto;`}></div>\n </div>\n}, (prevProps, nextProps) =>\n JSON.stringify(prevProps.item2) === JSON.stringify(nextProps.item2) &&\n JSON.stringify(prevProps.item1) === JSON.stringify(nextProps.item1) &&\n prevProps.showUnchanged === nextProps.showUnchanged\n);\n\n\nexport default StructuredDiff;\n\n"]}
|
|
@@ -12,6 +12,8 @@ var _BrowserCtx = require("../BrowserCtx");
|
|
|
12
12
|
var _itemPathUtils = require("../itemPathUtils");
|
|
13
13
|
|
|
14
14
|
function useItemRef(itemPath) {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
|
|
15
17
|
const {
|
|
16
18
|
subregisters
|
|
17
19
|
} = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
@@ -26,14 +28,12 @@ function useItemRef(itemPath) {
|
|
|
26
28
|
errors: []
|
|
27
29
|
};
|
|
28
30
|
} catch (e) {
|
|
29
|
-
var _e$toString;
|
|
30
|
-
|
|
31
31
|
return {
|
|
32
32
|
value: undefined,
|
|
33
33
|
isUpdating: false,
|
|
34
34
|
refresh: () => void 0,
|
|
35
35
|
_reqCounter: 0,
|
|
36
|
-
errors: [`${((
|
|
36
|
+
errors: [`${(_b = (_a = e.toString) === null || _a === void 0 ? void 0 : _a.call(e)) !== null && _b !== void 0 ? _b : e}`]
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useItemRef.js","sourceRoot":"","sources":["../../../src/views/hooks/useItemRef.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,QAAgB
|
|
1
|
+
{"version":3,"file":"useItemRef.js","sourceRoot":"","sources":["../../../src/views/hooks/useItemRef.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,QAAgB;;IAEjD,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI;QACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,YAAY,KAAK,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,OAAO;YACL,KAAK;YACL,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,EAAE;SACX,CAAC;KACH;IAAC,OAAO,CAAM,EAAE;QACf,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,CAAC,GAAG,MAAA,MAAA,CAAC,CAAC,QAAQ,iDAAI,mCAAI,CAAC,EAAE,CAAC;SACnC,CAAC;KACH;AACH,CAAC","sourcesContent":["import { useContext } from 'react';\nimport { ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport { BrowserCtx } from '../BrowserCtx';\nimport { itemPathToItemRef } from '../itemPathUtils';\nimport { InternalItemReference } from '../../types';\n\n\nexport default function useItemRef(itemPath: string):\nValueHook<InternalItemReference | undefined> {\n const { subregisters } = useContext(BrowserCtx);\n try {\n const value = itemPathToItemRef(subregisters !== undefined, itemPath);\n return {\n value,\n isUpdating: false,\n refresh: () => void 0,\n _reqCounter: 0,\n errors: [],\n };\n } catch (e: any) {\n return {\n value: undefined,\n isUpdating: false,\n refresh: () => void 0,\n _reqCounter: 0,\n errors: [`${e.toString?.() ?? e}`],\n };\n }\n}\n"]}
|
|
@@ -12,6 +12,8 @@ var _BrowserCtx = require("../BrowserCtx");
|
|
|
12
12
|
var _itemPathUtils = require("../itemPathUtils");
|
|
13
13
|
|
|
14
14
|
function useSingleRegisterItemData(ref) {
|
|
15
|
+
var _a;
|
|
16
|
+
|
|
15
17
|
const {
|
|
16
18
|
useRegisterItemData
|
|
17
19
|
} = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
@@ -20,7 +22,7 @@ function useSingleRegisterItemData(ref) {
|
|
|
20
22
|
itemPaths: [itemPath]
|
|
21
23
|
});
|
|
22
24
|
const itemResponseValue = itemResponse.value[itemPath];
|
|
23
|
-
const itemData = (itemResponseValue === null || itemResponseValue === void 0 ? void 0 : itemResponseValue.data)
|
|
25
|
+
const itemData = (_a = itemResponseValue === null || itemResponseValue === void 0 ? void 0 : itemResponseValue.data) !== null && _a !== void 0 ? _a : null;
|
|
24
26
|
const errMsg = "Item data cannot be loaded";
|
|
25
27
|
return {
|
|
26
28
|
value: itemData,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSingleRegisterItemData.js","sourceRoot":"","sources":["../../../src/views/hooks/useSingleRegisterItemData.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAChD,GAAsC
|
|
1
|
+
{"version":3,"file":"useSingleRegisterItemData.js","sourceRoot":"","sources":["../../../src/views/hooks/useSingleRegisterItemData.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAChD,GAAsC;;IAErC,MAAM,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACnE,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpE,MAAM,iBAAiB,GACrB,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE/B,MAAM,QAAQ,GAAG,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI,mCAAI,IAAI,CAAC;IACjD,MAAM,MAAM,GAAG,4BAA4B,CAAC;IAC5C,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ,KAAK,IAAI;YACvB,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,YAAY,CAAC,MAAM;QACvB,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,OAAO,EAAE,YAAY,CAAC,OAAO;KAC9B,CAAC;AACJ,CAAC","sourcesContent":["import { useContext } from 'react';\nimport { ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport { BrowserCtx } from '../BrowserCtx';\nimport { itemRefToItemPath } from '../itemPathUtils';\nimport { InternalItemReference, RegisterItem } from '../../types';\n\n\nexport default function useSingleRegisterItemData\n(ref: InternalItemReference | undefined):\nValueHook<RegisterItem<any> | null> {\n const { useRegisterItemData } = useContext(BrowserCtx);\n const itemPath = ref ? itemRefToItemPath(ref) : 'NONEXISTENT_ITEM';\n const itemResponse = useRegisterItemData({ itemPaths: [itemPath] });\n const itemResponseValue: RegisterItem<any> | null =\n itemResponse.value[itemPath];\n\n const itemData = itemResponseValue?.data ?? null;\n const errMsg = \"Item data cannot be loaded\";\n return {\n value: itemData,\n errors: itemData === null\n ? [errMsg, ...itemResponse.errors]\n : itemResponse.errors,\n isUpdating: itemResponse.isUpdating,\n _reqCounter: itemResponse._reqCounter,\n refresh: itemResponse.refresh,\n };\n}\n"]}
|
package/views/index.js
CHANGED
|
@@ -116,7 +116,7 @@ const BrowserCtxProvider = function ({
|
|
|
116
116
|
customViews,
|
|
117
117
|
children
|
|
118
118
|
}) {
|
|
119
|
-
var
|
|
119
|
+
var _a, _b, _c;
|
|
120
120
|
|
|
121
121
|
const {
|
|
122
122
|
useObjectData,
|
|
@@ -130,7 +130,7 @@ const BrowserCtxProvider = function ({
|
|
|
130
130
|
const selectedItemRef = selectedItemPath ? (0, _itemPathUtils.itemPathToItemRefLike)(subregisters !== undefined, selectedItemPath) : null;
|
|
131
131
|
const maybeSelectedRegisterItemData = useObjectData({
|
|
132
132
|
objectPaths: selectedItemPath ? [selectedItemPath] : []
|
|
133
|
-
}).value.data[selectedItemPath
|
|
133
|
+
}).value.data[selectedItemPath !== null && selectedItemPath !== void 0 ? selectedItemPath : ''];
|
|
134
134
|
const selectedRegisterItem = (0, _types.isInternalItemReference)(selectedItemRef) ? maybeSelectedRegisterItemData && (0, _types.isRegisterItem)(maybeSelectedRegisterItemData) ? {
|
|
135
135
|
item: maybeSelectedRegisterItemData,
|
|
136
136
|
ref: selectedItemRef,
|
|
@@ -142,9 +142,11 @@ const BrowserCtxProvider = function ({
|
|
|
142
142
|
// may not be a RegisterItem.
|
|
143
143
|
|
|
144
144
|
const useRegisterItemData = opts => {
|
|
145
|
-
// Original item path mapped to its potential alternative path in current CR,
|
|
145
|
+
var _a, _b; // Original item path mapped to its potential alternative path in current CR,
|
|
146
146
|
// if the item is clarified or added in it.
|
|
147
147
|
// TODO(perf): Access CR data and check whether the item is affected instead of blindly trying CR paths
|
|
148
|
+
|
|
149
|
+
|
|
148
150
|
const pathsToRequest = {};
|
|
149
151
|
const {
|
|
150
152
|
changeRequest: activeChangeRequest
|
|
@@ -154,7 +156,7 @@ const BrowserCtxProvider = function ({
|
|
|
154
156
|
pathsToRequest[givenItemPath] = givenItemPath; // Don’t use CR alternative path for any path that is already explicitly in-CR.
|
|
155
157
|
// TODO(perf): move out of the loop what’s possible, use map-reduce maybe too
|
|
156
158
|
|
|
157
|
-
if (!opts.ignoreActiveCR && !givenItemPath.startsWith('/proposals') && activeChangeRequest
|
|
159
|
+
if (!opts.ignoreActiveCR && !givenItemPath.startsWith('/proposals') && (activeChangeRequest === null || activeChangeRequest === void 0 ? void 0 : activeChangeRequest.id)) {
|
|
158
160
|
pathsToRequest[(0, _itemPathUtils.itemPathInCR)(givenItemPath, activeChangeRequest.id)] = givenItemPath;
|
|
159
161
|
}
|
|
160
162
|
}
|
|
@@ -165,7 +167,7 @@ const BrowserCtxProvider = function ({
|
|
|
165
167
|
const itemData = {};
|
|
166
168
|
|
|
167
169
|
for (const [alternativePath, itemPath] of Object.entries(pathsToRequest)) {
|
|
168
|
-
const data = result.value.data[alternativePath]
|
|
170
|
+
const data = (_b = (_a = result.value.data[alternativePath]) !== null && _a !== void 0 ? _a : result.value.data[itemPath]) !== null && _b !== void 0 ? _b : null;
|
|
169
171
|
|
|
170
172
|
if ((0, _types.isRegisterItem)(data) || data === null) {
|
|
171
173
|
itemData[itemPath] = data;
|
|
@@ -194,10 +196,10 @@ const BrowserCtxProvider = function ({
|
|
|
194
196
|
const registerMetadataReq = useObjectData({
|
|
195
197
|
objectPaths: [_common.REGISTER_METADATA_FILENAME]
|
|
196
198
|
});
|
|
197
|
-
const maybeRegisterMetadata = ((
|
|
199
|
+
const maybeRegisterMetadata = (_b = (_a = registerMetadataReq.value.data) === null || _a === void 0 ? void 0 : _a[_common.REGISTER_METADATA_FILENAME]) !== null && _b !== void 0 ? _b : registerMetadataReq.isUpdating ? undefined : null;
|
|
198
200
|
const registerMetadata = !maybeRegisterMetadata || (0, _types.isRegisterMetadata)(maybeRegisterMetadata) ? maybeRegisterMetadata : null;
|
|
199
201
|
const remoteUsername = useRemoteUsername().value.username;
|
|
200
|
-
const stakeholder = remoteUsername ? ((registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.stakeholders)
|
|
202
|
+
const stakeholder = remoteUsername ? ((_c = registerMetadata === null || registerMetadata === void 0 ? void 0 : registerMetadata.stakeholders) !== null && _c !== void 0 ? _c : []).find(s => s.gitServerUsername === remoteUsername) : undefined; // Active CR
|
|
201
203
|
|
|
202
204
|
const [activeChangeRequestID, setActiveChangeRequestID] = (0, _react.useState)(null);
|
|
203
205
|
const getRelatedClass = (0, _util._getRelatedClass)(itemClassConfiguration);
|
|
@@ -205,6 +207,7 @@ const BrowserCtxProvider = function ({
|
|
|
205
207
|
value: {
|
|
206
208
|
stakeholder,
|
|
207
209
|
registerMetadata,
|
|
210
|
+
offline: remoteUsername === undefined ? true : undefined,
|
|
208
211
|
subregisters,
|
|
209
212
|
itemClasses: itemClassConfiguration,
|
|
210
213
|
jumpTo: spawnTab,
|
|
@@ -213,7 +216,7 @@ const BrowserCtxProvider = function ({
|
|
|
213
216
|
setActiveChangeRequestID,
|
|
214
217
|
useRegisterItemData,
|
|
215
218
|
getRelatedItemClassConfiguration: getRelatedClass,
|
|
216
|
-
customViews: customViews
|
|
219
|
+
customViews: customViews !== null && customViews !== void 0 ? customViews : [],
|
|
217
220
|
keyExpression,
|
|
218
221
|
defaultSearchCriteria
|
|
219
222
|
}
|