@ably/ui 8.7.0-dev.7021bee → 8.7.0-dev.7072b07

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 (160) hide show
  1. package/README.md +15 -4
  2. package/core/.DS_Store +0 -0
  3. package/core/Code/component.css +2 -0
  4. package/core/Code/component.js +739 -1
  5. package/core/Code.jsx +557 -410
  6. package/core/CompanyAutocomplete/component.css +2 -0
  7. package/core/CompanyAutocomplete/component.js +1161 -1
  8. package/core/ConnectStateWrapper/component.js +22 -1
  9. package/core/ConnectStateWrapper.jsx +29 -15
  10. package/core/ContactFooter/component.css +2 -0
  11. package/core/ContactFooter/component.js +211 -1
  12. package/core/ContactFooter.jsx +221 -144
  13. package/core/CookieMessage/component.css +2 -0
  14. package/core/CookieMessage/component.js +82 -1
  15. package/core/CookieMessage.jsx +62 -45
  16. package/core/CustomerLogos/component.js +22 -1
  17. package/core/CustomerLogos.jsx +16 -7
  18. package/core/DropdownMenu/component.js +22 -1
  19. package/core/DropdownMenu.jsx +26 -13
  20. package/core/FeatureFooter/component.css +2 -0
  21. package/core/FeatureFooter/component.js +211 -1
  22. package/core/FeaturedLink/component.css +2 -0
  23. package/core/FeaturedLink/component.js +82 -1
  24. package/core/FeaturedLink.jsx +25 -12
  25. package/core/Flash/component.css +2 -0
  26. package/core/Flash/component.js +82 -1
  27. package/core/Flash.jsx +132 -104
  28. package/core/Footer/component.css +23 -1
  29. package/core/Footer/component.js +82 -1
  30. package/core/Footer.jsx +307 -203
  31. package/core/Icon/component.js +22 -1
  32. package/core/Icon.jsx +16 -7
  33. package/core/Loader/component.js +22 -1
  34. package/core/Loader.jsx +16 -7
  35. package/core/Logo/component.js +22 -1
  36. package/core/Logo.jsx +16 -7
  37. package/core/Meganav/component.css +3 -3
  38. package/core/Meganav/component.js +992 -1
  39. package/core/Meganav/component.json +2 -2
  40. package/core/Meganav.jsx +2702 -2361
  41. package/core/MeganavBlogPostsList/component.js +1159 -1
  42. package/core/MeganavBlogPostsList.jsx +34 -17
  43. package/core/MeganavContentCompany/component.js +22 -1
  44. package/core/MeganavContentCompany.jsx +293 -216
  45. package/core/MeganavContentDevelopers/component.js +22 -1
  46. package/core/MeganavContentDevelopers.jsx +68 -30
  47. package/core/MeganavContentPlatform/component.js +1 -1
  48. package/core/MeganavContentPlatform.jsx +26 -50
  49. package/core/MeganavContentProducts/component.js +22 -0
  50. package/core/MeganavContentProducts.jsx +350 -0
  51. package/core/MeganavContentUseCases/component.js +22 -1
  52. package/core/MeganavContentUseCases.jsx +77 -56
  53. package/core/MeganavControl/component.js +241 -1
  54. package/core/MeganavControl.jsx +25 -12
  55. package/core/MeganavControlMobileDropdown/component.js +180 -1
  56. package/core/MeganavControlMobileDropdown.jsx +26 -13
  57. package/core/MeganavControlMobilePanelClose/component.js +142 -1
  58. package/core/MeganavControlMobilePanelClose.jsx +25 -12
  59. package/core/MeganavControlMobilePanelOpen/component.js +170 -1
  60. package/core/MeganavControlMobilePanelOpen.jsx +25 -12
  61. package/core/MeganavItemsDesktop/component.js +22 -1
  62. package/core/MeganavItemsDesktop.jsx +42 -22
  63. package/core/MeganavItemsMobile/component.js +22 -1
  64. package/core/MeganavItemsMobile.jsx +104 -60
  65. package/core/MeganavItemsSignedIn/component.js +22 -1
  66. package/core/MeganavItemsSignedIn.jsx +93 -52
  67. package/core/MeganavSearch/component.js +22 -1
  68. package/core/MeganavSearch.jsx +64 -35
  69. package/core/MeganavSearchAutocomplete/component.js +295 -1
  70. package/core/MeganavSearchAutocomplete.jsx +10 -4
  71. package/core/MeganavSearchPanel/component.js +22 -1
  72. package/core/MeganavSearchPanel.jsx +53 -28
  73. package/core/MeganavSearchSuggestions/component.js +258 -1
  74. package/core/MeganavSearchSuggestions.jsx +34 -17
  75. package/core/Notice/component.css +2 -0
  76. package/core/Notice/component.js +872 -1
  77. package/core/Notice.jsx +380 -310
  78. package/core/Showcase/component.css +2 -0
  79. package/core/Showcase/component.js +343 -1
  80. package/core/Showcase.jsx +4 -1
  81. package/core/SignOutLink/component.js +22 -1
  82. package/core/SignOutLink.jsx +16 -7
  83. package/core/Slider/component.css +2 -0
  84. package/core/Slider/component.js +255 -1
  85. package/core/Slider.jsx +208 -156
  86. package/core/Uptime/component.css +2 -0
  87. package/core/Uptime/component.js +82 -1
  88. package/core/Uptime.jsx +46 -23
  89. package/core/images/best-support-2023.svg +1 -0
  90. package/core/images/fastest-implementation-2023.svg +1 -0
  91. package/core/images/high-performer-2022.png +0 -0
  92. package/core/images/high-performer-2023.svg +1 -0
  93. package/core/images/highest-user-adoption-2022.png +0 -0
  94. package/core/images/highest-user-adoption-2023.svg +1 -0
  95. package/core/images/users-love-us-2022.png +0 -0
  96. package/core/scripts.js +1465 -1
  97. package/core/sprites.svg +99 -0
  98. package/core/styles.css +3 -7
  99. package/package.json +5 -3
  100. package/reset/scripts.js +1 -1
  101. package/reset/styles.css +1 -11
  102. package/src/.DS_Store +0 -0
  103. package/src/core/.DS_Store +0 -0
  104. package/src/core/Flash/component.jsx +0 -2
  105. package/src/core/Footer/component.css +21 -1
  106. package/src/core/Footer/component.html.erb +120 -63
  107. package/src/core/Footer/component.jsx +128 -61
  108. package/src/core/Meganav/component.css +1 -1
  109. package/src/core/Meganav/component.json +2 -2
  110. package/src/core/Meganav/component.jsx +2 -2
  111. package/src/core/Meganav/component.rb +6 -6
  112. package/src/core/MeganavContentCompany/component.html.erb +9 -0
  113. package/src/core/MeganavContentCompany/component.jsx +9 -0
  114. package/src/core/MeganavContentDevelopers/component.html.erb +30 -14
  115. package/src/core/MeganavContentDevelopers/component.jsx +32 -13
  116. package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.html.erb +15 -33
  117. package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.jsx +18 -39
  118. package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.rb +1 -1
  119. package/src/core/MeganavContentUseCases/component.html.erb +42 -38
  120. package/src/core/MeganavContentUseCases/component.jsx +41 -38
  121. package/src/core/MeganavItemsDesktop/component.jsx +1 -1
  122. package/src/core/MeganavItemsDesktop/component.rb +1 -1
  123. package/src/core/core.rb +12 -4
  124. package/src/core/icons/icon-display-asset-tracking-col.svg +18 -0
  125. package/src/core/icons/icon-display-chat-col.svg +4 -0
  126. package/src/core/icons/icon-display-data-broadcast-col.svg +26 -0
  127. package/src/core/icons/icon-display-data-synchronization-col.svg +14 -0
  128. package/src/core/icons/icon-display-events-col.svg +13 -0
  129. package/src/core/icons/icon-display-examples-col.svg +11 -0
  130. package/src/core/icons/icon-display-kafka-at-the-edge-col.svg +8 -0
  131. package/src/core/icons/icon-display-push-notifications-col.svg +6 -0
  132. package/src/core/icons/icon-gui-check-circled-fill-black.svg +4 -0
  133. package/src/core/icons/icon-social-x.svg +3 -0
  134. package/src/core/icons/icon-tech-apachekafka.svg +3 -0
  135. package/src/core/images/best-support-2023.svg +1 -0
  136. package/src/core/images/fastest-implementation-2023.svg +1 -0
  137. package/src/core/images/high-performer-2022.png +0 -0
  138. package/src/core/images/high-performer-2023.svg +1 -0
  139. package/src/core/images/highest-user-adoption-2022.png +0 -0
  140. package/src/core/images/highest-user-adoption-2023.svg +1 -0
  141. package/src/core/images/users-love-us-2022.png +0 -0
  142. package/src/core/styles/text.css +1 -1
  143. package/src/core/utils/syntax-highlighter-registry.js +2 -0
  144. package/src/core/utils/syntax-highlighter.js +5 -0
  145. package/tailwind.config.js +1 -0
  146. package/core/Meganav/component.js.LICENSE.txt +0 -7
  147. package/core/MeganavContentWhyAbly/component.js +0 -6
  148. package/core/MeganavContentWhyAbly.jsx +0 -6
  149. package/core/MeganavSearchAutocomplete/component.js.LICENSE.txt +0 -7
  150. package/core/Notice/component.js.LICENSE.txt +0 -9
  151. package/core/fonts/.DS_Store +0 -0
  152. package/core/images/.DS_Store +0 -0
  153. package/core/scripts.js.LICENSE.txt +0 -32
  154. package/preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/log/.keep +0 -0
  155. package/preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/tmp/.keep +0 -0
  156. package/preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/tmp/pids/.keep +0 -0
  157. package/src/core/fonts/.DS_Store +0 -0
  158. package/src/core/images/.DS_Store +0 -0
  159. package/src/reset/.DS_Store +0 -0
  160. /package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.js +0 -0
