@gravity-ui/dashkit 9.1.3 → 9.2.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/build/cjs/components/GridLayout/GridLayout.js +3 -3
- package/build/cjs/components/GridLayout/GridLayout.js.map +1 -1
- package/build/cjs/components/MobileLayout/MobileLayout.js +4 -4
- package/build/cjs/components/MobileLayout/MobileLayout.js.map +1 -1
- package/build/cjs/components/MobileLayout/helpers.d.ts +1 -1
- package/build/cjs/components/MobileLayout/helpers.js +2 -2
- package/build/cjs/components/MobileLayout/helpers.js.map +1 -1
- package/build/cjs/context/DashKitContext.d.ts +1 -0
- package/build/cjs/context/DashKitContext.js.map +1 -1
- package/build/cjs/hocs/withContext.js +7 -3
- package/build/cjs/hocs/withContext.js.map +1 -1
- package/build/cjs/hooks/useCalcLayout.d.ts +2 -13
- package/build/cjs/hooks/useCalcLayout.js +12 -4
- package/build/cjs/hooks/useCalcLayout.js.map +1 -1
- package/build/cjs/shared/modules/__tests__/global-items.test.d.ts +1 -0
- package/build/cjs/shared/modules/__tests__/global-items.test.js +372 -0
- package/build/cjs/shared/modules/__tests__/global-items.test.js.map +1 -0
- package/build/cjs/shared/modules/helpers.d.ts +1 -0
- package/build/cjs/shared/modules/helpers.js +10 -2
- package/build/cjs/shared/modules/helpers.js.map +1 -1
- package/build/cjs/shared/modules/state-and-params.js +7 -2
- package/build/cjs/shared/modules/state-and-params.js.map +1 -1
- package/build/cjs/shared/modules/uniq-id.js +1 -1
- package/build/cjs/shared/modules/uniq-id.js.map +1 -1
- package/build/cjs/shared/types/config.d.ts +1 -0
- package/build/cjs/shared/types/config.js.map +1 -1
- package/build/cjs/typings/config.d.ts +1 -0
- package/build/cjs/typings/config.js.map +1 -1
- package/build/cjs/utils/update-manager.js +66 -36
- package/build/cjs/utils/update-manager.js.map +1 -1
- package/build/esm/components/GridLayout/GridLayout.js +3 -3
- package/build/esm/components/GridLayout/GridLayout.js.map +1 -1
- package/build/esm/components/MobileLayout/MobileLayout.js +4 -4
- package/build/esm/components/MobileLayout/MobileLayout.js.map +1 -1
- package/build/esm/components/MobileLayout/helpers.d.ts +1 -1
- package/build/esm/components/MobileLayout/helpers.js +2 -2
- package/build/esm/components/MobileLayout/helpers.js.map +1 -1
- package/build/esm/context/DashKitContext.d.ts +1 -0
- package/build/esm/context/DashKitContext.js.map +1 -1
- package/build/esm/hocs/withContext.js +8 -4
- package/build/esm/hocs/withContext.js.map +1 -1
- package/build/esm/hooks/useCalcLayout.d.ts +2 -13
- package/build/esm/hooks/useCalcLayout.js +12 -4
- package/build/esm/hooks/useCalcLayout.js.map +1 -1
- package/build/esm/shared/modules/__tests__/global-items.test.d.ts +1 -0
- package/build/esm/shared/modules/__tests__/global-items.test.js +370 -0
- package/build/esm/shared/modules/__tests__/global-items.test.js.map +1 -0
- package/build/esm/shared/modules/helpers.d.ts +1 -0
- package/build/esm/shared/modules/helpers.js +9 -2
- package/build/esm/shared/modules/helpers.js.map +1 -1
- package/build/esm/shared/modules/state-and-params.js +8 -3
- package/build/esm/shared/modules/state-and-params.js.map +1 -1
- package/build/esm/shared/modules/uniq-id.js +2 -2
- package/build/esm/shared/modules/uniq-id.js.map +1 -1
- package/build/esm/shared/types/config.d.ts +1 -0
- package/build/esm/shared/types/config.js.map +1 -1
- package/build/esm/typings/config.d.ts +1 -0
- package/build/esm/typings/config.js.map +1 -1
- package/build/esm/utils/update-manager.js +67 -37
- package/build/esm/utils/update-manager.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-and-params.js","sourceRoot":"../../../../src","sources":["shared/modules/state-and-params.ts"],"names":[],"mappings":"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","sourcesContent":["import groupBy from 'lodash/groupBy';\n\nimport {META_KEY} from '../constants';\nimport {\n Config,\n ConfigItem,\n ConfigItemDataWithTabs,\n ConfigItemGroup,\n GlobalParams,\n ItemState,\n ItemStateAndParams,\n ItemsStateAndParams,\n ItemsStateAndParamsBase,\n PluginBase,\n StateAndParamsMetaData,\n StringParams,\n} from '../types';\n\nimport {\n FormedQueueData,\n formQueueData,\n getCurrentVersion,\n getMapItemsIgnores,\n hasActionParam,\n isItemWithGroup,\n isItemWithTabs,\n mergeParamsWithAliases,\n pickActionParamsFromParams,\n pickExceptActionParamsFromParams,\n prerenderItems,\n resolveItemInnerId,\n} from './helpers';\n\nexport interface GetItemsParamsArg {\n defaultGlobalParams: GlobalParams;\n globalParams: GlobalParams;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n plugins: PluginBase[];\n useStateAsInitial?: boolean;\n}\n\ntype GetItemsParamsReturn = Record<string, StringParams | Record<string, StringParams>>;\n\nconst getParamsFromStateAndParams = ({\n itemsStateAndParams,\n parentItemId,\n item,\n}: {\n item: ConfigItem | ConfigItemGroup;\n itemsStateAndParams: ItemsStateAndParams;\n parentItemId?: string;\n}) => {\n const widgetId = parentItemId || item.id;\n\n if (!(widgetId in itemsStateAndParams)) {\n return {};\n }\n\n const stateAndParams = itemsStateAndParams as ItemsStateAndParamsBase;\n const itemParams = parentItemId\n ? Object.assign(\n {},\n (stateAndParams[widgetId].params as Record<string, StringParams>)[item.id],\n )\n : Object.assign({}, stateAndParams[widgetId].params as StringParams);\n\n return itemParams;\n};\n\nfunction getItemParams({\n item,\n itemsStateAndParams,\n mapItemsIgnores,\n itemsWithDefaultsByNamespace,\n getMergedParams,\n defaultGlobalParams,\n globalParams,\n isFirstVersion,\n queueData,\n parentItemId,\n useStateAsInitial,\n}: {\n item: ConfigItem | ConfigItemGroup;\n itemsStateAndParams: ItemsStateAndParams;\n mapItemsIgnores: Record<string, string[]>;\n itemsWithDefaultsByNamespace: Record<string, (ConfigItem | ConfigItemGroup)[]>;\n getMergedParams: (params: StringParams, actionParams?: StringParams) => StringParams;\n defaultGlobalParams: StringParams;\n globalParams: GlobalParams;\n isFirstVersion: boolean;\n queueData: FormedQueueData[];\n parentItemId?: string;\n useStateAsInitial?: boolean;\n}) {\n const {id, namespace} = item;\n\n let defaultWidgetParams: StringParams | Record<string, StringParams> = {};\n if (isItemWithTabs(item)) {\n const currentWidgetTabId = resolveItemInnerId({item, itemsStateAndParams});\n const itemTabs: ConfigItemDataWithTabs['tabs'] = item.data.tabs;\n defaultWidgetParams =\n itemTabs.find((tabItem) => tabItem?.id === currentWidgetTabId)?.params || {};\n } else {\n defaultWidgetParams = item.defaults || {};\n }\n\n const itemIgnores = mapItemsIgnores[id];\n\n const affectingItemsWithDefaults = itemsWithDefaultsByNamespace[namespace].filter(\n (itemWithDefaults) => !itemIgnores.includes(itemWithDefaults.id),\n );\n\n let itemParams: StringParams = Object.assign(\n {},\n getMergedParams(defaultGlobalParams),\n // default parameters to begin with\n affectingItemsWithDefaults.reduceRight((defaultParams: StringParams, itemWithDefaults) => {\n return {\n ...defaultParams,\n ...getMergedParams(itemWithDefaults.defaults || {}),\n };\n }, {}),\n getMergedParams(globalParams),\n useStateAsInitial\n ? getParamsFromStateAndParams({parentItemId, item, itemsStateAndParams})\n : {},\n );\n\n if (isFirstVersion) {\n itemParams = Object.assign(\n itemParams,\n (itemsStateAndParams as ItemsStateAndParamsBase)?.[id]?.params || {},\n );\n } else {\n // params according to queue of its applying\n let queueDataItemsParams: StringParams = {};\n for (const data of queueData) {\n if (data.namespace !== namespace || itemIgnores.includes(data.id)) {\n continue;\n }\n\n let actionParams;\n let params = data.params;\n const needAliasesForActionParams = data.id !== id && hasActionParam(data.params);\n if (needAliasesForActionParams) {\n actionParams = pickActionParamsFromParams(data.params);\n params = pickExceptActionParamsFromParams(data.params);\n }\n\n const mergedParams = getMergedParams(params, actionParams);\n\n queueDataItemsParams = {\n ...queueDataItemsParams,\n ...mergedParams,\n };\n }\n\n itemParams = Object.assign(itemParams, queueDataItemsParams);\n }\n\n return {...defaultWidgetParams, ...itemParams};\n}\n\nexport function getItemsParams({\n defaultGlobalParams = {},\n globalParams = {},\n config,\n itemsStateAndParams,\n plugins,\n useStateAsInitial,\n}: GetItemsParamsArg): GetItemsParamsReturn {\n const {aliases, connections} = config;\n const items = prerenderItems({items: config.items, plugins});\n const isFirstVersion = getCurrentVersion(itemsStateAndParams) === 1;\n\n const allItems = items.reduce((paramsItems: (ConfigItem | ConfigItemGroup)[], item) => {\n if (isItemWithGroup(item)) {\n item.data.group.forEach((groupItem) => {\n paramsItems.push(groupItem);\n });\n\n return paramsItems;\n }\n\n paramsItems.push(item);\n return paramsItems;\n }, []);\n\n const queueData: FormedQueueData[] = isFirstVersion\n ? []\n : formQueueData({items, itemsStateAndParams});\n\n // to consider other kind types in future (not only ignore)\n const mapItemsIgnores = getMapItemsIgnores({\n items: allItems,\n ignores: connections.filter(({kind}) => kind === 'ignore'),\n itemsStateAndParams,\n isFirstVersion,\n });\n const groupByNamespace = groupBy(allItems, 'namespace');\n const itemsWithDefaultsByNamespace = Object.keys(groupByNamespace).reduce(\n (acc, namespace) => {\n return {\n ...acc,\n // there are defaults only in selectors by now, need to get them from item.data.tabs[].defaults for widgets\n // but make a decision about there's order first\n [namespace]: groupByNamespace[namespace].filter((item) => item.defaults),\n };\n },\n {} as Record<string, (ConfigItem | ConfigItemGroup)[]>,\n );\n\n return items.reduce((itemsParams: GetItemsParamsReturn, item: ConfigItem) => {\n const {id, namespace} = item;\n\n const getMergedParams = (params: StringParams, actionParams?: StringParams) =>\n mergeParamsWithAliases({aliases, namespace, params: params || {}, actionParams});\n\n const paramsOptions = {\n itemsStateAndParams,\n mapItemsIgnores,\n itemsWithDefaultsByNamespace,\n getMergedParams,\n defaultGlobalParams,\n globalParams,\n isFirstVersion,\n queueData,\n useStateAsInitial,\n };\n\n if (isItemWithGroup(item)) {\n const groupParams = item.data.group.reduce(\n (groupItemParams: Record<string, StringParams>, groupItem) => {\n groupItemParams[groupItem.id] = getItemParams({\n item: groupItem,\n parentItemId: item.id,\n ...paramsOptions,\n });\n return groupItemParams;\n },\n {},\n );\n\n return {...itemsParams, [id]: groupParams};\n }\n\n return {\n ...itemsParams,\n [id]: getItemParams({\n item,\n ...paramsOptions,\n }),\n };\n }, {});\n}\n\nexport function getItemsState({\n config,\n itemsStateAndParams,\n}: {\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n}) {\n return config.items.reduce((acc: Record<string, ItemState>, {id}) => {\n acc[id] = (itemsStateAndParams as ItemsStateAndParamsBase)?.[id]?.state || {};\n return acc;\n }, {});\n}\n\nexport function getItemsStateAndParams({\n defaultGlobalParams = {},\n globalParams = {},\n config,\n itemsStateAndParams,\n plugins,\n}: GetItemsParamsArg): ItemsStateAndParams {\n const params = getItemsParams({\n defaultGlobalParams,\n globalParams,\n config,\n itemsStateAndParams,\n plugins,\n });\n const state = getItemsState({config, itemsStateAndParams});\n const uniqIds = new Set([...Object.keys(params), ...Object.keys(state)]);\n\n const result: ItemsStateAndParams = Array.from(uniqIds).reduce(\n (acc: ItemsStateAndParams, id) => {\n const data = {} as ItemStateAndParams;\n if (id in params) {\n data.params = params[id];\n }\n if (id in state) {\n data.state = state[id];\n }\n return {\n ...acc,\n [id]: data,\n };\n },\n {},\n );\n const version = getCurrentVersion(itemsStateAndParams);\n if (version === 1) {\n return result;\n }\n const meta = {\n [META_KEY]: itemsStateAndParams[META_KEY] as StateAndParamsMetaData,\n };\n return {\n ...meta,\n ...result,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"state-and-params.js","sourceRoot":"../../../../src","sources":["shared/modules/state-and-params.ts"],"names":[],"mappings":"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","sourcesContent":["import groupBy from 'lodash/groupBy';\n\nimport {META_KEY} from '../constants';\nimport {\n Config,\n ConfigItem,\n ConfigItemDataWithTabs,\n ConfigItemGroup,\n GlobalParams,\n ItemState,\n ItemStateAndParams,\n ItemsStateAndParams,\n ItemsStateAndParamsBase,\n PluginBase,\n StateAndParamsMetaData,\n StringParams,\n} from '../types';\n\nimport {\n FormedQueueData,\n formQueueData,\n getAllConfigItems,\n getCurrentVersion,\n getMapItemsIgnores,\n hasActionParam,\n isItemWithGroup,\n isItemWithTabs,\n mergeParamsWithAliases,\n pickActionParamsFromParams,\n pickExceptActionParamsFromParams,\n prerenderItems,\n resolveItemInnerId,\n} from './helpers';\n\nexport interface GetItemsParamsArg {\n defaultGlobalParams: GlobalParams;\n globalParams: GlobalParams;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n plugins: PluginBase[];\n useStateAsInitial?: boolean;\n}\n\ntype GetItemsParamsReturn = Record<string, StringParams | Record<string, StringParams>>;\n\nconst getParamsFromStateAndParams = ({\n itemsStateAndParams,\n parentItemId,\n item,\n}: {\n item: ConfigItem | ConfigItemGroup;\n itemsStateAndParams: ItemsStateAndParams;\n parentItemId?: string;\n}) => {\n const widgetId = parentItemId || item.id;\n\n if (!(widgetId in itemsStateAndParams)) {\n return {};\n }\n\n const stateAndParams = itemsStateAndParams as ItemsStateAndParamsBase;\n const itemParams = parentItemId\n ? Object.assign(\n {},\n (stateAndParams[widgetId].params as Record<string, StringParams>)[item.id],\n )\n : Object.assign({}, stateAndParams[widgetId].params as StringParams);\n\n return itemParams;\n};\n\nfunction getItemParams({\n item,\n itemsStateAndParams,\n mapItemsIgnores,\n itemsWithDefaultsByNamespace,\n getMergedParams,\n defaultGlobalParams,\n globalParams,\n isFirstVersion,\n queueData,\n parentItemId,\n useStateAsInitial,\n}: {\n item: ConfigItem | ConfigItemGroup;\n itemsStateAndParams: ItemsStateAndParams;\n mapItemsIgnores: Record<string, string[]>;\n itemsWithDefaultsByNamespace: Record<string, (ConfigItem | ConfigItemGroup)[]>;\n getMergedParams: (params: StringParams, actionParams?: StringParams) => StringParams;\n defaultGlobalParams: StringParams;\n globalParams: GlobalParams;\n isFirstVersion: boolean;\n queueData: FormedQueueData[];\n parentItemId?: string;\n useStateAsInitial?: boolean;\n}) {\n const {id, namespace} = item;\n\n let defaultWidgetParams: StringParams | Record<string, StringParams> = {};\n if (isItemWithTabs(item)) {\n const currentWidgetTabId = resolveItemInnerId({item, itemsStateAndParams});\n const itemTabs: ConfigItemDataWithTabs['tabs'] = item.data.tabs;\n defaultWidgetParams =\n itemTabs.find((tabItem) => tabItem?.id === currentWidgetTabId)?.params || {};\n } else {\n defaultWidgetParams = item.defaults || {};\n }\n\n const itemIgnores = mapItemsIgnores[id];\n\n const affectingItemsWithDefaults = itemsWithDefaultsByNamespace[namespace].filter(\n (itemWithDefaults) => !itemIgnores.includes(itemWithDefaults.id),\n );\n\n let itemParams: StringParams = Object.assign(\n {},\n getMergedParams(defaultGlobalParams),\n // default parameters to begin with\n affectingItemsWithDefaults.reduceRight((defaultParams: StringParams, itemWithDefaults) => {\n return {\n ...defaultParams,\n ...getMergedParams(itemWithDefaults.defaults || {}),\n };\n }, {}),\n getMergedParams(globalParams),\n useStateAsInitial\n ? getParamsFromStateAndParams({parentItemId, item, itemsStateAndParams})\n : {},\n );\n\n if (isFirstVersion) {\n itemParams = Object.assign(\n itemParams,\n (itemsStateAndParams as ItemsStateAndParamsBase)?.[id]?.params || {},\n );\n } else {\n // params according to queue of its applying\n let queueDataItemsParams: StringParams = {};\n for (const data of queueData) {\n if (data.namespace !== namespace || itemIgnores.includes(data.id)) {\n continue;\n }\n\n let actionParams;\n let params = data.params;\n const needAliasesForActionParams = data.id !== id && hasActionParam(data.params);\n if (needAliasesForActionParams) {\n actionParams = pickActionParamsFromParams(data.params);\n params = pickExceptActionParamsFromParams(data.params);\n }\n\n const mergedParams = getMergedParams(params, actionParams);\n\n queueDataItemsParams = {\n ...queueDataItemsParams,\n ...mergedParams,\n };\n }\n\n itemParams = Object.assign(itemParams, queueDataItemsParams);\n }\n\n return {...defaultWidgetParams, ...itemParams};\n}\n\nexport function getItemsParams({\n defaultGlobalParams = {},\n globalParams = {},\n config,\n itemsStateAndParams,\n plugins,\n useStateAsInitial,\n}: GetItemsParamsArg): GetItemsParamsReturn {\n const configItems = getAllConfigItems(config);\n const {aliases, connections} = config;\n const items = prerenderItems({\n items: configItems,\n plugins,\n });\n const isFirstVersion = getCurrentVersion(itemsStateAndParams) === 1;\n\n const allItems = items.reduce((paramsItems: (ConfigItem | ConfigItemGroup)[], item) => {\n if (isItemWithGroup(item)) {\n item.data.group.forEach((groupItem) => {\n paramsItems.push(groupItem);\n });\n\n return paramsItems;\n }\n\n paramsItems.push(item);\n return paramsItems;\n }, []);\n\n const queueData: FormedQueueData[] = isFirstVersion\n ? []\n : formQueueData({items, itemsStateAndParams});\n\n // to consider other kind types in future (not only ignore)\n const mapItemsIgnores = getMapItemsIgnores({\n items: allItems,\n ignores: connections.filter(({kind}) => kind === 'ignore'),\n itemsStateAndParams,\n isFirstVersion,\n });\n const groupByNamespace = groupBy(allItems, 'namespace');\n const itemsWithDefaultsByNamespace = Object.keys(groupByNamespace).reduce(\n (acc, namespace) => {\n return {\n ...acc,\n // there are defaults only in selectors by now, need to get them from item.data.tabs[].defaults for widgets\n // but make a decision about there's order first\n [namespace]: groupByNamespace[namespace].filter((item) => item.defaults),\n };\n },\n {} as Record<string, (ConfigItem | ConfigItemGroup)[]>,\n );\n\n return items.reduce((itemsParams: GetItemsParamsReturn, item: ConfigItem) => {\n const {id, namespace} = item;\n\n const getMergedParams = (params: StringParams, actionParams?: StringParams) =>\n mergeParamsWithAliases({aliases, namespace, params: params || {}, actionParams});\n\n const paramsOptions = {\n itemsStateAndParams,\n mapItemsIgnores,\n itemsWithDefaultsByNamespace,\n getMergedParams,\n defaultGlobalParams,\n globalParams,\n isFirstVersion,\n queueData,\n useStateAsInitial,\n };\n\n if (isItemWithGroup(item)) {\n const groupParams = item.data.group.reduce(\n (groupItemParams: Record<string, StringParams>, groupItem) => {\n groupItemParams[groupItem.id] = getItemParams({\n item: groupItem,\n parentItemId: item.id,\n ...paramsOptions,\n });\n return groupItemParams;\n },\n {},\n );\n\n return {...itemsParams, [id]: groupParams};\n }\n\n return {\n ...itemsParams,\n [id]: getItemParams({\n item,\n ...paramsOptions,\n }),\n };\n }, {});\n}\n\nexport function getItemsState({\n config,\n itemsStateAndParams,\n}: {\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n}) {\n const configItems = getAllConfigItems(config);\n return configItems.reduce((acc: Record<string, ItemState>, {id}) => {\n acc[id] = (itemsStateAndParams as ItemsStateAndParamsBase)?.[id]?.state || {};\n return acc;\n }, {});\n}\n\nexport function getItemsStateAndParams({\n defaultGlobalParams = {},\n globalParams = {},\n config,\n itemsStateAndParams,\n plugins,\n}: GetItemsParamsArg): ItemsStateAndParams {\n const params = getItemsParams({\n defaultGlobalParams,\n globalParams,\n config,\n itemsStateAndParams,\n plugins,\n });\n const state = getItemsState({config, itemsStateAndParams});\n const uniqIds = new Set([...Object.keys(params), ...Object.keys(state)]);\n\n const result: ItemsStateAndParams = Array.from(uniqIds).reduce(\n (acc: ItemsStateAndParams, id) => {\n const data = {} as ItemStateAndParams;\n if (id in params) {\n data.params = params[id];\n }\n if (id in state) {\n data.state = state[id];\n }\n return {\n ...acc,\n [id]: data,\n };\n },\n {},\n );\n const version = getCurrentVersion(itemsStateAndParams);\n if (version === 1) {\n return result;\n }\n const meta = {\n [META_KEY]: itemsStateAndParams[META_KEY] as StateAndParamsMetaData,\n };\n return {\n ...meta,\n ...result,\n };\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Hashids from 'hashids';
|
|
2
|
-
import { isItemWithGroup, isItemWithTabs } from "./helpers.js";
|
|
2
|
+
import { getAllConfigItems, isItemWithGroup, isItemWithTabs } from "./helpers.js";
|
|
3
3
|
export function extractIdsFromConfig(config) {
|
|
4
4
|
const ids = [];
|
|
5
|
-
const items = config
|
|
5
|
+
const items = getAllConfigItems(config);
|
|
6
6
|
const connections = config.connections || [];
|
|
7
7
|
const layout = config.layout || [];
|
|
8
8
|
items.forEach((item) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniq-id.js","sourceRoot":"../../../../src","sources":["shared/modules/uniq-id.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,OAAO,EAAC,eAAe,EAAE,cAAc,EAAC,qBAAkB;
|
|
1
|
+
{"version":3,"file":"uniq-id.js","sourceRoot":"../../../../src","sources":["shared/modules/uniq-id.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,OAAO,EAAC,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAC,qBAAkB;AAE7E,MAAM,UAAU,oBAAoB,CAAC,MAAc;IAC/C,MAAM,GAAG,GAAa,EAAE,CAAC;IAEzB,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAEnC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;IACL,CAAC,CAAC,CAAC;IACH,WAAW,CAAC,OAAO,CAAC,CAAC,EAAC,IAAI,EAAE,EAAE,EAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAErC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAQD,MAAM,UAAU,cAAc,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAqB;IACnE,IAAI,UAAU,GAAG,OAAO,CAAC;IACzB,IAAI,MAAM,GAAkB,IAAI,CAAC;IAEjC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC,OAAO,MAAM,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAClB,MAAM,GAAG,EAAE,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAC,CAAC;AAC7C,CAAC","sourcesContent":["import Hashids from 'hashids';\n\nimport type {Config} from '../types';\n\nimport {getAllConfigItems, isItemWithGroup, isItemWithTabs} from './helpers';\n\nexport function extractIdsFromConfig(config: Config): string[] {\n const ids: string[] = [];\n\n const items = getAllConfigItems(config);\n const connections = config.connections || [];\n const layout = config.layout || [];\n\n items.forEach((item) => {\n ids.push(item.id);\n if (isItemWithTabs(item)) {\n item.data.tabs.forEach((tabItem) => ids.push(tabItem.id));\n }\n if (isItemWithGroup(item)) {\n item.data.group.forEach((groupItem) => ids.push(groupItem.id));\n }\n });\n connections.forEach(({from, to}) => ids.push(from, to));\n layout.forEach(({i}) => ids.push(i));\n\n return Array.from(new Set(ids));\n}\n\ntype GenerateUniqIdArgs = {\n salt: Config['salt'];\n counter: Config['counter'];\n ids: string[];\n};\n\nexport function generateUniqId({salt, counter, ids}: GenerateUniqIdArgs) {\n let newCounter = counter;\n let uniqId: string | null = null;\n\n const idsSet = new Set(ids);\n const hashids = new Hashids(salt);\n\n while (uniqId === null) {\n const id = hashids.encode(++newCounter);\n if (!idsSet.has(id)) {\n uniqId = id;\n }\n }\n\n return {counter: newCounter, id: uniqId};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"../../../../src","sources":["shared/types/config.ts"],"names":[],"mappings":"","sourcesContent":["import {StringParams} from './common';\n\nexport interface AdditionalWidgetLayout {\n parent?: string;\n}\n\nexport interface ConfigLayout extends AdditionalWidgetLayout {\n i: string;\n h: number;\n w: number;\n x: number;\n y: number;\n}\n\nexport type ConfigItemGroup = {\n id: string;\n defaults?: StringParams;\n namespace: string;\n [key: string]: unknown;\n};\n\nexport interface ConfigItemData {\n _editActive?: boolean;\n tabs?: {\n id: string;\n isDefault?: boolean;\n params?: StringParams;\n [key: string]: unknown;\n }[];\n group?: ConfigItemGroup[];\n [key: string]: unknown;\n}\n\nexport interface ConfigItemDataWithTabs extends Omit<ConfigItemData, 'tabs'> {\n tabs: NonNullable<ConfigItemData['tabs']>;\n}\n\nexport interface ConfigItemDataWithGroup extends Omit<ConfigItemData, 'group'> {\n group: NonNullable<ConfigItemData['group']>;\n}\n\nexport interface ConfigItem {\n id: string;\n data: ConfigItemData;\n type: string;\n namespace: string;\n defaults?: StringParams;\n orderId?: number;\n defaultOrderId?: number;\n}\n\nexport interface ConfigItemWithTabs extends Omit<ConfigItem, 'data'> {\n data: ConfigItemDataWithTabs;\n}\n\nexport interface ConfigItemWithGroup extends Omit<ConfigItem, 'data'> {\n data: ConfigItemDataWithGroup;\n}\n\nexport interface ConfigAliases {\n [namespace: string]: string[][]; // в массивах имена параметров\n}\n\nexport interface ConfigConnection {\n from: string;\n to: string;\n kind: 'ignore'; // пока один kind\n}\n\nexport interface Config {\n salt: string;\n counter: number;\n items: ConfigItem[];\n layout: ConfigLayout[];\n aliases: ConfigAliases;\n connections: ConfigConnection[];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"../../../../src","sources":["shared/types/config.ts"],"names":[],"mappings":"","sourcesContent":["import {StringParams} from './common';\n\nexport interface AdditionalWidgetLayout {\n parent?: string;\n}\n\nexport interface ConfigLayout extends AdditionalWidgetLayout {\n i: string;\n h: number;\n w: number;\n x: number;\n y: number;\n}\n\nexport type ConfigItemGroup = {\n id: string;\n defaults?: StringParams;\n namespace: string;\n [key: string]: unknown;\n};\n\nexport interface ConfigItemData {\n _editActive?: boolean;\n tabs?: {\n id: string;\n isDefault?: boolean;\n params?: StringParams;\n [key: string]: unknown;\n }[];\n group?: ConfigItemGroup[];\n [key: string]: unknown;\n}\n\nexport interface ConfigItemDataWithTabs extends Omit<ConfigItemData, 'tabs'> {\n tabs: NonNullable<ConfigItemData['tabs']>;\n}\n\nexport interface ConfigItemDataWithGroup extends Omit<ConfigItemData, 'group'> {\n group: NonNullable<ConfigItemData['group']>;\n}\n\nexport interface ConfigItem {\n id: string;\n data: ConfigItemData;\n type: string;\n namespace: string;\n defaults?: StringParams;\n orderId?: number;\n defaultOrderId?: number;\n}\n\nexport interface ConfigItemWithTabs extends Omit<ConfigItem, 'data'> {\n data: ConfigItemDataWithTabs;\n}\n\nexport interface ConfigItemWithGroup extends Omit<ConfigItem, 'data'> {\n data: ConfigItemDataWithGroup;\n}\n\nexport interface ConfigAliases {\n [namespace: string]: string[][]; // в массивах имена параметров\n}\n\nexport interface ConfigConnection {\n from: string;\n to: string;\n kind: 'ignore'; // пока один kind\n}\n\nexport interface Config {\n salt: string;\n counter: number;\n items: ConfigItem[];\n globalItems?: ConfigItem[];\n layout: ConfigLayout[];\n aliases: ConfigAliases;\n connections: ConfigConnection[];\n}\n"]}
|
|
@@ -9,6 +9,7 @@ export interface AddConfigItem extends Omit<ConfigItem, 'id' | 'namespace'> {
|
|
|
9
9
|
export type SetConfigItem = ConfigItem | AddConfigItem;
|
|
10
10
|
export type SetItemOptions = {
|
|
11
11
|
excludeIds?: string[];
|
|
12
|
+
useGlobalItems?: boolean;
|
|
12
13
|
};
|
|
13
14
|
export type GridReflowOptions = {
|
|
14
15
|
cols: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"../../../src","sources":["typings/config.ts"],"names":[],"mappings":"","sourcesContent":["import type {Layout, Layouts} from 'react-grid-layout';\n\nimport type {Config, ConfigItem, ConfigLayout} from '../shared';\n\nimport {GridLayoutSettings} from './common';\n\nexport interface AddConfigItem extends Omit<ConfigItem, 'id' | 'namespace'> {\n id?: null;\n namespace?: string;\n layout?: Omit<ConfigLayout, 'i'>;\n}\nexport type SetConfigItem = ConfigItem | AddConfigItem;\n\nexport type SetItemOptions = {\n excludeIds?: string[];\n};\n\nexport type GridReflowOptions = {\n cols: number;\n maxRows?: number;\n compactType?: CompactType;\n};\n\nexport type CompactType = ReactGridLayout.ReactGridLayoutProps['compactType'] | 'horizontal-nowrap';\n\nexport type ReflowLayoutOptions = {\n defaultProps: GridReflowOptions;\n groups?: Record<string, GridReflowOptions>;\n};\n\nexport type AddNewItemOptions = SetItemOptions & {\n updateLayout?: ConfigLayout[];\n reflowLayoutOptions?: ReflowLayoutOptions;\n};\n\nexport interface DashkitGroupRenderProps {\n config: Config;\n editMode: boolean;\n isMobile: boolean;\n items: ConfigItem[];\n layout: ConfigLayout[];\n context: any;\n}\n\nexport type ReactGridLayoutProps = Omit<\n GridLayoutSettings,\n | 'children'\n | 'compactType'\n | 'innerRef'\n | 'key'\n | 'layout'\n | 'onDragStart'\n | 'onDragStop'\n | 'onResizeStart'\n | 'onResizeStop'\n | 'draggableHandle'\n | 'isDroppable'\n | 'onDropDragOver'\n | 'onDrop'\n | 'draggableCancel'\n> & {\n compactType?: CompactType;\n};\n\nexport interface DashKitGroup {\n id?: string;\n render?: (\n id: string,\n children: React.ReactNode,\n props: DashkitGroupRenderProps,\n ) => React.ReactNode;\n gridProperties?: (props: ReactGridLayoutProps) => ReactGridLayoutProps;\n}\n\nexport type ItemManipulationCallback = (eventData: {\n layout: Layouts;\n oldItem: Layout;\n newItem: Layout;\n placeholder: Layout;\n e: MouseEvent;\n element: HTMLElement;\n}) => void;\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"../../../src","sources":["typings/config.ts"],"names":[],"mappings":"","sourcesContent":["import type {Layout, Layouts} from 'react-grid-layout';\n\nimport type {Config, ConfigItem, ConfigLayout} from '../shared';\n\nimport {GridLayoutSettings} from './common';\n\nexport interface AddConfigItem extends Omit<ConfigItem, 'id' | 'namespace'> {\n id?: null;\n namespace?: string;\n layout?: Omit<ConfigLayout, 'i'>;\n}\nexport type SetConfigItem = ConfigItem | AddConfigItem;\n\nexport type SetItemOptions = {\n excludeIds?: string[];\n useGlobalItems?: boolean;\n};\n\nexport type GridReflowOptions = {\n cols: number;\n maxRows?: number;\n compactType?: CompactType;\n};\n\nexport type CompactType = ReactGridLayout.ReactGridLayoutProps['compactType'] | 'horizontal-nowrap';\n\nexport type ReflowLayoutOptions = {\n defaultProps: GridReflowOptions;\n groups?: Record<string, GridReflowOptions>;\n};\n\nexport type AddNewItemOptions = SetItemOptions & {\n updateLayout?: ConfigLayout[];\n reflowLayoutOptions?: ReflowLayoutOptions;\n};\n\nexport interface DashkitGroupRenderProps {\n config: Config;\n editMode: boolean;\n isMobile: boolean;\n items: ConfigItem[];\n layout: ConfigLayout[];\n context: any;\n}\n\nexport type ReactGridLayoutProps = Omit<\n GridLayoutSettings,\n | 'children'\n | 'compactType'\n | 'innerRef'\n | 'key'\n | 'layout'\n | 'onDragStart'\n | 'onDragStop'\n | 'onResizeStart'\n | 'onResizeStop'\n | 'draggableHandle'\n | 'isDroppable'\n | 'onDropDragOver'\n | 'onDrop'\n | 'draggableCancel'\n> & {\n compactType?: CompactType;\n};\n\nexport interface DashKitGroup {\n id?: string;\n render?: (\n id: string,\n children: React.ReactNode,\n props: DashkitGroupRenderProps,\n ) => React.ReactNode;\n gridProperties?: (props: ReactGridLayoutProps) => ReactGridLayoutProps;\n}\n\nexport type ItemManipulationCallback = (eventData: {\n layout: Layouts;\n oldItem: Layout;\n newItem: Layout;\n placeholder: Layout;\n e: MouseEvent;\n element: HTMLElement;\n}) => void;\n"]}
|
|
@@ -2,14 +2,15 @@ import update, { extend } from 'immutability-helper';
|
|
|
2
2
|
import omit from "lodash/omit.js";
|
|
3
3
|
import pick from "lodash/pick.js";
|
|
4
4
|
import { DEFAULT_GROUP, DEFAULT_NAMESPACE } from "../constants/index.js";
|
|
5
|
-
import { META_KEY, addGroupToQueue, addToQueue, deleteFromQueue, getCurrentVersion, getInitialItemsStateAndParamsMeta, getItemsStateAndParamsMeta, isItemWithGroup, isItemWithTabs, mergeParamsWithAliases, pickActionParamsFromParams, resolveItemInnerId, transformParamsToActionParams, } from "../shared/index.js";
|
|
5
|
+
import { META_KEY, addGroupToQueue, addToQueue, deleteFromQueue, getAllConfigItems, getCurrentVersion, getInitialItemsStateAndParamsMeta, getItemsStateAndParamsMeta, isItemWithGroup, isItemWithTabs, mergeParamsWithAliases, pickActionParamsFromParams, resolveItemInnerId, transformParamsToActionParams, } from "../shared/index.js";
|
|
6
6
|
import { getNewId } from "./get-new-id.js";
|
|
7
7
|
import { bottom, compact } from "./grid-layout.js";
|
|
8
8
|
import { resolveLayoutGroup } from "./group-helpers.js";
|
|
9
9
|
extend('$auto', (value, object) => (object ? update(object, value) : update({}, value)));
|
|
10
10
|
function removeItemVersion1({ id, config, itemsStateAndParams }) {
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const configItems = getAllConfigItems(config);
|
|
12
|
+
const itemIndex = configItems.findIndex((item) => item.id === id);
|
|
13
|
+
const removeItem = configItems[itemIndex];
|
|
13
14
|
const { defaults = {} } = removeItem;
|
|
14
15
|
const itemParamsKeys = Object.keys(defaults);
|
|
15
16
|
const getParams = (excludeId, items) => {
|
|
@@ -20,8 +21,8 @@ function removeItemVersion1({ id, config, itemsStateAndParams }) {
|
|
|
20
21
|
return acc;
|
|
21
22
|
}, {}));
|
|
22
23
|
};
|
|
23
|
-
const allParamsKeys = getParams(id,
|
|
24
|
-
const allNamespaceParamsKeys = getParams(id,
|
|
24
|
+
const allParamsKeys = getParams(id, configItems);
|
|
25
|
+
const allNamespaceParamsKeys = getParams(id, configItems.filter((item) => item.namespace === removeItem.namespace));
|
|
25
26
|
const uniqParamsKeys = itemParamsKeys.filter((key) => !allParamsKeys.includes(key));
|
|
26
27
|
const uniqNamespaceParamsKeys = itemParamsKeys.filter((key) => !allNamespaceParamsKeys.includes(key));
|
|
27
28
|
const withoutUniqItemsParams = Object.keys(itemsStateAndParams)
|
|
@@ -29,7 +30,7 @@ function removeItemVersion1({ id, config, itemsStateAndParams }) {
|
|
|
29
30
|
.reduce((acc, key) => {
|
|
30
31
|
const { params } = itemsStateAndParams[key];
|
|
31
32
|
// в state из урла могут быть элементы, которых нет в config.items
|
|
32
|
-
const item =
|
|
33
|
+
const item = configItems.find((configItem) => configItem.id === key);
|
|
33
34
|
if (params && item) {
|
|
34
35
|
const { namespace } = item;
|
|
35
36
|
const currentUniqParamsKeys = namespace === removeItem.namespace
|
|
@@ -104,10 +105,11 @@ function getAllowableChangedParams(item, stateAndParams, itemsStateAndParams, pa
|
|
|
104
105
|
return allowedParams;
|
|
105
106
|
}
|
|
106
107
|
function changeStateAndParamsVersion1({ id: initiatorId, config, stateAndParams, itemsStateAndParams, }) {
|
|
108
|
+
const allConfigItems = getAllConfigItems(config);
|
|
107
109
|
const hasState = 'state' in stateAndParams;
|
|
108
110
|
const { aliases } = config;
|
|
109
111
|
if ('params' in stateAndParams) {
|
|
110
|
-
const initiatorItem =
|
|
112
|
+
const initiatorItem = allConfigItems.find(({ id }) => id === initiatorId);
|
|
111
113
|
const allowableParams = getAllowableChangedParams(initiatorItem, stateAndParams, itemsStateAndParams);
|
|
112
114
|
const allowableParamsWithAliases = mergeParamsWithAliases({
|
|
113
115
|
aliases,
|
|
@@ -117,7 +119,7 @@ function changeStateAndParamsVersion1({ id: initiatorId, config, stateAndParams,
|
|
|
117
119
|
const ignoresInitiatorIds = config.connections
|
|
118
120
|
.filter(({ to }) => to === initiatorId)
|
|
119
121
|
.map(({ from }) => from);
|
|
120
|
-
const updateIds =
|
|
122
|
+
const updateIds = allConfigItems
|
|
121
123
|
.filter((item) => item.namespace === initiatorItem.namespace &&
|
|
122
124
|
!ignoresInitiatorIds.includes(item.id) &&
|
|
123
125
|
(!isItemWithTabs(item) ||
|
|
@@ -276,6 +278,9 @@ export class UpdateManager {
|
|
|
276
278
|
counter = newIdData.counter;
|
|
277
279
|
const newItem = Object.assign(Object.assign({}, item), { id: newIdData.id, data: newItemData.data, namespace });
|
|
278
280
|
const saveDefaultLayout = pick(layout, ['h', 'w', 'x', 'y', 'parent']);
|
|
281
|
+
const updateActions = Object.assign({ counter: { $set: counter } }, (options.useGlobalItems
|
|
282
|
+
? { globalItems: config.globalItems ? { $push: [newItem] } : { $set: [newItem] } }
|
|
283
|
+
: { items: { $push: [newItem] } }));
|
|
279
284
|
if (options.updateLayout) {
|
|
280
285
|
const byId = options.updateLayout.reduce((memo, t) => {
|
|
281
286
|
memo[t.i] = t;
|
|
@@ -296,11 +301,7 @@ export class UpdateManager {
|
|
|
296
301
|
Object.assign(Object.assign({}, saveDefaultLayout), { i: newItem.id }),
|
|
297
302
|
];
|
|
298
303
|
}
|
|
299
|
-
return update(config, {
|
|
300
|
-
items: { $push: [newItem] },
|
|
301
|
-
layout: { $set: newLayout },
|
|
302
|
-
counter: { $set: counter },
|
|
303
|
-
});
|
|
304
|
+
return update(config, Object.assign(Object.assign({}, updateActions), { layout: { $set: newLayout } }));
|
|
304
305
|
}
|
|
305
306
|
else if (isFinite(layout.y)) {
|
|
306
307
|
let newLayout;
|
|
@@ -315,24 +316,22 @@ export class UpdateManager {
|
|
|
315
316
|
else {
|
|
316
317
|
newLayout = [...config.layout, newLayoutItem];
|
|
317
318
|
}
|
|
318
|
-
return update(config, {
|
|
319
|
-
items: { $push: [newItem] },
|
|
320
|
-
layout: { $set: newLayout },
|
|
321
|
-
counter: { $set: counter },
|
|
322
|
-
});
|
|
319
|
+
return update(config, Object.assign(Object.assign({}, updateActions), { layout: { $set: newLayout } }));
|
|
323
320
|
}
|
|
324
321
|
else {
|
|
325
322
|
const layoutY = bottom(config.layout);
|
|
326
323
|
const newLayoutItem = Object.assign(Object.assign({}, saveDefaultLayout), { y: layoutY, i: newItem.id });
|
|
327
|
-
return update(config, {
|
|
328
|
-
items: { $push: [newItem] },
|
|
329
|
-
layout: { $push: [newLayoutItem] },
|
|
330
|
-
counter: { $set: counter },
|
|
331
|
-
});
|
|
324
|
+
return update(config, Object.assign(Object.assign({}, updateActions), { layout: { $push: [newLayoutItem] } }));
|
|
332
325
|
}
|
|
333
326
|
}
|
|
334
327
|
static editItem({ item, namespace = DEFAULT_NAMESPACE, config, options = {}, }) {
|
|
328
|
+
const globalItemIndex = config.globalItems
|
|
329
|
+
? config.globalItems.findIndex(({ id }) => item.id === id)
|
|
330
|
+
: -1;
|
|
335
331
|
const itemIndex = config.items.findIndex(({ id }) => item.id === id);
|
|
332
|
+
const shouldBeGlobalItem = options.useGlobalItems;
|
|
333
|
+
const isCurrentlyInGlobalItems = globalItemIndex !== -1;
|
|
334
|
+
const isCurrentlyInItems = itemIndex !== -1;
|
|
336
335
|
const { counter, data } = getNewItemData({
|
|
337
336
|
item,
|
|
338
337
|
config,
|
|
@@ -340,18 +339,43 @@ export class UpdateManager {
|
|
|
340
339
|
counter: config.counter,
|
|
341
340
|
options,
|
|
342
341
|
});
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
342
|
+
const updatedItem = Object.assign(Object.assign({}, item), { data, namespace });
|
|
343
|
+
// Determine if we need to move the item between arrays
|
|
344
|
+
if (shouldBeGlobalItem && isCurrentlyInItems) {
|
|
345
|
+
// Move from items to globalItems
|
|
346
|
+
return update(config, {
|
|
347
|
+
items: { $splice: [[itemIndex, 1]] },
|
|
348
|
+
globalItems: config.globalItems ? { $push: [updatedItem] } : { $set: [updatedItem] },
|
|
349
|
+
counter: { $set: counter },
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
else if (!shouldBeGlobalItem && isCurrentlyInGlobalItems) {
|
|
353
|
+
// Move from globalItems to items
|
|
354
|
+
return update(config, {
|
|
355
|
+
globalItems: { $splice: [[globalItemIndex, 1]] },
|
|
356
|
+
items: { $push: [updatedItem] },
|
|
357
|
+
counter: { $set: counter },
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
// Update in current location
|
|
362
|
+
const updateAction = isCurrentlyInGlobalItems
|
|
363
|
+
? { globalItems: { [globalItemIndex]: { $set: updatedItem } } }
|
|
364
|
+
: { items: { [itemIndex]: { $set: updatedItem } } };
|
|
365
|
+
return update(config, Object.assign(Object.assign({}, updateAction), { counter: { $set: counter } }));
|
|
366
|
+
}
|
|
347
367
|
}
|
|
348
368
|
static removeItem({ id, config, itemsStateAndParams = {} }) {
|
|
369
|
+
var _a;
|
|
349
370
|
if (getCurrentVersion(itemsStateAndParams) === 1) {
|
|
350
371
|
return removeItemVersion1({ id, config, itemsStateAndParams });
|
|
351
372
|
}
|
|
373
|
+
const globalItemIndex = config.globalItems
|
|
374
|
+
? config.globalItems.findIndex((item) => item.id === id)
|
|
375
|
+
: -1;
|
|
352
376
|
const itemIndex = config.items.findIndex((item) => item.id === id);
|
|
353
377
|
const layoutIndex = config.layout.findIndex((item) => item.i === id);
|
|
354
|
-
const item = config.items[itemIndex];
|
|
378
|
+
const item = config.items[itemIndex] || ((_a = config.globalItems) === null || _a === void 0 ? void 0 : _a[globalItemIndex]);
|
|
355
379
|
let itemIds = [id];
|
|
356
380
|
if (isItemWithTabs(item)) {
|
|
357
381
|
itemIds = [id].concat(item.data.tabs.map((tab) => tab.id));
|
|
@@ -360,18 +384,19 @@ export class UpdateManager {
|
|
|
360
384
|
itemIds = [id].concat(item.data.group.map((groupItem) => groupItem.id));
|
|
361
385
|
}
|
|
362
386
|
const connections = config.connections.filter(({ from, to }) => !itemIds.includes(from) && !itemIds.includes(to));
|
|
363
|
-
|
|
364
|
-
|
|
387
|
+
const updateAction = globalItemIndex === -1
|
|
388
|
+
? {
|
|
365
389
|
items: {
|
|
366
390
|
$splice: [[itemIndex, 1]],
|
|
367
391
|
},
|
|
368
|
-
|
|
392
|
+
}
|
|
393
|
+
: { globalItems: { $splice: [[globalItemIndex, 1]] } };
|
|
394
|
+
return {
|
|
395
|
+
config: update(config, Object.assign({ layout: {
|
|
369
396
|
$splice: [[layoutIndex, 1]],
|
|
370
|
-
},
|
|
371
|
-
connections: {
|
|
397
|
+
}, connections: {
|
|
372
398
|
$set: connections,
|
|
373
|
-
},
|
|
374
|
-
}),
|
|
399
|
+
} }, updateAction)),
|
|
375
400
|
itemsStateAndParams: update(itemsStateAndParams, {
|
|
376
401
|
$unset: [id],
|
|
377
402
|
[META_KEY]: {
|
|
@@ -403,7 +428,7 @@ export class UpdateManager {
|
|
|
403
428
|
}
|
|
404
429
|
const action = options === null || options === void 0 ? void 0 : options.action;
|
|
405
430
|
const hasState = 'state' in stateAndParams;
|
|
406
|
-
const
|
|
431
|
+
const items = getAllConfigItems(config);
|
|
407
432
|
const itemsIds = items.map(({ id: itemId }) => itemId);
|
|
408
433
|
const itemsStateAndParamsIds = Object.keys(omit(itemsStateAndParams, [META_KEY]));
|
|
409
434
|
const unusedIds = itemsStateAndParamsIds.filter((id) => !itemsIds.includes(id));
|
|
@@ -446,7 +471,12 @@ export class UpdateManager {
|
|
|
446
471
|
const tabId = isItemWithTabs(initiatorItem)
|
|
447
472
|
? newTabId || resolveItemInnerId({ item: initiatorItem, itemsStateAndParams })
|
|
448
473
|
: undefined;
|
|
449
|
-
const meta = addToQueue({
|
|
474
|
+
const meta = addToQueue({
|
|
475
|
+
id: initiatorId,
|
|
476
|
+
tabId,
|
|
477
|
+
config,
|
|
478
|
+
itemsStateAndParams,
|
|
479
|
+
});
|
|
450
480
|
let commandUpdateParams = ((_b = itemsStateAndParams[initiatorId]) === null || _b === void 0 ? void 0 : _b.params)
|
|
451
481
|
? '$merge'
|
|
452
482
|
: '$set';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-manager.js","sourceRoot":"../../../src","sources":["utils/update-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import update, {CustomCommands, Spec, extend} from 'immutability-helper';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\n\nimport {DEFAULT_GROUP, DEFAULT_NAMESPACE} from '../constants';\nimport {\n ConfigLayout,\n META_KEY,\n addGroupToQueue,\n addToQueue,\n deleteFromQueue,\n getCurrentVersion,\n getInitialItemsStateAndParamsMeta,\n getItemsStateAndParamsMeta,\n isItemWithGroup,\n isItemWithTabs,\n mergeParamsWithAliases,\n pickActionParamsFromParams,\n resolveItemInnerId,\n transformParamsToActionParams,\n} from '../shared';\nimport type {\n Config,\n ConfigItem,\n ConfigItemGroup,\n ConfigItemWithGroup,\n ItemStateAndParams,\n ItemStateAndParamsChangeOptions,\n ItemsStateAndParams,\n ItemsStateAndParamsBase,\n StateAndParamsMetaData,\n StringParams,\n} from '../shared';\nimport type {\n AddConfigItem,\n AddNewItemOptions,\n ReflowLayoutOptions,\n SetItemOptions,\n WidgetLayout,\n} from '../typings';\n\nimport {getNewId} from './get-new-id';\nimport {bottom, compact} from './grid-layout';\nimport {resolveLayoutGroup} from './group-helpers';\nimport {RegisterManagerPluginLayout} from './register-manager';\n\nextend('$auto', (value, object) => (object ? update(object, value) : update({}, value)));\ntype AutoExtendCommand = CustomCommands<{$auto: object}>;\n\ninterface RemoveItemArg {\n id: string;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n}\n\nfunction removeItemVersion1({id, config, itemsStateAndParams}: RemoveItemArg) {\n const itemIndex = config.items.findIndex((item) => item.id === id);\n const removeItem = config.items[itemIndex];\n const {defaults = {}} = removeItem;\n const itemParamsKeys = Object.keys(defaults);\n const getParams = (excludeId: string, items: ConfigItem[]) => {\n return Object.keys(\n items.reduce((acc: StringParams, item) => {\n if (item.id !== excludeId) {\n Object.assign(acc, item.defaults);\n }\n return acc;\n }, {}),\n );\n };\n const allParamsKeys = getParams(id, config.items);\n const allNamespaceParamsKeys = getParams(\n id,\n config.items.filter((item) => item.namespace === removeItem.namespace),\n );\n const uniqParamsKeys = itemParamsKeys.filter((key) => !allParamsKeys.includes(key));\n const uniqNamespaceParamsKeys = itemParamsKeys.filter(\n (key) => !allNamespaceParamsKeys.includes(key),\n );\n const withoutUniqItemsParams = Object.keys(itemsStateAndParams)\n .filter((key) => key !== id)\n .reduce(\n (acc, key) => {\n const {params} = (itemsStateAndParams as ItemsStateAndParamsBase)[key];\n // в state из урла могут быть элементы, которых нет в config.items\n const item = config.items.find((configItem) => configItem.id === key);\n if (params && item) {\n const {namespace} = item;\n const currentUniqParamsKeys =\n namespace === removeItem.namespace\n ? uniqNamespaceParamsKeys\n : uniqParamsKeys;\n const resultParams: StringParams = omit(params, currentUniqParamsKeys);\n if (Object.keys(params).length !== Object.keys(resultParams).length) {\n acc[key] = {\n params: {\n $set: resultParams,\n },\n };\n }\n }\n return acc;\n },\n {} as Record<string, Spec<{params: StringParams}>>,\n );\n const newItemsStateAndParams = update(itemsStateAndParams, {\n $unset: [id],\n ...withoutUniqItemsParams,\n });\n const connections = config.connections.filter(({from, to}) => id !== from && id !== to);\n const newConfig = update(config, {\n items: {\n $splice: [[itemIndex, 1]],\n },\n layout: {\n $splice: [[itemIndex, 1]],\n },\n connections: {\n $set: connections,\n },\n });\n return {\n config: newConfig,\n itemsStateAndParams: newItemsStateAndParams,\n };\n}\n\nfunction getAllowableChangedParams(\n item: ConfigItem | ConfigItemGroup,\n stateAndParams: ItemStateAndParams,\n itemsStateAndParams: ItemsStateAndParams,\n paramsSettings?: {\n type?: 'params' | 'actionParams';\n returnPrefix: boolean;\n },\n): StringParams {\n const paramsTypeName = paramsSettings?.type || 'params';\n const isActionParamsMode = paramsTypeName === 'actionParams';\n\n let allowedParams: StringParams = {};\n if (isActionParamsMode) {\n allowedParams = pickActionParamsFromParams(stateAndParams.params, false);\n return paramsSettings?.returnPrefix\n ? transformParamsToActionParams(allowedParams)\n : allowedParams;\n }\n\n const stateParamsConf = stateAndParams.params;\n\n // check if structure is StringParams or Record<string, StringParams>\n // if it's Record<string, StringParams>, then this is a group application of params\n // and checking for comparison of allowedParams and stateParamsConf is not necessary\n const isGroupParamsApply =\n typeof stateParamsConf?.[item.id] === 'object' &&\n stateParamsConf?.[item.id] !== null &&\n !Array.isArray(stateParamsConf?.[item.id]);\n\n if (isItemWithTabs(item)) {\n let tab;\n if ('state' in stateAndParams && stateAndParams.state?.tabId) {\n tab = item.data.tabs.find(({id}) => id === stateAndParams.state?.tabId);\n }\n if (!tab) {\n const tabId = resolveItemInnerId({item, itemsStateAndParams});\n tab = item.data.tabs.find(({id}) => id === tabId);\n }\n allowedParams = pick(stateParamsConf, Object.keys(tab?.params || {})) as StringParams;\n } else {\n const paramsConf = isGroupParamsApply ? stateParamsConf[item.id] : stateParamsConf;\n allowedParams = pick(paramsConf, Object.keys(item.defaults || {})) as StringParams;\n }\n\n if (\n !isGroupParamsApply &&\n Object.keys(allowedParams || {}).length !== Object.keys(stateParamsConf || {}).length\n ) {\n console.warn('Параметры, которых нет в defaults, будут проигнорированы!');\n }\n return allowedParams;\n}\n\ninterface ChangeStateAndParamsArg {\n id: string;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n stateAndParams: ItemStateAndParams;\n options?: ItemStateAndParamsChangeOptions;\n}\n\nfunction changeStateAndParamsVersion1({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n}: ChangeStateAndParamsArg) {\n const hasState = 'state' in stateAndParams;\n const {aliases} = config;\n if ('params' in stateAndParams) {\n const initiatorItem = config.items.find(({id}) => id === initiatorId) as ConfigItem;\n const allowableParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n );\n const allowableParamsWithAliases = mergeParamsWithAliases({\n aliases,\n namespace: initiatorItem.namespace,\n params: allowableParams,\n });\n const ignoresInitiatorIds = config.connections\n .filter(({to}) => to === initiatorId)\n .map(({from}) => from);\n\n const updateIds = config.items\n .filter(\n (item) =>\n item.namespace === initiatorItem.namespace &&\n !ignoresInitiatorIds.includes(item.id) &&\n (!isItemWithTabs(item) ||\n (isItemWithTabs(item) &&\n item.data.tabs.every(({id}) => !ignoresInitiatorIds.includes(id)))),\n )\n .map(({id}) => id);\n return update(\n itemsStateAndParams,\n updateIds.reduce(\n (acc, currentId) => {\n acc[currentId] = {\n $auto: {\n params: {\n [(itemsStateAndParams as ItemsStateAndParamsBase)[currentId]?.params\n ? '$merge'\n : '$set']: allowableParamsWithAliases,\n },\n ...(hasState && currentId === initiatorId\n ? {state: {$set: stateAndParams.state}}\n : {}),\n },\n };\n return acc;\n },\n {} as Record<string, Spec<ItemsStateAndParams, AutoExtendCommand>>,\n ),\n );\n } else if (hasState) {\n return update(itemsStateAndParams, {\n [initiatorId]: {\n $auto: {\n state: {$set: stateAndParams.state},\n },\n },\n });\n } else {\n return itemsStateAndParams;\n }\n}\n\ntype GetNewItemDataArgs = {\n item: AddConfigItem | ConfigItem;\n config: Config;\n salt: Config['salt'];\n counter: Config['counter'];\n options: SetItemOptions;\n};\n\nfunction getNewItemData({item, config, counter: argsCounter, salt, options}: GetNewItemDataArgs) {\n const excludeIds = [...(options.excludeIds || [])];\n let counter = argsCounter;\n\n let data = item.data;\n\n if (isItemWithTabs(item)) {\n const tabs = item.data.tabs.map((tab) => {\n if (tab.id) {\n return tab;\n }\n\n const newIdTabData = getNewId({config, salt, counter, excludeIds});\n counter = newIdTabData.counter;\n excludeIds.push(newIdTabData.id);\n\n return {...tab, id: newIdTabData.id};\n });\n\n data = {...item.data, tabs};\n }\n\n if (isItemWithGroup(item)) {\n const group = item.data.group.map((groupItem) => {\n if (groupItem.id) {\n return groupItem;\n }\n\n const newIdGroupData = getNewId({config, salt, counter, excludeIds});\n counter = newIdGroupData.counter;\n excludeIds.push(newIdGroupData.id);\n\n return {\n ...groupItem,\n id: newIdGroupData.id,\n namespace: groupItem.namespace || DEFAULT_NAMESPACE,\n };\n });\n\n data = {...item.data, group};\n }\n\n return {data, counter, excludeIds};\n}\n\nexport const getChangedParams = ({\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n}: {\n initiatorItem: ConfigItem | ConfigItemGroup;\n stateAndParams: ItemStateAndParams;\n itemsStateAndParams: ItemsStateAndParams;\n}) => {\n const allowableParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n );\n\n const allowableActionParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n {type: 'actionParams', returnPrefix: true},\n );\n\n return {...allowableParams, ...allowableActionParams};\n};\n\nfunction changeGroupParams({\n groupItemIds,\n initiatorId,\n initiatorItem,\n itemsStateAndParams,\n stateAndParams,\n config,\n unusedIds,\n}: {\n groupItemIds: string[];\n initiatorId: string;\n initiatorItem: ConfigItemWithGroup;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n stateAndParams: ItemStateAndParams;\n unusedIds: string[];\n}) {\n const meta: StateAndParamsMetaData = addGroupToQueue({\n id: initiatorId,\n groupItemIds,\n config,\n itemsStateAndParams,\n });\n const updatedItems: Record<string, StringParams> = {};\n const currentItemParams = (itemsStateAndParams as ItemsStateAndParamsBase)[initiatorId]\n ?.params as Record<string, StringParams> | undefined;\n\n for (const groupItem of initiatorItem.data.group) {\n if (groupItemIds.includes(groupItem.id)) {\n const changedParams = getChangedParams({\n initiatorItem: groupItem,\n stateAndParams,\n itemsStateAndParams,\n });\n\n updatedItems[groupItem.id] = changedParams;\n\n continue;\n }\n\n if (currentItemParams && currentItemParams[groupItem.id]) {\n updatedItems[groupItem.id] = currentItemParams[groupItem.id];\n }\n }\n\n const obj = {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n params: {\n $set: updatedItems,\n },\n },\n },\n [META_KEY]: {$set: meta},\n };\n return update(itemsStateAndParams, obj);\n}\n\nexport function reflowLayout({\n newLayoutItem,\n layout,\n reflowLayoutOptions,\n}: {\n newLayoutItem?: ConfigLayout;\n layout: ConfigLayout[];\n reflowLayoutOptions: ReflowLayoutOptions;\n}) {\n const byGroup: Record<string, ConfigLayout[]> = {};\n const reducer = (\n memo: Record<string, number>,\n item: ConfigLayout,\n i: number,\n _items: ConfigLayout[],\n isNewItem?: boolean,\n ) => {\n memo[item.i] = i;\n const parent = resolveLayoutGroup(item);\n\n if (byGroup[parent]) {\n if (isNewItem) {\n byGroup[parent].unshift(item);\n } else {\n byGroup[parent].push(item);\n }\n } else {\n byGroup[parent] = [item];\n }\n\n return memo;\n };\n\n const orderById = layout.reduce<Record<string, number>>(reducer, {});\n\n if (newLayoutItem) {\n reducer(orderById, newLayoutItem, layout.length, layout, true);\n }\n\n const {defaultProps} = reflowLayoutOptions;\n\n return Object.entries(byGroup)\n .reduce<ConfigLayout[]>((memo, [groupId, layoutItems]) => {\n let reflowOptions = defaultProps;\n if (reflowLayoutOptions?.groups?.[groupId]) {\n reflowOptions = reflowLayoutOptions?.groups[groupId];\n }\n\n if (reflowOptions.compactType === null) {\n return memo.concat(layoutItems);\n }\n\n const compactedList = compact(\n layoutItems,\n reflowOptions.compactType,\n reflowOptions.cols,\n ).map((item) => {\n const cleanCopy = pick(item, ['i', 'h', 'w', 'x', 'y', 'parent']) as ConfigLayout;\n\n if (groupId === DEFAULT_GROUP) {\n return cleanCopy;\n }\n\n return {...cleanCopy, parent: groupId};\n });\n\n return memo.concat(compactedList);\n }, [])\n .sort((a, b) => orderById[a.i] - orderById[b.i]);\n}\n\nexport class UpdateManager {\n static addItem({\n item,\n namespace = DEFAULT_NAMESPACE,\n layout,\n config,\n options = {},\n }: {\n item: AddConfigItem;\n namespace: string;\n layout: RegisterManagerPluginLayout;\n config: Config;\n options?: AddNewItemOptions;\n }) {\n const salt = config.salt;\n\n const newItemData = getNewItemData({item, config, salt, counter: config.counter, options});\n let counter = newItemData.counter;\n\n const newIdData = getNewId({config, salt, counter, excludeIds: newItemData.excludeIds});\n counter = newIdData.counter;\n\n const newItem = {...item, id: newIdData.id, data: newItemData.data, namespace};\n const saveDefaultLayout = pick(layout, ['h', 'w', 'x', 'y', 'parent']);\n\n if (options.updateLayout) {\n const byId = options.updateLayout.reduce<Record<string, ConfigLayout>>((memo, t) => {\n memo[t.i] = t;\n return memo;\n }, {});\n let newLayout;\n const newLayoutItem = {...saveDefaultLayout, i: newItem.id};\n\n if (options.reflowLayoutOptions) {\n newLayout = reflowLayout({\n newLayoutItem,\n layout: config.layout.map((t) => ({...t, ...(byId[t.i] || {})})),\n reflowLayoutOptions: options.reflowLayoutOptions,\n });\n } else {\n newLayout = [\n ...config.layout.map((t) => ({...t, ...(byId[t.i] || {})})),\n {...saveDefaultLayout, i: newItem.id},\n ];\n }\n\n return update(config, {\n items: {$push: [newItem]},\n layout: {$set: newLayout},\n counter: {$set: counter},\n });\n } else if (isFinite(layout.y)) {\n let newLayout;\n const newLayoutItem = {...saveDefaultLayout, i: newItem.id};\n\n if (options.reflowLayoutOptions) {\n newLayout = reflowLayout({\n newLayoutItem,\n layout: config.layout,\n reflowLayoutOptions: options.reflowLayoutOptions,\n });\n } else {\n newLayout = [...config.layout, newLayoutItem];\n }\n\n return update(config, {\n items: {$push: [newItem]},\n layout: {$set: newLayout},\n counter: {$set: counter},\n });\n } else {\n const layoutY = bottom(config.layout);\n const newLayoutItem = {...saveDefaultLayout, y: layoutY, i: newItem.id};\n\n return update(config, {\n items: {$push: [newItem]},\n layout: {$push: [newLayoutItem]},\n counter: {$set: counter},\n });\n }\n }\n\n static editItem({\n item,\n namespace = DEFAULT_NAMESPACE,\n config,\n options = {},\n }: {\n item: ConfigItem;\n namespace: string;\n config: Config;\n options?: SetItemOptions;\n }) {\n const itemIndex = config.items.findIndex(({id}) => item.id === id);\n\n const {counter, data} = getNewItemData({\n item,\n config,\n salt: config.salt,\n counter: config.counter,\n options,\n });\n\n return update(config, {\n items: {[itemIndex]: {$set: {...item, data, namespace}}},\n counter: {$set: counter},\n });\n }\n\n static removeItem({id, config, itemsStateAndParams = {}}: RemoveItemArg): {\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n } {\n if (getCurrentVersion(itemsStateAndParams) === 1) {\n return removeItemVersion1({id, config, itemsStateAndParams});\n }\n const itemIndex = config.items.findIndex((item) => item.id === id);\n const layoutIndex = config.layout.findIndex((item) => item.i === id);\n const item = config.items[itemIndex];\n let itemIds = [id];\n if (isItemWithTabs(item)) {\n itemIds = [id].concat(item.data.tabs.map((tab) => tab.id));\n }\n if (isItemWithGroup(item)) {\n itemIds = [id].concat(item.data.group.map((groupItem) => groupItem.id));\n }\n const connections = config.connections.filter(\n ({from, to}) => !itemIds.includes(from) && !itemIds.includes(to),\n );\n return {\n config: update(config, {\n items: {\n $splice: [[itemIndex, 1]],\n },\n layout: {\n $splice: [[layoutIndex, 1]],\n },\n connections: {\n $set: connections,\n },\n }),\n itemsStateAndParams: update(itemsStateAndParams, {\n $unset: [id],\n [META_KEY]: {\n $set: deleteFromQueue({\n id,\n itemsStateAndParams,\n config,\n }),\n },\n }),\n };\n }\n\n static updateLayout({layout, config}: {layout: WidgetLayout[]; config: Config}) {\n return update(config, {\n layout: {\n $set: layout.map((item) => pick(item, ['i', 'h', 'w', 'x', 'y', 'parent'])),\n },\n });\n }\n\n static changeStateAndParams({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n options,\n }: ChangeStateAndParamsArg): ItemsStateAndParams {\n if (getCurrentVersion(itemsStateAndParams) === 1) {\n return changeStateAndParamsVersion1({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n });\n }\n\n const action = options?.action;\n const hasState = 'state' in stateAndParams;\n const {items} = config;\n const itemsIds = items.map(({id: itemId}) => itemId);\n const itemsStateAndParamsIds = Object.keys(omit(itemsStateAndParams, [META_KEY]));\n const unusedIds = itemsStateAndParamsIds.filter((id) => !itemsIds.includes(id));\n const initiatorItem = items.find(({id}) => id === initiatorId) as ConfigItem;\n const newTabId: string | undefined = stateAndParams.state?.tabId;\n const isTabSwitched = isItemWithTabs(initiatorItem) && Boolean(newTabId);\n const currentMeta = getItemsStateAndParamsMeta(itemsStateAndParams);\n const groupItemIds = options?.groupItemIds;\n\n if (action === 'removeItem') {\n return update(itemsStateAndParams, {\n $unset: [...unusedIds, initiatorId],\n [META_KEY]: {\n $set: currentMeta\n ? deleteFromQueue({\n id: initiatorId,\n itemsStateAndParams,\n config,\n })\n : getInitialItemsStateAndParamsMeta(),\n },\n });\n }\n\n if (isItemWithGroup(initiatorItem) && groupItemIds) {\n return changeGroupParams({\n initiatorId,\n initiatorItem,\n groupItemIds,\n itemsStateAndParams,\n stateAndParams,\n config,\n unusedIds,\n });\n }\n\n if ('params' in stateAndParams) {\n const changedParams = getChangedParams({\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n });\n\n const tabId: string | undefined = isItemWithTabs(initiatorItem)\n ? newTabId || resolveItemInnerId({item: initiatorItem, itemsStateAndParams})\n : undefined;\n const meta = addToQueue({id: initiatorId, tabId, config, itemsStateAndParams});\n let commandUpdateParams: string = (itemsStateAndParams as ItemsStateAndParamsBase)[\n initiatorId\n ]?.params\n ? '$merge'\n : '$set';\n if (isTabSwitched || action === 'setParams') {\n commandUpdateParams = '$set';\n }\n\n const obj = {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n params: {\n [commandUpdateParams]: changedParams,\n },\n ...(hasState ? {state: {$set: stateAndParams.state}} : {}),\n },\n },\n [META_KEY]: {$set: meta},\n };\n return update(itemsStateAndParams, obj);\n } else if (hasState) {\n let metaSpec: Spec<ItemsStateAndParams> = {};\n if (currentMeta && isTabSwitched) {\n metaSpec = {\n [META_KEY]: {\n $set: deleteFromQueue({\n id: initiatorId,\n itemsStateAndParams,\n config,\n }),\n },\n };\n }\n return update(itemsStateAndParams, {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n state: {$set: stateAndParams.state},\n ...(isTabSwitched ? {$unset: ['params']} : {}),\n },\n },\n ...(currentMeta\n ? metaSpec\n : {[META_KEY]: {$set: getInitialItemsStateAndParamsMeta()}}),\n });\n } else {\n return update(itemsStateAndParams, {\n $unset: unusedIds,\n ...(currentMeta\n ? {}\n : {\n [META_KEY]: {$set: getInitialItemsStateAndParamsMeta()},\n }),\n });\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"update-manager.js","sourceRoot":"../../../src","sources":["utils/update-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import update, {CustomCommands, Spec, extend} from 'immutability-helper';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\n\nimport {DEFAULT_GROUP, DEFAULT_NAMESPACE} from '../constants';\nimport {\n ConfigLayout,\n META_KEY,\n addGroupToQueue,\n addToQueue,\n deleteFromQueue,\n getAllConfigItems,\n getCurrentVersion,\n getInitialItemsStateAndParamsMeta,\n getItemsStateAndParamsMeta,\n isItemWithGroup,\n isItemWithTabs,\n mergeParamsWithAliases,\n pickActionParamsFromParams,\n resolveItemInnerId,\n transformParamsToActionParams,\n} from '../shared';\nimport type {\n Config,\n ConfigItem,\n ConfigItemGroup,\n ConfigItemWithGroup,\n ItemStateAndParams,\n ItemStateAndParamsChangeOptions,\n ItemsStateAndParams,\n ItemsStateAndParamsBase,\n StateAndParamsMetaData,\n StringParams,\n} from '../shared';\nimport type {\n AddConfigItem,\n AddNewItemOptions,\n ReflowLayoutOptions,\n SetItemOptions,\n WidgetLayout,\n} from '../typings';\n\nimport {getNewId} from './get-new-id';\nimport {bottom, compact} from './grid-layout';\nimport {resolveLayoutGroup} from './group-helpers';\nimport {RegisterManagerPluginLayout} from './register-manager';\n\nextend('$auto', (value, object) => (object ? update(object, value) : update({}, value)));\ntype AutoExtendCommand = CustomCommands<{$auto: object}>;\n\ninterface RemoveItemArg {\n id: string;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n}\n\nfunction removeItemVersion1({id, config, itemsStateAndParams}: RemoveItemArg) {\n const configItems = getAllConfigItems(config);\n const itemIndex = configItems.findIndex((item) => item.id === id);\n const removeItem = configItems[itemIndex];\n const {defaults = {}} = removeItem;\n const itemParamsKeys = Object.keys(defaults);\n const getParams = (excludeId: string, items: ConfigItem[]) => {\n return Object.keys(\n items.reduce((acc: StringParams, item) => {\n if (item.id !== excludeId) {\n Object.assign(acc, item.defaults);\n }\n return acc;\n }, {}),\n );\n };\n const allParamsKeys = getParams(id, configItems);\n const allNamespaceParamsKeys = getParams(\n id,\n configItems.filter((item) => item.namespace === removeItem.namespace),\n );\n const uniqParamsKeys = itemParamsKeys.filter((key) => !allParamsKeys.includes(key));\n const uniqNamespaceParamsKeys = itemParamsKeys.filter(\n (key) => !allNamespaceParamsKeys.includes(key),\n );\n const withoutUniqItemsParams = Object.keys(itemsStateAndParams)\n .filter((key) => key !== id)\n .reduce(\n (acc, key) => {\n const {params} = (itemsStateAndParams as ItemsStateAndParamsBase)[key];\n // в state из урла могут быть элементы, которых нет в config.items\n const item = configItems.find((configItem) => configItem.id === key);\n if (params && item) {\n const {namespace} = item;\n const currentUniqParamsKeys =\n namespace === removeItem.namespace\n ? uniqNamespaceParamsKeys\n : uniqParamsKeys;\n const resultParams: StringParams = omit(params, currentUniqParamsKeys);\n if (Object.keys(params).length !== Object.keys(resultParams).length) {\n acc[key] = {\n params: {\n $set: resultParams,\n },\n };\n }\n }\n return acc;\n },\n {} as Record<string, Spec<{params: StringParams}>>,\n );\n const newItemsStateAndParams = update(itemsStateAndParams, {\n $unset: [id],\n ...withoutUniqItemsParams,\n });\n const connections = config.connections.filter(({from, to}) => id !== from && id !== to);\n const newConfig = update(config, {\n items: {\n $splice: [[itemIndex, 1]],\n },\n layout: {\n $splice: [[itemIndex, 1]],\n },\n connections: {\n $set: connections,\n },\n });\n return {\n config: newConfig,\n itemsStateAndParams: newItemsStateAndParams,\n };\n}\n\nfunction getAllowableChangedParams(\n item: ConfigItem | ConfigItemGroup,\n stateAndParams: ItemStateAndParams,\n itemsStateAndParams: ItemsStateAndParams,\n paramsSettings?: {\n type?: 'params' | 'actionParams';\n returnPrefix: boolean;\n },\n): StringParams {\n const paramsTypeName = paramsSettings?.type || 'params';\n const isActionParamsMode = paramsTypeName === 'actionParams';\n\n let allowedParams: StringParams = {};\n if (isActionParamsMode) {\n allowedParams = pickActionParamsFromParams(stateAndParams.params, false);\n return paramsSettings?.returnPrefix\n ? transformParamsToActionParams(allowedParams)\n : allowedParams;\n }\n\n const stateParamsConf = stateAndParams.params;\n\n // check if structure is StringParams or Record<string, StringParams>\n // if it's Record<string, StringParams>, then this is a group application of params\n // and checking for comparison of allowedParams and stateParamsConf is not necessary\n const isGroupParamsApply =\n typeof stateParamsConf?.[item.id] === 'object' &&\n stateParamsConf?.[item.id] !== null &&\n !Array.isArray(stateParamsConf?.[item.id]);\n\n if (isItemWithTabs(item)) {\n let tab;\n if ('state' in stateAndParams && stateAndParams.state?.tabId) {\n tab = item.data.tabs.find(({id}) => id === stateAndParams.state?.tabId);\n }\n if (!tab) {\n const tabId = resolveItemInnerId({item, itemsStateAndParams});\n tab = item.data.tabs.find(({id}) => id === tabId);\n }\n allowedParams = pick(stateParamsConf, Object.keys(tab?.params || {})) as StringParams;\n } else {\n const paramsConf = isGroupParamsApply ? stateParamsConf[item.id] : stateParamsConf;\n allowedParams = pick(paramsConf, Object.keys(item.defaults || {})) as StringParams;\n }\n\n if (\n !isGroupParamsApply &&\n Object.keys(allowedParams || {}).length !== Object.keys(stateParamsConf || {}).length\n ) {\n console.warn('Параметры, которых нет в defaults, будут проигнорированы!');\n }\n return allowedParams;\n}\n\ninterface ChangeStateAndParamsArg {\n id: string;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n stateAndParams: ItemStateAndParams;\n options?: ItemStateAndParamsChangeOptions;\n}\n\nfunction changeStateAndParamsVersion1({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n}: ChangeStateAndParamsArg) {\n const allConfigItems = getAllConfigItems(config);\n const hasState = 'state' in stateAndParams;\n const {aliases} = config;\n if ('params' in stateAndParams) {\n const initiatorItem = allConfigItems.find(({id}) => id === initiatorId) as ConfigItem;\n const allowableParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n );\n const allowableParamsWithAliases = mergeParamsWithAliases({\n aliases,\n namespace: initiatorItem.namespace,\n params: allowableParams,\n });\n const ignoresInitiatorIds = config.connections\n .filter(({to}) => to === initiatorId)\n .map(({from}) => from);\n\n const updateIds = allConfigItems\n .filter(\n (item) =>\n item.namespace === initiatorItem.namespace &&\n !ignoresInitiatorIds.includes(item.id) &&\n (!isItemWithTabs(item) ||\n (isItemWithTabs(item) &&\n item.data.tabs.every(({id}) => !ignoresInitiatorIds.includes(id)))),\n )\n .map(({id}) => id);\n return update(\n itemsStateAndParams,\n updateIds.reduce(\n (acc, currentId) => {\n acc[currentId] = {\n $auto: {\n params: {\n [(itemsStateAndParams as ItemsStateAndParamsBase)[currentId]?.params\n ? '$merge'\n : '$set']: allowableParamsWithAliases,\n },\n ...(hasState && currentId === initiatorId\n ? {state: {$set: stateAndParams.state}}\n : {}),\n },\n };\n return acc;\n },\n {} as Record<string, Spec<ItemsStateAndParams, AutoExtendCommand>>,\n ),\n );\n } else if (hasState) {\n return update(itemsStateAndParams, {\n [initiatorId]: {\n $auto: {\n state: {$set: stateAndParams.state},\n },\n },\n });\n } else {\n return itemsStateAndParams;\n }\n}\n\ntype GetNewItemDataArgs = {\n item: AddConfigItem | ConfigItem;\n config: Config;\n salt: Config['salt'];\n counter: Config['counter'];\n options: SetItemOptions;\n};\n\nfunction getNewItemData({item, config, counter: argsCounter, salt, options}: GetNewItemDataArgs) {\n const excludeIds = [...(options.excludeIds || [])];\n let counter = argsCounter;\n\n let data = item.data;\n\n if (isItemWithTabs(item)) {\n const tabs = item.data.tabs.map((tab) => {\n if (tab.id) {\n return tab;\n }\n\n const newIdTabData = getNewId({config, salt, counter, excludeIds});\n counter = newIdTabData.counter;\n excludeIds.push(newIdTabData.id);\n\n return {...tab, id: newIdTabData.id};\n });\n\n data = {...item.data, tabs};\n }\n\n if (isItemWithGroup(item)) {\n const group = item.data.group.map((groupItem) => {\n if (groupItem.id) {\n return groupItem;\n }\n\n const newIdGroupData = getNewId({config, salt, counter, excludeIds});\n counter = newIdGroupData.counter;\n excludeIds.push(newIdGroupData.id);\n\n return {\n ...groupItem,\n id: newIdGroupData.id,\n namespace: groupItem.namespace || DEFAULT_NAMESPACE,\n };\n });\n\n data = {...item.data, group};\n }\n\n return {data, counter, excludeIds};\n}\n\nexport const getChangedParams = ({\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n}: {\n initiatorItem: ConfigItem | ConfigItemGroup;\n stateAndParams: ItemStateAndParams;\n itemsStateAndParams: ItemsStateAndParams;\n}) => {\n const allowableParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n );\n\n const allowableActionParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n {type: 'actionParams', returnPrefix: true},\n );\n\n return {...allowableParams, ...allowableActionParams};\n};\n\nfunction changeGroupParams({\n groupItemIds,\n initiatorId,\n initiatorItem,\n itemsStateAndParams,\n stateAndParams,\n config,\n unusedIds,\n}: {\n groupItemIds: string[];\n initiatorId: string;\n initiatorItem: ConfigItemWithGroup;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n stateAndParams: ItemStateAndParams;\n unusedIds: string[];\n}) {\n const meta: StateAndParamsMetaData = addGroupToQueue({\n id: initiatorId,\n groupItemIds,\n config,\n itemsStateAndParams,\n });\n const updatedItems: Record<string, StringParams> = {};\n const currentItemParams = (itemsStateAndParams as ItemsStateAndParamsBase)[initiatorId]\n ?.params as Record<string, StringParams> | undefined;\n\n for (const groupItem of initiatorItem.data.group) {\n if (groupItemIds.includes(groupItem.id)) {\n const changedParams = getChangedParams({\n initiatorItem: groupItem,\n stateAndParams,\n itemsStateAndParams,\n });\n\n updatedItems[groupItem.id] = changedParams;\n\n continue;\n }\n\n if (currentItemParams && currentItemParams[groupItem.id]) {\n updatedItems[groupItem.id] = currentItemParams[groupItem.id];\n }\n }\n\n const obj = {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n params: {\n $set: updatedItems,\n },\n },\n },\n [META_KEY]: {$set: meta},\n };\n return update(itemsStateAndParams, obj);\n}\n\nexport function reflowLayout({\n newLayoutItem,\n layout,\n reflowLayoutOptions,\n}: {\n newLayoutItem?: ConfigLayout;\n layout: ConfigLayout[];\n reflowLayoutOptions: ReflowLayoutOptions;\n}) {\n const byGroup: Record<string, ConfigLayout[]> = {};\n const reducer = (\n memo: Record<string, number>,\n item: ConfigLayout,\n i: number,\n _items: ConfigLayout[],\n isNewItem?: boolean,\n ) => {\n memo[item.i] = i;\n const parent = resolveLayoutGroup(item);\n\n if (byGroup[parent]) {\n if (isNewItem) {\n byGroup[parent].unshift(item);\n } else {\n byGroup[parent].push(item);\n }\n } else {\n byGroup[parent] = [item];\n }\n\n return memo;\n };\n\n const orderById = layout.reduce<Record<string, number>>(reducer, {});\n\n if (newLayoutItem) {\n reducer(orderById, newLayoutItem, layout.length, layout, true);\n }\n\n const {defaultProps} = reflowLayoutOptions;\n\n return Object.entries(byGroup)\n .reduce<ConfigLayout[]>((memo, [groupId, layoutItems]) => {\n let reflowOptions = defaultProps;\n if (reflowLayoutOptions?.groups?.[groupId]) {\n reflowOptions = reflowLayoutOptions?.groups[groupId];\n }\n\n if (reflowOptions.compactType === null) {\n return memo.concat(layoutItems);\n }\n\n const compactedList = compact(\n layoutItems,\n reflowOptions.compactType,\n reflowOptions.cols,\n ).map((item) => {\n const cleanCopy = pick(item, ['i', 'h', 'w', 'x', 'y', 'parent']) as ConfigLayout;\n\n if (groupId === DEFAULT_GROUP) {\n return cleanCopy;\n }\n\n return {...cleanCopy, parent: groupId};\n });\n\n return memo.concat(compactedList);\n }, [])\n .sort((a, b) => orderById[a.i] - orderById[b.i]);\n}\n\nexport class UpdateManager {\n static addItem({\n item,\n namespace = DEFAULT_NAMESPACE,\n layout,\n config,\n options = {},\n }: {\n item: AddConfigItem;\n namespace: string;\n layout: RegisterManagerPluginLayout;\n config: Config;\n options?: AddNewItemOptions;\n }) {\n const salt = config.salt;\n\n const newItemData = getNewItemData({item, config, salt, counter: config.counter, options});\n let counter = newItemData.counter;\n\n const newIdData = getNewId({config, salt, counter, excludeIds: newItemData.excludeIds});\n counter = newIdData.counter;\n\n const newItem = {...item, id: newIdData.id, data: newItemData.data, namespace};\n const saveDefaultLayout = pick(layout, ['h', 'w', 'x', 'y', 'parent']);\n\n const updateActions = {\n counter: {$set: counter},\n ...(options.useGlobalItems\n ? {globalItems: config.globalItems ? {$push: [newItem]} : {$set: [newItem]}}\n : {items: {$push: [newItem]}}),\n };\n\n if (options.updateLayout) {\n const byId = options.updateLayout.reduce<Record<string, ConfigLayout>>((memo, t) => {\n memo[t.i] = t;\n return memo;\n }, {});\n let newLayout;\n const newLayoutItem = {...saveDefaultLayout, i: newItem.id};\n\n if (options.reflowLayoutOptions) {\n newLayout = reflowLayout({\n newLayoutItem,\n layout: config.layout.map((t) => ({...t, ...(byId[t.i] || {})})),\n reflowLayoutOptions: options.reflowLayoutOptions,\n });\n } else {\n newLayout = [\n ...config.layout.map((t) => ({...t, ...(byId[t.i] || {})})),\n {...saveDefaultLayout, i: newItem.id},\n ];\n }\n\n return update(config, {\n ...updateActions,\n layout: {$set: newLayout},\n });\n } else if (isFinite(layout.y)) {\n let newLayout;\n const newLayoutItem = {...saveDefaultLayout, i: newItem.id};\n\n if (options.reflowLayoutOptions) {\n newLayout = reflowLayout({\n newLayoutItem,\n layout: config.layout,\n reflowLayoutOptions: options.reflowLayoutOptions,\n });\n } else {\n newLayout = [...config.layout, newLayoutItem];\n }\n\n return update(config, {\n ...updateActions,\n layout: {$set: newLayout},\n });\n } else {\n const layoutY = bottom(config.layout);\n const newLayoutItem = {...saveDefaultLayout, y: layoutY, i: newItem.id};\n\n return update(config, {\n ...updateActions,\n layout: {$push: [newLayoutItem]},\n });\n }\n }\n\n static editItem({\n item,\n namespace = DEFAULT_NAMESPACE,\n config,\n options = {},\n }: {\n item: ConfigItem;\n namespace: string;\n config: Config;\n options?: SetItemOptions;\n }) {\n const globalItemIndex = config.globalItems\n ? config.globalItems.findIndex(({id}) => item.id === id)\n : -1;\n const itemIndex = config.items.findIndex(({id}) => item.id === id);\n\n const shouldBeGlobalItem = options.useGlobalItems;\n const isCurrentlyInGlobalItems = globalItemIndex !== -1;\n const isCurrentlyInItems = itemIndex !== -1;\n\n const {counter, data} = getNewItemData({\n item,\n config,\n salt: config.salt,\n counter: config.counter,\n options,\n });\n\n const updatedItem = {...item, data, namespace};\n\n // Determine if we need to move the item between arrays\n if (shouldBeGlobalItem && isCurrentlyInItems) {\n // Move from items to globalItems\n return update(config, {\n items: {$splice: [[itemIndex, 1]]},\n globalItems: config.globalItems ? {$push: [updatedItem]} : {$set: [updatedItem]},\n counter: {$set: counter},\n });\n } else if (!shouldBeGlobalItem && isCurrentlyInGlobalItems) {\n // Move from globalItems to items\n return update(config, {\n globalItems: {$splice: [[globalItemIndex, 1]]},\n items: {$push: [updatedItem]},\n counter: {$set: counter},\n });\n } else {\n // Update in current location\n const updateAction = isCurrentlyInGlobalItems\n ? {globalItems: {[globalItemIndex]: {$set: updatedItem}}}\n : {items: {[itemIndex]: {$set: updatedItem}}};\n\n return update(config, {\n ...updateAction,\n counter: {$set: counter},\n });\n }\n }\n\n static removeItem({id, config, itemsStateAndParams = {}}: RemoveItemArg): {\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n } {\n if (getCurrentVersion(itemsStateAndParams) === 1) {\n return removeItemVersion1({id, config, itemsStateAndParams});\n }\n const globalItemIndex = config.globalItems\n ? config.globalItems.findIndex((item) => item.id === id)\n : -1;\n const itemIndex = config.items.findIndex((item) => item.id === id);\n const layoutIndex = config.layout.findIndex((item) => item.i === id);\n const item = config.items[itemIndex] || config.globalItems?.[globalItemIndex];\n\n let itemIds = [id];\n if (isItemWithTabs(item)) {\n itemIds = [id].concat(item.data.tabs.map((tab) => tab.id));\n }\n if (isItemWithGroup(item)) {\n itemIds = [id].concat(item.data.group.map((groupItem) => groupItem.id));\n }\n const connections = config.connections.filter(\n ({from, to}) => !itemIds.includes(from) && !itemIds.includes(to),\n );\n\n const updateAction: {[key: string]: Spec<ConfigItem[], never>} =\n globalItemIndex === -1\n ? {\n items: {\n $splice: [[itemIndex, 1]],\n },\n }\n : {globalItems: {$splice: [[globalItemIndex, 1]]}};\n\n return {\n config: update(config, {\n layout: {\n $splice: [[layoutIndex, 1]],\n },\n connections: {\n $set: connections,\n },\n ...updateAction,\n }),\n itemsStateAndParams: update(itemsStateAndParams, {\n $unset: [id],\n [META_KEY]: {\n $set: deleteFromQueue({\n id,\n itemsStateAndParams,\n config,\n }),\n },\n }),\n };\n }\n\n static updateLayout({layout, config}: {layout: WidgetLayout[]; config: Config}) {\n return update(config, {\n layout: {\n $set: layout.map((item) => pick(item, ['i', 'h', 'w', 'x', 'y', 'parent'])),\n },\n });\n }\n\n static changeStateAndParams({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n options,\n }: ChangeStateAndParamsArg): ItemsStateAndParams {\n if (getCurrentVersion(itemsStateAndParams) === 1) {\n return changeStateAndParamsVersion1({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n });\n }\n\n const action = options?.action;\n const hasState = 'state' in stateAndParams;\n const items = getAllConfigItems(config);\n const itemsIds = items.map(({id: itemId}) => itemId);\n const itemsStateAndParamsIds = Object.keys(omit(itemsStateAndParams, [META_KEY]));\n const unusedIds = itemsStateAndParamsIds.filter((id) => !itemsIds.includes(id));\n const initiatorItem = items.find(({id}) => id === initiatorId) as ConfigItem;\n const newTabId: string | undefined = stateAndParams.state?.tabId;\n const isTabSwitched = isItemWithTabs(initiatorItem) && Boolean(newTabId);\n const currentMeta = getItemsStateAndParamsMeta(itemsStateAndParams);\n const groupItemIds = options?.groupItemIds;\n\n if (action === 'removeItem') {\n return update(itemsStateAndParams, {\n $unset: [...unusedIds, initiatorId],\n [META_KEY]: {\n $set: currentMeta\n ? deleteFromQueue({\n id: initiatorId,\n itemsStateAndParams,\n config,\n })\n : getInitialItemsStateAndParamsMeta(),\n },\n });\n }\n\n if (isItemWithGroup(initiatorItem) && groupItemIds) {\n return changeGroupParams({\n initiatorId,\n initiatorItem,\n groupItemIds,\n itemsStateAndParams,\n stateAndParams,\n config,\n unusedIds,\n });\n }\n\n if ('params' in stateAndParams) {\n const changedParams = getChangedParams({\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n });\n\n const tabId: string | undefined = isItemWithTabs(initiatorItem)\n ? newTabId || resolveItemInnerId({item: initiatorItem, itemsStateAndParams})\n : undefined;\n const meta = addToQueue({\n id: initiatorId,\n tabId,\n config,\n itemsStateAndParams,\n });\n let commandUpdateParams: string = (itemsStateAndParams as ItemsStateAndParamsBase)[\n initiatorId\n ]?.params\n ? '$merge'\n : '$set';\n if (isTabSwitched || action === 'setParams') {\n commandUpdateParams = '$set';\n }\n\n const obj = {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n params: {\n [commandUpdateParams]: changedParams,\n },\n ...(hasState ? {state: {$set: stateAndParams.state}} : {}),\n },\n },\n [META_KEY]: {$set: meta},\n };\n return update(itemsStateAndParams, obj);\n } else if (hasState) {\n let metaSpec: Spec<ItemsStateAndParams> = {};\n if (currentMeta && isTabSwitched) {\n metaSpec = {\n [META_KEY]: {\n $set: deleteFromQueue({\n id: initiatorId,\n itemsStateAndParams,\n config,\n }),\n },\n };\n }\n return update(itemsStateAndParams, {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n state: {$set: stateAndParams.state},\n ...(isTabSwitched ? {$unset: ['params']} : {}),\n },\n },\n ...(currentMeta\n ? metaSpec\n : {[META_KEY]: {$set: getInitialItemsStateAndParamsMeta()}}),\n });\n } else {\n return update(itemsStateAndParams, {\n $unset: unusedIds,\n ...(currentMeta\n ? {}\n : {\n [META_KEY]: {$set: getInitialItemsStateAndParamsMeta()},\n }),\n });\n }\n }\n}\n"]}
|