@riboseinc/paneron-registry-kit 2.2.46 → 2.2.48
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/package.json +2 -2
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js +1 -0
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -1
- package/views/GenericRelatedItemView.js +5 -7
- package/views/GenericRelatedItemView.js.map +1 -1
- package/views/SearchQuery.js +1 -1
- package/views/SearchQuery.js.map +1 -1
- package/views/sidebar/ListItem.js +15 -9
- package/views/sidebar/ListItem.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@riboseinc/paneron-registry-kit",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.48",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"author": "Ribose Inc. <open.source@ribose.com>",
|
|
6
6
|
"scripts": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@blueprintjs/select": "~4.9.10",
|
|
29
29
|
"@emotion/react": "^11.10.6",
|
|
30
30
|
"@emotion/styled": "^11.10.6",
|
|
31
|
-
"@riboseinc/paneron-extension-kit": "2.2.
|
|
31
|
+
"@riboseinc/paneron-extension-kit": "2.2.29",
|
|
32
32
|
"@types/react": "17.0.53",
|
|
33
33
|
"@types/react-dom": "^17.0.2",
|
|
34
34
|
"@types/react-helmet": "^6.1.2",
|
|
@@ -190,6 +190,7 @@ const CUSTOM_CONDITION = {
|
|
|
190
190
|
|
|
191
191
|
return (0, _react.jsx)(_PropertyView.TextInput, {
|
|
192
192
|
className: className,
|
|
193
|
+
title: "If this expression returns \u2018false\u2019 for an item, that item is excluded from the list below. Expression must be written in JavaScript and can use special variables \u2018obj\u2019 and \u2018objPath\u2019.",
|
|
193
194
|
value: (_a = data.customExpression) !== null && _a !== void 0 ? _a : 'true',
|
|
194
195
|
placeholder: "Enter a valid query expression\u2026",
|
|
195
196
|
onChange: onChange ? customExpression => onChange({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CRITERIA_CONFIGURATION.js","sourceRoot":"","sources":["../../../src/views/FilterCriteria/CRITERIA_CONFIGURATION.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx } from '@emotion/react';\nimport type { OptionProps } from '@blueprintjs/core';\nimport { Select, TextInput } from '@riboseinc/paneron-extension-kit/widgets/Sidebar/PropertyView';\nimport type { CriteriaConfiguration, CriterionConfiguration } from './models';\nimport { SUBREGISTER_PATH_PREFIX } from './index';\n\n\nexport const ITEM_CLASS: CriterionConfiguration<{ classID?: string }> = {\n label: \"item class is\",\n icon: 'cube',\n toQuery: ({ classID }, { subregisters }) => `objPath.indexOf(\"/${classID}/\") >= ${subregisters ? SUBREGISTER_PATH_PREFIX.length - 1 : 0}`,\n fromQuery: (query) => ({\n classID: query.split('/')[1],\n }),\n toSummary: ({ classID }, { itemClasses }) => {\n if (classID) {\n return itemClasses[classID]?.meta.title ?? classID;\n } else {\n return \"(N/A)\";\n }\n },\n widget: ({ data, onChange, itemClasses, availableClassIDs, className, style }) => {\n const itemClassChoices: OptionProps[] = [\n ...Object.entries(itemClasses).\n filter(([clsID, ]) => availableClassIDs.indexOf(clsID) >= 0).\n map(([classID, classData]) => {\n return {\n value: classID,\n label: classData?.meta?.title ?? \"Unknown class\",\n };\n }),\n { value: '', label: \"(not selected)\" },\n ];\n return (\n <Select\n className={className}\n style={style}\n fill\n options={itemClassChoices}\n value={data.classID ?? ''}\n disabled={!onChange}\n onChange={onChange\n ? (evt) => onChange!({ classID: evt.currentTarget.value })\n : undefined}\n />\n );\n },\n};\n\n\nexport const SUBREGISTER: CriterionConfiguration<{ subregisterID?: string }> = {\n label: \"is in subregister\",\n icon: 'folder-open',\n isEnabled: ({ subregisters }) => subregisters !== undefined,\n toQuery: ({ subregisterID }, { subregisters }) => subregisters !== undefined && subregisterID?.trim()\n ? `objPath.indexOf(\"/subregisters/${subregisterID}/\") === 0`\n : 'true',\n fromQuery: (query) => ({\n subregisterID: query.split('/')[2],\n }),\n toSummary: ({ subregisterID }, { subregisters }) => {\n if (subregisters && subregisterID) {\n return subregisters[subregisterID].title;\n } else {\n return \"(N/A)\";\n }\n },\n widget: ({ data, onChange, subregisters, className, style }) => {\n const subregisterChoices: OptionProps[] = [\n ...Object.entries(subregisters ?? {}).\n map(([subregisterID, subregisterInfo]) => {\n return { value: subregisterID, label: subregisterInfo.title };\n }),\n { value: '', label: \"(not selected)\" },\n ];\n return (\n <Select\n className={className}\n style={style}\n fill\n options={subregisterChoices}\n value={data.subregisterID ?? ''}\n disabled={!onChange}\n onChange={onChange\n ? (evt) => onChange!({ subregisterID: evt.currentTarget.value })\n : undefined}\n />\n );\n },\n};\n\n\nexport const RAW_SUBSTRING: CriterionConfiguration<{ substring?: string }> = {\n label: \"raw data contains\",\n icon: 'search-text',\n toQuery: ({ substring }) =>\n substring?.trim()\n ? `JSON.stringify(obj.data ?? {}).toLowerCase().indexOf(\"${substring.toLowerCase().replace(/\"/g, \"\\\\\\\"\")}\") >= 0`\n : `true`,\n fromQuery: (query) => ({\n substring: (query.\n split('JSON.stringify(obj.data ?? {}).toLowerCase().indexOf(\"')[1]?.\n split('\") >= 0')[0] ?? '').replace(/\\\\\"/g, '\"'),\n }),\n toSummary: ({ substring }) => {\n if (substring) {\n return substring.length > 20 ? `${substring.slice(0, 20)}…` : substring;\n } else {\n return 'N/A';\n }\n },\n widget: ({ data, onChange, className, style }) => {\n return <TextInput\n className={className}\n style={style}\n value={data.substring ?? ''}\n onChange={onChange ? substring => onChange!({ substring }) : undefined}\n />;\n },\n}\n\n\nexport const CUSTOM_CONDITION: CriterionConfiguration<{ customExpression?: string; }> = {\n label: \"condition is met\",\n icon: 'code',\n toQuery: ({ customExpression }) => customExpression ?? 'true',\n fromQuery: (query) => ({\n customExpression: query,\n }),\n toSummary: () => \"(custom test expr.)\",\n widget: ({ data, onChange, className }) => {\n return (\n <TextInput\n className={className}\n value={data.customExpression ?? 'true'}\n placeholder=\"Enter a valid query expression…\"\n onChange={onChange\n ? (customExpression) => onChange!({ customExpression })\n : undefined}\n />\n );\n },\n}\n\n\nexport const CRITERIA_CONFIGURATION: CriteriaConfiguration = {\n 'item-class': ITEM_CLASS,\n 'subregister': SUBREGISTER,\n 'raw-substring': RAW_SUBSTRING,\n 'custom': CUSTOM_CONDITION,\n};\n\n\nexport default CRITERIA_CONFIGURATION;\n"]}
|
|
1
|
+
{"version":3,"file":"CRITERIA_CONFIGURATION.js","sourceRoot":"","sources":["../../../src/views/FilterCriteria/CRITERIA_CONFIGURATION.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx } from '@emotion/react';\nimport type { OptionProps } from '@blueprintjs/core';\nimport { Select, TextInput } from '@riboseinc/paneron-extension-kit/widgets/Sidebar/PropertyView';\nimport type { CriteriaConfiguration, CriterionConfiguration } from './models';\nimport { SUBREGISTER_PATH_PREFIX } from './index';\n\n\nexport const ITEM_CLASS: CriterionConfiguration<{ classID?: string }> = {\n label: \"item class is\",\n icon: 'cube',\n toQuery: ({ classID }, { subregisters }) => `objPath.indexOf(\"/${classID}/\") >= ${subregisters ? SUBREGISTER_PATH_PREFIX.length - 1 : 0}`,\n fromQuery: (query) => ({\n classID: query.split('/')[1],\n }),\n toSummary: ({ classID }, { itemClasses }) => {\n if (classID) {\n return itemClasses[classID]?.meta.title ?? classID;\n } else {\n return \"(N/A)\";\n }\n },\n widget: ({ data, onChange, itemClasses, availableClassIDs, className, style }) => {\n const itemClassChoices: OptionProps[] = [\n ...Object.entries(itemClasses).\n filter(([clsID, ]) => availableClassIDs.indexOf(clsID) >= 0).\n map(([classID, classData]) => {\n return {\n value: classID,\n label: classData?.meta?.title ?? \"Unknown class\",\n };\n }),\n { value: '', label: \"(not selected)\" },\n ];\n return (\n <Select\n className={className}\n style={style}\n fill\n options={itemClassChoices}\n value={data.classID ?? ''}\n disabled={!onChange}\n onChange={onChange\n ? (evt) => onChange!({ classID: evt.currentTarget.value })\n : undefined}\n />\n );\n },\n};\n\n\nexport const SUBREGISTER: CriterionConfiguration<{ subregisterID?: string }> = {\n label: \"is in subregister\",\n icon: 'folder-open',\n isEnabled: ({ subregisters }) => subregisters !== undefined,\n toQuery: ({ subregisterID }, { subregisters }) => subregisters !== undefined && subregisterID?.trim()\n ? `objPath.indexOf(\"/subregisters/${subregisterID}/\") === 0`\n : 'true',\n fromQuery: (query) => ({\n subregisterID: query.split('/')[2],\n }),\n toSummary: ({ subregisterID }, { subregisters }) => {\n if (subregisters && subregisterID) {\n return subregisters[subregisterID].title;\n } else {\n return \"(N/A)\";\n }\n },\n widget: ({ data, onChange, subregisters, className, style }) => {\n const subregisterChoices: OptionProps[] = [\n ...Object.entries(subregisters ?? {}).\n map(([subregisterID, subregisterInfo]) => {\n return { value: subregisterID, label: subregisterInfo.title };\n }),\n { value: '', label: \"(not selected)\" },\n ];\n return (\n <Select\n className={className}\n style={style}\n fill\n options={subregisterChoices}\n value={data.subregisterID ?? ''}\n disabled={!onChange}\n onChange={onChange\n ? (evt) => onChange!({ subregisterID: evt.currentTarget.value })\n : undefined}\n />\n );\n },\n};\n\n\nexport const RAW_SUBSTRING: CriterionConfiguration<{ substring?: string }> = {\n label: \"raw data contains\",\n icon: 'search-text',\n toQuery: ({ substring }) =>\n substring?.trim()\n ? `JSON.stringify(obj.data ?? {}).toLowerCase().indexOf(\"${substring.toLowerCase().replace(/\"/g, \"\\\\\\\"\")}\") >= 0`\n : `true`,\n fromQuery: (query) => ({\n substring: (query.\n split('JSON.stringify(obj.data ?? {}).toLowerCase().indexOf(\"')[1]?.\n split('\") >= 0')[0] ?? '').replace(/\\\\\"/g, '\"'),\n }),\n toSummary: ({ substring }) => {\n if (substring) {\n return substring.length > 20 ? `${substring.slice(0, 20)}…` : substring;\n } else {\n return 'N/A';\n }\n },\n widget: ({ data, onChange, className, style }) => {\n return <TextInput\n className={className}\n style={style}\n value={data.substring ?? ''}\n onChange={onChange ? substring => onChange!({ substring }) : undefined}\n />;\n },\n}\n\n\nexport const CUSTOM_CONDITION: CriterionConfiguration<{ customExpression?: string; }> = {\n label: \"condition is met\",\n icon: 'code',\n toQuery: ({ customExpression }) => customExpression ?? 'true',\n fromQuery: (query) => ({\n customExpression: query,\n }),\n toSummary: () => \"(custom test expr.)\",\n widget: ({ data, onChange, className }) => {\n return (\n <TextInput\n className={className}\n title=\"If this expression returns ‘false’ for an item, that item is excluded from the list below. Expression must be written in JavaScript and can use special variables ‘obj’ and ‘objPath’.\"\n value={data.customExpression ?? 'true'}\n placeholder=\"Enter a valid query expression…\"\n onChange={onChange\n ? (customExpression) => onChange!({ customExpression })\n : undefined}\n />\n );\n },\n}\n\n\nexport const CRITERIA_CONFIGURATION: CriteriaConfiguration = {\n 'item-class': ITEM_CLASS,\n 'subregister': SUBREGISTER,\n 'raw-substring': RAW_SUBSTRING,\n 'custom': CUSTOM_CONDITION,\n};\n\n\nexport default CRITERIA_CONFIGURATION;\n"]}
|
|
@@ -182,8 +182,7 @@ const GenericRelatedItemView = function ({
|
|
|
182
182
|
}, [itemID, itemResult.isUpdating, onCreateNew, onChange, onClear]);
|
|
183
183
|
const itemTitle = hasItem ? `${itemClassTitle !== null && itemClassTitle !== void 0 ? itemClassTitle : 'unknown class'} item ${itemID !== null && itemID !== void 0 ? itemID : 'with unknown ID'}` : undefined;
|
|
184
184
|
/** Input ref for using within this component */
|
|
185
|
-
|
|
186
|
-
const cbRef = (0, _react2.useRef)(null);
|
|
185
|
+
//const cbRef = useRef<HTMLDivElement | null>(null);
|
|
187
186
|
|
|
188
187
|
const _drawerContainerRef = (0, _react2.useRef)(null);
|
|
189
188
|
|
|
@@ -197,16 +196,14 @@ const GenericRelatedItemView = function ({
|
|
|
197
196
|
className: className,
|
|
198
197
|
title: itemTitle,
|
|
199
198
|
...controlGroupProps
|
|
200
|
-
}, (0, _react.jsx)(
|
|
201
|
-
ref: cbRef
|
|
202
|
-
}), (0, _react.jsx)(_core.InputGroup, {
|
|
203
|
-
fill: hasItem,
|
|
199
|
+
}, (0, _react.jsx)(_core.InputGroup, {
|
|
204
200
|
readOnly: !onChange && !onClear,
|
|
205
201
|
inputRef: inputRef,
|
|
206
202
|
onChange: (0, _react2.useCallback)(() => void 0, []),
|
|
207
203
|
css: (0, _react.css)`
|
|
208
204
|
/* leftElement which displays itemView */
|
|
209
205
|
.bp4-input-left-container {
|
|
206
|
+
/* Some obscure magic */
|
|
210
207
|
top: unset;
|
|
211
208
|
bottom: .42em;
|
|
212
209
|
padding-left: 10px;
|
|
@@ -221,8 +218,9 @@ const GenericRelatedItemView = function ({
|
|
|
221
218
|
|
|
222
219
|
max-width: 70%;
|
|
223
220
|
}
|
|
221
|
+
flex-shrink: 1;
|
|
224
222
|
.bp4-input {
|
|
225
|
-
color: rgba(125, 125, 125, 0
|
|
223
|
+
color: rgba(125, 125, 125, 0);
|
|
226
224
|
font-family: monospace;
|
|
227
225
|
}
|
|
228
226
|
`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericRelatedItemView.js","sourceRoot":"","sources":["../../src/views/GenericRelatedItemView.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx, css } from '@emotion/react';\nimport React, { useRef, useContext, useCallback, useMemo, useState } from 'react';\nimport { InputGroup, Button, ControlGroup, type ControlGroupProps, type ButtonProps } from '@blueprintjs/core';\nimport {\n type GenericRelatedItemViewProps,\n type RelatedItemClassConfiguration,\n isRegisterItem,\n} from '../types';\nimport { ChangeRequestContext } from '../proposals/ChangeRequestContext';\nimport { isDrafted } from '../proposals/types';\nimport { BrowserCtx } from './BrowserCtx';\nimport ItemSearchDrawer from './ItemSearchDrawer';\nimport ItemDetailsDrawer from './ItemDetailsDrawer';\n\n\nconst DUMMY_REF = {\n classID: '',\n itemID: '',\n subregisterID: '',\n} as const;\n\n\nexport const GenericRelatedItemView: React.FC<GenericRelatedItemViewProps & {\n controlGroupProps?: ControlGroupProps\n}> = function ({\n itemRef, className,\n onCreateNew, onClear, onChange,\n availableClassIDs,\n onJump,\n inputRef,\n controlGroupProps,\n // availableSubregisterIDs,\n // itemSorter,\n}) {\n const {\n useRegisterItemData,\n getRelatedItemClassConfiguration,\n jumpTo,\n } = useContext(BrowserCtx);\n const { changeRequest: activeChangeRequest } = useContext(ChangeRequestContext);\n const { classID, itemID, subregisterID } = itemRef ?? DUMMY_REF;\n\n const itemPathWithClass = `${classID}/${itemID}.yaml`;\n // If curretn register has subregisters, specify subregister-relative path\n const itemPathWithSubregister = subregisterID\n ? `subregisters/${subregisterID}/${itemPathWithClass}`\n : `${itemPathWithClass}`;\n // If a change request is active\n // and this item is among clarifications or additions\n // then use item path relative to the change request\n // TODO: make useRegisterItemData() handle active change request\n const affectedByActiveCR = (\n activeChangeRequest &&\n isDrafted(activeChangeRequest) &&\n activeChangeRequest.items[itemPathWithSubregister]\n );\n const itemPath = affectedByActiveCR\n ? `/proposals/${activeChangeRequest.id}/items/${itemPathWithSubregister}`\n : `/${itemPathWithSubregister}`;\n\n const [selectDialogState, setSelectDialogState] = useState(false);\n const [peekingDrawerState, setPeekingDrawerState] = useState(false);\n\n //log.debug(\"Rendering generic related item view\", itemRef);\n //const { jumpToItem } = useContext(BrowserCtx);\n\n const itemResult = useRegisterItemData({ itemPaths: [itemPath] });\n const item = (itemResult.value?.[itemPath] || null);\n\n const [classConfigured, cfg]: [boolean, RelatedItemClassConfiguration] = useMemo(() => {\n let classConfigured: boolean;\n let cfg: RelatedItemClassConfiguration;\n try {\n cfg = getRelatedItemClassConfiguration(classID);\n classConfigured = true;\n } catch (e) {\n cfg = {\n title: classID,\n itemView: () => <span>{itemID}</span>\n };\n classConfigured = false;\n }\n return [classConfigured, cfg];\n }, [itemID, classID, getRelatedItemClassConfiguration]);\n\n const Item = cfg.itemView;\n\n const classIDs = useMemo((() =>\n availableClassIDs ?? ((itemRef?.classID ?? '') !== '' ? [itemRef!.classID] : [])\n ), [availableClassIDs?.join(','), itemRef?.classID]);\n\n const itemClassTitle = cfg.title.trim() || null;\n\n const hasItem = item !== null && classConfigured && isRegisterItem(item);\n const itemIsMissing = itemID !== '' && (item === null && !itemResult.isUpdating);\n const willShowItemView = hasItem || itemIsMissing || !onChange;\n const canJump = (item !== null || itemIsMissing) && classConfigured && !itemResult.isUpdating && (onJump || jumpTo);\n\n const jump = useCallback(function jump() {\n return onJump\n ? onJump()\n : setPeekingDrawerState(true)\n }, [onJump, jumpTo]);\n\n const itemView: JSX.Element | null = useMemo(() => {\n const classView = <small css={css`letter-spacing: -.01em`}>\n {itemClassTitle\n ? itemClassTitle\n : <em>unknown class</em>}\n </small>;\n const itemView = hasItem\n ? <Item\n itemRef={{ classID, itemID, subregisterID }}\n itemData={item.data}\n />\n : itemIsMissing\n ? <span css={css`overflow: hidden; text-overflow: ellipsis;`}>\n Not found: {itemID ?? 'N/A'}\n </span>\n : <span>Not specified</span>;\n return <>{itemView} {classView}</>;\n }, [itemID, classID, itemClassTitle, subregisterID, item?.data, hasItem, itemIsMissing]);\n\n const itemButtons = useMemo(() => {\n const canAutoCreateRelatedItem = itemID === '' && onCreateNew && !itemResult.isUpdating;\n const canChangeRelatedItem = /*classIDs.length >= 1 && */onChange && !itemResult.isUpdating;\n const canClear = onClear && itemID !== '' && !itemResult.isUpdating;\n\n let itemButtons: (ButtonProps & { title: string })[] = [];\n\n async function handleCreateNew() {\n if (!onCreateNew) { return; }\n const itemRef = await onCreateNew();\n console.debug(\"Created new item\", itemRef);\n }\n\n if (!hasItem && canAutoCreateRelatedItem) {\n itemButtons.push({\n onClick: handleCreateNew,\n icon: 'add',\n text: 'Auto create',\n intent: 'primary',\n title: \"Automatically create new item\",\n });\n }\n if (canChangeRelatedItem) {\n itemButtons.push({\n onClick: () => setSelectDialogState(true),\n icon: 'edit',\n text: willShowItemView ? undefined : 'Specify',\n intent: 'primary',\n title: \"Select related item\",\n /*disabled: classIDs.length < 1,*/\n });\n }\n if (canClear) {\n itemButtons.push({\n onClick: onClear,\n icon: 'eraser',\n intent: 'danger',\n title: \"Clear related item selection\",\n });\n }\n\n return itemButtons;\n }, [itemID, itemResult.isUpdating, onCreateNew, onChange, onClear]);\n\n const itemTitle = hasItem\n ? `${itemClassTitle ?? 'unknown class'} item ${itemID ?? 'with unknown ID'}`\n : undefined;\n\n /** Input ref for using within this component */\n const cbRef = useRef<HTMLDivElement | null>(null);\n const _drawerContainerRef = useRef<HTMLElement | null>(null);\n const closePeekingDrawer = useCallback(\n (() => setPeekingDrawerState(false)),\n [setPeekingDrawerState]);\n\n const _itemRef = useMemo(() => itemRef, [JSON.stringify(itemRef)]);\n\n //log.debug(\"Rendering generic related item view: got item\", item);\n return (\n <ControlGroup\n dir=\"ltr\"\n className={className}\n title={itemTitle}\n {...controlGroupProps}>\n\n <div ref={cbRef} />\n\n <InputGroup\n fill={hasItem}\n readOnly={!onChange && !onClear}\n inputRef={inputRef}\n onChange={useCallback(() => void 0, [])}\n css={css`\n /* leftElement which displays itemView */\n .bp4-input-left-container {\n top: unset;\n bottom: .42em;\n padding-left: 10px;\n padding-right: 5px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: baseline;\n\n max-width: 70%;\n }\n .bp4-input {\n color: rgba(125, 125, 125, 0.5);\n font-family: monospace;\n }\n `}\n leftElement={itemView}\n value={itemID ?? ''}\n title={itemTitle}\n />\n\n {canJump\n ? <Button outlined onClick={jump} icon=\"maximize\" />\n : null}\n\n {itemButtons.map((props, idx) =>\n <Button key={idx} outlined {...props} />\n )}\n\n <ItemSearchDrawer\n isOpen={selectDialogState}\n onClose={useCallback(\n () => setSelectDialogState(false),\n [setSelectDialogState])}\n onChooseItem={onChange}\n availableClassIDs={classIDs}\n />\n\n {_itemRef\n ? <ItemDetailsDrawer\n isOpen={peekingDrawerState}\n onClose={closePeekingDrawer}\n itemRef={_itemRef}\n portalContainer={_drawerContainerRef.current ?? undefined}\n />\n : null}\n\n </ControlGroup>\n );\n};\n\n\nexport default GenericRelatedItemView;\n"]}
|
|
1
|
+
{"version":3,"file":"GenericRelatedItemView.js","sourceRoot":"","sources":["../../src/views/GenericRelatedItemView.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx, css } from '@emotion/react';\nimport React, { useRef, useContext, useCallback, useMemo, useState } from 'react';\nimport { InputGroup, Button, ControlGroup, type ControlGroupProps, type ButtonProps } from '@blueprintjs/core';\nimport {\n type GenericRelatedItemViewProps,\n type RelatedItemClassConfiguration,\n isRegisterItem,\n} from '../types';\nimport { ChangeRequestContext } from '../proposals/ChangeRequestContext';\nimport { isDrafted } from '../proposals/types';\nimport { BrowserCtx } from './BrowserCtx';\nimport ItemSearchDrawer from './ItemSearchDrawer';\nimport ItemDetailsDrawer from './ItemDetailsDrawer';\n\n\nconst DUMMY_REF = {\n classID: '',\n itemID: '',\n subregisterID: '',\n} as const;\n\n\nexport const GenericRelatedItemView: React.FC<GenericRelatedItemViewProps & {\n controlGroupProps?: ControlGroupProps\n}> = function ({\n itemRef, className,\n onCreateNew, onClear, onChange,\n availableClassIDs,\n onJump,\n inputRef,\n controlGroupProps,\n // availableSubregisterIDs,\n // itemSorter,\n}) {\n const {\n useRegisterItemData,\n getRelatedItemClassConfiguration,\n jumpTo,\n } = useContext(BrowserCtx);\n const { changeRequest: activeChangeRequest } = useContext(ChangeRequestContext);\n const { classID, itemID, subregisterID } = itemRef ?? DUMMY_REF;\n\n const itemPathWithClass = `${classID}/${itemID}.yaml`;\n // If curretn register has subregisters, specify subregister-relative path\n const itemPathWithSubregister = subregisterID\n ? `subregisters/${subregisterID}/${itemPathWithClass}`\n : `${itemPathWithClass}`;\n // If a change request is active\n // and this item is among clarifications or additions\n // then use item path relative to the change request\n // TODO: make useRegisterItemData() handle active change request\n const affectedByActiveCR = (\n activeChangeRequest &&\n isDrafted(activeChangeRequest) &&\n activeChangeRequest.items[itemPathWithSubregister]\n );\n const itemPath = affectedByActiveCR\n ? `/proposals/${activeChangeRequest.id}/items/${itemPathWithSubregister}`\n : `/${itemPathWithSubregister}`;\n\n const [selectDialogState, setSelectDialogState] = useState(false);\n const [peekingDrawerState, setPeekingDrawerState] = useState(false);\n\n //log.debug(\"Rendering generic related item view\", itemRef);\n //const { jumpToItem } = useContext(BrowserCtx);\n\n const itemResult = useRegisterItemData({ itemPaths: [itemPath] });\n const item = (itemResult.value?.[itemPath] || null);\n\n const [classConfigured, cfg]: [boolean, RelatedItemClassConfiguration] = useMemo(() => {\n let classConfigured: boolean;\n let cfg: RelatedItemClassConfiguration;\n try {\n cfg = getRelatedItemClassConfiguration(classID);\n classConfigured = true;\n } catch (e) {\n cfg = {\n title: classID,\n itemView: () => <span>{itemID}</span>\n };\n classConfigured = false;\n }\n return [classConfigured, cfg];\n }, [itemID, classID, getRelatedItemClassConfiguration]);\n\n const Item = cfg.itemView;\n\n const classIDs = useMemo((() =>\n availableClassIDs ?? ((itemRef?.classID ?? '') !== '' ? [itemRef!.classID] : [])\n ), [availableClassIDs?.join(','), itemRef?.classID]);\n\n const itemClassTitle = cfg.title.trim() || null;\n\n const hasItem = item !== null && classConfigured && isRegisterItem(item);\n const itemIsMissing = itemID !== '' && (item === null && !itemResult.isUpdating);\n const willShowItemView = hasItem || itemIsMissing || !onChange;\n const canJump = (item !== null || itemIsMissing) && classConfigured && !itemResult.isUpdating && (onJump || jumpTo);\n\n const jump = useCallback(function jump() {\n return onJump\n ? onJump()\n : setPeekingDrawerState(true)\n }, [onJump, jumpTo]);\n\n const itemView: JSX.Element | null = useMemo(() => {\n const classView = <small css={css`letter-spacing: -.01em`}>\n {itemClassTitle\n ? itemClassTitle\n : <em>unknown class</em>}\n </small>;\n const itemView = hasItem\n ? <Item\n itemRef={{ classID, itemID, subregisterID }}\n itemData={item.data}\n />\n : itemIsMissing\n ? <span css={css`overflow: hidden; text-overflow: ellipsis;`}>\n Not found: {itemID ?? 'N/A'}\n </span>\n : <span>Not specified</span>;\n return <>{itemView} {classView}</>;\n }, [itemID, classID, itemClassTitle, subregisterID, item?.data, hasItem, itemIsMissing]);\n\n const itemButtons = useMemo(() => {\n const canAutoCreateRelatedItem = itemID === '' && onCreateNew && !itemResult.isUpdating;\n const canChangeRelatedItem = /*classIDs.length >= 1 && */onChange && !itemResult.isUpdating;\n const canClear = onClear && itemID !== '' && !itemResult.isUpdating;\n\n let itemButtons: (ButtonProps & { title: string })[] = [];\n\n async function handleCreateNew() {\n if (!onCreateNew) { return; }\n const itemRef = await onCreateNew();\n console.debug(\"Created new item\", itemRef);\n }\n\n if (!hasItem && canAutoCreateRelatedItem) {\n itemButtons.push({\n onClick: handleCreateNew,\n icon: 'add',\n text: 'Auto create',\n intent: 'primary',\n title: \"Automatically create new item\",\n });\n }\n if (canChangeRelatedItem) {\n itemButtons.push({\n onClick: () => setSelectDialogState(true),\n icon: 'edit',\n text: willShowItemView ? undefined : 'Specify',\n intent: 'primary',\n title: \"Select related item\",\n /*disabled: classIDs.length < 1,*/\n });\n }\n if (canClear) {\n itemButtons.push({\n onClick: onClear,\n icon: 'eraser',\n intent: 'danger',\n title: \"Clear related item selection\",\n });\n }\n\n return itemButtons;\n }, [itemID, itemResult.isUpdating, onCreateNew, onChange, onClear]);\n\n const itemTitle = hasItem\n ? `${itemClassTitle ?? 'unknown class'} item ${itemID ?? 'with unknown ID'}`\n : undefined;\n\n /** Input ref for using within this component */\n //const cbRef = useRef<HTMLDivElement | null>(null);\n const _drawerContainerRef = useRef<HTMLElement | null>(null);\n const closePeekingDrawer = useCallback(\n (() => setPeekingDrawerState(false)),\n [setPeekingDrawerState]);\n\n const _itemRef = useMemo(() => itemRef, [JSON.stringify(itemRef)]);\n\n //log.debug(\"Rendering generic related item view: got item\", item);\n return (\n <ControlGroup\n dir=\"ltr\"\n className={className}\n title={itemTitle}\n {...controlGroupProps}>\n\n {/*<div ref={cbRef} />*/}\n\n {/*\n It could technically be a div, since input is empty,\n but that input is useful\n if callers utilize inputRef for form validation API,\n for example.\n */}\n <InputGroup\n readOnly={!onChange && !onClear}\n inputRef={inputRef}\n onChange={useCallback(() => void 0, [])}\n css={css`\n /* leftElement which displays itemView */\n .bp4-input-left-container {\n /* Some obscure magic */\n top: unset;\n bottom: .42em;\n padding-left: 10px;\n padding-right: 5px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: baseline;\n\n max-width: 70%;\n }\n flex-shrink: 1;\n .bp4-input {\n color: rgba(125, 125, 125, 0);\n font-family: monospace;\n }\n `}\n leftElement={itemView}\n value={itemID ?? ''}\n title={itemTitle}\n />\n\n {canJump\n ? <Button outlined onClick={jump} icon=\"maximize\" />\n : null}\n\n {itemButtons.map((props, idx) =>\n <Button key={idx} outlined {...props} />\n )}\n\n <ItemSearchDrawer\n isOpen={selectDialogState}\n onClose={useCallback(\n () => setSelectDialogState(false),\n [setSelectDialogState])}\n onChooseItem={onChange}\n availableClassIDs={classIDs}\n />\n\n {_itemRef\n ? <ItemDetailsDrawer\n isOpen={peekingDrawerState}\n onClose={closePeekingDrawer}\n itemRef={_itemRef}\n portalContainer={_drawerContainerRef.current ?? undefined}\n />\n : null}\n\n </ControlGroup>\n );\n};\n\n\nexport default GenericRelatedItemView;\n"]}
|
package/views/SearchQuery.js
CHANGED
package/views/SearchQuery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchQuery.js","sourceRoot":"","sources":["../../src/views/SearchQuery.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACnG,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE1F,OAAO,8BAA8B,MAAM,iDAAiD,CAAC;AAC7F,+EAA+E;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,MAAM,WAAW,GASZ,IAAI,CAAC,UAAU,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,SAAS,GACV;IACC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,uBAAuB,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEtF,MAAM,CAAE,eAAe,EAAE,qBAAqB,CAAE,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,OAAO,CACtB,CAAC,GAAG,EAAE,CACJ,iBAAiB,KAAK,SAAS;QAC7B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC,CAAC,iBAAiB,CACtB,EACD,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;IAEpC,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,WAAW,CAAC,SAAS,mBAAmB;QAClE,IAAI,iBAAiB,EAAE;YACrB,IAAI,uBAAuB,EAAE;gBAC3B,OAAO;oBACL,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAC7B,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,iBAAiB,CAAC,EAAE,EAChE,EAAE,WAAW,EAAE,YAAY,EAAE,CAC9B;iBACF,CAAA;aACF;iBAAM;gBACL,OAAO;oBACL,GAAG,EAAE,eAAe;oBACpB,KAAK,EAAE,aAAa,CAAC,OAAO,CAC1B,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAChC,EAAE,WAAW,EAAE,YAAY,EAAE,CAC9B;iBACF,CAAA;aACF;SACF;aAAM;YACL,OAAO;gBACL,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAC7B,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"SearchQuery.js","sourceRoot":"","sources":["../../src/views/SearchQuery.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { memo, useMemo, useEffect, useRef, useState, useContext, useCallback } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport { Button, ControlGroup, Colors, InputGroup, Tag, ButtonGroup } from '@blueprintjs/core';\nimport CriteriaTree from './FilterCriteria';\nimport { CUSTOM_CONDITION, RAW_SUBSTRING } from './FilterCriteria/CRITERIA_CONFIGURATION';\nimport { CriteriaGroup, Criterion } from './FilterCriteria/models';\nimport criteriaGroupToQueryExpression from './FilterCriteria/criteriaGroupToQueryExpression';\n//import criteriaGroupToSummary from './FilterCriteria/criteriaGroupToSummary';\nimport { BrowserCtx } from './BrowserCtx';\n\n\nconst SearchQuery: React.FC<{\n rootCriteria: CriteriaGroup;\n onCriteriaChange?: (rootCriteria: CriteriaGroup) => void;\n\n quickSearchString: string;\n onQuickSearchStringChange?: (searchString: string) => void;\n\n availableClassIDs?: string[];\n className?: string;\n}> = memo(function ({\n rootCriteria,\n onCriteriaChange,\n quickSearchString,\n onQuickSearchStringChange,\n availableClassIDs,\n className,\n}) {\n const { itemClasses, subregisters, getQuickSearchPredicate } = useContext(BrowserCtx);\n\n const [ editingAdvanced, toggleEditingAdvanced ] = useState<boolean>(false);\n\n const classIDs = useMemo(\n (() =>\n availableClassIDs === undefined\n ? Object.keys(itemClasses)\n : availableClassIDs\n ),\n [availableClassIDs, itemClasses]);\n\n const hasAdvancedQuery = rootCriteria.criteria.length > 0;\n\n const makeDefaultCriteria = useCallback(function makeDefaultCriteria(): Criterion {\n if (quickSearchString) {\n if (getQuickSearchPredicate) {\n return {\n key: 'custom',\n query: CUSTOM_CONDITION.toQuery(\n { customExpression: getQuickSearchPredicate(quickSearchString) },\n { itemClasses, subregisters },\n ),\n }\n } else {\n return {\n key: 'raw-substring',\n query: RAW_SUBSTRING.toQuery(\n { substring: quickSearchString },\n { itemClasses, subregisters },\n ),\n }\n }\n } else {\n return {\n key: 'custom',\n query: CUSTOM_CONDITION.toQuery(\n { customExpression: 'true' },\n { itemClasses, subregisters },\n ),\n }\n }\n }, [quickSearchString, getQuickSearchPredicate, itemClasses, subregisters]);\n\n const quickSearchIsEnabled = onQuickSearchStringChange && !hasAdvancedQuery;\n const quickSearchInputRef = useRef<HTMLInputElement | null>(null);\n useEffect(() => {\n if (quickSearchIsEnabled && quickSearchInputRef.current) {\n quickSearchInputRef.current.focus();\n }\n }, []);\n\n return (\n <ControlGroup fill vertical className={className}>\n <InputGroup\n fill\n inputRef={quickSearchInputRef}\n disabled={!quickSearchIsEnabled}\n value={hasAdvancedQuery ? '' : quickSearchString}\n leftIcon=\"search\"\n placeholder=\"Quick search\"\n title={!hasAdvancedQuery\n ? \"Searching common item attributes (such as names, descriptions, identifiers).\"\n : \"Advanced query overrides quick search. Remove advanced query to re-enable.\"}\n css={css`width: 200px; ${quickSearchString !== '' && !hasAdvancedQuery ? 'input { font-weight: bold; }' : ''}`}\n rightElement={<Button\n disabled={!onQuickSearchStringChange || quickSearchString === '' || hasAdvancedQuery}\n onClick={() => onQuickSearchStringChange?.('')}\n small\n minimal\n icon=\"cross\"\n title=\"Clear quick search\"\n />}\n onChange={evt => onQuickSearchStringChange?.(evt.currentTarget.value)}\n />\n <ButtonGroup fill>\n <Button\n fill\n small\n minimal\n title=\"Edit advanced search query\"\n icon='filter'\n onClick={!hasAdvancedQuery\n ? (() => {\n onCriteriaChange!({ criteria: [makeDefaultCriteria()], require: 'all' });\n toggleEditingAdvanced(true);\n })\n : () => toggleEditingAdvanced(v => !v)}\n active={editingAdvanced && hasAdvancedQuery}\n disabled={!hasAdvancedQuery && !onCriteriaChange}\n rightIcon={rootCriteria.criteria.length > 0\n ? <Tag intent=\"success\" round>on</Tag>\n : <Tag round>off</Tag>}>\n Advanced\n </Button>\n </ButtonGroup>\n {hasAdvancedQuery && editingAdvanced\n ? <>\n <CriteriaTree\n key=\"tree\"\n criteria={rootCriteria}\n onChange={onCriteriaChange}\n itemClasses={itemClasses}\n availableClassIDs={classIDs}\n subregisters={subregisters}\n css={css`max-height: 50vh; overflow-y: auto;`}\n />\n <div\n key=\"query\"\n css={css`\n margin-top: 5px;\n padding: 0 10px 10px 10px;\n color: ${Colors.GRAY3};\n font-size: 90%;\n overflow-wrap: break-word;\n `}>\n Query used: <code>{criteriaGroupToQueryExpression(rootCriteria)}</code>\n </div>\n </>\n : null}\n </ControlGroup>\n );\n});\n\nexport default SearchQuery;\n"]}
|
|
@@ -26,17 +26,23 @@ const ListItem = (0, _react.memo)(function ({
|
|
|
26
26
|
subregisters,
|
|
27
27
|
getRelatedItemClassConfiguration
|
|
28
28
|
} = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
29
|
-
const
|
|
30
|
-
const clsConfig = getRelatedItemClassConfiguration(itemRef.classID);
|
|
31
|
-
const ListItemView = clsConfig.itemView;
|
|
32
|
-
const itemPayload = objectData === null || objectData === void 0 ? void 0 : objectData.data;
|
|
33
|
-
const itemView = itemPayload ? (0, _react2.jsx)(ListItemView, {
|
|
34
|
-
itemData: itemPayload,
|
|
35
|
-
itemRef: itemRef
|
|
36
|
-
}) : (0, _react2.jsx)("span", {
|
|
29
|
+
const fallbackView = (0, _react2.jsx)("span", {
|
|
37
30
|
css: (0, _react2.css)`opacity: .4`
|
|
38
31
|
}, "(missing item data at ", objectPath, ")");
|
|
39
|
-
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
const itemRef = (0, _itemPathUtils.itemPathToItemRef)(subregisters !== undefined, objectPath);
|
|
35
|
+
const clsConfig = getRelatedItemClassConfiguration(itemRef.classID);
|
|
36
|
+
const ListItemView = clsConfig.itemView;
|
|
37
|
+
const itemPayload = objectData === null || objectData === void 0 ? void 0 : objectData.data;
|
|
38
|
+
const itemView = itemPayload ? (0, _react2.jsx)(ListItemView, {
|
|
39
|
+
itemData: itemPayload,
|
|
40
|
+
itemRef: itemRef
|
|
41
|
+
}) : fallbackView;
|
|
42
|
+
return itemView;
|
|
43
|
+
} catch (e) {
|
|
44
|
+
return fallbackView;
|
|
45
|
+
}
|
|
40
46
|
});
|
|
41
47
|
var _default = ListItem;
|
|
42
48
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../src/views/sidebar/ListItem.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAc,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,+BAA+B;AAC/B,MAAM,QAAQ,GACd,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;IACvC,MAAM,EAAE,YAAY,EAAE,gCAAgC,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../src/views/sidebar/ListItem.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAc,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,+BAA+B;AAC/B,MAAM,QAAQ,GACd,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;IACvC,MAAM,EAAE,YAAY,EAAE,gCAAgC,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAElF,MAAM,YAAY,GAAG,CACnB,cAAM,GAAG,EAAE,GAAG,CAAA,aAAa;;QACF,UAAU;YAC5B,CACR,CAAC;IAEF,IAAI;QACF,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,KAAK,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,gCAAgC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC;QACxC,MAAM,WAAW,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC;QAErC,MAAM,QAAQ,GAAG,WAAW;YAC1B,CAAC,CAAC,IAAC,YAAY,IACX,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,OAAO,GAChB;YACJ,CAAC,CAAC,YAAY,CAAC;QAEjB,OAAO,QAAQ,CAAC;KACjB;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,YAAY,CAAC;KACrB;AACH,CAAC,CAAC,CAAC;AAGH,eAAe,QAAQ,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { memo, useContext } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport type { RegisterItem } from '../../types';\nimport { BrowserCtx } from '../BrowserCtx';\nimport { itemPathToItemRef } from '../itemPathUtils';\n\n\n/** Register item list view. */\nconst ListItem: React.FC<{ objectData: RegisterItem<any>, objectPath: string }> =\nmemo(function ({ objectData, objectPath }) {\n const { subregisters, getRelatedItemClassConfiguration } = useContext(BrowserCtx);\n\n const fallbackView = (\n <span css={css`opacity: .4`}>\n (missing item data at {objectPath})\n </span>\n );\n\n try {\n const itemRef = itemPathToItemRef(subregisters !== undefined, objectPath);\n const clsConfig = getRelatedItemClassConfiguration(itemRef.classID);\n const ListItemView = clsConfig.itemView;\n const itemPayload = objectData?.data;\n\n const itemView = itemPayload\n ? <ListItemView\n itemData={itemPayload}\n itemRef={itemRef}\n />\n : fallbackView;\n\n return itemView;\n } catch (e) {\n return fallbackView;\n }\n});\n\n\nexport default ListItem;\n"]}
|