@ynput/ayon-frontend-shared 0.2.0 → 0.2.2
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/dist/_virtual/index.cjs4.js +4 -4
- package/dist/_virtual/index.cjs5.js +3 -5
- package/dist/_virtual/index.cjs5.js.map +1 -1
- package/dist/_virtual/index.cjs6.js +5 -3
- package/dist/_virtual/index.cjs6.js.map +1 -1
- package/dist/_virtual/index.cjs7.js +2 -2
- package/dist/_virtual/index.es4.js +4 -4
- package/dist/_virtual/index.es5.js +2 -5
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +5 -2
- package/dist/_virtual/index.es6.js.map +1 -1
- package/dist/_virtual/index.es7.js +2 -2
- package/dist/hooks.cjs.js +2 -0
- package/dist/hooks.cjs.js.map +1 -1
- package/dist/hooks.es.js +2 -0
- package/dist/hooks.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/src/components/EntityPath/EntityPath.cjs.js +11 -1
- package/dist/shared/src/components/EntityPath/EntityPath.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/EntityPath.es.js +12 -2
- package/dist/shared/src/components/EntityPath/EntityPath.es.js.map +1 -1
- package/dist/shared/src/components/EntityPath/EntityPath.styled.cjs.js +10 -1
- package/dist/shared/src/components/EntityPath/EntityPath.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/EntityPath.styled.es.js +10 -1
- package/dist/shared/src/components/EntityPath/EntityPath.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +5 -0
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +5 -0
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +5 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +5 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -2
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +1 -2
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +4 -0
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +4 -0
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +8 -0
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +8 -0
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModules.cjs.js +136 -0
- package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -0
- package/dist/shared/src/hooks/useLoadModules.es.js +136 -0
- package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -0
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js +4 -1
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.es.js +4 -1
- package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
- package/dist/types/components/EntityPath/EntityPath.styled.d.ts +1 -0
- package/dist/types/containers/RepresentationsList/RepresentationsList.d.ts +1 -1
- package/dist/types/context/DetailsPanelContext.d.ts +4 -0
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useLoadModules.d.ts +28 -0
- package/package.json +1 -1
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { r as runtimeExports } from "../../../_virtual/runtime.es.js";
|
|
2
|
+
import { useRef, useState, useEffect } from "react";
|
|
3
|
+
import semver from "../../../_virtual/semver.es.js";
|
|
4
|
+
const useLoadModules = (moduleSpecs, modules, skip) => {
|
|
5
|
+
const processedModules = useRef(/* @__PURE__ */ new Set());
|
|
6
|
+
const [results, setResults] = useState(
|
|
7
|
+
() => initializeResults(moduleSpecs)
|
|
8
|
+
);
|
|
9
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (skip) return;
|
|
12
|
+
processedModules.current = /* @__PURE__ */ new Set();
|
|
13
|
+
setResults(initializeResults(moduleSpecs));
|
|
14
|
+
}, [JSON.stringify(moduleSpecs), skip]);
|
|
15
|
+
const loadModule = async (remote, module, addon, fallback, minVersion) => {
|
|
16
|
+
try {
|
|
17
|
+
const result = await runtimeExports.loadRemote(`${remote}/${module}`, {
|
|
18
|
+
from: "runtime"
|
|
19
|
+
});
|
|
20
|
+
updateResultWithLoaded(addon, remote, module, (result == null ? void 0 : result.default) || fallback, minVersion);
|
|
21
|
+
} catch (error) {
|
|
22
|
+
console.error("Error loading remote module", remote, module, error);
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (skip) return;
|
|
28
|
+
console.log("loading modules");
|
|
29
|
+
const promises = [];
|
|
30
|
+
moduleSpecs.forEach((spec, index) => {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
const { addon, remote, module, fallback, minVersion } = spec;
|
|
33
|
+
if (!addon || !remote || !module) return;
|
|
34
|
+
const moduleKey = `${addon}/${remote}/${module}`;
|
|
35
|
+
if (processedModules.current.has(moduleKey)) return;
|
|
36
|
+
if ((_b = (_a = results[index]) == null ? void 0 : _a[1]) == null ? void 0 : _b.isLoaded) {
|
|
37
|
+
processedModules.current.add(moduleKey);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
processedModules.current.add(moduleKey);
|
|
41
|
+
const addonInfo = modules.find((m) => m.addonName === addon);
|
|
42
|
+
if (!addonInfo) {
|
|
43
|
+
console.log("Addon not found", { addon, remote, module });
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (minVersion && !semver.gte(addonInfo.addonVersion, minVersion)) {
|
|
47
|
+
updateResultWithOutdated(
|
|
48
|
+
index,
|
|
49
|
+
addon,
|
|
50
|
+
remote,
|
|
51
|
+
module,
|
|
52
|
+
fallback,
|
|
53
|
+
minVersion,
|
|
54
|
+
addonInfo.addonVersion
|
|
55
|
+
);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (!addonInfo.modules[remote]) {
|
|
59
|
+
console.log("Module not found", { addon, remote, module });
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
promises.push(loadModule(remote, module, addon, fallback, minVersion));
|
|
63
|
+
});
|
|
64
|
+
setIsLoading(true);
|
|
65
|
+
Promise.all(promises).then(() => {
|
|
66
|
+
setIsLoading(false);
|
|
67
|
+
}).catch((error) => {
|
|
68
|
+
console.error("Error loading modules", error);
|
|
69
|
+
setIsLoading(false);
|
|
70
|
+
});
|
|
71
|
+
}, [skip, modules, JSON.stringify(moduleSpecs)]);
|
|
72
|
+
function initializeResults(specs) {
|
|
73
|
+
return specs.map(
|
|
74
|
+
({ addon = "", remote = "", module = "", fallback, minVersion }) => [
|
|
75
|
+
fallback,
|
|
76
|
+
{
|
|
77
|
+
isLoaded: false,
|
|
78
|
+
addon,
|
|
79
|
+
remote,
|
|
80
|
+
module,
|
|
81
|
+
minVersion,
|
|
82
|
+
outdated: void 0
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
function updateResultWithOutdated(index, addon, remote, module, fallback, requiredVersion, currentVersion) {
|
|
88
|
+
setResults((prev) => {
|
|
89
|
+
const updated = [...prev];
|
|
90
|
+
if (index >= 0 && index < updated.length) {
|
|
91
|
+
updated[index] = [
|
|
92
|
+
fallback,
|
|
93
|
+
{
|
|
94
|
+
isLoaded: false,
|
|
95
|
+
addon,
|
|
96
|
+
remote,
|
|
97
|
+
module,
|
|
98
|
+
minVersion: requiredVersion,
|
|
99
|
+
outdated: {
|
|
100
|
+
current: currentVersion,
|
|
101
|
+
required: requiredVersion
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
return updated;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
function updateResultWithLoaded(addon, remote, module, loadedModule, minVersion) {
|
|
110
|
+
setResults((prev) => {
|
|
111
|
+
const updated = [...prev];
|
|
112
|
+
const index = moduleSpecs.findIndex(
|
|
113
|
+
(spec) => spec.addon === addon && spec.remote === remote && spec.module === module
|
|
114
|
+
);
|
|
115
|
+
if (index >= 0 && index < updated.length) {
|
|
116
|
+
updated[index] = [
|
|
117
|
+
loadedModule,
|
|
118
|
+
{
|
|
119
|
+
isLoaded: true,
|
|
120
|
+
addon,
|
|
121
|
+
remote,
|
|
122
|
+
module,
|
|
123
|
+
minVersion,
|
|
124
|
+
outdated: void 0
|
|
125
|
+
}
|
|
126
|
+
];
|
|
127
|
+
}
|
|
128
|
+
return updated;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return { modules: results, isLoading };
|
|
132
|
+
};
|
|
133
|
+
export {
|
|
134
|
+
useLoadModules
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=useLoadModules.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLoadModules.es.js","sources":["../../../../src/hooks/useLoadModules.ts"],"sourcesContent":["import { useRemoteModules } from '@shared/context/RemoteModulesContext'\nimport { loadRemote } from '@module-federation/enhanced/runtime'\nimport { useEffect, useRef, useState } from 'react'\nimport semver from 'semver'\nimport { FrontendModuleListItem } from '@shared/api'\n\nexport interface ModuleSpec<T> {\n addon: string\n remote: string\n module: string\n fallback?: T\n debug?: boolean\n minVersion?: string\n}\n\ntype ModuleResult<T> = [\n T,\n {\n isLoaded: boolean\n addon: string\n remote: string\n module: string\n minVersion?: string\n outdated?: {\n current: string\n required: string\n }\n },\n]\n\nexport const useLoadModules = <T extends any[]>(\n moduleSpecs: ModuleSpec<T[number]>[],\n modules: FrontendModuleListItem[],\n skip: boolean,\n): { modules: ModuleResult<T[number]>[]; isLoading: boolean } => {\n // Use a ref to track which modules have been processed\n const processedModules = useRef<Set<string>>(new Set())\n\n // Initialize results state\n const [results, setResults] = useState<ModuleResult<T[number]>[]>(() =>\n initializeResults(moduleSpecs),\n )\n const [isLoading, setIsLoading] = useState(true)\n\n // Reset and reinitialize when moduleSpecs change\n useEffect(() => {\n if (skip) return\n // Reset the processed modules tracker\n processedModules.current = new Set()\n\n // Initialize results with proper structure\n setResults(initializeResults(moduleSpecs))\n }, [JSON.stringify(moduleSpecs), skip])\n\n const loadModule = async (\n remote: string,\n module: string,\n addon: string,\n fallback: T[number] | undefined,\n minVersion?: string,\n ) => {\n try {\n const result = await loadRemote<{ default: T[number] }>(`${remote}/${module}`, {\n from: 'runtime',\n })\n updateResultWithLoaded(addon, remote, module, result?.default || fallback, minVersion)\n } catch (error) {\n console.error('Error loading remote module', remote, module, error)\n throw error\n }\n }\n\n // Load modules when remotes are initialized\n useEffect(() => {\n if (skip) return\n\n console.log('loading modules')\n\n const promises: Promise<void>[] = []\n moduleSpecs.forEach((spec, index) => {\n const { addon, remote, module, fallback, minVersion } = spec\n\n if (!addon || !remote || !module) return\n\n // Create a unique key for this module\n const moduleKey = `${addon}/${remote}/${module}`\n\n // Skip if already processed\n if (processedModules.current.has(moduleKey)) return\n\n // Check if this module is already loaded in our results\n if (results[index]?.[1]?.isLoaded) {\n processedModules.current.add(moduleKey)\n return\n }\n\n // Mark as processed\n processedModules.current.add(moduleKey)\n\n const addonInfo = modules.find((m) => m.addonName === addon)\n\n // Handle missing addon\n if (!addonInfo) {\n console.log('Addon not found', { addon, remote, module })\n return\n }\n\n // Check version requirements\n if (minVersion && !semver.gte(addonInfo.addonVersion, minVersion)) {\n updateResultWithOutdated(\n index,\n addon,\n remote,\n module,\n fallback,\n minVersion,\n addonInfo.addonVersion,\n )\n return\n }\n\n // Check if module exists\n if (!addonInfo.modules[remote]) {\n console.log('Module not found', { addon, remote, module })\n return\n }\n\n promises.push(loadModule(remote, module, addon, fallback, minVersion))\n })\n\n // Wait for all promises to resolve\n setIsLoading(true)\n Promise.all(promises)\n .then(() => {\n // all modules loaded\n setIsLoading(false)\n })\n .catch((error) => {\n console.error('Error loading modules', error)\n setIsLoading(false)\n })\n }, [skip, modules, JSON.stringify(moduleSpecs)])\n\n // Helper function to initialize results\n function initializeResults(specs: ModuleSpec<T[number]>[]): ModuleResult<T[number]>[] {\n return specs.map(\n ({ addon = '', remote = '', module = '', fallback, minVersion }): ModuleResult<T[number]> => [\n fallback as T[number],\n {\n isLoaded: false,\n addon,\n remote,\n module,\n minVersion,\n outdated: undefined,\n },\n ],\n )\n }\n\n // Helper to update a result with outdated status\n function updateResultWithOutdated(\n index: number,\n addon: string,\n remote: string,\n module: string,\n fallback: T[number] | undefined,\n requiredVersion: string,\n currentVersion: string,\n ) {\n setResults((prev) => {\n const updated = [...prev]\n if (index >= 0 && index < updated.length) {\n updated[index] = [\n fallback,\n {\n isLoaded: false,\n addon,\n remote,\n module,\n minVersion: requiredVersion,\n outdated: {\n current: currentVersion,\n required: requiredVersion,\n },\n },\n ]\n }\n return updated\n })\n }\n\n // Helper to update a result when module is loaded\n function updateResultWithLoaded(\n addon: string,\n remote: string,\n module: string,\n loadedModule: T[number] | undefined,\n minVersion?: string,\n ) {\n setResults((prev) => {\n const updated = [...prev]\n // Find the corresponding module spec\n const index = moduleSpecs.findIndex(\n (spec) => spec.addon === addon && spec.remote === remote && spec.module === module,\n )\n\n if (index >= 0 && index < updated.length) {\n updated[index] = [\n loadedModule,\n {\n isLoaded: true,\n addon,\n remote,\n module,\n minVersion,\n outdated: undefined,\n },\n ]\n }\n return updated\n })\n }\n\n return { modules: results, isLoading }\n}\n"],"names":["loadRemote"],"mappings":";;;AA8BO,MAAM,iBAAiB,CAC5B,aACA,SACA,SAC+D;AAE/D,QAAM,mBAAmB,OAAwB,oBAAA,KAAK;AAGhD,QAAA,CAAC,SAAS,UAAU,IAAI;AAAA,IAAoC,MAChE,kBAAkB,WAAW;AAAA,EAC/B;AACA,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAG/C,YAAU,MAAM;AACd,QAAI,KAAM;AAEO,qBAAA,8BAAc,IAAI;AAGxB,eAAA,kBAAkB,WAAW,CAAC;AAAA,KACxC,CAAC,KAAK,UAAU,WAAW,GAAG,IAAI,CAAC;AAEtC,QAAM,aAAa,OACjB,QACA,QACA,OACA,UACA,eACG;AACC,QAAA;AACF,YAAM,SAAS,MAAMA,0BAAmC,GAAG,MAAM,IAAI,MAAM,IAAI;AAAA,QAC7E,MAAM;AAAA,MAAA,CACP;AACD,6BAAuB,OAAO,QAAQ,SAAQ,iCAAQ,YAAW,UAAU,UAAU;AAAA,aAC9E,OAAO;AACd,cAAQ,MAAM,+BAA+B,QAAQ,QAAQ,KAAK;AAC5D,YAAA;AAAA,IAAA;AAAA,EAEV;AAGA,YAAU,MAAM;AACd,QAAI,KAAM;AAEV,YAAQ,IAAI,iBAAiB;AAE7B,UAAM,WAA4B,CAAC;AACvB,gBAAA,QAAQ,CAAC,MAAM,UAAU;;AACnC,YAAM,EAAE,OAAO,QAAQ,QAAQ,UAAU,eAAe;AAExD,UAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAQ;AAGlC,YAAM,YAAY,GAAG,KAAK,IAAI,MAAM,IAAI,MAAM;AAG9C,UAAI,iBAAiB,QAAQ,IAAI,SAAS,EAAG;AAG7C,WAAI,mBAAQ,KAAK,MAAb,mBAAiB,OAAjB,mBAAqB,UAAU;AAChB,yBAAA,QAAQ,IAAI,SAAS;AACtC;AAAA,MAAA;AAIe,uBAAA,QAAQ,IAAI,SAAS;AAEtC,YAAM,YAAY,QAAQ,KAAK,CAAC,MAAM,EAAE,cAAc,KAAK;AAG3D,UAAI,CAAC,WAAW;AACd,gBAAQ,IAAI,mBAAmB,EAAE,OAAO,QAAQ,QAAQ;AACxD;AAAA,MAAA;AAIF,UAAI,cAAc,CAAC,OAAO,IAAI,UAAU,cAAc,UAAU,GAAG;AACjE;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,QACZ;AACA;AAAA,MAAA;AAIF,UAAI,CAAC,UAAU,QAAQ,MAAM,GAAG;AAC9B,gBAAQ,IAAI,oBAAoB,EAAE,OAAO,QAAQ,QAAQ;AACzD;AAAA,MAAA;AAGF,eAAS,KAAK,WAAW,QAAQ,QAAQ,OAAO,UAAU,UAAU,CAAC;AAAA,IAAA,CACtE;AAGD,iBAAa,IAAI;AACjB,YAAQ,IAAI,QAAQ,EACjB,KAAK,MAAM;AAEV,mBAAa,KAAK;AAAA,IAAA,CACnB,EACA,MAAM,CAAC,UAAU;AACR,cAAA,MAAM,yBAAyB,KAAK;AAC5C,mBAAa,KAAK;AAAA,IAAA,CACnB;AAAA,EAAA,GACF,CAAC,MAAM,SAAS,KAAK,UAAU,WAAW,CAAC,CAAC;AAG/C,WAAS,kBAAkB,OAA2D;AACpF,WAAO,MAAM;AAAA,MACX,CAAC,EAAE,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,iBAA0C;AAAA,QAC3F;AAAA,QACA;AAAA,UACE,UAAU;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,QAAA;AAAA,MACZ;AAAA,IAEJ;AAAA,EAAA;AAIF,WAAS,yBACP,OACA,OACA,QACA,QACA,UACA,iBACA,gBACA;AACA,eAAW,CAAC,SAAS;AACb,YAAA,UAAU,CAAC,GAAG,IAAI;AACxB,UAAI,SAAS,KAAK,QAAQ,QAAQ,QAAQ;AACxC,gBAAQ,KAAK,IAAI;AAAA,UACf;AAAA,UACA;AAAA,YACE,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA,YAAY;AAAA,YACZ,UAAU;AAAA,cACR,SAAS;AAAA,cACT,UAAU;AAAA,YAAA;AAAA,UACZ;AAAA,QAEJ;AAAA,MAAA;AAEK,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AAIH,WAAS,uBACP,OACA,QACA,QACA,cACA,YACA;AACA,eAAW,CAAC,SAAS;AACb,YAAA,UAAU,CAAC,GAAG,IAAI;AAExB,YAAM,QAAQ,YAAY;AAAA,QACxB,CAAC,SAAS,KAAK,UAAU,SAAS,KAAK,WAAW,UAAU,KAAK,WAAW;AAAA,MAC9E;AAEA,UAAI,SAAS,KAAK,QAAQ,QAAQ,QAAQ;AACxC,gBAAQ,KAAK,IAAI;AAAA,UACf;AAAA,UACA;AAAA,YACE,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,UAAU;AAAA,UAAA;AAAA,QAEd;AAAA,MAAA;AAEK,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AAGI,SAAA,EAAE,SAAS,SAAS,UAAU;AACvC;"}
|
|
@@ -69,7 +69,10 @@ const useScopedStatuses = (projects, entityTypes) => {
|
|
|
69
69
|
let currentStatuses;
|
|
70
70
|
for (const item of Object.values(response.data)) {
|
|
71
71
|
const filteredStatuses = item.statuses.filter(
|
|
72
|
-
(status) => entityTypes.every((type) =>
|
|
72
|
+
(status) => entityTypes.every((type) => {
|
|
73
|
+
var _a;
|
|
74
|
+
return !status.scope || ((_a = status.scope) == null ? void 0 : _a.includes(type));
|
|
75
|
+
})
|
|
73
76
|
);
|
|
74
77
|
if (currentStatuses === void 0) {
|
|
75
78
|
currentStatuses = filteredStatuses;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScopedStatuses.cjs.js","sources":["../../../../src/hooks/useScopedStatuses.ts"],"sourcesContent":["import { useGetProjectsInfoQuery } from '@shared/api'\nimport type { ProjectModel, Status } from '@shared/api'\nimport { intersectionBy } from 'lodash'\n\ntype EntityStatus = Status & {\n scope?: string[]\n}\n\nexport const useScopedStatuses = (projects: string[], entityTypes: string[]) => {\n const response = useGetProjectsInfoQuery({ projects: [...new Set(projects).values()] })\n\n if (!response || !response.data) {\n return []\n }\n\n let currentStatuses: EntityStatus[] | undefined\n for (const item of Object.values(response.data) as ProjectModel[]) {\n const filteredStatuses = item.statuses!.filter((status: EntityStatus) =>\n entityTypes.every((type) => status.scope
|
|
1
|
+
{"version":3,"file":"useScopedStatuses.cjs.js","sources":["../../../../src/hooks/useScopedStatuses.ts"],"sourcesContent":["import { useGetProjectsInfoQuery } from '@shared/api'\nimport type { ProjectModel, Status } from '@shared/api'\nimport { intersectionBy } from 'lodash'\n\ntype EntityStatus = Status & {\n scope?: string[]\n}\n\nexport const useScopedStatuses = (projects: string[], entityTypes: string[]) => {\n const response = useGetProjectsInfoQuery({ projects: [...new Set(projects).values()] })\n\n if (!response || !response.data) {\n return []\n }\n\n let currentStatuses: EntityStatus[] | undefined\n for (const item of Object.values(response.data) as ProjectModel[]) {\n const filteredStatuses = item.statuses!.filter((status: EntityStatus) =>\n entityTypes.every((type) => (!status.scope || status.scope?.includes(type))),\n )\n if (currentStatuses === undefined) {\n currentStatuses = filteredStatuses\n continue\n }\n currentStatuses = intersectionBy(currentStatuses, filteredStatuses, 'name')\n }\n\n return currentStatuses\n}\n\nexport const filterProjectStatuses = (statuses: EntityStatus[], entityTypes: string[]) => {\n let statusesList: EntityStatus[] = Object.values(statuses || {})\n\n if (statusesList.length == 0 || statusesList[0].scope === undefined) {\n return statusesList\n }\n\n return statusesList.filter((el) => entityTypes.every((type) => el.scope!.includes(type)))\n}\n"],"names":["useGetProjectsInfoQuery","intersectionBy"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQa,MAAA,oBAAoB,CAAC,UAAoB,gBAA0B;AAC9E,QAAM,WAAWA,iBAAAA,wBAAwB,EAAE,UAAU,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,OAAQ,CAAA,GAAG;AAEtF,MAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,WAAO,CAAC;AAAA,EAAA;AAGN,MAAA;AACJ,aAAW,QAAQ,OAAO,OAAO,SAAS,IAAI,GAAqB;AAC3D,UAAA,mBAAmB,KAAK,SAAU;AAAA,MAAO,CAAC,WAC9C,YAAY,MAAM,CAAC,SAAU;;AAAA,gBAAC,OAAO,WAAS,YAAO,UAAP,mBAAc,SAAS;AAAA,OAAM;AAAA,IAC7E;AACA,QAAI,oBAAoB,QAAW;AACf,wBAAA;AAClB;AAAA,IAAA;AAEgB,sBAAAC,OAAA,cAAA,eAAe,iBAAiB,kBAAkB,MAAM;AAAA,EAAA;AAGrE,SAAA;AACT;AAEa,MAAA,wBAAwB,CAAC,UAA0B,gBAA0B;AACxF,MAAI,eAA+B,OAAO,OAAO,YAAY,CAAA,CAAE;AAE/D,MAAI,aAAa,UAAU,KAAK,aAAa,CAAC,EAAE,UAAU,QAAW;AAC5D,WAAA;AAAA,EAAA;AAGT,SAAO,aAAa,OAAO,CAAC,OAAO,YAAY,MAAM,CAAC,SAAS,GAAG,MAAO,SAAS,IAAI,CAAC,CAAC;AAC1F;;;"}
|
|
@@ -67,7 +67,10 @@ const useScopedStatuses = (projects, entityTypes) => {
|
|
|
67
67
|
let currentStatuses;
|
|
68
68
|
for (const item of Object.values(response.data)) {
|
|
69
69
|
const filteredStatuses = item.statuses.filter(
|
|
70
|
-
(status) => entityTypes.every((type) =>
|
|
70
|
+
(status) => entityTypes.every((type) => {
|
|
71
|
+
var _a;
|
|
72
|
+
return !status.scope || ((_a = status.scope) == null ? void 0 : _a.includes(type));
|
|
73
|
+
})
|
|
71
74
|
);
|
|
72
75
|
if (currentStatuses === void 0) {
|
|
73
76
|
currentStatuses = filteredStatuses;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScopedStatuses.es.js","sources":["../../../../src/hooks/useScopedStatuses.ts"],"sourcesContent":["import { useGetProjectsInfoQuery } from '@shared/api'\nimport type { ProjectModel, Status } from '@shared/api'\nimport { intersectionBy } from 'lodash'\n\ntype EntityStatus = Status & {\n scope?: string[]\n}\n\nexport const useScopedStatuses = (projects: string[], entityTypes: string[]) => {\n const response = useGetProjectsInfoQuery({ projects: [...new Set(projects).values()] })\n\n if (!response || !response.data) {\n return []\n }\n\n let currentStatuses: EntityStatus[] | undefined\n for (const item of Object.values(response.data) as ProjectModel[]) {\n const filteredStatuses = item.statuses!.filter((status: EntityStatus) =>\n entityTypes.every((type) => status.scope
|
|
1
|
+
{"version":3,"file":"useScopedStatuses.es.js","sources":["../../../../src/hooks/useScopedStatuses.ts"],"sourcesContent":["import { useGetProjectsInfoQuery } from '@shared/api'\nimport type { ProjectModel, Status } from '@shared/api'\nimport { intersectionBy } from 'lodash'\n\ntype EntityStatus = Status & {\n scope?: string[]\n}\n\nexport const useScopedStatuses = (projects: string[], entityTypes: string[]) => {\n const response = useGetProjectsInfoQuery({ projects: [...new Set(projects).values()] })\n\n if (!response || !response.data) {\n return []\n }\n\n let currentStatuses: EntityStatus[] | undefined\n for (const item of Object.values(response.data) as ProjectModel[]) {\n const filteredStatuses = item.statuses!.filter((status: EntityStatus) =>\n entityTypes.every((type) => (!status.scope || status.scope?.includes(type))),\n )\n if (currentStatuses === undefined) {\n currentStatuses = filteredStatuses\n continue\n }\n currentStatuses = intersectionBy(currentStatuses, filteredStatuses, 'name')\n }\n\n return currentStatuses\n}\n\nexport const filterProjectStatuses = (statuses: EntityStatus[], entityTypes: string[]) => {\n let statusesList: EntityStatus[] = Object.values(statuses || {})\n\n if (statusesList.length == 0 || statusesList[0].scope === undefined) {\n return statusesList\n }\n\n return statusesList.filter((el) => entityTypes.every((type) => el.scope!.includes(type)))\n}\n"],"names":["intersectionBy"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQa,MAAA,oBAAoB,CAAC,UAAoB,gBAA0B;AAC9E,QAAM,WAAW,wBAAwB,EAAE,UAAU,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,OAAQ,CAAA,GAAG;AAEtF,MAAI,CAAC,YAAY,CAAC,SAAS,MAAM;AAC/B,WAAO,CAAC;AAAA,EAAA;AAGN,MAAA;AACJ,aAAW,QAAQ,OAAO,OAAO,SAAS,IAAI,GAAqB;AAC3D,UAAA,mBAAmB,KAAK,SAAU;AAAA,MAAO,CAAC,WAC9C,YAAY,MAAM,CAAC,SAAU;;AAAA,gBAAC,OAAO,WAAS,YAAO,UAAP,mBAAc,SAAS;AAAA,OAAM;AAAA,IAC7E;AACA,QAAI,oBAAoB,QAAW;AACf,wBAAA;AAClB;AAAA,IAAA;AAEgB,sBAAAA,cAAA,eAAe,iBAAiB,kBAAkB,MAAM;AAAA,EAAA;AAGrE,SAAA;AACT;AAEa,MAAA,wBAAwB,CAAC,UAA0B,gBAA0B;AACxF,MAAI,eAA+B,OAAO,OAAO,YAAY,CAAA,CAAE;AAE/D,MAAI,aAAa,UAAU,KAAK,aAAa,CAAC,EAAE,UAAU,QAAW;AAC5D,WAAA;AAAA,EAAA;AAGT,SAAO,aAAa,OAAO,CAAC,OAAO,YAAY,MAAM,CAAC,SAAS,GAAG,MAAO,SAAS,IAAI,CAAC,CAAC;AAC1F;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const Path: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
2
2
|
export declare const SegmentWrapper: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
3
3
|
export declare const Segment: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
|
|
4
|
+
export declare const FinalSegmentLabel: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
|
|
4
5
|
export declare const ActiveSegment: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
5
6
|
export declare const MoreModal: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
6
7
|
export declare const MoreList: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLUListElement>, HTMLUListElement>, never>> & string;
|
|
@@ -2,5 +2,5 @@ import { DetailsPanelEntityData } from '../../api';
|
|
|
2
2
|
type Props = {
|
|
3
3
|
entities: DetailsPanelEntityData[];
|
|
4
4
|
};
|
|
5
|
-
export declare const RepresentationsList: ({ entities }: Props) => import("react/jsx-runtime").JSX.Element
|
|
5
|
+
export declare const RepresentationsList: ({ entities }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
export {};
|
|
@@ -32,6 +32,10 @@ export interface DetailsPanelContextProps {
|
|
|
32
32
|
onOpenImage?: (args: any) => void;
|
|
33
33
|
onGoToFrame?: (frame: number) => void;
|
|
34
34
|
onOpenViewer?: (args: any) => void;
|
|
35
|
+
onUpdateEntity?: (data: {
|
|
36
|
+
operations: any[];
|
|
37
|
+
entityType: string;
|
|
38
|
+
}) => void;
|
|
35
39
|
}
|
|
36
40
|
export interface DetailsPanelContextType extends DetailsPanelContextProps {
|
|
37
41
|
panelOpenByScope: OpenStateByScope;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FrontendModuleListItem } from '../api';
|
|
2
|
+
export interface ModuleSpec<T> {
|
|
3
|
+
addon: string;
|
|
4
|
+
remote: string;
|
|
5
|
+
module: string;
|
|
6
|
+
fallback?: T;
|
|
7
|
+
debug?: boolean;
|
|
8
|
+
minVersion?: string;
|
|
9
|
+
}
|
|
10
|
+
type ModuleResult<T> = [
|
|
11
|
+
T,
|
|
12
|
+
{
|
|
13
|
+
isLoaded: boolean;
|
|
14
|
+
addon: string;
|
|
15
|
+
remote: string;
|
|
16
|
+
module: string;
|
|
17
|
+
minVersion?: string;
|
|
18
|
+
outdated?: {
|
|
19
|
+
current: string;
|
|
20
|
+
required: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
];
|
|
24
|
+
export declare const useLoadModules: <T extends any[]>(moduleSpecs: ModuleSpec<T[number]>[], modules: FrontendModuleListItem[], skip: boolean) => {
|
|
25
|
+
modules: ModuleResult<T[number]>[];
|
|
26
|
+
isLoading: boolean;
|
|
27
|
+
};
|
|
28
|
+
export {};
|