@@ -7,20 +7,48 @@
7
7
  var a = typeof exports === 'object' ? factory(require("react"), require("prop-types")) : factory(root[undefined], root[undefined]);
8
8
  for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9
9
  }
10
- })(this, function(__WEBPACK_EXTERNAL_MODULE__9281__, __WEBPACK_EXTERNAL_MODULE__3474__) {
10
+ })(this, (__WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_prop_types__) => {
11
11
  return /******/ (() => { // webpackBootstrap
12
- /******/ "use strict";
13
12
  /******/ var __webpack_modules__ = ({
14
13
 
15
- /***/ 9008:
14
+ /***/ "./src/core/ContactFooter/component.js":
15
+ /*!*********************************************!*\
16
+ !*** ./src/core/ContactFooter/component.js ***!
17
+ \*********************************************/
16
18
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
17
19
 
20
+ "use strict";
21
+ __webpack_require__.r(__webpack_exports__);
18
22
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
19
23
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
20
24
  /* harmony export */ });
21
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9281);
25
+ /* harmony import */ var _component_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./component.css */ "./src/core/ContactFooter/component.css");
26
+ /* harmony import */ var _component_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_component_css__WEBPACK_IMPORTED_MODULE_0__);
27
+ /* harmony import */ var _hubspot_chat_toggle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../hubspot-chat-toggle */ "./src/core/hubspot-chat-toggle.js");
28
+
29
+
30
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function () {
31
+ return (0,_hubspot_chat_toggle__WEBPACK_IMPORTED_MODULE_1__["default"])({
32
+ dataId: "contact-footer"
33
+ });
34
+ });
35
+
36
+ /***/ }),
37
+
38
+ /***/ "./src/core/Icon/component.jsx":
39
+ /*!*************************************!*\
40
+ !*** ./src/core/Icon/component.jsx ***!
41
+ \*************************************/
42
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
43
+
44
+ "use strict";
45
+ __webpack_require__.r(__webpack_exports__);
46
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
47
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
48
+ /* harmony export */ });
49
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
22
50
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
23
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3474);
51
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
24
52
  /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
