@reltio/components 1.4.1219 → 1.4.1228
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/cjs/contexts/InterceptHandlersContext/index.d.ts +3 -0
- package/cjs/contexts/InterceptHandlersContext/index.js +9 -0
- package/cjs/contexts/SandboxAPIContext/index.d.ts +6 -2
- package/cjs/contexts/index.d.ts +1 -0
- package/cjs/contexts/index.js +3 -1
- package/cjs/hooks/useAPI/API.js +5 -4
- package/cjs/hooks/useAPI/helpers.d.ts +49 -0
- package/cjs/hooks/useAPI/helpers.js +203 -1
- package/cjs/hooks/useAPI/useAPI.js +124 -86
- package/cjs/hooks/useCustomScripts.d.ts +2 -9
- package/cjs/hooks/useCustomScripts.js +9 -6
- package/esm/contexts/InterceptHandlersContext/index.d.ts +3 -0
- package/esm/contexts/InterceptHandlersContext/index.js +3 -0
- package/esm/contexts/SandboxAPIContext/index.d.ts +6 -2
- package/esm/contexts/index.d.ts +1 -0
- package/esm/contexts/index.js +1 -0
- package/esm/hooks/useAPI/API.js +5 -4
- package/esm/hooks/useAPI/helpers.d.ts +49 -0
- package/esm/hooks/useAPI/helpers.js +193 -0
- package/esm/hooks/useAPI/useAPI.js +126 -88
- package/esm/hooks/useCustomScripts.d.ts +2 -9
- package/esm/hooks/useCustomScripts.js +10 -7
- package/package.json +3 -3
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.InterceptHandlersContext = void 0;
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
exports.InterceptHandlersContext = react_1.default.createContext({});
|
|
9
|
+
exports.InterceptHandlersContext.displayName = 'InterceptHandlersContext';
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
2
|
+
import { InterceptHandlers } from '@reltio/mdm-sdk';
|
|
3
|
+
declare type SandboxAPI = {
|
|
4
|
+
interceptors?: InterceptHandlers;
|
|
3
5
|
getCurrentPerspectiveId: () => string;
|
|
4
6
|
showPerspective: (perspective: any) => void;
|
|
5
7
|
setEntityUri: (entityUri: string, listener: () => void) => void;
|
|
6
|
-
}
|
|
8
|
+
};
|
|
9
|
+
export declare const SandboxAPIContext: React.Context<SandboxAPI>;
|
|
10
|
+
export {};
|
package/cjs/contexts/index.d.ts
CHANGED
|
@@ -20,3 +20,4 @@ export { useReloadAllFacets, ReloadFacetProvider, useReloadFacet } from './Reloa
|
|
|
20
20
|
export { SearchFiltersContext } from './SearchFiltersContext';
|
|
21
21
|
export { SnackbarContext } from './SnackbarContext';
|
|
22
22
|
export { HighlightedValuesContext } from './HighlightedValuesContext';
|
|
23
|
+
export { InterceptHandlersContext } from './InterceptHandlersContext';
|
package/cjs/contexts/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HighlightedValuesContext = exports.SnackbarContext = exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.EntityContext = exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.EntityMarkerContext = exports.useAttributeExpanded = exports.ExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.PivotingAttributeContext = exports.UsersContext = exports.CollaborationContext = exports.BlockImageGalleryDialogContext = exports.ViewIdContext = exports.PopupBoundariesContext = exports.HistoryDiffContext = exports.AsyncMountContext = void 0;
|
|
3
|
+
exports.InterceptHandlersContext = exports.HighlightedValuesContext = exports.SnackbarContext = exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.EntityContext = exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.EntityMarkerContext = exports.useAttributeExpanded = exports.ExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.PivotingAttributeContext = exports.UsersContext = exports.CollaborationContext = exports.BlockImageGalleryDialogContext = exports.ViewIdContext = exports.PopupBoundariesContext = exports.HistoryDiffContext = exports.AsyncMountContext = void 0;
|
|
4
4
|
var AsyncMountContext_1 = require("./AsyncMountContext");
|
|
5
5
|
Object.defineProperty(exports, "AsyncMountContext", { enumerable: true, get: function () { return AsyncMountContext_1.AsyncMountContext; } });
|
|
6
6
|
var HistoryAppearanceContext_1 = require("./HistoryAppearanceContext");
|
|
@@ -52,3 +52,5 @@ var SnackbarContext_1 = require("./SnackbarContext");
|
|
|
52
52
|
Object.defineProperty(exports, "SnackbarContext", { enumerable: true, get: function () { return SnackbarContext_1.SnackbarContext; } });
|
|
53
53
|
var HighlightedValuesContext_1 = require("./HighlightedValuesContext");
|
|
54
54
|
Object.defineProperty(exports, "HighlightedValuesContext", { enumerable: true, get: function () { return HighlightedValuesContext_1.HighlightedValuesContext; } });
|
|
55
|
+
var InterceptHandlersContext_1 = require("./InterceptHandlersContext");
|
|
56
|
+
Object.defineProperty(exports, "InterceptHandlersContext", { enumerable: true, get: function () { return InterceptHandlersContext_1.InterceptHandlersContext; } });
|
package/cjs/hooks/useAPI/API.js
CHANGED
|
@@ -129,7 +129,8 @@ var sendApiRequest = function (params, permissions, signHandler) { return __awai
|
|
|
129
129
|
url: params.url,
|
|
130
130
|
method: params.method,
|
|
131
131
|
data: params.data,
|
|
132
|
-
headers: headers
|
|
132
|
+
headers: headers,
|
|
133
|
+
noRequestProcessor: true
|
|
133
134
|
})];
|
|
134
135
|
case 2: return [2 /*return*/, _a.sent()];
|
|
135
136
|
}
|
|
@@ -162,10 +163,10 @@ var processRequest = function (_a) {
|
|
|
162
163
|
var handleRequest = function (request) {
|
|
163
164
|
request
|
|
164
165
|
.then(function (data) {
|
|
165
|
-
worker.postMessage(__assign({ action: 'response', result: { data: data } }, paramObject.params));
|
|
166
|
+
worker.postMessage(__assign({ action: 'response', result: { data: data, headers: paramObject.params.headers, status: 200 } }, paramObject.params));
|
|
166
167
|
})
|
|
167
168
|
.catch(function (error) {
|
|
168
|
-
worker.postMessage(__assign({ action: 'response', result: { data: error, headers:
|
|
169
|
+
worker.postMessage(__assign({ action: 'response', result: { data: error, headers: paramObject.params.headers, status: 0 } }, paramObject.params));
|
|
169
170
|
});
|
|
170
171
|
};
|
|
171
172
|
var shouldSignRequest = helpers_1.isNewUI(servicesPath);
|
|
@@ -225,7 +226,7 @@ var processRequest = function (_a) {
|
|
|
225
226
|
break;
|
|
226
227
|
}
|
|
227
228
|
case mdm_sdk_1.RequestAction.OPEN_SEARCH: {
|
|
228
|
-
openSearch({ viewId: config.id, searchState: paramObject.params.searchState });
|
|
229
|
+
openSearch({ viewId: config.id, searchState: paramObject.params.searchState || {} });
|
|
229
230
|
break;
|
|
230
231
|
}
|
|
231
232
|
case mdm_sdk_1.RequestAction.GET_ENTITY_URI: {
|
|
@@ -1,2 +1,51 @@
|
|
|
1
1
|
export declare const isNewUI: (path?: string) => boolean;
|
|
2
2
|
export declare const getWorkerURL: (uiPath: string, tenant: string) => string;
|
|
3
|
+
export declare const getFilesWithArrayBuffer: (files: FileList) => Promise<unknown[]>;
|
|
4
|
+
declare type ResetHTMLParams = {
|
|
5
|
+
worker: Worker;
|
|
6
|
+
setTooltip: any;
|
|
7
|
+
html?: string;
|
|
8
|
+
innerText?: string;
|
|
9
|
+
setListenersToReset: any;
|
|
10
|
+
setHtml: any;
|
|
11
|
+
};
|
|
12
|
+
export declare const resetHtml: ({ worker, setTooltip, innerText, html, setListenersToReset, setHtml }: ResetHTMLParams) => void;
|
|
13
|
+
export declare const setUpQooxdooRequestInterceptor: ({ workerRef, setRequestListeners }: {
|
|
14
|
+
workerRef: any;
|
|
15
|
+
setRequestListeners: any;
|
|
16
|
+
}) => {
|
|
17
|
+
processApiRequest: (url: any, method: any, headers: any, data: any, next: any) => void;
|
|
18
|
+
};
|
|
19
|
+
export declare const setUpQooxdooResponseInterceptor: ({ workerRef, setResponseListeners }: {
|
|
20
|
+
workerRef: any;
|
|
21
|
+
setResponseListeners: any;
|
|
22
|
+
}) => {
|
|
23
|
+
processApiResponse: (url: any, method: any, data: any, next: any) => void;
|
|
24
|
+
};
|
|
25
|
+
export declare const setUpRequestInterceptor: ({ apiPath, reltioPath, tenant, processApiRequest, workerRef, setRequestListeners }: {
|
|
26
|
+
apiPath: any;
|
|
27
|
+
reltioPath: any;
|
|
28
|
+
tenant: any;
|
|
29
|
+
processApiRequest: any;
|
|
30
|
+
workerRef: any;
|
|
31
|
+
setRequestListeners: any;
|
|
32
|
+
}) => ({ options, url, next }: {
|
|
33
|
+
next: (url: string, options: RequestInit) => void;
|
|
34
|
+
abort?: (error: Error) => void;
|
|
35
|
+
url: string;
|
|
36
|
+
options: RequestInit;
|
|
37
|
+
}) => void;
|
|
38
|
+
export declare const setUpResponseInterceptor: ({ reltioPath, apiPath, processApiResponse, workerRef, setResponseListeners }: {
|
|
39
|
+
reltioPath: any;
|
|
40
|
+
apiPath: any;
|
|
41
|
+
processApiResponse: any;
|
|
42
|
+
workerRef: any;
|
|
43
|
+
setResponseListeners: any;
|
|
44
|
+
}) => ({ url, response, next, options, abort }: {
|
|
45
|
+
url: any;
|
|
46
|
+
response: any;
|
|
47
|
+
next: any;
|
|
48
|
+
options: any;
|
|
49
|
+
abort: any;
|
|
50
|
+
}) => void;
|
|
51
|
+
export {};
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getWorkerURL = exports.isNewUI = void 0;
|
|
17
|
+
exports.setUpResponseInterceptor = exports.setUpRequestInterceptor = exports.setUpQooxdooResponseInterceptor = exports.setUpQooxdooRequestInterceptor = exports.resetHtml = exports.getFilesWithArrayBuffer = exports.getWorkerURL = exports.isNewUI = void 0;
|
|
18
|
+
var nanoid_1 = __importDefault(require("nanoid"));
|
|
4
19
|
var isNewUI = function (path) {
|
|
5
20
|
return path === null || path === void 0 ? void 0 : path.includes('/nui');
|
|
6
21
|
};
|
|
@@ -14,3 +29,190 @@ var getWorkerURL = function (uiPath, tenant) {
|
|
|
14
29
|
}
|
|
15
30
|
};
|
|
16
31
|
exports.getWorkerURL = getWorkerURL;
|
|
32
|
+
var getFilesWithArrayBuffer = function (files) {
|
|
33
|
+
var readFilePromises = Array.from(files).map(function (file) {
|
|
34
|
+
return new Promise(function (resolve, reject) {
|
|
35
|
+
var reader = new FileReader();
|
|
36
|
+
reader.onload = function (event) {
|
|
37
|
+
var content = event.target.result;
|
|
38
|
+
var lastModified = file.lastModified, name = file.name, size = file.size, type = file.type;
|
|
39
|
+
resolve({ lastModified: lastModified, name: name, size: size, type: type, content: content });
|
|
40
|
+
};
|
|
41
|
+
reader.onerror = function (error) {
|
|
42
|
+
reject(error);
|
|
43
|
+
};
|
|
44
|
+
reader.readAsArrayBuffer(file);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
return Promise.all(readFilePromises);
|
|
48
|
+
};
|
|
49
|
+
exports.getFilesWithArrayBuffer = getFilesWithArrayBuffer;
|
|
50
|
+
var processInnerHtml = function (parent, worker, setTooltip) {
|
|
51
|
+
var handlersToReset = [];
|
|
52
|
+
var uiActions = parent.getAttribute('ui-actions');
|
|
53
|
+
var uiTooltip = parent.getAttribute('ui-tooltip');
|
|
54
|
+
var id = parent.getAttribute('id') || parent.getAttribute('name');
|
|
55
|
+
if (uiActions) {
|
|
56
|
+
uiActions.split(',').forEach(function (uiAction) {
|
|
57
|
+
var handler = function (event) {
|
|
58
|
+
var _a;
|
|
59
|
+
var target = event.target;
|
|
60
|
+
var postEventMessage = function (files) {
|
|
61
|
+
worker.postMessage({
|
|
62
|
+
action: 'event',
|
|
63
|
+
type: 'uiAction',
|
|
64
|
+
data: { type: uiAction, id: id, event: __assign(__assign({}, event), { files: files }) }
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
if ((_a = target.files) === null || _a === void 0 ? void 0 : _a.length) {
|
|
68
|
+
exports.getFilesWithArrayBuffer(target.files).then(postEventMessage);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
postEventMessage();
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
parent.addEventListener(uiAction, handler);
|
|
75
|
+
handlersToReset.push(function () {
|
|
76
|
+
parent.removeEventListener(uiAction, handler);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
parent.removeAttribute('ui-actions');
|
|
80
|
+
}
|
|
81
|
+
if (uiTooltip) {
|
|
82
|
+
setTooltip(uiTooltip);
|
|
83
|
+
}
|
|
84
|
+
parent.childNodes.forEach(function (child) {
|
|
85
|
+
if (child.nodeType === 1) {
|
|
86
|
+
//Node.ELEMENT_NODE
|
|
87
|
+
handlersToReset = handlersToReset.concat(processInnerHtml(child, worker, setTooltip));
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
return handlersToReset;
|
|
91
|
+
};
|
|
92
|
+
var resetHtml = function (_a) {
|
|
93
|
+
var worker = _a.worker, setTooltip = _a.setTooltip, innerText = _a.innerText, html = _a.html, setListenersToReset = _a.setListenersToReset, setHtml = _a.setHtml;
|
|
94
|
+
var docBlock = document.createElement('div');
|
|
95
|
+
docBlock.innerHTML = html || innerText;
|
|
96
|
+
var handlersToReset = processInnerHtml(docBlock, worker, setTooltip);
|
|
97
|
+
setListenersToReset(handlersToReset);
|
|
98
|
+
setHtml(docBlock);
|
|
99
|
+
};
|
|
100
|
+
exports.resetHtml = resetHtml;
|
|
101
|
+
var isURLtoProcess = function (processApi, url) {
|
|
102
|
+
return (processApi || []).some(function (request) {
|
|
103
|
+
var regExp = new RegExp("^" + request + "$");
|
|
104
|
+
return request.replace(/\/*$/, '') === url || (request && regExp.test(url));
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
var setUpQooxdooRequestInterceptor = function (_a) {
|
|
108
|
+
var workerRef = _a.workerRef, setRequestListeners = _a.setRequestListeners;
|
|
109
|
+
return ({
|
|
110
|
+
processApiRequest: function (url, method, headers, data, next) {
|
|
111
|
+
var requestId = nanoid_1.default();
|
|
112
|
+
var options = { url: url, method: method, headers: headers, noRequestProcessor: true };
|
|
113
|
+
setRequestListeners(options, next, requestId);
|
|
114
|
+
workerRef.current.postMessage({
|
|
115
|
+
action: 'apiRequest',
|
|
116
|
+
id: requestId,
|
|
117
|
+
url: url,
|
|
118
|
+
method: method,
|
|
119
|
+
headers: headers,
|
|
120
|
+
data: data
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
exports.setUpQooxdooRequestInterceptor = setUpQooxdooRequestInterceptor;
|
|
126
|
+
var setUpQooxdooResponseInterceptor = function (_a) {
|
|
127
|
+
var workerRef = _a.workerRef, setResponseListeners = _a.setResponseListeners;
|
|
128
|
+
return ({
|
|
129
|
+
processApiResponse: function (url, method, data, next) {
|
|
130
|
+
var responseId = nanoid_1.default();
|
|
131
|
+
setResponseListeners(next, responseId);
|
|
132
|
+
workerRef.current.postMessage({
|
|
133
|
+
action: 'apiResponse',
|
|
134
|
+
id: responseId,
|
|
135
|
+
url: url,
|
|
136
|
+
method: method,
|
|
137
|
+
data: data
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
exports.setUpQooxdooResponseInterceptor = setUpQooxdooResponseInterceptor;
|
|
143
|
+
var setUpRequestInterceptor = function (_a) {
|
|
144
|
+
var apiPath = _a.apiPath, reltioPath = _a.reltioPath, tenant = _a.tenant, processApiRequest = _a.processApiRequest, workerRef = _a.workerRef, setRequestListeners = _a.setRequestListeners;
|
|
145
|
+
return function (_a) {
|
|
146
|
+
var _b = _a.options, options = _b === void 0 ? {} : _b, url = _a.url, next = _a.next;
|
|
147
|
+
var fakeURL = url.startsWith('/') && !url.startsWith(apiPath)
|
|
148
|
+
? reltioPath + "/api/" + tenant + url
|
|
149
|
+
: "" + reltioPath + url.replace(apiPath, '');
|
|
150
|
+
var isProcessableUrl = isURLtoProcess(processApiRequest, fakeURL);
|
|
151
|
+
if (isProcessableUrl) {
|
|
152
|
+
var requestId = nanoid_1.default();
|
|
153
|
+
setRequestListeners(options, next, requestId);
|
|
154
|
+
workerRef.current.postMessage({
|
|
155
|
+
action: 'apiRequest',
|
|
156
|
+
id: requestId,
|
|
157
|
+
url: fakeURL,
|
|
158
|
+
method: options.method,
|
|
159
|
+
headers: __assign(__assign({}, options.headers), { origin: 'ui', requestId: requestId }),
|
|
160
|
+
data: options.body
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
next(url, options);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
exports.setUpRequestInterceptor = setUpRequestInterceptor;
|
|
169
|
+
var setUpResponseInterceptor = function (_a) {
|
|
170
|
+
var reltioPath = _a.reltioPath, apiPath = _a.apiPath, processApiResponse = _a.processApiResponse, workerRef = _a.workerRef, setResponseListeners = _a.setResponseListeners;
|
|
171
|
+
return function (_a) {
|
|
172
|
+
var _b;
|
|
173
|
+
var url = _a.url, response = _a.response, next = _a.next, options = _a.options, abort = _a.abort;
|
|
174
|
+
if (((_b = options === null || options === void 0 ? void 0 : options.headers) === null || _b === void 0 ? void 0 : _b.origin) === 'ui') {
|
|
175
|
+
response
|
|
176
|
+
.json()
|
|
177
|
+
.then(function (data) {
|
|
178
|
+
var _a, _b;
|
|
179
|
+
setResponseListeners(next, options.headers.requestId);
|
|
180
|
+
workerRef.current.postMessage({
|
|
181
|
+
action: 'response',
|
|
182
|
+
result: { data: data, status: response.status },
|
|
183
|
+
id: options === null || options === void 0 ? void 0 : options.id,
|
|
184
|
+
name: (_b = (_a = options === null || options === void 0 ? void 0 : options.task) === null || _a === void 0 ? void 0 : _a.params) === null || _b === void 0 ? void 0 : _b.name
|
|
185
|
+
});
|
|
186
|
+
})
|
|
187
|
+
.catch(function (error) {
|
|
188
|
+
abort(error);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
var fakeURL_1 = "" + reltioPath + url.replace(apiPath, '');
|
|
193
|
+
var isProcessableUrl = isURLtoProcess(processApiResponse, fakeURL_1);
|
|
194
|
+
if (isProcessableUrl) {
|
|
195
|
+
var responseId_1 = nanoid_1.default();
|
|
196
|
+
response
|
|
197
|
+
.json()
|
|
198
|
+
.then(function (data) {
|
|
199
|
+
setResponseListeners(next, responseId_1);
|
|
200
|
+
workerRef.current.postMessage({
|
|
201
|
+
action: 'apiResponse',
|
|
202
|
+
id: responseId_1,
|
|
203
|
+
url: fakeURL_1,
|
|
204
|
+
method: options.method,
|
|
205
|
+
data: data
|
|
206
|
+
});
|
|
207
|
+
})
|
|
208
|
+
.catch(function (error) {
|
|
209
|
+
abort(error);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
next(response);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
};
|
|
218
|
+
exports.setUpResponseInterceptor = setUpResponseInterceptor;
|
|
@@ -35,80 +35,48 @@ var react_1 = require("react");
|
|
|
35
35
|
var react_redux_1 = require("react-redux");
|
|
36
36
|
var mdm_module_1 = __importStar(require("@reltio/mdm-module"));
|
|
37
37
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
38
|
+
var ramda_1 = require("ramda");
|
|
38
39
|
var workflow_1 = require("../../components/workflow");
|
|
39
40
|
var contexts_1 = require("../../contexts");
|
|
40
41
|
var API_1 = require("./API");
|
|
41
42
|
var helpers_1 = require("./helpers");
|
|
42
43
|
var useAPI = function (config) {
|
|
44
|
+
var _a, _b;
|
|
43
45
|
if (config === void 0) { config = {}; }
|
|
44
|
-
var
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
var
|
|
48
|
-
var
|
|
49
|
-
var
|
|
46
|
+
var _c = react_1.useState(), html = _c[0], setHtml = _c[1];
|
|
47
|
+
var _d = react_1.useState([]), listenersToReset = _d[0], setListenersToReset = _d[1];
|
|
48
|
+
var _e = react_1.useState(true), visible = _e[0], setVisible = _e[1];
|
|
49
|
+
var _f = react_1.useState(null), tooltip = _f[0], setTooltip = _f[1];
|
|
50
|
+
var _g = react_1.useState({}), customStyles = _g[0], setCustomStyles = _g[1];
|
|
51
|
+
var workerRef = react_1.useRef();
|
|
52
|
+
var requestListeners = react_1.useRef({});
|
|
53
|
+
var responseListeners = react_1.useRef({});
|
|
50
54
|
var dispatch = react_redux_1.useDispatch();
|
|
51
|
-
var metadata = react_redux_1.useSelector(mdm_module_1.default.selectors.getMetadata) || {};
|
|
52
|
-
var entity = react_redux_1.useSelector(mdm_module_1.default.selectors.getEntity) || {};
|
|
53
55
|
var uiPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getUIPath);
|
|
54
56
|
var tenant = react_redux_1.useSelector(mdm_module_1.default.selectors.getTenant);
|
|
55
57
|
var workerUrl = helpers_1.getWorkerURL(uiPath, tenant);
|
|
58
|
+
var showSnackbarMessage = react_1.useContext(contexts_1.SnackbarContext);
|
|
59
|
+
var qxApi = react_1.useContext(contexts_1.SandboxAPIContext);
|
|
60
|
+
var interceptHandlers = react_1.useContext(contexts_1.InterceptHandlersContext);
|
|
61
|
+
var workflowCheckPermission = workflow_1.useWorkflowCheckPermission();
|
|
62
|
+
var metadata = react_redux_1.useSelector(mdm_module_1.default.selectors.getMetadata) || {};
|
|
63
|
+
var entity = react_redux_1.useSelector(mdm_module_1.default.selectors.getEntity) || {};
|
|
64
|
+
var apiPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getApiPath);
|
|
65
|
+
var servicesPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getServicesPath);
|
|
56
66
|
var reltioPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getReltioPath);
|
|
57
67
|
var workflowPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getWorkflowPath);
|
|
58
68
|
var user = react_redux_1.useSelector(mdm_module_1.default.selectors.getUser);
|
|
59
|
-
var servicesPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getServicesPath);
|
|
60
69
|
var entityUri = react_redux_1.useSelector(mdm_module_1.default.selectors.getEntityUri);
|
|
61
70
|
var environment = react_redux_1.useSelector(mdm_module_1.default.selectors.getWorkflowEnvironmentUrl);
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
var
|
|
71
|
+
var _h = react_redux_1.useSelector(mdm_module_1.default.selectors.getSearchProviderData) || {}, typeSearch = _h.type, search = _h.data;
|
|
72
|
+
var isOldUI = !helpers_1.isNewUI(servicesPath);
|
|
73
|
+
var supportedInterceptHandlers = isOldUI ? qxApi.interceptors : interceptHandlers;
|
|
65
74
|
var openSearch = function (search) { return dispatch(mdm_module_1.ui.actions.openSearch(search)); };
|
|
66
|
-
var
|
|
75
|
+
var innerText = '';
|
|
67
76
|
var process = function (_a) {
|
|
68
|
-
var
|
|
77
|
+
var _b, _c;
|
|
78
|
+
var task = _a.task, worker = _a.worker;
|
|
69
79
|
if (task) {
|
|
70
|
-
var handlersToReset_1 = [];
|
|
71
|
-
var processInnerHtml_1 = function (parent) {
|
|
72
|
-
var uiActions = parent.getAttribute('ui-actions');
|
|
73
|
-
var uiTooltip = parent.getAttribute('ui-tooltip');
|
|
74
|
-
var id = parent.getAttribute('id') || parent.getAttribute('name');
|
|
75
|
-
if (uiActions) {
|
|
76
|
-
uiActions.split(',').forEach(function (uiAction) {
|
|
77
|
-
var handler = function () {
|
|
78
|
-
var data = {
|
|
79
|
-
action: 'event',
|
|
80
|
-
type: 'uiAction',
|
|
81
|
-
data: {
|
|
82
|
-
type: uiAction,
|
|
83
|
-
id: id
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
worker.postMessage(data);
|
|
87
|
-
};
|
|
88
|
-
parent.addEventListener(uiAction, handler);
|
|
89
|
-
handlersToReset_1.push(function () {
|
|
90
|
-
parent.removeEventListener(uiAction, handler);
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
parent.removeAttribute('ui-actions');
|
|
94
|
-
}
|
|
95
|
-
if (uiTooltip) {
|
|
96
|
-
setTooltip(uiTooltip);
|
|
97
|
-
}
|
|
98
|
-
parent.childNodes.forEach(function (child) {
|
|
99
|
-
if (child.nodeType === 1) {
|
|
100
|
-
//Node.ELEMENT_NODE
|
|
101
|
-
processInnerHtml_1(child);
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
};
|
|
105
|
-
var resetHtml = function (html) {
|
|
106
|
-
var docBlock = document.createElement('div');
|
|
107
|
-
docBlock.innerHTML = html || innerText;
|
|
108
|
-
processInnerHtml_1(docBlock);
|
|
109
|
-
setListenersToReset(handlersToReset_1);
|
|
110
|
-
setHtml(docBlock);
|
|
111
|
-
};
|
|
112
80
|
switch (task.action) {
|
|
113
81
|
case mdm_sdk_1.CustomAction.SET_HTML: {
|
|
114
82
|
if (task.params.id) {
|
|
@@ -116,18 +84,22 @@ var useAPI = function (config) {
|
|
|
116
84
|
elem.innerHTML = task.params.html;
|
|
117
85
|
}
|
|
118
86
|
else if (innerText !== task.params.html) {
|
|
119
|
-
|
|
87
|
+
innerText = task.params.html;
|
|
88
|
+
helpers_1.resetHtml({
|
|
89
|
+
worker: worker,
|
|
90
|
+
setTooltip: setTooltip,
|
|
91
|
+
html: task.params.html,
|
|
92
|
+
innerText: innerText,
|
|
93
|
+
setListenersToReset: setListenersToReset,
|
|
94
|
+
setHtml: setHtml
|
|
95
|
+
});
|
|
120
96
|
}
|
|
121
97
|
break;
|
|
122
98
|
}
|
|
123
|
-
case mdm_sdk_1.CustomAction.LOG: {
|
|
124
|
-
console.log(task.params); //eslint-disable-line no-console
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
99
|
case mdm_sdk_1.CustomAction.SET_VISIBILITY: {
|
|
128
100
|
if (task.params === 'visible') {
|
|
129
101
|
setVisible(true);
|
|
130
|
-
resetHtml();
|
|
102
|
+
helpers_1.resetHtml({ worker: worker, setTooltip: setTooltip, innerText: innerText, setListenersToReset: setListenersToReset, setHtml: setHtml });
|
|
131
103
|
}
|
|
132
104
|
else {
|
|
133
105
|
setVisible(false);
|
|
@@ -136,56 +108,99 @@ var useAPI = function (config) {
|
|
|
136
108
|
}
|
|
137
109
|
case mdm_sdk_1.CustomAction.SET_TOOLTIP: {
|
|
138
110
|
setTooltip(task.params);
|
|
139
|
-
resetHtml();
|
|
140
111
|
break;
|
|
141
112
|
}
|
|
142
113
|
case mdm_sdk_1.CustomAction.SET_HEIGHT: {
|
|
143
|
-
setCustomStyles(function (prev) { return (__assign(__assign({},
|
|
114
|
+
setCustomStyles(function (prev) { return (__assign(__assign({}, prev), { height: task.params })); });
|
|
144
115
|
break;
|
|
145
116
|
}
|
|
146
117
|
case mdm_sdk_1.CustomAction.SET_WIDTH: {
|
|
147
|
-
setCustomStyles(function (prev) { return (__assign(__assign({},
|
|
118
|
+
setCustomStyles(function (prev) { return (__assign(__assign({}, prev), { width: task.params })); });
|
|
148
119
|
break;
|
|
149
120
|
}
|
|
150
121
|
case mdm_sdk_1.CustomAction.SET_ENABLED: {
|
|
151
122
|
setCustomStyles(function (prev) {
|
|
152
|
-
|
|
153
|
-
if (!task.params) {
|
|
154
|
-
newStyles['pointerEvents'] = 'none';
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
delete newStyles['pointerEvents'];
|
|
158
|
-
}
|
|
159
|
-
return newStyles;
|
|
123
|
+
return task.params ? ramda_1.omit(['pointer-events'], prev) : __assign(__assign({}, prev), { 'pointer-events': 'none' });
|
|
160
124
|
});
|
|
161
125
|
break;
|
|
162
126
|
}
|
|
127
|
+
case mdm_sdk_1.CustomAction.LOG: {
|
|
128
|
+
console.log(task.params); //eslint-disable-line no-console
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
163
131
|
case mdm_sdk_1.CustomAction.MESSAGE: {
|
|
164
132
|
showSnackbarMessage(task.params);
|
|
165
133
|
break;
|
|
166
134
|
}
|
|
167
135
|
case mdm_sdk_1.CustomAction.REQUEST: {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
136
|
+
if (((_c = (_b = task.params) === null || _b === void 0 ? void 0 : _b.headers) === null || _c === void 0 ? void 0 : _c.origin) !== 'ui') {
|
|
137
|
+
API_1.processRequest(__assign({ name: task.params.name, paramObject: task, permissions: config.action.permissions, worker: worker,
|
|
138
|
+
metadata: metadata, config: config, user: user,
|
|
139
|
+
servicesPath: servicesPath, apiPath: isOldUI ? apiPath : reltioPath, tenant: tenant,
|
|
140
|
+
workflowPath: workflowPath,
|
|
141
|
+
entity: entity,
|
|
142
|
+
entityUri: entityUri,
|
|
143
|
+
environment: environment, query: typeSearch === 'search' ? search === null || search === void 0 ? void 0 : search.query : null, openSearch: openSearch,
|
|
144
|
+
workflowCheckPermission: workflowCheckPermission }, qxApi));
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
var _d = task.params, headers = _d.headers, id = _d.id, fakeURL = _d.url, method = _d.method, data = _d.data;
|
|
148
|
+
var url = fakeURL.replace(reltioPath, apiPath);
|
|
149
|
+
if (requestListeners.current[headers.requestId]) {
|
|
150
|
+
requestListeners.current[headers.requestId].next(url, {
|
|
151
|
+
body: data,
|
|
152
|
+
id: id,
|
|
153
|
+
task: task,
|
|
154
|
+
headers: headers,
|
|
155
|
+
method: method
|
|
156
|
+
});
|
|
157
|
+
requestListeners.current = ramda_1.omit([headers.requestId], requestListeners.current);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
case mdm_sdk_1.CustomAction.RETURN_PROCESSED_API_RESPONSE:
|
|
163
|
+
case mdm_sdk_1.CustomAction.RETURN_PROCESSED_API_REQUEST: {
|
|
164
|
+
var _e = task.params, id = _e.id, data = _e.data;
|
|
165
|
+
if (responseListeners.current[id]) {
|
|
166
|
+
responseListeners.current[id].next(data);
|
|
167
|
+
responseListeners.current = ramda_1.omit([id], responseListeners.current);
|
|
168
|
+
}
|
|
176
169
|
break;
|
|
177
170
|
}
|
|
178
171
|
}
|
|
179
172
|
}
|
|
180
173
|
};
|
|
174
|
+
var setRequestListeners = function (options, next, requestId) {
|
|
175
|
+
var _a;
|
|
176
|
+
requestListeners.current = __assign(__assign({}, requestListeners.current), (_a = {}, _a[requestId] = { options: options, next: next, id: requestId }, _a));
|
|
177
|
+
};
|
|
178
|
+
var setResponseListeners = function (next, responseId) {
|
|
179
|
+
var _a;
|
|
180
|
+
responseListeners.current = __assign(__assign({}, responseListeners.current), (_a = {}, _a[responseId] = { next: next }, _a));
|
|
181
|
+
};
|
|
182
|
+
var qooxdooRequestInterceptor = helpers_1.setUpQooxdooRequestInterceptor({ workerRef: workerRef, setRequestListeners: setRequestListeners });
|
|
183
|
+
var qooxdooResponseInterceptor = helpers_1.setUpQooxdooResponseInterceptor({ workerRef: workerRef, setResponseListeners: setResponseListeners });
|
|
184
|
+
var requestInterceptor = helpers_1.setUpRequestInterceptor({
|
|
185
|
+
apiPath: apiPath,
|
|
186
|
+
reltioPath: reltioPath,
|
|
187
|
+
tenant: tenant,
|
|
188
|
+
processApiRequest: (_a = config === null || config === void 0 ? void 0 : config.action) === null || _a === void 0 ? void 0 : _a.processApiRequest,
|
|
189
|
+
workerRef: workerRef,
|
|
190
|
+
setRequestListeners: setRequestListeners
|
|
191
|
+
});
|
|
192
|
+
var responseInterceptor = helpers_1.setUpResponseInterceptor({
|
|
193
|
+
reltioPath: reltioPath,
|
|
194
|
+
apiPath: apiPath,
|
|
195
|
+
processApiResponse: (_b = config === null || config === void 0 ? void 0 : config.action) === null || _b === void 0 ? void 0 : _b.processApiResponse,
|
|
196
|
+
workerRef: workerRef,
|
|
197
|
+
setResponseListeners: setResponseListeners
|
|
198
|
+
});
|
|
181
199
|
react_1.useEffect(function () {
|
|
182
200
|
if (!mdm_sdk_1.isEmptyValue(config.action) && config.action.platform !== mdm_sdk_1.CustomScriptPlatform.CLASSIC) {
|
|
183
|
-
workerRef.current = mdm_sdk_1.initializeWebWorker(workerUrl,
|
|
184
|
-
return function () {
|
|
185
|
-
workerRef.current.terminate();
|
|
186
|
-
};
|
|
201
|
+
workerRef.current = mdm_sdk_1.initializeWebWorker(workerUrl, process, config);
|
|
187
202
|
}
|
|
188
|
-
}, [
|
|
203
|
+
}, [entity]);
|
|
189
204
|
react_1.useEffect(function () { return function () {
|
|
190
205
|
listenersToReset.forEach(function (listener) { return listener(); });
|
|
191
206
|
}; }, [listenersToReset]);
|
|
@@ -197,6 +212,29 @@ var useAPI = function (config) {
|
|
|
197
212
|
data: null
|
|
198
213
|
});
|
|
199
214
|
}, [config]);
|
|
215
|
+
react_1.useEffect(function () {
|
|
216
|
+
var _a, _b, _c, _d;
|
|
217
|
+
if (!mdm_sdk_1.isEmptyValue(supportedInterceptHandlers) &&
|
|
218
|
+
(((_a = config === null || config === void 0 ? void 0 : config.action) === null || _a === void 0 ? void 0 : _a.processApiRequest) || ((_b = config === null || config === void 0 ? void 0 : config.action) === null || _b === void 0 ? void 0 : _b.processApiResponse))) {
|
|
219
|
+
var addInternalRequestInterceptor = supportedInterceptHandlers.addInternalRequestInterceptor, addInternalResponseInterceptor = supportedInterceptHandlers.addInternalResponseInterceptor, removeInternalRequestInterceptor_1 = supportedInterceptHandlers.removeInternalRequestInterceptor, removeInternalResponseInterceptor_1 = supportedInterceptHandlers.removeInternalResponseInterceptor;
|
|
220
|
+
if (isOldUI) {
|
|
221
|
+
addInternalRequestInterceptor((_c = config === null || config === void 0 ? void 0 : config.action) === null || _c === void 0 ? void 0 : _c.processApiRequest, qooxdooRequestInterceptor);
|
|
222
|
+
addInternalResponseInterceptor((_d = config === null || config === void 0 ? void 0 : config.action) === null || _d === void 0 ? void 0 : _d.processApiResponse, qooxdooResponseInterceptor);
|
|
223
|
+
return function () {
|
|
224
|
+
removeInternalRequestInterceptor_1(qooxdooRequestInterceptor);
|
|
225
|
+
removeInternalResponseInterceptor_1(qooxdooResponseInterceptor);
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
addInternalRequestInterceptor(requestInterceptor);
|
|
230
|
+
addInternalResponseInterceptor(responseInterceptor);
|
|
231
|
+
return function () {
|
|
232
|
+
removeInternalRequestInterceptor_1(requestInterceptor);
|
|
233
|
+
removeInternalResponseInterceptor_1(responseInterceptor);
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}, [config]);
|
|
200
238
|
return { html: html, visible: visible, tooltip: tooltip, customStyles: customStyles, onClick: onClick };
|
|
201
239
|
};
|
|
202
240
|
exports.useAPI = useAPI;
|
|
@@ -1,9 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare
|
|
3
|
-
addInternalRequestInterceptor: ReturnType<typeof createRequestProvider>['addRequestInterceptor'];
|
|
4
|
-
addInternalResponseInterceptor: ReturnType<typeof createRequestProvider>['addResponseInterceptor'];
|
|
5
|
-
removeInternalRequestInterceptor: ReturnType<typeof createRequestProvider>['removeRequestInterceptor'];
|
|
6
|
-
removeInternalResponseInterceptor: ReturnType<typeof createRequestProvider>['removeResponseInterceptor'];
|
|
7
|
-
};
|
|
8
|
-
export declare const useCustomScripts: (config: CustomScript[], { addInternalRequestInterceptor, addInternalResponseInterceptor, removeInternalRequestInterceptor, removeInternalResponseInterceptor }: InterceptHandlers) => void;
|
|
9
|
-
export {};
|
|
1
|
+
import { CustomScript } from '@reltio/mdm-sdk';
|
|
2
|
+
export declare const useCustomScripts: (config: CustomScript[]) => void;
|