chayns-api 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/.babelrc +30 -0
  2. package/.eslintrc +17 -0
  3. package/.github/workflows/deploy_docs.yml +28 -0
  4. package/LICENSE +21 -0
  5. package/README.md +47 -0
  6. package/dist/cjs/calls/dialogs/alert.js +19 -0
  7. package/dist/cjs/calls/dialogs/chaynsDialog.js +59 -0
  8. package/dist/cjs/calls/dialogs/close.js +13 -0
  9. package/dist/cjs/calls/dialogs/communication.js +71 -0
  10. package/dist/cjs/calls/dialogs/confirm.js +33 -0
  11. package/dist/cjs/calls/dialogs/date.js +187 -0
  12. package/dist/cjs/calls/dialogs/dropUpAlert.js +12 -0
  13. package/dist/cjs/calls/dialogs/fileSelect.js +39 -0
  14. package/dist/cjs/calls/dialogs/iFrame.js +43 -0
  15. package/dist/cjs/calls/dialogs/index.js +178 -0
  16. package/dist/cjs/calls/dialogs/input.js +33 -0
  17. package/dist/cjs/calls/dialogs/mediaSelect.js +27 -0
  18. package/dist/cjs/calls/dialogs/open.js +19 -0
  19. package/dist/cjs/calls/dialogs/select.js +55 -0
  20. package/dist/cjs/calls/dialogs/signature.js +24 -0
  21. package/dist/cjs/calls/dialogs/toast.js +18 -0
  22. package/dist/cjs/calls/dialogs/utils/callback.js +12 -0
  23. package/dist/cjs/calls/dialogs/utils/environment.js +10 -0
  24. package/dist/cjs/calls/dialogs/utils/is.js +21 -0
  25. package/dist/cjs/calls/getUserInfo.js +40 -0
  26. package/dist/cjs/calls/index.js +300 -0
  27. package/dist/cjs/calls/sendMessage.js +120 -0
  28. package/dist/cjs/calls/visibilityChangeListener.js +38 -0
  29. package/dist/cjs/client.js +93 -0
  30. package/dist/cjs/components/ChaynsContext.js +12 -0
  31. package/dist/cjs/components/ChaynsModuleProvider.js +457 -0
  32. package/dist/cjs/components/ChaynsProvider.js +116 -0
  33. package/dist/cjs/components/WaitUntil.js +31 -0
  34. package/dist/cjs/components/withCompatMode.js +55 -0
  35. package/dist/cjs/helper/apiListenerHelper.js +34 -0
  36. package/dist/cjs/hooks/geoLocationListener.js +50 -0
  37. package/dist/cjs/hooks/index.js +153 -0
  38. package/dist/cjs/hooks/scrollListener.js +102 -0
  39. package/dist/cjs/hooks/useAccessToken.js +28 -0
  40. package/dist/cjs/hooks/useCurrentPage.js +13 -0
  41. package/dist/cjs/hooks/useCustomData.js +13 -0
  42. package/dist/cjs/hooks/useDevice.js +13 -0
  43. package/dist/cjs/hooks/useEnvironment.js +13 -0
  44. package/dist/cjs/hooks/useFunctions.js +16 -0
  45. package/dist/cjs/hooks/useIsAdminMode.js +16 -0
  46. package/dist/cjs/hooks/useLanguage.js +13 -0
  47. package/dist/cjs/hooks/usePages.js +38 -0
  48. package/dist/cjs/hooks/useParameters.js +13 -0
  49. package/dist/cjs/hooks/useSite.js +13 -0
  50. package/dist/cjs/hooks/useUser.js +14 -0
  51. package/dist/cjs/hooks/useValues.js +16 -0
  52. package/dist/cjs/hooks/windowMetricsListener.js +58 -0
  53. package/dist/cjs/host/ChaynsHost.js +102 -0
  54. package/dist/cjs/host/iframe/HostIframe.js +133 -0
  55. package/dist/cjs/host/iframe/utils/useUpdateData.js +21 -0
  56. package/dist/cjs/host/module/ModuleHost.js +82 -0
  57. package/dist/cjs/host/module/PagemakerFrame.js +105 -0
  58. package/dist/cjs/host/module/utils/loadComponent.js +61 -0
  59. package/dist/cjs/host/module/utils/useDynamicScript.js +61 -0
  60. package/dist/cjs/index.js +117 -0
  61. package/dist/cjs/types/DynamicApiImport.d.js +5 -0
  62. package/dist/cjs/types/IChaynsReact.js +235 -0
  63. package/dist/cjs/types/dialog.js +5 -0
  64. package/dist/cjs/util/appCall.js +23 -0
  65. package/dist/cjs/util/deviceHelper.js +71 -0
  66. package/dist/cjs/util/heightHelper.js +40 -0
  67. package/dist/cjs/util/postIframeForm.js +32 -0
  68. package/dist/cjs/wrapper/AppWrapper.js +244 -0
  69. package/dist/cjs/wrapper/FrameWrapper.js +288 -0
  70. package/dist/cjs/wrapper/ModuleFederationWrapper.js +61 -0
  71. package/dist/cjs/wrapper/SsrWrapper.js +30 -0
  72. package/dist/esm/calls/dialogs/alert.js +15 -0
  73. package/dist/esm/calls/dialogs/chaynsDialog.js +48 -0
  74. package/dist/esm/calls/dialogs/close.js +7 -0
  75. package/dist/esm/calls/dialogs/communication.js +66 -0
  76. package/dist/esm/calls/dialogs/confirm.js +30 -0
  77. package/dist/esm/calls/dialogs/date.js +211 -0
  78. package/dist/esm/calls/dialogs/dropUpAlert.js +7 -0
  79. package/dist/esm/calls/dialogs/fileSelect.js +32 -0
  80. package/dist/esm/calls/dialogs/iFrame.js +37 -0
  81. package/dist/esm/calls/dialogs/index.js +14 -0
  82. package/dist/esm/calls/dialogs/input.js +26 -0
  83. package/dist/esm/calls/dialogs/mediaSelect.js +22 -0
  84. package/dist/esm/calls/dialogs/open.js +13 -0
  85. package/dist/esm/calls/dialogs/select.js +47 -0
  86. package/dist/esm/calls/dialogs/signature.js +18 -0
  87. package/dist/esm/calls/dialogs/toast.js +13 -0
  88. package/dist/esm/calls/dialogs/utils/callback.js +7 -0
  89. package/dist/esm/calls/dialogs/utils/environment.js +3 -0
  90. package/dist/esm/calls/dialogs/utils/is.js +12 -0
  91. package/dist/esm/calls/getUserInfo.js +33 -0
  92. package/dist/esm/calls/index.js +323 -0
  93. package/dist/esm/calls/sendMessage.js +111 -0
  94. package/dist/esm/calls/visibilityChangeListener.js +30 -0
  95. package/dist/esm/client.js +8 -0
  96. package/dist/esm/components/ChaynsContext.js +4 -0
  97. package/dist/esm/components/ChaynsModuleProvider.js +517 -0
  98. package/dist/esm/components/ChaynsProvider.js +109 -0
  99. package/dist/esm/components/WaitUntil.js +25 -0
  100. package/dist/esm/components/withCompatMode.js +47 -0
  101. package/dist/esm/helper/apiListenerHelper.js +25 -0
  102. package/dist/esm/hooks/geoLocationListener.js +43 -0
  103. package/dist/esm/hooks/index.js +16 -0
  104. package/dist/esm/hooks/scrollListener.js +95 -0
  105. package/dist/esm/hooks/useAccessToken.js +22 -0
  106. package/dist/esm/hooks/useCurrentPage.js +7 -0
  107. package/dist/esm/hooks/useCustomData.js +7 -0
  108. package/dist/esm/hooks/useDevice.js +6 -0
  109. package/dist/esm/hooks/useEnvironment.js +6 -0
  110. package/dist/esm/hooks/useFunctions.js +9 -0
  111. package/dist/esm/hooks/useIsAdminMode.js +9 -0
  112. package/dist/esm/hooks/useLanguage.js +6 -0
  113. package/dist/esm/hooks/usePages.js +32 -0
  114. package/dist/esm/hooks/useParameters.js +6 -0
  115. package/dist/esm/hooks/useSite.js +6 -0
  116. package/dist/esm/hooks/useUser.js +7 -0
  117. package/dist/esm/hooks/useValues.js +9 -0
  118. package/dist/esm/hooks/windowMetricsListener.js +51 -0
  119. package/dist/esm/host/ChaynsHost.js +95 -0
  120. package/dist/esm/host/iframe/HostIframe.js +124 -0
  121. package/dist/esm/host/iframe/utils/useUpdateData.js +14 -0
  122. package/dist/esm/host/module/ModuleHost.js +74 -0
  123. package/dist/esm/host/module/PagemakerFrame.js +97 -0
  124. package/dist/esm/host/module/utils/loadComponent.js +55 -0
  125. package/dist/esm/host/module/utils/useDynamicScript.js +50 -0
  126. package/dist/esm/index.js +16 -0
  127. package/dist/esm/types/DynamicApiImport.d.js +1 -0
  128. package/dist/esm/types/IChaynsReact.js +215 -0
  129. package/dist/esm/types/dialog.js +1 -0
  130. package/dist/esm/util/appCall.js +16 -0
  131. package/dist/esm/util/deviceHelper.js +62 -0
  132. package/dist/esm/util/heightHelper.js +32 -0
  133. package/dist/esm/util/postIframeForm.js +26 -0
  134. package/dist/esm/wrapper/AppWrapper.js +241 -0
  135. package/dist/esm/wrapper/FrameWrapper.js +279 -0
  136. package/dist/esm/wrapper/ModuleFederationWrapper.js +56 -0
  137. package/dist/esm/wrapper/SsrWrapper.js +23 -0
  138. package/dist/types/calls/dialogs/alert.d.ts +1 -0
  139. package/dist/types/calls/dialogs/chaynsDialog.d.ts +24 -0
  140. package/dist/types/calls/dialogs/close.d.ts +1 -0
  141. package/dist/types/calls/dialogs/communication.d.ts +3 -0
  142. package/dist/types/calls/dialogs/confirm.d.ts +13 -0
  143. package/dist/types/calls/dialogs/date.d.ts +96 -0
  144. package/dist/types/calls/dialogs/dropUpAlert.d.ts +5 -0
  145. package/dist/types/calls/dialogs/fileSelect.d.ts +16 -0
  146. package/dist/types/calls/dialogs/iFrame.d.ts +10 -0
  147. package/dist/types/calls/dialogs/index.d.ts +14 -0
  148. package/dist/types/calls/dialogs/input.d.ts +15 -0
  149. package/dist/types/calls/dialogs/mediaSelect.d.ts +8 -0
  150. package/dist/types/calls/dialogs/open.d.ts +1 -0
  151. package/dist/types/calls/dialogs/select.d.ts +6 -0
  152. package/dist/types/calls/dialogs/signature.d.ts +7 -0
  153. package/dist/types/calls/dialogs/toast.d.ts +1 -0
  154. package/dist/types/calls/dialogs/utils/callback.d.ts +1 -0
  155. package/dist/types/calls/dialogs/utils/environment.d.ts +3 -0
  156. package/dist/types/calls/dialogs/utils/is.d.ts +4 -0
  157. package/dist/types/calls/getUserInfo.d.ts +9 -0
  158. package/dist/types/calls/index.d.ts +231 -0
  159. package/dist/types/calls/sendMessage.d.ts +13 -0
  160. package/dist/types/calls/visibilityChangeListener.d.ts +9 -0
  161. package/dist/types/client.d.ts +7 -0
  162. package/dist/types/components/ChaynsContext.d.ts +3 -0
  163. package/dist/types/components/ChaynsModuleProvider.d.ts +170 -0
  164. package/dist/types/components/ChaynsProvider.d.ts +13 -0
  165. package/dist/types/components/WaitUntil.d.ts +7 -0
  166. package/dist/types/components/withCompatMode.d.ts +13 -0
  167. package/dist/types/helper/apiListenerHelper.d.ts +6 -0
  168. package/dist/types/hooks/geoLocationListener.d.ts +18 -0
  169. package/dist/types/hooks/index.d.ts +16 -0
  170. package/dist/types/hooks/scrollListener.d.ts +28 -0
  171. package/dist/types/hooks/useAccessToken.d.ts +5 -0
  172. package/dist/types/hooks/useCurrentPage.d.ts +4 -0
  173. package/dist/types/hooks/useCustomData.d.ts +4 -0
  174. package/dist/types/hooks/useDevice.d.ts +5 -0
  175. package/dist/types/hooks/useEnvironment.d.ts +5 -0
  176. package/dist/types/hooks/useFunctions.d.ts +5 -0
  177. package/dist/types/hooks/useIsAdminMode.d.ts +4 -0
  178. package/dist/types/hooks/useLanguage.d.ts +5 -0
  179. package/dist/types/hooks/usePages.d.ts +14 -0
  180. package/dist/types/hooks/useParameters.d.ts +5 -0
  181. package/dist/types/hooks/useSite.d.ts +5 -0
  182. package/dist/types/hooks/useUser.d.ts +5 -0
  183. package/dist/types/hooks/useValues.d.ts +5 -0
  184. package/dist/types/hooks/windowMetricsListener.d.ts +11 -0
  185. package/dist/types/host/ChaynsHost.d.ts +27 -0
  186. package/dist/types/host/iframe/HostIframe.d.ts +24 -0
  187. package/dist/types/host/iframe/utils/useUpdateData.d.ts +3 -0
  188. package/dist/types/host/module/ModuleHost.d.ts +23 -0
  189. package/dist/types/host/module/PagemakerFrame.d.ts +22 -0
  190. package/dist/types/host/module/utils/loadComponent.d.ts +1 -0
  191. package/dist/types/host/module/utils/useDynamicScript.d.ts +9 -0
  192. package/dist/types/index.d.ts +16 -0
  193. package/dist/types/types/IChaynsReact.d.ts +590 -0
  194. package/dist/types/types/dialog.d.ts +41 -0
  195. package/dist/types/util/appCall.d.ts +2 -0
  196. package/dist/types/util/deviceHelper.d.ts +7 -0
  197. package/dist/types/util/heightHelper.d.ts +1 -0
  198. package/dist/types/util/postIframeForm.d.ts +1 -0
  199. package/dist/types/wrapper/AppWrapper.d.ts +16 -0
  200. package/dist/types/wrapper/FrameWrapper.d.ts +15 -0
  201. package/dist/types/wrapper/ModuleFederationWrapper.d.ts +10 -0
  202. package/dist/types/wrapper/SsrWrapper.d.ts +11 -0
  203. package/package.json +76 -0
  204. package/toolkit.config.js +52 -0
  205. package/tsconfig.json +56 -0