25
53
  var _excluded = ["name", "size", "color", "additionalCSS"];
26
54
 
@@ -64,17 +92,161 @@ Icon.propTypes = {
64
92
 
65
93
  /***/ }),
66
94
 
67
- /***/ 3474:
95
+ /***/ "./src/core/dom-query.js":
96
+ /*!*******************************!*\
97
+ !*** ./src/core/dom-query.js ***!
98
+ \*******************************/
99
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
100
+
101
+ "use strict";
102
+ __webpack_require__.r(__webpack_exports__);
103
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
104
+ /* harmony export */ "queryId": () => (/* binding */ queryId),
105
+ /* harmony export */ "queryIdAll": () => (/* binding */ queryIdAll)
106
+ /* harmony export */ });
107
+ var queryId = function queryId(val) {
108
+ var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
109
+ return root.querySelector("[data-id=".concat(val, "]"));
110
+ };
111
+ var queryIdAll = function queryIdAll(val) {
112
+ var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
113
+ return root.querySelectorAll("[data-id=".concat(val, "]"));
114
+ };
115
+
116
+ /***/ }),
117
+
118
+ /***/ "./src/core/hubspot-chat-toggle.js":
119
+ /*!*****************************************!*\
120
+ !*** ./src/core/hubspot-chat-toggle.js ***!
121
+ \*****************************************/
122
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
123
+
124
+ "use strict";
125
+ __webpack_require__.r(__webpack_exports__);
126
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
127
+ /* harmony export */ "default": () => (/* binding */ toggleChatWidget)
128
+ /* harmony export */ });
129
+ /* harmony import */ var _dom_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-query */ "./src/core/dom-query.js");
130
+
131
+ /*
132
+ A method to enable/disable a CTA that
133
+ is used to open the HubSpot chat widget
134
+
135
+ If the Chat widget is unavailable this script
136
+ will apply a disabled property and change
137
+ the text on the button, to warn the user.
138
+
139
+ Params:
140
+ - dataId the parent container data-id
141
+
142
+ */
143
+
144
+ function enableBtn(el, text) {
145
+ el.disabled = false;
146
+ el.innerText = text;
147
+ }
148
+
149
+ function disableBtn(el, text) {
150
+ el.disabled = true;
151
+ el.innerText = text;
152
+ }
153
+
154
+ var WAIT_BETWEEN_RETRIES_MS = 100;
155
+ var MAX_RETRY_COUNT = 30;
156
+ function toggleChatWidget() {
157
+ var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
158
+ var dataId = params.dataId;
159
+ var container = (0,_dom_query__WEBPACK_IMPORTED_MODULE_0__.queryId)(dataId);
160
+ var chatButton = (0,_dom_query__WEBPACK_IMPORTED_MODULE_0__.queryId)("open-chat-widget", container);
161
+ var textEnabled = chatButton.dataset.enabledLabel;
162
+ var textDisabled = chatButton.dataset.disabledLabel;
163
+ if (!dataId || !container) return;
164
+ var trigger = (0,_dom_query__WEBPACK_IMPORTED_MODULE_0__.queryId)("open-chat-widget", container);
165
+ var clickHandler;
166
+
167
+ var waitForScript = function waitForScript(delay) {
168
+ var _window, _window$HubSpotConver;
169
+
170
+ var widget = (_window = window) === null || _window === void 0 ? void 0 : (_window$HubSpotConver = _window.HubSpotConversations) === null || _window$HubSpotConver === void 0 ? void 0 : _window$HubSpotConver.widget; // If the chat is set to be hidden out of hours this will return null
171
+
172
+ var iframe = document.querySelector("#hubspot-messages-iframe-container");
173
+
174
+ clickHandler = function clickHandler(e) {
175
+ e.preventDefault();
176
+ widget.open();
177
+ };
178
+
179
+ if (widget && iframe) {
180
+ trigger.addEventListener("click", clickHandler);
181
+ enableBtn(trigger, textEnabled);
182
+ } else if (--MAX_RETRY_COUNT) {
183
+ setTimeout(function () {
184
+ return waitForScript(WAIT_BETWEEN_RETRIES_MS);
185
+ }, delay);
186
+ }
187
+ };
188
+
189
+ disableBtn(trigger, textDisabled);
190
+ waitForScript(0);
191
+ return function () {
192
+ disableBtn(trigger, textDisabled);
193
+ trigger.removeEventListener("click", clickHandler);
194
+ };
195
+ }
196
+
197
+ /***/ }),
198
+
199
+ /***/ "./src/core/url-base.js":
200
+ /*!******************************!*\
201
+ !*** ./src/core/url-base.js ***!
202
+ \******************************/
203
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
204
+
205
+ "use strict";
206
+ __webpack_require__.r(__webpack_exports__);
207
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
208
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
209
+ /* harmony export */ });
210
+ var DEFAULT_URL_BASE = "";
211
+
212
+ var absUrl = function absUrl(path) {
213
+ var urlBase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_URL_BASE;
214
+ return "".concat(urlBase).concat(path);
215
+ };
216
+
217
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (absUrl);
218
+
219
+ /***/ }),
220
+
221
+ /***/ "./src/core/ContactFooter/component.css":
222
+ /*!**********************************************!*\
223
+ !*** ./src/core/ContactFooter/component.css ***!
224
+ \**********************************************/
225
+ /***/ (() => {
226
+
227
+
228
+
229
+ /***/ }),
230
+
231
+ /***/ "prop-types":
232
+ /*!*******************************************************************!*\
233
+ !*** external {"commonjs":"prop-types","commonjs2":"prop-types"} ***!
234
+ \*******************************************************************/
68
235
  /***/ ((module) => {
69
236
 
70
- module.exports = __WEBPACK_EXTERNAL_MODULE__3474__;
237
+ "use strict";
238
+ module.exports = __WEBPACK_EXTERNAL_MODULE_prop_types__;
71
239
 
72
240
  /***/ }),
