@riboseinc/paneron-registry-kit 2.1.3 → 2.1.5
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 +1 -1
- package/types/views.d.ts +3 -2
- package/types/views.js.map +1 -1
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +1 -1
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -1
- package/views/hooks/useSingleRegisterItemData.d.ts +2 -2
- package/views/hooks/useSingleRegisterItemData.js.map +1 -1
- package/views/itemQueryUtils.d.ts +1 -0
- package/views/itemQueryUtils.js +3 -0
- package/views/itemQueryUtils.js.map +1 -1
- package/views/sidebar/ExportImport/ImportOptions.d.ts +1 -2
- package/views/sidebar/ExportImport/ImportOptions.js +4 -6
- package/views/sidebar/ExportImport/ImportOptions.js.map +1 -1
package/package.json
CHANGED
package/types/views.d.ts
CHANGED
|
@@ -152,10 +152,11 @@ export interface GenericRelatedItemViewProps {
|
|
|
152
152
|
/** Deprecated */
|
|
153
153
|
getRelatedItemClassConfiguration?: any;
|
|
154
154
|
}
|
|
155
|
-
export declare type ItemEditView<P extends Payload> = React.FC<
|
|
155
|
+
export declare type ItemEditView<P extends Payload> = React.FC<ItemEditViewProps<P>>;
|
|
156
|
+
export interface ItemEditViewProps<P extends Payload> extends RegistryItemViewProps<P> {
|
|
156
157
|
onChange?: (newData: P) => void;
|
|
157
158
|
onCreateRelatedItem?: (classID: string, subregisterID?: string) => Promise<InternalItemReference>;
|
|
158
|
-
}
|
|
159
|
+
}
|
|
159
160
|
export interface ItemDetailViewProps<P extends Payload> extends RegistryItemViewProps<P> {
|
|
160
161
|
}
|
|
161
162
|
export declare type ItemDetailView<P extends Payload> = React.FC<ItemDetailViewProps<P>>;
|
package/types/views.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/types/views.ts"],"names":[],"mappings":"","sourcesContent":["import type React from 'react';\nimport type { ButtonProps, MenuItemProps } from '@blueprintjs/core';\nimport type { ObjectDatasetRequest, ObjectDatasetResponse, ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport type { InternalItemReference, Payload, RegisterItem, RegisterItemClass } from './item';\nimport type { CriteriaGroup } from '../views/FilterCriteria/models';\n\n\n// Hooks\n\n/**\n * Mostly a wrapper around useObjectData, but coerces value type\n * (TODO: validate!) and takes into account change request from any\n * wrapping change request context. If a change request is present,\n * will substitute proposed item data unless `ignoreActiveCR` is set.\n *\n * NOTE: Despite the name, returns the entire RegisterItem,\n * not just the `.data` property with item payload.\n */\nexport type RegisterItemDataHook<P extends Payload = Payload> =\n (opts: { itemPaths: string[], ignoreActiveCR?: true }) => ValueHook<Record<string, RegisterItem<P> | null>>;\n\n\n// Extension configuration\n\n// TODO: Obsolete?\n// export interface ExtensionContext {\n// getRelatedItemClassConfiguration: (classID: string) => RelatedItemClassConfiguration\n// useRegisterItemData: RegisterItemDataHook\n// onJump?: () => void\n// }\n\nexport interface RegisterConfiguration\n<Items extends ItemClassConfigurationSet = Record<string, ItemClassConfiguration<any>>> {\n /**\n * Configuration for all items in this register.\n * This includes items in subregisters.\n */\n itemClassConfiguration: Items\n\n /**\n * Default expression used to sort an item.\n * Passed to useFilteredIndex().\n */\n keyExpression?: string\n\n /** Subregister information. */\n subregisters?: Subregisters<Items>\n}\n\nexport type Subregisters\n<Items extends ItemClassConfigurationSet = Record<string, ItemClassConfiguration<any>>> = {\n [subregisterID: string]: {\n title: string\n\n /** Names of item classes that go in this subregister. */\n itemClasses: (keyof Items)[]\n }\n};\n\nexport type ItemClassConfigurationSet = {\n [itemClassID: string]: ItemClassConfiguration<any>\n};\n\n\n\nexport interface ExportFormatConfiguration<P extends Payload> {\n /** The name of the export format. */\n label: string\n\n /**\n * Trailing part of the filename to save export as;\n * must include at least extension (with separator),\n * must not include any path prefix.\n */\n filenameExtension: string\n\n /**\n * The function that takes register item data and some helper functions\n * and is expected to return a blob.\n */\n exportItem: (\n itemData: RegisterItem<P>,\n opts: {\n getObjectData: (opts: ObjectDatasetRequest) => Promise<ObjectDatasetResponse>,\n getBlob: (val: string) => Promise<Uint8Array>,\n logger?: { log: Console[\"log\"], error: Console[\"error\"], debug: Console[\"debug\"] },\n },\n ) => Promise<Uint8Array>\n}\n\n\nexport interface ItemClassConfiguration<P extends Payload/*, F extends Field*/> {\n meta: RegisterItemClass\n\n itemCanBeSuperseded?: boolean\n // If false, items of this class cannot be superseded, only retired.\n // Default is true.\n\n defaults?: RegistryItemPayloadDefaults<P>\n // Used to pre-populate item data e.g. when a new item is created.\n\n validatePayload?: (item: P) => Promise<boolean>\n sanitizePayload?: (item: P) => Promise<P>\n\n // XXX: Confirm if obsolete and remove\n itemSorter?: (a: P, b: P) => number\n\n /**\n * Expression used to sort an item of this class.\n * Passed to useFilteredIndex().\n */\n keyExpression?: string\n\n exportFormats?: ExportFormatConfiguration<P>[]\n\n views: {\n listItemView: ItemListView<P>\n editView: ItemEditView<P>\n detailView?: ItemDetailView<P>\n }\n}\n\n\nexport interface RegistryViewProps\n<Items extends ItemClassConfigurationSet = Record<string, ItemClassConfiguration<any>>>\nextends RegisterConfiguration<Items> {\n /**\n * When search is initially opened, have this query pre-defined.\n * Not very useful since there are also preset searches in the browser now.\n */\n // TODO: Obsoluete?\n defaultSearchCriteria?: CriteriaGroup\n\n customViews?: CustomViewConfiguration[]\n}\n\nexport interface CustomViewConfiguration {\n id: string\n label: string\n description: string\n view: React.FC<{\n /** View can support optional path for custom state/inner navigation (provisional). */\n path: string\n }>\n icon?: JSX.Element\n}\n\n\n// Item views\n\nexport interface ItemAction {\n getButtonProps:\n (item: RegisterItem<any>, itemClass: ItemClassConfiguration<any>, subregisterID?: string) =>\n ButtonProps | MenuItemProps\n}\n\nexport type RegistryView = React.FC<RegistryViewProps>\n\ntype RegistryItemPayloadDefaults<P extends Payload> =\n Partial<Omit<P, 'id'>>;\n\n/**\n * A small part of item class configuration,\n * useful e.g. for formatting related items.\n */\nexport type RelatedItemClassConfiguration = {\n title: string\n itemView: ItemListView<any>\n}\n\n\nexport interface RegistryItemViewProps<P extends Payload> {\n /**\n * Item reference.\n * Glossarist, for example, uses it to determine language subregister and set appropriate writing direction.\n */\n itemRef: Omit<InternalItemReference, 'itemID'> & { itemID?: InternalItemReference['itemID'] }\n\n /** Item data (payload). */\n itemData: P\n\n className?: string\n //subregisterID?: string\n\n /** Deprecated */\n useRegisterItemData?: any\n /** Deprecated */\n getRelatedItemClassConfiguration?: any\n}\n\nexport interface GenericRelatedItemViewProps {\n /** Currently selected item’s ref. */\n itemRef?: InternalItemReference\n\n /**\n * By default, clicking the item will spawn a tab via TabbedWorkspace context.\n * This prop can customize that behavior.\n */\n onJump?: () => void\n\n className?: string\n //useRegisterItemData: RegisterItemDataHook\n //getRelatedItemClassConfiguration: ExtensionContext[\"getRelatedItemClassConfiguration\"]\n availableClassIDs?: string[]\n availableSubregisterIDs?: string[]\n\n // XXX: Check if obsolete, remove if unused\n itemSorter?: ItemClassConfiguration<any>[\"itemSorter\"]\n\n /** Called to auto-create an item (can’t auto-create if not provided) */\n onCreateNew?: () => Promise<InternalItemReference>\n\n /** Called when current item is cleared (can’t clear if not provided) */\n onClear?: () => void\n\n /** Called when a new item is selected (can’t change if not provided) */\n onChange?: (newRef: InternalItemReference) => void\n\n /** Deprecated */\n useRegisterItemData?: any\n /** Deprecated */\n getRelatedItemClassConfiguration?: any\n}\n\n\nexport type ItemEditView<P extends Payload> = React.FC<RegistryItemViewProps<P>
|
|
1
|
+
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/types/views.ts"],"names":[],"mappings":"","sourcesContent":["import type React from 'react';\nimport type { ButtonProps, MenuItemProps } from '@blueprintjs/core';\nimport type { ObjectDatasetRequest, ObjectDatasetResponse, ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport type { InternalItemReference, Payload, RegisterItem, RegisterItemClass } from './item';\nimport type { CriteriaGroup } from '../views/FilterCriteria/models';\n\n\n// Hooks\n\n/**\n * Mostly a wrapper around useObjectData, but coerces value type\n * (TODO: validate!) and takes into account change request from any\n * wrapping change request context. If a change request is present,\n * will substitute proposed item data unless `ignoreActiveCR` is set.\n *\n * NOTE: Despite the name, returns the entire RegisterItem,\n * not just the `.data` property with item payload.\n */\nexport type RegisterItemDataHook<P extends Payload = Payload> =\n (opts: { itemPaths: string[], ignoreActiveCR?: true }) => ValueHook<Record<string, RegisterItem<P> | null>>;\n\n\n// Extension configuration\n\n// TODO: Obsolete?\n// export interface ExtensionContext {\n// getRelatedItemClassConfiguration: (classID: string) => RelatedItemClassConfiguration\n// useRegisterItemData: RegisterItemDataHook\n// onJump?: () => void\n// }\n\nexport interface RegisterConfiguration\n<Items extends ItemClassConfigurationSet = Record<string, ItemClassConfiguration<any>>> {\n /**\n * Configuration for all items in this register.\n * This includes items in subregisters.\n */\n itemClassConfiguration: Items\n\n /**\n * Default expression used to sort an item.\n * Passed to useFilteredIndex().\n */\n keyExpression?: string\n\n /** Subregister information. */\n subregisters?: Subregisters<Items>\n}\n\nexport type Subregisters\n<Items extends ItemClassConfigurationSet = Record<string, ItemClassConfiguration<any>>> = {\n [subregisterID: string]: {\n title: string\n\n /** Names of item classes that go in this subregister. */\n itemClasses: (keyof Items)[]\n }\n};\n\nexport type ItemClassConfigurationSet = {\n [itemClassID: string]: ItemClassConfiguration<any>\n};\n\n\n\nexport interface ExportFormatConfiguration<P extends Payload> {\n /** The name of the export format. */\n label: string\n\n /**\n * Trailing part of the filename to save export as;\n * must include at least extension (with separator),\n * must not include any path prefix.\n */\n filenameExtension: string\n\n /**\n * The function that takes register item data and some helper functions\n * and is expected to return a blob.\n */\n exportItem: (\n itemData: RegisterItem<P>,\n opts: {\n getObjectData: (opts: ObjectDatasetRequest) => Promise<ObjectDatasetResponse>,\n getBlob: (val: string) => Promise<Uint8Array>,\n logger?: { log: Console[\"log\"], error: Console[\"error\"], debug: Console[\"debug\"] },\n },\n ) => Promise<Uint8Array>\n}\n\n\nexport interface ItemClassConfiguration<P extends Payload/*, F extends Field*/> {\n meta: RegisterItemClass\n\n itemCanBeSuperseded?: boolean\n // If false, items of this class cannot be superseded, only retired.\n // Default is true.\n\n defaults?: RegistryItemPayloadDefaults<P>\n // Used to pre-populate item data e.g. when a new item is created.\n\n validatePayload?: (item: P) => Promise<boolean>\n sanitizePayload?: (item: P) => Promise<P>\n\n // XXX: Confirm if obsolete and remove\n itemSorter?: (a: P, b: P) => number\n\n /**\n * Expression used to sort an item of this class.\n * Passed to useFilteredIndex().\n */\n keyExpression?: string\n\n exportFormats?: ExportFormatConfiguration<P>[]\n\n views: {\n listItemView: ItemListView<P>\n editView: ItemEditView<P>\n detailView?: ItemDetailView<P>\n }\n}\n\n\nexport interface RegistryViewProps\n<Items extends ItemClassConfigurationSet = Record<string, ItemClassConfiguration<any>>>\nextends RegisterConfiguration<Items> {\n /**\n * When search is initially opened, have this query pre-defined.\n * Not very useful since there are also preset searches in the browser now.\n */\n // TODO: Obsoluete?\n defaultSearchCriteria?: CriteriaGroup\n\n customViews?: CustomViewConfiguration[]\n}\n\nexport interface CustomViewConfiguration {\n id: string\n label: string\n description: string\n view: React.FC<{\n /** View can support optional path for custom state/inner navigation (provisional). */\n path: string\n }>\n icon?: JSX.Element\n}\n\n\n// Item views\n\nexport interface ItemAction {\n getButtonProps:\n (item: RegisterItem<any>, itemClass: ItemClassConfiguration<any>, subregisterID?: string) =>\n ButtonProps | MenuItemProps\n}\n\nexport type RegistryView = React.FC<RegistryViewProps>\n\ntype RegistryItemPayloadDefaults<P extends Payload> =\n Partial<Omit<P, 'id'>>;\n\n/**\n * A small part of item class configuration,\n * useful e.g. for formatting related items.\n */\nexport type RelatedItemClassConfiguration = {\n title: string\n itemView: ItemListView<any>\n}\n\n\nexport interface RegistryItemViewProps<P extends Payload> {\n /**\n * Item reference.\n * Glossarist, for example, uses it to determine language subregister and set appropriate writing direction.\n */\n itemRef: Omit<InternalItemReference, 'itemID'> & { itemID?: InternalItemReference['itemID'] }\n\n /** Item data (payload). */\n itemData: P\n\n className?: string\n //subregisterID?: string\n\n /** Deprecated */\n useRegisterItemData?: any\n /** Deprecated */\n getRelatedItemClassConfiguration?: any\n}\n\nexport interface GenericRelatedItemViewProps {\n /** Currently selected item’s ref. */\n itemRef?: InternalItemReference\n\n /**\n * By default, clicking the item will spawn a tab via TabbedWorkspace context.\n * This prop can customize that behavior.\n */\n onJump?: () => void\n\n className?: string\n //useRegisterItemData: RegisterItemDataHook\n //getRelatedItemClassConfiguration: ExtensionContext[\"getRelatedItemClassConfiguration\"]\n availableClassIDs?: string[]\n availableSubregisterIDs?: string[]\n\n // XXX: Check if obsolete, remove if unused\n itemSorter?: ItemClassConfiguration<any>[\"itemSorter\"]\n\n /** Called to auto-create an item (can’t auto-create if not provided) */\n onCreateNew?: () => Promise<InternalItemReference>\n\n /** Called when current item is cleared (can’t clear if not provided) */\n onClear?: () => void\n\n /** Called when a new item is selected (can’t change if not provided) */\n onChange?: (newRef: InternalItemReference) => void\n\n /** Deprecated */\n useRegisterItemData?: any\n /** Deprecated */\n getRelatedItemClassConfiguration?: any\n}\n\n\nexport type ItemEditView<P extends Payload> = React.FC<ItemEditViewProps<P>>;\n\nexport interface ItemEditViewProps<P extends Payload> extends RegistryItemViewProps<P> {\n onChange?: (newData: P) => void\n onCreateRelatedItem?:\n (classID: string, subregisterID?: string) => Promise<InternalItemReference>\n}\n\nexport interface ItemDetailViewProps<P extends Payload> extends RegistryItemViewProps<P> {\n //useRegisterItemData: RegisterItemDataHook\n}\n\nexport type ItemDetailView<P extends Payload> = React.FC<ItemDetailViewProps<P>>;\n\nexport interface ItemListViewProps<P extends Payload> extends RegistryItemViewProps<P> {\n}\n\nexport type ItemListView<P extends Payload> = React.FC<ItemListViewProps<P>>;\n\nexport type LazyItemView = React.FC<{ itemID: string }>;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
/** @jsxFrag React.Fragment */
|
|
3
|
-
import { CriteriaConfiguration, CriterionConfiguration } from './models';
|
|
3
|
+
import type { CriteriaConfiguration, CriterionConfiguration } from './models';
|
|
4
4
|
export declare const ITEM_CLASS: CriterionConfiguration<{
|
|
5
5
|
classID?: string;
|
|
6
6
|
}>;
|
|
@@ -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 { OptionProps } from '@blueprintjs/core';\nimport { Select, TextInput } from '@riboseinc/paneron-extension-kit/widgets/Sidebar/PropertyView';\nimport { 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 { value: classID, label: classData?.meta?.title ?? \"Unknown class\" };\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\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\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\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 { value: classID, label: classData?.meta?.title ?? \"Unknown class\" };\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\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\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\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,3 +1,3 @@
|
|
|
1
|
-
import { ValueHook } from '@riboseinc/paneron-extension-kit/types';
|
|
2
|
-
import { InternalItemReference, RegisterItem } from '../../types';
|
|
1
|
+
import type { ValueHook } from '@riboseinc/paneron-extension-kit/types';
|
|
2
|
+
import type { InternalItemReference, RegisterItem } from '../../types';
|
|
3
3
|
export default function useSingleRegisterItemData(ref: InternalItemReference | undefined): ValueHook<RegisterItem<any> | null>;
|
|
@@ -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;;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"]}
|
|
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 type { ValueHook } from '@riboseinc/paneron-extension-kit/types';\nimport { BrowserCtx } from '../BrowserCtx';\nimport { itemRefToItemPath } from '../itemPathUtils';\nimport type { 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"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Base as BaseCR } from '../types/cr';
|
|
2
|
+
export declare const REGISTER_ITEM_QUERY = "\n objPath.startsWith(\"/subregisters/\") || (\n objPath.split(\"/\").length === 3 &&\n !objPath.startsWith(\"/proposals/\")\n )\n";
|
|
2
3
|
/**
|
|
3
4
|
* Returns a query criteria for use with filtered indexes
|
|
4
5
|
* by combining given `queryExpression` with base query that matches only
|
package/views/itemQueryUtils.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getRegisterItemQuery = getRegisterItemQuery;
|
|
7
|
+
exports.REGISTER_ITEM_QUERY = void 0;
|
|
7
8
|
|
|
8
9
|
var _itemPathUtils = require("./itemPathUtils");
|
|
9
10
|
|
|
@@ -23,6 +24,8 @@ const REGISTER_ITEM_QUERY = `
|
|
|
23
24
|
* For clarifications, object path we want to match is normal
|
|
24
25
|
*/
|
|
25
26
|
|
|
27
|
+
exports.REGISTER_ITEM_QUERY = REGISTER_ITEM_QUERY;
|
|
28
|
+
|
|
26
29
|
function getItemInCRQuery(cr) {
|
|
27
30
|
//const affectedItemPathsQuoted: string[] = Object.entries(withCR.items).
|
|
28
31
|
// filter(([, proposal]) => proposal.type === 'clarification' || proposal.type === 'addition').
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itemQueryUtils.js","sourceRoot":"","sources":["../../src/views/itemQueryUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,0DAA0D;AAC1D,MAAM,mBAAmB,GAAG;;;;;
|
|
1
|
+
{"version":3,"file":"itemQueryUtils.js","sourceRoot":"","sources":["../../src/views/itemQueryUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,0DAA0D;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;CAKlC,CAAC;AAGF;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,EAAU;IAClC,yEAAyE;IACzE,gGAAgG;IAChG,qIAAqI;IACrI,MAAM,uBAAuB,GAAa,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;QAChE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC;QACvD,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAG,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9D,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC;AACxE,CAAC;AAGD;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,eAAuB,EAAE,MAAe;IAC3E,MAAM,SAAS,GAAG,MAAM;QACtB,CAAC,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,SAAS,mBAAmB,GAAG;QAC7D,CAAC,CAAC,mBAAmB,CAAC;IACxB,wCAAwC;IAExC,OAAO,WAAW,SAAS,SAAS,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC;AAChE,CAAC","sourcesContent":["import { Base as BaseCR } from '../types/cr';\nimport { itemPathInCR } from './itemPathUtils';\n\n\n// TODO: Should it be three path components? Probably four\nexport const REGISTER_ITEM_QUERY = `\n objPath.startsWith(\"/subregisters/\") || (\n objPath.split(\"/\").length === 3 &&\n !objPath.startsWith(\"/proposals/\")\n )\n`;\n\n\n/**\n * Returns a query that matches given register item object path\n * depending on how it appears in given change request.\n *\n * For additions, object path would be full in-proposal path\n * (the item doesn’t exist in the register “normally”), so we want to match that.\n * For clarifications, object path we want to match is normal\n */\nfunction getItemInCRQuery(cr: BaseCR): string {\n //const affectedItemPathsQuoted: string[] = Object.entries(withCR.items).\n // filter(([, proposal]) => proposal.type === 'clarification' || proposal.type === 'addition').\n // map(([itemPath, proposal]) => proposal.type === 'clarification' ? `\"${itemPath}\"` : `/proposals/${withCR.id}/items/${itemPath}`);\n const affectedItemPathsQuoted: string[] = Object.entries(cr.items).\n filter(([, proposal]) => proposal.type !== 'amendment').\n map(([itemPath, ]) => `\"${itemPathInCR(itemPath, cr.id)}\"`);\n return `[${affectedItemPathsQuoted.join(',')}].indexOf(objPath) >= 0`;\n}\n\n\n/**\n * Returns a query criteria for use with filtered indexes\n * by combining given `queryExpression` with base query that matches only\n * objects corresponding to register items.\n *\n * `withCR` should be set to active CR, and would make the query\n * additionally match clarified/added register items that did not yet make it\n * into the register proper.\n */\nexport function getRegisterItemQuery(queryExpression: string, withCR?: BaseCR): string {\n const baseQuery = withCR\n ? `(${getItemInCRQuery(withCR)}) || (${REGISTER_ITEM_QUERY})`\n : REGISTER_ITEM_QUERY;\n // console.debug(\"CR QUERY\", baseQuery);\n\n return `return (${baseQuery}) && (${queryExpression.trim()})`;\n}\n"]}
|
|
@@ -5,15 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.ImportSidebarBlock = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
|
+
var _react = require("@emotion/react");
|
|
11
9
|
|
|
12
10
|
/** @jsx jsx */
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
///** @jsxFrag React.Fragment */
|
|
12
|
+
//import React from 'react';
|
|
15
13
|
const ImportSidebarBlock = function () {
|
|
16
|
-
return
|
|
14
|
+
return (0, _react.jsx)("span", null, "Import TBD");
|
|
17
15
|
};
|
|
18
16
|
|
|
19
17
|
exports.ImportSidebarBlock = ImportSidebarBlock;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportOptions.js","sourceRoot":"","sources":["../../../../src/views/sidebar/ExportImport/ImportOptions.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,
|
|
1
|
+
{"version":3,"file":"ImportOptions.js","sourceRoot":"","sources":["../../../../src/views/sidebar/ExportImport/ImportOptions.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,gCAAgC;AAEhC,4BAA4B;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGrC,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,OAAO,+BAAuB,CAAC;AACjC,CAAC,CAAA;AAED,eAAe,kBAAkB,CAAC","sourcesContent":["/** @jsx jsx */\n///** @jsxFrag React.Fragment */\n\n//import React from 'react';\nimport { jsx } from '@emotion/react';\n\n\nexport const ImportSidebarBlock: React.FC<Record<never, never>> = function () {\n return <span>Import TBD</span>;\n}\n\nexport default ImportSidebarBlock;\n"]}
|