@vanillabp/bc-ui 0.0.3
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/README.md +1 -0
- package/dist/chunk-YH4NJHER.js +58 -0
- package/dist/components/ListCell.d.ts +27 -0
- package/dist/components/ListCell.js +123 -0
- package/dist/components/ListColumnHeader.d.ts +22 -0
- package/dist/components/ListColumnHeader.js +135 -0
- package/dist/components/ListOfTasks.d.ts +35 -0
- package/dist/components/ListOfTasks.js +1327 -0
- package/dist/components/ListOfWorkflows.d.ts +36 -0
- package/dist/components/ListOfWorkflows.js +974 -0
- package/dist/components/NoElementGivenByModule.d.ts +10 -0
- package/dist/components/NoElementGivenByModule.js +54 -0
- package/dist/components/NoUserTaskGiven.d.ts +10 -0
- package/dist/components/NoUserTaskGiven.js +23 -0
- package/dist/components/NoWorkflowGiven.d.ts +10 -0
- package/dist/components/NoWorkflowGiven.js +22 -0
- package/dist/components/SearchableAndSortableUpdatingList.d.ts +49 -0
- package/dist/components/SearchableAndSortableUpdatingList.js +200 -0
- package/dist/components/SnapScrolling.d.ts +15 -0
- package/dist/components/SnapScrolling.js +17 -0
- package/dist/components/SnapScrollingDataTable.d.ts +17 -0
- package/dist/components/SnapScrollingDataTable.js +113 -0
- package/dist/components/User.d.ts +11 -0
- package/dist/components/User.js +39 -0
- package/dist/components/UserAvatar.d.ts +12 -0
- package/dist/components/UserAvatar.js +133 -0
- package/dist/components/UserTaskPage.d.ts +24 -0
- package/dist/components/UserTaskPage.js +121 -0
- package/dist/components/WorkflowPage.d.ts +16 -0
- package/dist/components/WorkflowPage.js +124 -0
- package/dist/components/index.d.ts +25 -0
- package/dist/components/index.js +13 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +3 -0
- package/dist/types/apis.d.ts +50 -0
- package/dist/types/apis.js +0 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +3 -0
- package/dist/types/lists.d.ts +12 -0
- package/dist/types/lists.js +0 -0
- package/dist/types/navigate.d.ts +6 -0
- package/dist/types/navigate.js +0 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/module-federation.d.ts +40 -0
- package/dist/utils/module-federation.js +182 -0
- package/package.json +66 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__async,
|
|
3
|
+
__spreadProps,
|
|
4
|
+
__spreadValues
|
|
5
|
+
} from "../chunk-YH4NJHER.js";
|
|
6
|
+
import { useEffect, useState } from "react";
|
|
7
|
+
var UiUriType = /* @__PURE__ */ ((UiUriType2) => {
|
|
8
|
+
UiUriType2["External"] = "EXTERNAL";
|
|
9
|
+
UiUriType2["WebpackMfReact"] = "WEBPACK_MF_REACT";
|
|
10
|
+
return UiUriType2;
|
|
11
|
+
})(UiUriType || {});
|
|
12
|
+
;
|
|
13
|
+
;
|
|
14
|
+
;
|
|
15
|
+
;
|
|
16
|
+
;
|
|
17
|
+
const modules = {};
|
|
18
|
+
const attachScript = (webpackModuleId, url) => {
|
|
19
|
+
const elementId = "___" + webpackModuleId;
|
|
20
|
+
const existingElement = document.getElementById(elementId);
|
|
21
|
+
if (existingElement) {
|
|
22
|
+
if (window[webpackModuleId])
|
|
23
|
+
return Promise.resolve(true);
|
|
24
|
+
return Promise.reject(`Failed in previous attempt: ${webpackModuleId}`);
|
|
25
|
+
}
|
|
26
|
+
const element = document.createElement("script");
|
|
27
|
+
element.src = url;
|
|
28
|
+
element.type = "text/javascript";
|
|
29
|
+
element.async = true;
|
|
30
|
+
element.id = elementId;
|
|
31
|
+
const scriptLoadPromise = new Promise(
|
|
32
|
+
(resolve, reject) => {
|
|
33
|
+
element.onload = () => resolve(element);
|
|
34
|
+
element.onerror = (e) => {
|
|
35
|
+
reject(e);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
document.head.appendChild(element);
|
|
40
|
+
return scriptLoadPromise;
|
|
41
|
+
};
|
|
42
|
+
const detachScript = (webpackModuleId) => {
|
|
43
|
+
const element = document.getElementById("___" + webpackModuleId);
|
|
44
|
+
if (element)
|
|
45
|
+
document.head.removeChild(element);
|
|
46
|
+
};
|
|
47
|
+
const fetchModule = (workflowModuleId, uiUri, initialTry, useCase) => __async(void 0, null, function* () {
|
|
48
|
+
const webpackModuleId = workflowModuleId.replaceAll("-", "_");
|
|
49
|
+
if (!initialTry) {
|
|
50
|
+
detachScript(webpackModuleId);
|
|
51
|
+
}
|
|
52
|
+
let container = window[webpackModuleId];
|
|
53
|
+
if (container === void 0) {
|
|
54
|
+
yield attachScript(webpackModuleId, uiUri);
|
|
55
|
+
yield __webpack_init_sharing__("default");
|
|
56
|
+
container = window[webpackModuleId];
|
|
57
|
+
}
|
|
58
|
+
if (!container.isInitialized) {
|
|
59
|
+
container.isInitialized = true;
|
|
60
|
+
yield container.init(__webpack_share_scopes__.default);
|
|
61
|
+
} else if (!("isInitialized" in container)) {
|
|
62
|
+
throw new Error(`Failed in last attempt: ${webpackModuleId}`);
|
|
63
|
+
}
|
|
64
|
+
const factory = yield window[webpackModuleId].get(useCase);
|
|
65
|
+
return factory();
|
|
66
|
+
});
|
|
67
|
+
const loadModule = (moduleId, moduleDefinition, useCase) => {
|
|
68
|
+
const callbacks = [];
|
|
69
|
+
let module = modules[moduleId];
|
|
70
|
+
if (module === void 0) {
|
|
71
|
+
module = { moduleId, workflowModuleId: moduleDefinition.workflowModuleId };
|
|
72
|
+
modules[moduleId] = module;
|
|
73
|
+
}
|
|
74
|
+
const publish = () => callbacks.forEach((callback) => callback(modules[moduleId]));
|
|
75
|
+
const retry = (retryCallback, initialTry) => __async(void 0, null, function* () {
|
|
76
|
+
if (module.buildTimestamp !== void 0)
|
|
77
|
+
return;
|
|
78
|
+
try {
|
|
79
|
+
if (moduleDefinition.uiUriType === "WEBPACK_MF_REACT" /* WebpackMfReact */) {
|
|
80
|
+
const webpackModule = yield fetchModule(moduleDefinition.workflowModuleId, moduleDefinition.uiUri, initialTry || false, useCase);
|
|
81
|
+
modules[moduleId] = __spreadValues(__spreadValues({}, webpackModule), module);
|
|
82
|
+
} else {
|
|
83
|
+
throw new Error(`Unsupported UiUriType: ${moduleDefinition.uiUriType}!`);
|
|
84
|
+
}
|
|
85
|
+
} catch (error) {
|
|
86
|
+
modules[moduleId] = __spreadProps(__spreadValues({}, module), {
|
|
87
|
+
retry
|
|
88
|
+
});
|
|
89
|
+
} finally {
|
|
90
|
+
publish();
|
|
91
|
+
if (retryCallback) {
|
|
92
|
+
retryCallback();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
const subscribe = (callback) => {
|
|
97
|
+
if (callbacks.includes(callback))
|
|
98
|
+
return;
|
|
99
|
+
callbacks.push(callback);
|
|
100
|
+
};
|
|
101
|
+
const unsubscribe = (callback) => {
|
|
102
|
+
const index = callbacks.indexOf(callback);
|
|
103
|
+
if (index === -1)
|
|
104
|
+
return;
|
|
105
|
+
callbacks.splice(index, 1);
|
|
106
|
+
};
|
|
107
|
+
retry(void 0, true);
|
|
108
|
+
return { subscribe, unsubscribe };
|
|
109
|
+
};
|
|
110
|
+
const getModule = (moduleId, moduleDefinition, useCase) => {
|
|
111
|
+
let result = modules[moduleId];
|
|
112
|
+
if (result !== void 0) {
|
|
113
|
+
return {
|
|
114
|
+
subscribe: (handler) => handler(result),
|
|
115
|
+
unsubscribe: (handler) => {
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
return loadModule(moduleId, moduleDefinition, useCase);
|
|
120
|
+
};
|
|
121
|
+
const useFederationModule = (moduleDefinition, useCase) => {
|
|
122
|
+
const moduleId = moduleDefinition !== void 0 ? `${moduleDefinition.workflowModuleId}#${useCase}` : "undefined";
|
|
123
|
+
const [module, setModule] = useState(modules[moduleId]);
|
|
124
|
+
useEffect(() => {
|
|
125
|
+
if (moduleDefinition === void 0) {
|
|
126
|
+
return void 0;
|
|
127
|
+
}
|
|
128
|
+
const { subscribe, unsubscribe } = getModule(moduleId, moduleDefinition, useCase);
|
|
129
|
+
const handler = (loadedModule) => setModule(loadedModule);
|
|
130
|
+
subscribe(handler);
|
|
131
|
+
return () => unsubscribe(handler);
|
|
132
|
+
}, [setModule, moduleDefinition, useCase]);
|
|
133
|
+
return module;
|
|
134
|
+
};
|
|
135
|
+
const useFederationModules = (moduleDefinitions, useCase) => {
|
|
136
|
+
const [modules2, setModules] = useState(void 0);
|
|
137
|
+
useEffect(() => {
|
|
138
|
+
if (moduleDefinitions === void 0) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (moduleDefinitions.length === 0) {
|
|
142
|
+
setModules([]);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const distinctModuleDefinitions = moduleDefinitions.reduce(
|
|
146
|
+
(moduleIds, userTask) => moduleIds.includes(userTask.workflowModuleId) ? moduleIds : moduleIds.concat(userTask.workflowModuleId),
|
|
147
|
+
new Array()
|
|
148
|
+
).map((moduleId) => moduleDefinitions.find((moduleDefinition) => moduleDefinition.workflowModuleId === moduleId));
|
|
149
|
+
const result = [];
|
|
150
|
+
distinctModuleDefinitions.forEach((moduleDefinition, i) => {
|
|
151
|
+
result[i] = {
|
|
152
|
+
moduleId: `${moduleDefinition.workflowModuleId}#${useCase}`,
|
|
153
|
+
workflowModuleId: moduleDefinition.workflowModuleId
|
|
154
|
+
};
|
|
155
|
+
});
|
|
156
|
+
const unsubscribers = distinctModuleDefinitions.map((moduleDefinition, index) => {
|
|
157
|
+
const { subscribe, unsubscribe } = getModule(result[index].moduleId, moduleDefinition, useCase);
|
|
158
|
+
const handler = (loadedModule) => {
|
|
159
|
+
result[index] = loadedModule;
|
|
160
|
+
const anyModuleStillLoading = result.reduce(
|
|
161
|
+
(anyModuleStillLoading2, module) => anyModuleStillLoading2 || module === void 0 || module.buildTimestamp === void 0 && module.retry === void 0,
|
|
162
|
+
false
|
|
163
|
+
);
|
|
164
|
+
if (anyModuleStillLoading) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
setModules(result);
|
|
168
|
+
};
|
|
169
|
+
subscribe(handler);
|
|
170
|
+
return () => unsubscribe(handler);
|
|
171
|
+
});
|
|
172
|
+
return () => unsubscribers.forEach((unsubscribe) => unsubscribe());
|
|
173
|
+
}, [moduleDefinitions, useCase, setModules]);
|
|
174
|
+
return modules2;
|
|
175
|
+
};
|
|
176
|
+
export {
|
|
177
|
+
UiUriType,
|
|
178
|
+
attachScript,
|
|
179
|
+
detachScript,
|
|
180
|
+
useFederationModule,
|
|
181
|
+
useFederationModules
|
|
182
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vanillabp/bc-ui",
|
|
3
|
+
"version": "0.0.3",
|
|
4
|
+
"repository": {
|
|
5
|
+
"type": "git",
|
|
6
|
+
"url": "https://github.com/vanillabp/business-cockpit.git"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://github.com/vanillabp/business-cockpit",
|
|
9
|
+
"sideEffects": false,
|
|
10
|
+
"type": "module",
|
|
11
|
+
"main": "dist/index.js",
|
|
12
|
+
"module": "dist/index.js",
|
|
13
|
+
"types": "dist/index.d.ts",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"package.json"
|
|
17
|
+
],
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@vanillabp/bc-official-gui-client": "0.0.3",
|
|
20
|
+
"@vanillabp/bc-shared": "0.0.3"
|
|
21
|
+
},
|
|
22
|
+
"peerDependencies": {
|
|
23
|
+
"@fontsource/roboto": "4.5.8",
|
|
24
|
+
"grommet": "2.33.2",
|
|
25
|
+
"grommet-icons": "4.10.0",
|
|
26
|
+
"react": "18.2.0",
|
|
27
|
+
"react-dom": "18.2.0",
|
|
28
|
+
"react-jsx": "1.0.0",
|
|
29
|
+
"styled-components": "5.3.3"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@babel/preset-env": "7.21.4",
|
|
33
|
+
"@babel/preset-react": "7.18.6",
|
|
34
|
+
"@babel/preset-typescript": "7.21.4",
|
|
35
|
+
"@storybook/addon-essentials": "7.0.6",
|
|
36
|
+
"@storybook/addon-interactions": "7.0.6",
|
|
37
|
+
"@storybook/addon-links": "7.0.6",
|
|
38
|
+
"@storybook/blocks": "7.0.6",
|
|
39
|
+
"@storybook/react": "7.0.6",
|
|
40
|
+
"@storybook/react-webpack5": "7.0.6",
|
|
41
|
+
"@storybook/testing-library": "0.0.14-next.2",
|
|
42
|
+
"@types/node": "16.18.23",
|
|
43
|
+
"@types/react": "18.0.21",
|
|
44
|
+
"@types/react-dom": "18.0.6",
|
|
45
|
+
"@types/styled-components": "5.1.24",
|
|
46
|
+
"@types/web": "0.0.61",
|
|
47
|
+
"cross-env": "7.0.3",
|
|
48
|
+
"http-proxy-middleware": "2.0.6",
|
|
49
|
+
"prop-types": "15.8.1",
|
|
50
|
+
"react": "18.2.0",
|
|
51
|
+
"react-dom": "18.2.0",
|
|
52
|
+
"storybook": "7.0.6",
|
|
53
|
+
"tsup": "6.7.0",
|
|
54
|
+
"typescript": "4.8.4"
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"storybook": "echo 'Run with sudo on Linux for HMR!' && storybook dev -p 6006",
|
|
58
|
+
"build-storybook": "storybook build",
|
|
59
|
+
"start": "tsup --watch",
|
|
60
|
+
"build": "tsup",
|
|
61
|
+
"unpublish:snapshot": "npm unpublish --force",
|
|
62
|
+
"publish:snapshot": "npm publish --tag snapshot",
|
|
63
|
+
"version:snapshot": "npm version ${npm_config_newversion} --no-git-tag-version",
|
|
64
|
+
"publish:release": "npm publish --access public"
|
|
65
|
+
}
|
|
66
|
+
}
|