73
241
 
74
- /***/ 9281:
242
+ /***/ "react":
243
+ /*!*********************************************************!*\
244
+ !*** external {"commonjs":"react","commonjs2":"react"} ***!
245
+ \*********************************************************/
75
246
  /***/ ((module) => {
76
247
 
77
- module.exports = __WEBPACK_EXTERNAL_MODULE__9281__;
248
+ "use strict";
249
+ module.exports = __WEBPACK_EXTERNAL_MODULE_react__;
78
250
 
79
251
  /***/ })
80
252
 
@@ -147,118 +319,23 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__9281__;
147
319
  /******/
148
320
  /************************************************************************/
149
321
  var __webpack_exports__ = {};
150
- // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
322
+ // This entry need to be wrapped in an IIFE because it need to be in strict mode.
151
323
  (() => {
152
- // ESM COMPAT FLAG
324
+ "use strict";
325
+ /*!**********************************************!*\
326
+ !*** ./src/core/ContactFooter/component.jsx ***!
327
+ \**********************************************/
153
328
  __webpack_require__.r(__webpack_exports__);
154
-
155
- // EXPORTS
156
- __webpack_require__.d(__webpack_exports__, {
157
- "default": () => (/* binding */ ContactFooter)
158
- });
159
-
160
- // EXTERNAL MODULE: external {"commonjs":"react","commonjs2":"react"}
161
- var external_commonjs_react_commonjs2_react_ = __webpack_require__(9281);
162
- var external_commonjs_react_commonjs2_react_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_react_commonjs2_react_);
163
- // EXTERNAL MODULE: external {"commonjs":"prop-types","commonjs2":"prop-types"}
164
- var external_commonjs_prop_types_commonjs2_prop_types_ = __webpack_require__(3474);
165
- var external_commonjs_prop_types_commonjs2_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_prop_types_commonjs2_prop_types_);
166
- // EXTERNAL MODULE: ./src/core/Icon/component.jsx
167
- var component = __webpack_require__(9008);
168
- ;// CONCATENATED MODULE: ./src/core/url-base.js
169
- var DEFAULT_URL_BASE = "";
170
-
171
- var absUrl = function absUrl(path) {
172
- var urlBase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_URL_BASE;
173
- return "".concat(urlBase).concat(path);
174
- };
175
-
176
- /* harmony default export */ const url_base = (absUrl);
177
- ;// CONCATENATED MODULE: ./src/core/dom-query.js
178
- var queryId = function queryId(val) {
179
- var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
180
- return root.querySelector("[data-id=".concat(val, "]"));
181
- };
182
- var queryIdAll = function queryIdAll(val) {
183
- var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
184
- return root.querySelectorAll("[data-id=".concat(val, "]"));
185
- };
186
- ;// CONCATENATED MODULE: ./src/core/hubspot-chat-toggle.js
187
-
188
- /*
189
- A method to enable/disable a CTA that
190
- is used to open the HubSpot chat widget
191
-
192
- If the Chat widget is unavailable this script
193
- will apply a disabled property and change
194
- the text on the button, to warn the user.
195
-
196
- Params:
197
- - dataId the parent container data-id
198
-
199
- */
200
-
201
- function enableBtn(el, text) {
202
- el.disabled = false;
203
- el.innerText = text;
204
- }
205
-
206
- function disableBtn(el, text) {
207
- el.disabled = true;
208
- el.innerText = text;
209
- }
210
-
211
- var WAIT_BETWEEN_RETRIES_MS = 100;
212
- var MAX_RETRY_COUNT = 30;
213
- function toggleChatWidget() {
214
- var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
215
- var dataId = params.dataId;
216
- var container = queryId(dataId);
217
- var chatButton = queryId("open-chat-widget", container);
218
- var textEnabled = chatButton.dataset.enabledLabel;
219
- var textDisabled = chatButton.dataset.disabledLabel;
220
- if (!dataId || !container) return;
221
- var trigger = queryId("open-chat-widget", container);
222
- var clickHandler;
223
-
224
- var waitForScript = function waitForScript(delay) {
225
- var _window, _window$HubSpotConver;
226
-
227
- var widget = (_window = window) === null || _window === void 0 ? void 0 : (_window$HubSpotConver = _window.HubSpotConversations) === null || _window$HubSpotConver === void 0 ? void 0 : _window$HubSpotConver.widget; // If the chat is set to be hidden out of hours this will return null
228
-
229
- var iframe = document.querySelector("#hubspot-messages-iframe-container");
230
-
231
- clickHandler = function clickHandler(e) {
232
- e.preventDefault();
233
- widget.open();
234
- };
235
-
236
- if (widget && iframe) {
237
- trigger.addEventListener("click", clickHandler);
238
- enableBtn(trigger, textEnabled);
239
- } else if (--MAX_RETRY_COUNT) {
240
- setTimeout(function () {
241
- return waitForScript(WAIT_BETWEEN_RETRIES_MS);
242
- }, delay);
243
- }
244
- };
245
-
246
- disableBtn(trigger, textDisabled);
247
- waitForScript(0);
248
- return function () {
249
- disableBtn(trigger, textDisabled);
250
- trigger.removeEventListener("click", clickHandler);
251
- };
252
- }
253
- ;// CONCATENATED MODULE: ./src/core/ContactFooter/component.js
254
-
255
-
256
- /* harmony default export */ const ContactFooter_component = (function () {
257
- return toggleChatWidget({
258
- dataId: "contact-footer"
259
- });
260
- });
261
- ;// CONCATENATED MODULE: ./src/core/ContactFooter/component.jsx
329
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
330
+ /* harmony export */ "default": () => (/* binding */ ContactFooter)
331
+ /* harmony export */ });
332
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
333
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
334
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
335
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
336
+ /* harmony import */ var _Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Icon/component.jsx */ "./src/core/Icon/component.jsx");
337
+ /* harmony import */ var _url_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../url-base */ "./src/core/url-base.js");
338
+ /* harmony import */ var _component_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./component.js */ "./src/core/ContactFooter/component.js");
262
339
 
