@reltio/components 1.4.1226 → 1.4.1229

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.
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { InterceptHandlers } from '@reltio/mdm-sdk';
3
+ export declare const InterceptHandlersContext: React.Context<InterceptHandlers>;
@@ -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
- export declare const SandboxAPIContext: React.Context<{
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 {};
@@ -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';
@@ -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; } });
@@ -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: '', status: 0 } }, paramObject.params));
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 _a = react_1.useState(), html = _a[0], setHtml = _a[1];
45
- var _b = react_1.useState([]), listenersToReset = _b[0], setListenersToReset = _b[1];
46
- var _c = react_1.useState(true), visible = _c[0], setVisible = _c[1];
47
- var _d = react_1.useState(null), tooltip = _d[0], setTooltip = _d[1];
48
- var _e = react_1.useState(null), customStyles = _e[0], setCustomStyles = _e[1];
49
- var showSnackbarMessage = react_1.useContext(contexts_1.SnackbarContext);
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 qxApi = react_1.useContext(contexts_1.SandboxAPIContext);
63
- var workflowCheckPermission = workflow_1.useWorkflowCheckPermission();
64
- var _f = react_redux_1.useSelector(mdm_module_1.default.selectors.getSearchProviderData) || {}, typeSearch = _f.type, search = _f.data;
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 workerRef = react_1.useRef();
75
+ var innerText = '';
67
76
  var process = function (_a) {
68
- var task = _a.task, worker = _a.worker, innerText = _a.innerText;
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
- resetHtml(task.params.html);
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({}, (prev || {})), { height: task.params })); });
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({}, (prev || {})), { width: task.params })); });
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
- var newStyles = __assign({}, (prev || {}));
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
- API_1.processRequest(__assign({ name: task.params.name, paramObject: task, permissions: config.action.permissions, worker: worker,
169
- metadata: metadata, config: config, user: user,
170
- servicesPath: servicesPath, apiPath: reltioPath, tenant: tenant,
171
- workflowPath: workflowPath,
172
- entity: entity,
173
- entityUri: entityUri,
174
- environment: environment, query: typeSearch === 'search' ? search === null || search === void 0 ? void 0 : search.query : null, openSearch: openSearch,
175
- workflowCheckPermission: workflowCheckPermission }, qxApi));
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, config.action.files, process);
184
- return function () {
185
- workerRef.current.terminate();
186
- };
201
+ workerRef.current = mdm_sdk_1.initializeWebWorker(workerUrl, process, config);
187
202
  }
188
- }, [config]);
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 { createRequestProvider, CustomScript } from '@reltio/mdm-sdk';
2
- declare type InterceptHandlers = {
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;