@@ -0,0 +1,74 @@
1
+ import React, { useMemo } from 'react';
2
+ import useDynamicScript from './utils/useDynamicScript';
3
+ import loadComponent from './utils/loadComponent';
4
+ const System = _ref => {
5
+ let {
6
+ system,
7
+ fallback,
8
+ ...props
9
+ } = _ref;
10
+ const {
11
+ ready,
12
+ failed
13
+ } = useDynamicScript({
14
+ url: system === null || system === void 0 ? void 0 : system.url,
15
+ scope: system === null || system === void 0 ? void 0 : system.scope
16
+ });
17
+ const Component = useMemo(() => {
18
+ // maybe return waitcursor instead
19
+ if (!system || !ready || failed) {
20
+ return null;
21
+ }
22
+ return /*#__PURE__*/React.lazy(loadComponent(system.scope, system.module, system.url));
23
+
24
+ /* eslint-disable react-hooks/exhaustive-deps */
25
+ }, [system === null || system === void 0 ? void 0 : system.scope, ready, system === null || system === void 0 ? void 0 : system.url]);
26
+ return Component ? /*#__PURE__*/React.createElement(React.Suspense, {
27
+ fallback: fallback || ''
28
+ }, /*#__PURE__*/React.createElement(Component, props)) : fallback;
29
+ };
30
+ const ModuleHost = _ref2 => {
31
+ let {
32
+ system,
33
+ children = null,
34
+ functions,
35
+ // shallow data
36
+ pages,
37
+ isAdminModeActive,
38
+ site,
39
+ user,
40
+ currentPage,
41
+ device,
42
+ language,
43
+ parameters,
44
+ customData,
45
+ environment
46
+ } = _ref2;
47
+ // region initialData
48
+ const initialData = {
49
+ site,
50
+ isAdminModeActive,
51
+ pages,
52
+ currentPage,
53
+ device,
54
+ language,
55
+ parameters,
56
+ customData,
57
+ environment
58
+ };
59
+ if (user) {
60
+ initialData.user = user;
61
+ }
62
+ // endregion
63
+
64
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
65
+ className: "module-css"
66
+ }), /*#__PURE__*/React.createElement(System, {
67
+ system: system,
68
+ data: initialData,
69
+ functions: functions,
70
+ fallback: children,
71
+ isModule: true
72
+ }));
73
+ };
74
+ export default ModuleHost;
@@ -0,0 +1,97 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
+
5
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+
7
+ import { useEffect, useRef } from 'react';
8
+ import * as comlink from 'comlink';
9
+ import useUpdateData from "../iframe/utils/useUpdateData";
10
+
11
+ var PagemakerFrame = function PagemakerFrame(_ref) {
12
+ var iFrameProps = _ref.iFrameProps,
13
+ _ref$postForm = _ref.postForm,
14
+ postForm = _ref$postForm === void 0 ? false : _ref$postForm,
15
+ children = _ref.children,
16
+ iFrameRef = _ref.iFrameRef,
17
+ pages = _ref.pages,
18
+ isAdminModeActive = _ref.isAdminModeActive,
19
+ site = _ref.site,
20
+ user = _ref.user,
21
+ currentPage = _ref.currentPage,
22
+ functions = _ref.functions,
23
+ device = _ref.device,
24
+ language = _ref.language,
25
+ parameters = _ref.parameters,
26
+ environment = _ref.environment;
27
+ var eventTarget = useRef();
28
+ var ref = useRef();
29
+ var currentDataRef = useRef();
30
+
31
+ if (!eventTarget.current) {
32
+ eventTarget.current = global.document ? document.createElement('div') : undefined; // global.EventTarget ? new EventTarget() : undefined
33
+ }
34
+
35
+ var setHeight = function setHeight(value) {
36
+ if (ref.current) {
37
+ ref.current.height = "".concat(value, "px");
38
+ }
39
+ }; // region initialData
40
+
41
+
42
+ var initialData = {
43
+ site: site,
44
+ isAdminModeActive: isAdminModeActive,
45
+ pages: pages,
46
+ currentPage: currentPage,
47
+ device: device,
48
+ user: user,
49
+ language: language,
50
+ parameters: parameters,
51
+ environment: environment
52
+ }; // endregion
53
+
54
+ currentDataRef.current = initialData;
55
+ console.debug('functions', functions); // region expose data and functions to iframe
56
+
57
+ useEffect(function () {
58
+ var _ref$current;
59
+
60
+ if ((_ref$current = ref.current) !== null && _ref$current !== void 0 && _ref$current.contentWindow) {
61
+ var obj = _defineProperty({}, iFrameProps.name, {
62
+ functions: _objectSpread(_objectSpread({}, functions), {}, {
63
+ setHeight: setHeight
64
+ }),
65
+ addDataListener: function addDataListener(cb) {
66
+ if (eventTarget.current) eventTarget.current.addEventListener('data_update', function (e) {
67
+ return e.detail && cb(e.detail);
68
+ });
69
+ },
70
+ getInitialData: function getInitialData() {
71
+ return currentDataRef.current;
72
+ }
73
+ });
74
+
75
+ comlink.expose(obj, comlink.windowEndpoint(ref.current.contentWindow));
76
+ ref.current.contentWindow.postMessage('chayns-api-host-ready', '*'); // https://github.com/GoogleChromeLabs/comlink/pull/469 might be better approach once released
77
+
78
+ return function () {
79
+ delete obj[iFrameProps.name];
80
+ };
81
+ }
82
+
83
+ return undefined; // eslint-disable-next-line react-hooks/exhaustive-deps
84
+ }, []); // endregion
85
+ // region dispatch data update
86
+
87
+ useUpdateData(eventTarget.current, 'isAdminModeActive', isAdminModeActive);
88
+ useUpdateData(eventTarget.current, 'user', user);
89
+ useUpdateData(eventTarget.current, 'site', site);
90
+ useUpdateData(eventTarget.current, 'pages', pages);
91
+ useUpdateData(eventTarget.current, 'language', language);
92
+ useUpdateData(eventTarget.current, 'parameters', parameters); // endregion
93
+
94
+ return children;
95
+ };
96
+
97
+ export default PagemakerFrame;
@@ -0,0 +1,55 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+
4
+ import semver from 'semver';
5
+ import React from 'react';
6
+ import { semaphore } from './useDynamicScript';
7
+ let instances = {};
8
+ export default function loadComponent(scope, module, url) {
9
+ let skipCompatMode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
10
+ return async () => {
11
+ // Initializes the shared scope. Fills it with known provided modules from this build and all remotes
12
+ // eslint-disable-next-line no-undef
13
+ await __webpack_init_sharing__('default');
14
+ const {
15
+ container
16
+ } = window[scope + "_list"].find(x => x.url === url); // or get the container somewhere else
17
+ // Initialize the container, it may provide shared modules
18
+ // eslint-disable-next-line no-undef
19
+ await container.init(__webpack_share_scopes__.default);
20
+ const factory = await container.get(module);
21
+ semaphore[scope].release();
22
+ let ModuleMap = instances[`${scope}__${module}`];
23
+ let Module;
24
+ if (!ModuleMap) {
25
+ ModuleMap = {};
26
+ instances[`${scope}__${module}`] = ModuleMap;
27
+ }
28
+ if (Object.keys(ModuleMap).length > 0) {
29
+ const newModule = factory();
30
+ Module = ModuleMap[`${newModule.default.buildEnv}__${newModule.default.appVersion}`];
31
+ if (!Module) {
32
+ Module = newModule;
33
+ ModuleMap[`${newModule.default.buildEnv}__${newModule.default.appVersion}`] = newModule;
34
+ }
35
+ } else {
36
+ Module = factory();
37
+ ModuleMap[`${Module.default.buildEnv}__${Module.default.appVersion}`] = Module;
38
+ }
39
+ if (skipCompatMode) return Module;
40
+ const hostVersion = semver.minVersion(React.version);
41
+ const {
42
+ requiredVersion,
43
+ environment
44
+ } = Module.default;
45
+ const matchReactVersion = requiredVersion && semver.satisfies(hostVersion, requiredVersion);
46
+ if (!matchReactVersion || environment !== 'production') {
47
+ return {
48
+ default: Module.default.CompatComponent
49
+ };
50
+ }
51
+ return {
52
+ default: Module.default.Component
53
+ };
54
+ };
55
+ }
@@ -0,0 +1,50 @@
1
+ import React, { useEffect } from 'react';
2
+ import Semaphore from 'semaphore-async-await';
3
+ export const semaphore = {};
4
+ const useDynamicScript = args => {
5
+ const [ready, setReady] = React.useState(false);
6
+ const [failed, setFailed] = React.useState(false);
7
+ useEffect(() => {
8
+ if (!args.url) {
9
+ return undefined;
10
+ }
11
+ const element = document.createElement('script');
12
+ element.src = args.url;
13
+ element.type = 'text/javascript';
14
+ element.async = true;
15
+ setReady(false);
16
+ setFailed(false);
17
+ if (!(args.scope in semaphore)) {
18
+ semaphore[args.scope] = new Semaphore(1);
19
+ }
20
+ (async () => {
21
+ await semaphore[args.scope].acquire();
22
+ element.onload = () => {
23
+ setReady(true);
24
+ const listKey = args.scope + "_list";
25
+ if (!window[listKey]) window[listKey] = [];
26
+ window[listKey].push({
27
+ url: args.url,
28
+ container: window[args.scope]
29
+ });
30
+ window[args.scope] = null;
31
+ };
32
+ element.onerror = () => {
33
+ setReady(false);
34
+ setFailed(true);
35
+ };
36
+ document.head.appendChild(element);
37
+ })();
38
+ return () => {
39
+ semaphore[args.scope].release();
40
+ if (document.head.contains(element)) {
41
+ document.head.removeChild(element);
42
+ }
43
+ };
44
+ }, [args.url]);
45
+ return {
46
+ ready,
47
+ failed
48
+ };
49
+ };
50
+ export default useDynamicScript;
@@ -0,0 +1,16 @@
1
+ export { default as ChaynsProvider } from './components/ChaynsProvider';
2
+ export { default as getDeviceInfo, getScreenSize } from './util/deviceHelper';
3
+ export { default as ChaynsHost } from './host/ChaynsHost';
4
+ export { withCompatMode } from './components/withCompatMode';
5
+ export * from './calls';
6
+ export * from './hooks';
7
+ export * from './components/WaitUntil';
8
+ export * from './types/IChaynsReact';
9
+ export * from './components/withCompatMode';
10
+ import * as _dialog from './calls/dialogs/index';
11
+ export { _dialog as dialog };
12
+ export * from './types/IChaynsReact';
13
+ export default {
14
+ buildEnv: process.env.BUILD_ENV,
15
+ appVersion: process.env.VERSION
16
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,215 @@
1
+ export let ScreenSize;
2
+ (function (ScreenSize) {
3
+ ScreenSize[ScreenSize["XS"] = 0] = "XS";
4
+ ScreenSize[ScreenSize["SM"] = 1] = "SM";
5
+ ScreenSize[ScreenSize["MD"] = 2] = "MD";
6
+ ScreenSize[ScreenSize["LG"] = 3] = "LG";
7
+ ScreenSize[ScreenSize["XL"] = 4] = "XL";
8
+ })(ScreenSize || (ScreenSize = {}));
9
+ export let AccessMode;
10
+ (function (AccessMode) {
11
+ AccessMode[AccessMode["public"] = 0] = "public";
12
+ AccessMode[AccessMode["protected"] = 1] = "protected";
13
+ AccessMode[AccessMode["private"] = 2] = "private";
14
+ })(AccessMode || (AccessMode = {}));
15
+ var IOSFeedbackVibration;
16
+ (function (IOSFeedbackVibration) {
17
+ IOSFeedbackVibration[IOSFeedbackVibration["Unknown"] = 0] = "Unknown";
18
+ IOSFeedbackVibration[IOSFeedbackVibration["SelectionChanged"] = 1] = "SelectionChanged";
19
+ IOSFeedbackVibration[IOSFeedbackVibration["NotificationError"] = 2] = "NotificationError";
20
+ IOSFeedbackVibration[IOSFeedbackVibration["NotificationSuccess"] = 3] = "NotificationSuccess";
21
+ IOSFeedbackVibration[IOSFeedbackVibration["NotificationWarning"] = 4] = "NotificationWarning";
22
+ IOSFeedbackVibration[IOSFeedbackVibration["Light"] = 5] = "Light";
23
+ IOSFeedbackVibration[IOSFeedbackVibration["Medium"] = 6] = "Medium";
24
+ IOSFeedbackVibration[IOSFeedbackVibration["Heavy"] = 7] = "Heavy";
25
+ IOSFeedbackVibration[IOSFeedbackVibration["Soft"] = 8] = "Soft";
26
+ IOSFeedbackVibration[IOSFeedbackVibration["Rigid"] = 9] = "Rigid";
27
+ })(IOSFeedbackVibration || (IOSFeedbackVibration = {}));
28
+ // region design settings
29
+ var SnapshotType;
30
+ (function (SnapshotType) {
31
+ SnapshotType["Background"] = "background";
32
+ SnapshotType["Settings"] = "settings";
33
+ SnapshotType["ColorScheme"] = "colorScheme";
34
+ SnapshotType["Cover"] = "cover";
35
+ SnapshotType["Tapp"] = "tapp";
36
+ })(SnapshotType || (SnapshotType = {}));
37
+ var DesignSettingsUpdateBackgroundType;
38
+ (function (DesignSettingsUpdateBackgroundType) {
39
+ DesignSettingsUpdateBackgroundType[DesignSettingsUpdateBackgroundType["None"] = 0] = "None";
40
+ DesignSettingsUpdateBackgroundType[DesignSettingsUpdateBackgroundType["Image"] = 1] = "Image";
41
+ DesignSettingsUpdateBackgroundType[DesignSettingsUpdateBackgroundType["Video"] = 2] = "Video";
42
+ DesignSettingsUpdateBackgroundType[DesignSettingsUpdateBackgroundType["Color"] = 3] = "Color";
43
+ })(DesignSettingsUpdateBackgroundType || (DesignSettingsUpdateBackgroundType = {}));
44
+ var DesignSettingsUpdateSeasonTypes;
45
+ (function (DesignSettingsUpdateSeasonTypes) {
46
+ DesignSettingsUpdateSeasonTypes[DesignSettingsUpdateSeasonTypes["None"] = 0] = "None";
47
+ DesignSettingsUpdateSeasonTypes[DesignSettingsUpdateSeasonTypes["Snowm"] = 1] = "Snowm";
48
+ DesignSettingsUpdateSeasonTypes[DesignSettingsUpdateSeasonTypes["Confetti"] = 2] = "Confetti";
49
+ DesignSettingsUpdateSeasonTypes[DesignSettingsUpdateSeasonTypes["Leaf"] = 3] = "Leaf";
50
+ DesignSettingsUpdateSeasonTypes[DesignSettingsUpdateSeasonTypes["Heart"] = 4] = "Heart";
51
+ DesignSettingsUpdateSeasonTypes[DesignSettingsUpdateSeasonTypes["Balloon"] = 5] = "Balloon";
52
+ DesignSettingsUpdateSeasonTypes[DesignSettingsUpdateSeasonTypes["Eastern"] = 6] = "Eastern";
53
+ DesignSettingsUpdateSeasonTypes[DesignSettingsUpdateSeasonTypes["Clover"] = 7] = "Clover";
54
+ DesignSettingsUpdateSeasonTypes[DesignSettingsUpdateSeasonTypes["Coins"] = 8] = "Coins";
55
+ })(DesignSettingsUpdateSeasonTypes || (DesignSettingsUpdateSeasonTypes = {}));
56
+ var DesignSettingsUpdateGalleryAnimationTypes;
57
+ (function (DesignSettingsUpdateGalleryAnimationTypes) {
58
+ DesignSettingsUpdateGalleryAnimationTypes[DesignSettingsUpdateGalleryAnimationTypes["Swipe"] = 0] = "Swipe";
59
+ DesignSettingsUpdateGalleryAnimationTypes[DesignSettingsUpdateGalleryAnimationTypes["Fade"] = 1] = "Fade";
60
+ DesignSettingsUpdateGalleryAnimationTypes[DesignSettingsUpdateGalleryAnimationTypes["Parallax"] = 2] = "Parallax";
61
+ DesignSettingsUpdateGalleryAnimationTypes[DesignSettingsUpdateGalleryAnimationTypes["KenBurns"] = 3] = "KenBurns";
62
+ })(DesignSettingsUpdateGalleryAnimationTypes || (DesignSettingsUpdateGalleryAnimationTypes = {}));
63
+ var DesignSettingsUpdateCoverTypes;
64
+ (function (DesignSettingsUpdateCoverTypes) {
65
+ DesignSettingsUpdateCoverTypes[DesignSettingsUpdateCoverTypes["Image"] = 0] = "Image";
66
+ DesignSettingsUpdateCoverTypes[DesignSettingsUpdateCoverTypes["Video"] = 1] = "Video";
67
+ DesignSettingsUpdateCoverTypes[DesignSettingsUpdateCoverTypes["Slideshow"] = 2] = "Slideshow";
68
+ DesignSettingsUpdateCoverTypes[DesignSettingsUpdateCoverTypes["Frame"] = 3] = "Frame";
69
+ DesignSettingsUpdateCoverTypes[DesignSettingsUpdateCoverTypes["None"] = 4] = "None";
70
+ })(DesignSettingsUpdateCoverTypes || (DesignSettingsUpdateCoverTypes = {}));
71
+ var DesignSettingsUpdateColorSchemeMode;
72
+ (function (DesignSettingsUpdateColorSchemeMode) {
73
+ DesignSettingsUpdateColorSchemeMode[DesignSettingsUpdateColorSchemeMode["Normal"] = 0] = "Normal";
74
+ DesignSettingsUpdateColorSchemeMode[DesignSettingsUpdateColorSchemeMode["Dark"] = 1] = "Dark";
75
+ DesignSettingsUpdateColorSchemeMode[DesignSettingsUpdateColorSchemeMode["Bright"] = 2] = "Bright";
76
+ })(DesignSettingsUpdateColorSchemeMode || (DesignSettingsUpdateColorSchemeMode = {}));
77
+ var DesignSettingsUpdateTappViewModes;
78
+ (function (DesignSettingsUpdateTappViewModes) {
79
+ DesignSettingsUpdateTappViewModes[DesignSettingsUpdateTappViewModes["Normal"] = 0] = "Normal";
80
+ DesignSettingsUpdateTappViewModes[DesignSettingsUpdateTappViewModes["Exclusive"] = 1] = "Exclusive";
81
+ DesignSettingsUpdateTappViewModes[DesignSettingsUpdateTappViewModes["Wide"] = 2] = "Wide";
82
+ DesignSettingsUpdateTappViewModes[DesignSettingsUpdateTappViewModes["Fullscreen"] = 3] = "Fullscreen";
83
+ DesignSettingsUpdateTappViewModes[DesignSettingsUpdateTappViewModes["FullscreenWithBackground"] = 4] = "FullscreenWithBackground";
84
+ })(DesignSettingsUpdateTappViewModes || (DesignSettingsUpdateTappViewModes = {}));
85
+ var LoginState;
86
+ (function (LoginState) {
87
+ LoginState[LoginState["LoginFailed"] = 2] = "LoginFailed";
88
+ LoginState[LoginState["AlreadyLoggedIn"] = 3] = "AlreadyLoggedIn";
89
+ })(LoginState || (LoginState = {}));
90
+ export let FloatingButtonPosition;
91
+ (function (FloatingButtonPosition) {
92
+ FloatingButtonPosition[FloatingButtonPosition["Right"] = 0] = "Right";
93
+ FloatingButtonPosition[FloatingButtonPosition["Center"] = 1] = "Center";
94
+ FloatingButtonPosition[FloatingButtonPosition["Left"] = 2] = "Left";
95
+ })(FloatingButtonPosition || (FloatingButtonPosition = {}));
96
+ export let SharingApp;
97
+ (function (SharingApp) {
98
+ SharingApp[SharingApp["Mail"] = 0] = "Mail";
99
+ SharingApp[SharingApp["WhatsApp"] = 1] = "WhatsApp";
100
+ SharingApp[SharingApp["Facebook"] = 2] = "Facebook";
101
+ SharingApp[SharingApp["FacebookMessenger"] = 3] = "FacebookMessenger";
102
+ SharingApp[SharingApp["GooglePlus"] = 4] = "GooglePlus";
103
+ SharingApp[SharingApp["Twitter"] = 5] = "Twitter";
104
+ })(SharingApp || (SharingApp = {}));
105
+ export let IconType;
106
+ (function (IconType) {
107
+ IconType[IconType["Font"] = 0] = "Font";
108
+ IconType[IconType["Base64"] = 1] = "Base64";
109
+ IconType[IconType["Url"] = 2] = "Url";
110
+ })(IconType || (IconType = {}));
111
+ export let Gender;
112
+ (function (Gender) {
113
+ Gender[Gender["Unknown"] = 0] = "Unknown";
114
+ Gender[Gender["male"] = 1] = "male";
115
+ Gender[Gender["female"] = 2] = "female";
116
+ Gender[Gender["diverse"] = 9] = "diverse";
117
+ })(Gender || (Gender = {}));
118
+ export let ColorMode;
119
+ (function (ColorMode) {
120
+ ColorMode[ColorMode["Classic"] = 0] = "Classic";
121
+ ColorMode[ColorMode["Dark"] = 1] = "Dark";
122
+ ColorMode[ColorMode["Light"] = 2] = "Light";
123
+ })(ColorMode || (ColorMode = {}));
124
+ export let Language;
125
+ (function (Language) {
126
+ Language["Unknown"] = "unknown";
127
+ Language["German"] = "de";
128
+ Language["English"] = "en";
129
+ Language["Dutch"] = "nl";
130
+ Language["French"] = "fr";
131
+ Language["Spanish"] = "es";
132
+ Language["Italian"] = "it";
133
+ Language["Portuguese"] = "pt";
134
+ Language["Turkish"] = "tr";
135
+ Language["Polish"] = "pl";
136
+ Language["Ukrainian"] = "uk";
137
+ })(Language || (Language = {}));
138
+ export let RuntimeEnviroment;
139
+ (function (RuntimeEnviroment) {
140
+ RuntimeEnviroment[RuntimeEnviroment["Unknown"] = 0] = "Unknown";
141
+ RuntimeEnviroment[RuntimeEnviroment["ChaynsDe"] = 1] = "ChaynsDe";
142
+ RuntimeEnviroment[RuntimeEnviroment["ChaynsWeb"] = 2] = "ChaynsWeb";
143
+ RuntimeEnviroment[RuntimeEnviroment["ChaynsRuntime"] = 3] = "ChaynsRuntime";
144
+ RuntimeEnviroment[RuntimeEnviroment["IntercomPlugin"] = 4] = "IntercomPlugin";
145
+ RuntimeEnviroment[RuntimeEnviroment["PagemakerPlugin"] = 5] = "PagemakerPlugin";
146
+ })(RuntimeEnviroment || (RuntimeEnviroment = {}));
147
+ export let DeviceOs;
148
+ (function (DeviceOs) {
149
+ DeviceOs["Unknown"] = "unknown";
150
+ DeviceOs["Android"] = "android";
151
+ DeviceOs["IOS"] = "ios";
152
+ DeviceOs["Windows"] = "windows";
153
+ DeviceOs["MacOs"] = "macos";
154
+ DeviceOs["Linux"] = "linux";
155
+ })(DeviceOs || (DeviceOs = {}));
156
+ export let AppName;
157
+ (function (AppName) {
158
+ AppName[AppName["Unknown"] = 0] = "Unknown";
159
+ AppName[AppName["David"] = 1] = "David";
160
+ AppName[AppName["Chayns"] = 2] = "Chayns";
161
+ AppName[AppName["Location"] = 3] = "Location";
162
+ AppName[AppName["Intercom"] = 4] = "Intercom";
163
+ AppName[AppName["ChaynsLauncher"] = 5] = "ChaynsLauncher";
164
+ })(AppName || (AppName = {}));
165
+ export let BrowserName;
166
+ (function (BrowserName) {
167
+ BrowserName["Unknown"] = "unknown";
168
+ BrowserName["Chrome"] = "chrome";
169
+ BrowserName["Safari"] = "safari";
170
+ BrowserName["Firefox"] = "firefox";
171
+ BrowserName["Edge"] = "edge";
172
+ })(BrowserName || (BrowserName = {}));
173
+ export let Environment;
174
+ (function (Environment) {
175
+ Environment[Environment["Development"] = 0] = "Development";
176
+ Environment[Environment["Qa"] = 1] = "Qa";
177
+ Environment[Environment["Staging"] = 2] = "Staging";
178
+ Environment[Environment["Production"] = 3] = "Production";
179
+ })(Environment || (Environment = {}));
180
+ export let Font;
181
+ (function (Font) {
182
+ Font[Font["Unknown"] = 0] = "Unknown";
183
+ Font[Font["Roboto"] = 1] = "Roboto";
184
+ Font[Font["OpenSans"] = 2] = "OpenSans";
185
+ Font[Font["Lato"] = 3] = "Lato";
186
+ Font[Font["SourceSansPro"] = 4] = "SourceSansPro";
187
+ Font[Font["Ubuntu"] = 5] = "Ubuntu";
188
+ Font[Font["Cabin"] = 6] = "Cabin";
189
+ Font[Font["Merriweather"] = 7] = "Merriweather";
190
+ Font[Font["NotoSerif"] = 8] = "NotoSerif";
191
+ Font[Font["PTSerif"] = 9] = "PTSerif";
192
+ Font[Font["DroidSerif"] = 10] = "DroidSerif";
193
+ Font[Font["Muli"] = 11] = "Muli";
194
+ Font[Font["Poppins"] = 12] = "Poppins";
195
+ Font[Font["RobotoCondensed"] = 13] = "RobotoCondensed";
196
+ Font[Font["Anton"] = 14] = "Anton";
197
+ Font[Font["ArchitectsDaughter"] = 15] = "ArchitectsDaughter";
198
+ Font[Font["DMSerifDisplay"] = 16] = "DMSerifDisplay";
199
+ Font[Font["Pacifico"] = 17] = "Pacifico";
200
+ Font[Font["PermanentMarker"] = 18] = "PermanentMarker";
201
+ Font[Font["Questrial"] = 19] = "Questrial";
202
+ Font[Font["RobotoSlab"] = 20] = "RobotoSlab";
203
+ Font[Font["ShadowsIntoLightTwo"] = 21] = "ShadowsIntoLightTwo";
204
+ Font[Font["WaitingForTheSunrise"] = 22] = "WaitingForTheSunrise";
205
+ Font[Font["RobotoMedium"] = 23] = "RobotoMedium";
206
+ Font[Font["TobitHeadline"] = 24] = "TobitHeadline";
207
+ Font[Font["RobotoBold"] = 25] = "RobotoBold";
208
+ Font[Font["RobotoRegular"] = 26] = "RobotoRegular";
209
+ Font[Font["Inter"] = 27] = "Inter";
210
+ })(Font || (Font = {}));
211
+ var selectType;
212
+ (function (selectType) {
213
+ selectType[selectType["DEFAULT"] = 0] = "DEFAULT";
214
+ selectType[selectType["ICON"] = 1] = "ICON";
215
+ })(selectType || (selectType = {}));
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ // @ts-nocheck
2
+
3
+ const invokeAppCall = call => {
4
+ var _window$webkit, _window$webkit$messag, _window$chaynsApp, _window$chaynsElectro;
5
+ call = JSON.stringify(call);
6
+ if ((_window$webkit = window.webkit) !== null && _window$webkit !== void 0 && (_window$webkit$messag = _window$webkit.messageHandlers) !== null && _window$webkit$messag !== void 0 && _window$webkit$messag.jsonCall) {
7
+ window.webkit.messageHandlers.jsonCall.postMessage(call);
8
+ } else if ((_window$chaynsApp = window.chaynsApp) !== null && _window$chaynsApp !== void 0 && _window$chaynsApp.jsonCall) {
9
+ window.chaynsApp.jsonCall(call);
10
+ } else if ((_window$chaynsElectro = window.chaynsElectron) !== null && _window$chaynsElectro !== void 0 && _window$chaynsElectro.jsonCall) {
11
+ window.chaynsElectron.jsonCall(call);
12
+ } else {
13
+ throw new Error('jsoncall interface not found');
14
+ }
15
+ };
16
+ export default invokeAppCall;
@@ -0,0 +1,62 @@
1
+ import { parseUserAgent } from 'detect-browser';
2
+ import { AppName, ScreenSize } from '../types/IChaynsReact';
3
+ const getDeviceInfo = (userAgent, acceptHeader) => {
4
+ var _match$groups, _match$groups2, _parsedUA$version$spl, _parsedUA$version;
5
+ const parsedUA = parseUserAgent(userAgent);
6
+ let appName = AppName.Unknown;
7
+ const match = /(?:my)?chayns\/(?<version>\d+).*(?<siteId>\d{5}-\d{5})/i.exec(userAgent);
8
+ if ((match === null || match === void 0 ? void 0 : (_match$groups = match.groups) === null || _match$groups === void 0 ? void 0 : _match$groups.siteId) === '60021-08989') {
9
+ appName = AppName.Chayns;
10
+ } else if ((match === null || match === void 0 ? void 0 : (_match$groups2 = match.groups) === null || _match$groups2 === void 0 ? void 0 : _match$groups2.siteId) === '77892-10814') {
11
+ appName = AppName.David;
12
+ } else if (match) {
13
+ appName = AppName.Location;
14
+ } else if (/dface|h96pp|h96max|jabiru|chaynsterminal|wayter|odroidn2p/i.test(navigator.userAgent)) {
15
+ appName = AppName.ChaynsLauncher;
16
+ }
17
+ const result = {};
18
+ result.browser = {
19
+ name: parsedUA === null || parsedUA === void 0 ? void 0 : parsedUA.name,
20
+ version: parsedUA === null || parsedUA === void 0 ? void 0 : parsedUA.version,
21
+ majorVersion: Number.parseInt((_parsedUA$version$spl = parsedUA === null || parsedUA === void 0 ? void 0 : (_parsedUA$version = parsedUA.version) === null || _parsedUA$version === void 0 ? void 0 : _parsedUA$version.split('.')[0]) !== null && _parsedUA$version$spl !== void 0 ? _parsedUA$version$spl : '0', 10) || 0,
22
+ isWebPSupported: acceptHeader.includes('image/webp')
23
+ };
24
+ result.app = {
25
+ name: appName,
26
+ version: match !== null && match !== void 0 && match.groups ? Number.parseInt(match.groups.version, 10) : NaN
27
+ };
28
+ result.imei = undefined; // TODO
29
+ result.accessToken = undefined; // TODO
30
+ result.os = parsedUA === null || parsedUA === void 0 ? void 0 : parsedUA.os;
31
+ if (typeof window !== 'undefined') {
32
+ result.screenSize = getScreenSize(window.innerWidth);
33
+ } else {
34
+ // estimate size over user agent, very inaccurate, could be improved by setting a cookie with the screensize
35
+ const screenSizeByUA = /mobi/i.test(userAgent) ? ScreenSize.SM : ScreenSize.XL;
36
+ result.screenSize = appName !== AppName.Unknown ? ScreenSize.XS : screenSizeByUA;
37
+ }
38
+ return result;
39
+ };
40
+
41
+ // Infos that are only available on client or iframe side
42
+ export const getClientDeviceInfo = () => {
43
+ return {
44
+ isTouch: navigator.maxTouchPoints > 0 && window.matchMedia('(pointer: coarse)')
45
+ };
46
+ };
47
+ export const getScreenSize = width => {
48
+ let value;
49
+ if (width > 1200) {
50
+ value = ScreenSize.XL;
51
+ } else if (width > 993) {
52
+ value = ScreenSize.LG;
53
+ } else if (width > 769) {
54
+ value = ScreenSize.MD;
55
+ } else if (width > 556) {
56
+ value = ScreenSize.SM;
57
+ } else {
58
+ value = ScreenSize.XS;
59
+ }
60
+ return value;
61
+ };
62
+ export default getDeviceInfo;
@@ -0,0 +1,32 @@
1
+ import throttle from 'lodash.throttle';
2
+ export const setTappHeight = setHeight => {
3
+ document.documentElement.style.overflow = 'hidden';
4
+ void setHeight(document.body.offsetHeight);
5
+ let oldHeight = 0;
6
+ const handleResize = () => {
7
+ const {
8
+ offsetHeight
9
+ } = document.body;
10
+ if (oldHeight !== offsetHeight) {
11
+ void setHeight(offsetHeight);
12
+ oldHeight = offsetHeight;
13
+ }
14
+ };
15
+ if (window.ResizeObserver) {
16
+ const interval = setInterval(handleResize, 200);
17
+ let firstResize = true;
18
+ const resizeObserver = new window.ResizeObserver(throttle(() => {
19
+ handleResize();
20
+ if (!firstResize) {
21
+ clearInterval(interval);
22
+ }
23
+ firstResize = false;
24
+ }, 16));
25
+ resizeObserver.observe(document.body);
26
+ setTimeout(() => {
27
+ clearInterval(interval);
28
+ }, 2000);
29
+ } else {
30
+ setInterval(handleResize, 200);
31
+ }
32
+ };
@@ -0,0 +1,26 @@
1
+ export default async function postIframeForm(url, value, fieldName, frameId) {
2
+ // ToDo: Maybe remove this
3
+ await new Promise(resolve => {
4
+ setTimeout(resolve, 10);
5
+ });
6
+ if (!value || !document.querySelector(`#${frameId}`)) {
7
+ return false;
8
+ }
9
+ const currForm = document.getElementById('accessTokenForm');
10
+ if (currForm !== null && currForm !== void 0 && currForm.parentElement) {
11
+ currForm.parentElement.removeChild(currForm);
12
+ }
13
+ const form = document.createElement('form');
14
+ form.setAttribute('id', 'accessTokenForm');
15
+ form.setAttribute('method', 'post');
16
+ form.setAttribute('action', url);
17
+ form.setAttribute('target', frameId);
18
+ const hiddenField = document.createElement('input');
19
+ hiddenField.setAttribute('type', 'hidden');
20
+ hiddenField.setAttribute('name', fieldName);
21
+ hiddenField.setAttribute('value', value);
22
+ form.appendChild(hiddenField);
23
+ document.body.appendChild(form);
24
+ form.submit();
25
+ return true;
26
+ }