263
340
 
264
341
 
@@ -266,73 +343,73 @@ function toggleChatWidget() {
266
343
 
267
344
  function ContactFooter(_ref) {
268
345
  var urlBase = _ref.urlBase;
269
- (0,external_commonjs_react_commonjs2_react_.useEffect)(function () {
270
- return ContactFooter_component();
346
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
347
+ return (0,_component_js__WEBPACK_IMPORTED_MODULE_4__["default"])();
271
348
  }, []);
272
349
 
273
350
  var absUrl = function absUrl(path) {
274
- return url_base(path, urlBase);
351
+ return (0,_url_base__WEBPACK_IMPORTED_MODULE_3__["default"])(path, urlBase);
275
352
  };
276
353
 
277
- return /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
354
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
278
355
  className: "ui-contact-footer font-sans antialiased",
279
356
  "data-id": "contact-footer"
280
- }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
357
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
281
358
  className: "w-full bp-lg max-w-screen-xl mx-auto py-64 grid grid-cols-1 md:grid-cols-3 ui-grid-gap ui-grid-px"
282
- }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
359
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
283
360
  className: "ui-contact-footer-box"
284
- }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement(component.default, {
361
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__["default"], {
285
362
  name: "icon-display-live-chat",
286
363
  size: "3rem",
287
364
  additionalCSS: "block mb-16"
288
- }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", null, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
365
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
289
366
  className: "text-h3 mb-24"
290
- }, "Live Chat"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
367
+ }, "Live Chat"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
291
368
  className: "text-p1 font-light"
292
- }, "Reach out team of experts over chat powered by Ably.")), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("button", {
369
+ }, "Reach out team of experts over chat powered by Ably.")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
293
370
  type: "button",
294
371
  className: "ui-btn-secondary self-start mt-16",
295
372
  disabled: true,
296
373
  "data-id": "open-chat-widget",
297
374
  "data-enabled-label": "Start a live chat",
298
375
  "data-disabled-label": "Live chat unavailable"
299
- }, "Live chat unavailable")), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
376
+ }, "Live chat unavailable")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
300
377
  className: "ui-contact-footer-box"
301
- }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement(component.default, {
378
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__["default"], {
302
379
  name: "icon-display-call-mobile",
303
380
  size: "3rem",
304
381
  additionalCSS: "block mb-16"
305
- }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
382
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
306
383
  className: "flex-grow"
307
- }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
384
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
308
385
  className: "text-h3 mb-24"
309
- }, "Call us"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
386
+ }, "Call us"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
310
387
  className: "text-p1 font-light"
311
- }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("span", {
388
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
312
389
  className: "block"
313
- }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("strong", {
390
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("strong", {
314
391
  className: "text-p1 font-medium"
315
- }, "+1 877 434 5287"), " (USA, toll free)"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("span", {
392
+ }, "+1 877 434 5287"), " (USA, toll free)"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
316
393
  className: "block"
317
- }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("strong", {
394
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("strong", {
318
395
  className: "text-p1 font-medium"
319
- }, "+44 20 3318 4689"), " (UK)")))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
396
+ }, "+44 20 3318 4689"), " (UK)")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
320
397
  className: "ui-contact-footer-box"
321
- }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement(component.default, {
398
+ }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__["default"], {
322
399
  name: "icon-display-tech-account-comms",
323
400
  size: "3rem",
324
401
  additionalCSS: "block mb-16"
325
- }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", null, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
402
+ }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
326
403
  className: "text-h3 mb-24"
327
- }, "Technical and account support"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
404
+ }, "Technical and account support"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
328
405
  className: "text-p1 font-light"
329
- }, "We're standing by to help with any questions or code.")), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("a", {
406
+ }, "We're standing by to help with any questions or code.")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
330
407
  className: "ui-btn-secondary self-start p-btn mt-16",
331
408
  href: absUrl("/support")
332
409
  }, "Get support now"))));
333
410
  }
334
411
  ContactFooter.propTypes = {
335
- urlBase: (external_commonjs_prop_types_commonjs2_prop_types_default()).string
412
+ urlBase: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
336
413
  };
337
414
  })();
338
415
 
@@ -12,3 +12,5 @@
12
12
  }
13
13
  }
14
14
 
15
+
16
+ /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS9Db29raWVNZXNzYWdlL2NvbXBvbmVudC5jc3MiLCJtYXBwaW5ncyI6IkFBQUE7RUFDRTtJQUNFLG9DQUFvQztJQUNwQyxtQ0FBbUM7SUFDbkMsOENBQThDO0lBQzlDLHVCQUF1QjtJQUN2QixlQUFlO0lBQ2YsdUNBQXVDO0lBQ3ZDLHVDQUF1QztJQUN2QyxvREFBb0Q7SUFDcEQseURBQXlEO0VBQzNEO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS8uL3NyYy9jb3JlL0Nvb2tpZU1lc3NhZ2UvY29tcG9uZW50LmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAbGF5ZXIgY29tcG9uZW50cyB7XG4gIC51aS1jb29raWUtbWVzc2FnZSB7XG4gICAgQGFwcGx5IHJvdW5kZWQtbGcgYmctd2hpdGUgZm9udC1zYW5zO1xuICAgIEBhcHBseSBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyO1xuICAgIEBhcHBseSBvcGFjaXR5LTEwMCB6LTUwIGJvdHRvbS0wIGZpeGVkIHNtOmZsZXg7XG4gICAgQGFwcGx5IHAtMTYgbWItMTYgbWwtMTY7XG4gICAgbWF4LXdpZHRoOiA3MHZ3O1xuICAgIGJveC1zaGFkb3c6IDBweCAyNHB4IDMycHggMHB4ICMwMDAwMDAwZDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1taWQtZ3JleSk7XG4gICAgYm9yZGVyLWxlZnQ6IDAuNXJlbSBzb2xpZCB2YXIoLS1jb2xvci1lbGVjdHJpYy1jeWFuKTtcbiAgICB0cmFuc2l0aW9uOiBib3R0b20gMjUwbXMgZWFzZS1vdXQsIG9wYWNpdHkgMTUwbXMgZWFzZS1vdXQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/
@@ -1 +1,82 @@
1
- !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.AblyUi=o():(e.AblyUi=e.AblyUi||{},e.AblyUi.Core=e.AblyUi.Core||{},e.AblyUi.Core.CookieMessage=o())}(this,(function(){return(()=>{"use strict";var e={};return e.default})()}));
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if(typeof define === 'function' && define.amd)
5
+ define([], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["AblyUi"] = factory();
8
+ else
9
+ root["AblyUi"] = root["AblyUi"] || {}, root["AblyUi"]["Core"] = root["AblyUi"]["Core"] || {}, root["AblyUi"]["Core"]["CookieMessage"] = factory();
10
+ })(this, () => {
11
+ return /******/ (() => { // webpackBootstrap
12
+ /******/ "use strict";
13
+ /******/ var __webpack_modules__ = ({
14
+
15
+ /***/ "./src/core/CookieMessage/component.css":
16
+ /*!**********************************************!*\
17
+ !*** ./src/core/CookieMessage/component.css ***!
18
+ \**********************************************/
19
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
20
+
21
+ __webpack_require__.r(__webpack_exports__);
22
+ // extracted by mini-css-extract-plugin
23
+
24
+
25
+ /***/ })
26
+
27
+ /******/ });
28
+ /************************************************************************/
29
+ /******/ // The module cache
30
+ /******/ var __webpack_module_cache__ = {};
31
+ /******/
32
+ /******/ // The require function
33
+ /******/ function __webpack_require__(moduleId) {
34
+ /******/ // Check if module is in cache
35
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
36
+ /******/ if (cachedModule !== undefined) {
37
+ /******/ return cachedModule.exports;
38
+ /******/ }
39
+ /******/ // Create a new module (and put it into the cache)
40
+ /******/ var module = __webpack_module_cache__[moduleId] = {
41
+ /******/ // no module.id needed
42
+ /******/ // no module.loaded needed
43
+ /******/ exports: {}
44
+ /******/ };
45
+ /******/
46
+ /******/ // Execute the module function
47
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
48
+ /******/
49
+ /******/ // Return the exports of the module
50
+ /******/ return module.exports;
51
+ /******/ }
52
+ /******/
53
+ /************************************************************************/
54
+ /******/ /* webpack/runtime/make namespace object */
55
+ /******/ (() => {
56
+ /******/ // define __esModule on exports
57
+ /******/ __webpack_require__.r = (exports) => {
58
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
59
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
60
+ /******/ }
61
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
62
+ /******/ };
63
+ /******/ })();
64
+ /******/
65
+ /************************************************************************/
66
+ var __webpack_exports__ = {};
67
+ // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
68
+ (() => {
69
+ /*!*********************************************!*\
70
+ !*** ./src/core/CookieMessage/component.js ***!
71
+ \*********************************************/
72
+ __webpack_require__.r(__webpack_exports__);
73
+ /* harmony import */ var _component_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./component.css */ "./src/core/CookieMessage/component.css");
74
+
75
+ })();
76
+
77
+ __webpack_exports__ = __webpack_exports__["default"];
78
+ /******/ return __webpack_exports__;
79
+ /******/ })()
80
+ ;
81
+ });
82
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS9Db29raWVNZXNzYWdlL2NvbXBvbmVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLHVEQUF1RDtBQUM5RixDQUFDO0FBQ0QsTzs7Ozs7Ozs7Ozs7QUNWQTs7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RCIsInNvdXJjZXMiOlsid2VicGFjazovL0FibHlVaS5Db3JlL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS8uL3NyYy9jb3JlL0Nvb2tpZU1lc3NhZ2UvY29tcG9uZW50LmNzcz9jNmE3Iiwid2VicGFjazovL0FibHlVaS5Db3JlL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0FibHlVaS5Db3JlL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vQWJseVVpLkNvcmUvLi9zcmMvY29yZS9Db29raWVNZXNzYWdlL2NvbXBvbmVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJBYmx5VWlcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiQWJseVVpXCJdID0gcm9vdFtcIkFibHlVaVwiXSB8fCB7fSwgcm9vdFtcIkFibHlVaVwiXVtcIkNvcmVcIl0gPSByb290W1wiQWJseVVpXCJdW1wiQ29yZVwiXSB8fCB7fSwgcm9vdFtcIkFibHlVaVwiXVtcIkNvcmVcIl1bXCJDb29raWVNZXNzYWdlXCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgXCIuL2NvbXBvbmVudC5jc3NcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==