ably-ui 8.7.0.dev.7072b07 → 8.7.0.dev.7456b53

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +6 -6
  3. data/README.md +3 -7
  4. data/lib/ably_ui/core/code/component.css +0 -2
  5. data/lib/ably_ui/core/code/component.js +1 -739
  6. data/lib/ably_ui/core/company_autocomplete/component.css +0 -2
  7. data/lib/ably_ui/core/company_autocomplete/component.js +1 -1161
  8. data/lib/ably_ui/core/connect_state_wrapper/component.js +1 -22
  9. data/lib/ably_ui/core/contact_footer/component.css +0 -2
  10. data/lib/ably_ui/core/contact_footer/component.js +1 -211
  11. data/lib/ably_ui/core/cookie_message/component.css +0 -2
  12. data/lib/ably_ui/core/cookie_message/component.js +1 -82
  13. data/lib/ably_ui/core/core.rb +4 -8
  14. data/lib/ably_ui/core/customer_logos/component.js +1 -22
  15. data/lib/ably_ui/core/dropdown_menu/component.js +1 -22
  16. data/lib/ably_ui/core/feature_footer/component.css +0 -2
  17. data/lib/ably_ui/core/feature_footer/component.js +1 -211
  18. data/lib/ably_ui/core/featured_link/component.css +0 -2
  19. data/lib/ably_ui/core/featured_link/component.js +1 -82
  20. data/lib/ably_ui/core/flash/component.css +0 -2
  21. data/lib/ably_ui/core/flash/component.js +1 -82
  22. data/lib/ably_ui/core/footer/component.css +1 -3
  23. data/lib/ably_ui/core/footer/component.js +1 -82
  24. data/lib/ably_ui/core/footer/footer.html.erb +23 -18
  25. data/lib/ably_ui/core/icon/component.js +1 -22
  26. data/lib/ably_ui/core/loader/component.js +1 -22
  27. data/lib/ably_ui/core/logo/component.js +1 -22
  28. data/lib/ably_ui/core/meganav/component.css +3 -3
  29. data/lib/ably_ui/core/meganav/component.js +1 -992
  30. data/lib/ably_ui/core/meganav/component.json +1 -1
  31. data/lib/ably_ui/core/meganav/meganav.rb +4 -4
  32. data/lib/ably_ui/core/meganav_blog_posts_list/component.js +1 -1159
  33. data/lib/ably_ui/core/meganav_content_company/component.js +1 -22
  34. data/lib/ably_ui/core/meganav_content_company/meganav_content_company.html.erb +0 -9
  35. data/lib/ably_ui/core/meganav_content_developers/component.js +1 -22
  36. data/lib/ably_ui/core/meganav_content_developers/meganav_content_developers.html.erb +2 -18
  37. data/lib/ably_ui/core/meganav_content_platform/component.js +1 -0
  38. data/lib/ably_ui/core/{meganav_content_products/meganav_content_products.html.erb → meganav_content_platform/meganav_content_platform.html.erb} +33 -15
  39. data/lib/ably_ui/core/{meganav_content_products/meganav_content_products.rb → meganav_content_platform/meganav_content_platform.rb} +1 -1
  40. data/lib/ably_ui/core/meganav_content_use_cases/component.js +1 -22
  41. data/lib/ably_ui/core/meganav_content_use_cases/meganav_content_use_cases.html.erb +38 -42
  42. data/lib/ably_ui/core/meganav_control/component.js +1 -241
  43. data/lib/ably_ui/core/meganav_control_mobile_dropdown/component.js +1 -180
  44. data/lib/ably_ui/core/meganav_control_mobile_panel_close/component.js +1 -142
  45. data/lib/ably_ui/core/meganav_control_mobile_panel_open/component.js +1 -170
  46. data/lib/ably_ui/core/meganav_items_desktop/component.js +1 -22
  47. data/lib/ably_ui/core/meganav_items_desktop/meganav_items_desktop.rb +1 -1
  48. data/lib/ably_ui/core/meganav_items_mobile/component.js +1 -22
  49. data/lib/ably_ui/core/meganav_items_signed_in/component.js +1 -22
  50. data/lib/ably_ui/core/meganav_search/component.js +1 -22
  51. data/lib/ably_ui/core/meganav_search_autocomplete/component.js +1 -295
  52. data/lib/ably_ui/core/meganav_search_panel/component.js +1 -22
  53. data/lib/ably_ui/core/meganav_search_suggestions/component.js +1 -258
  54. data/lib/ably_ui/core/notice/component.css +0 -2
  55. data/lib/ably_ui/core/notice/component.js +1 -872
  56. data/lib/ably_ui/core/scripts.js +1 -1465
  57. data/lib/ably_ui/core/showcase/component.css +0 -2
  58. data/lib/ably_ui/core/showcase/component.js +1 -343
  59. data/lib/ably_ui/core/sign_out_link/component.js +1 -22
  60. data/lib/ably_ui/core/slider/component.css +0 -2
  61. data/lib/ably_ui/core/slider/component.js +1 -255
  62. data/lib/ably_ui/core/sprites.svg +0 -93
  63. data/lib/ably_ui/core/styles.css +7 -3
  64. data/lib/ably_ui/core/uptime/component.css +0 -2
  65. data/lib/ably_ui/core/uptime/component.js +1 -82
  66. data/lib/ably_ui/reset/scripts.js +1 -1
  67. data/lib/ably_ui/reset/styles.css +11 -1
  68. data/lib/ably_ui/version.rb +1 -1
  69. metadata +5 -9
  70. data/lib/ably_ui/core/images/best-support-2023.svg +0 -1
  71. data/lib/ably_ui/core/images/fastest-implementation-2023.svg +0 -1
  72. data/lib/ably_ui/core/images/high-performer-2023.svg +0 -1
  73. data/lib/ably_ui/core/images/highest-user-adoption-2023.svg +0 -1
  74. data/lib/ably_ui/core/meganav_content_products/component.js +0 -22
@@ -1,872 +1 @@
1
- (function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory(require("dompurify"), require("js-cookie"), require("lodash.throttle"), require("prop-types"), require("react"), require("redux"));
4
- else if(typeof define === 'function' && define.amd)
5
- define([, , , , , ], factory);
6
- else if(typeof exports === 'object')
7
- exports["AblyUi"] = factory(require("dompurify"), require("js-cookie"), require("lodash.throttle"), require("prop-types"), require("react"), require("redux"));
8
- else
9
- root["AblyUi"] = root["AblyUi"] || {}, root["AblyUi"]["Core"] = root["AblyUi"]["Core"] || {}, root["AblyUi"]["Core"]["Notice"] = factory(root[undefined], root[undefined], root[undefined], root[undefined], root[undefined], root[undefined]);
10
- })(this, (__WEBPACK_EXTERNAL_MODULE_dompurify__, __WEBPACK_EXTERNAL_MODULE_js_cookie__, __WEBPACK_EXTERNAL_MODULE_lodash_throttle__, __WEBPACK_EXTERNAL_MODULE_prop_types__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_redux__) => {
11
- return /******/ (() => { // webpackBootstrap
12
- /******/ "use strict";
13
- /******/ var __webpack_modules__ = ({
14
-
15
- /***/ "./src/core/ConnectStateWrapper/component.jsx":
16
- /*!****************************************************!*\
17
- !*** ./src/core/ConnectStateWrapper/component.jsx ***!
18
- \****************************************************/
19
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
20
-
21
- __webpack_require__.r(__webpack_exports__);
22
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
23
- /* harmony export */ "ConnectStateWrapper": () => (/* binding */ ConnectStateWrapper),
24
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
25
- /* harmony export */ });
26
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
27
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
28
- /* harmony import */ var _remote_data_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../remote-data-store */ "./src/core/remote-data-store.js");
29
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
30
-
31
- 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; }
32
-
33
- 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; }
34
-
35
- 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; }
36
-
37
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
38
-
39
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
40
-
41
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
42
-
43
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
44
-
45
- function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
46
-
47
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
48
-
49
-
50
-
51
- /*
52
- Connect a react component to a global store.
53
- This is similar to what react-redux does but uses our global store so
54
- can share state with other React mount points or anything that uses the
55
- store.
56
- - selectors is an object where keys are your prop names and values are your select
57
- functions that work on the store to retrieve the state you are interested in
58
- - initial state is set in useEffect so the wrapped component needs to handle it's props set to undefined initially
59
- */
60
-
61
- var ConnectStateWrapper = function ConnectStateWrapper(Component, selectors) {
62
- var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({}),
63
- _useState2 = _slicedToArray(_useState, 2),
64
- state = _useState2[0],
65
- setState = _useState2[1];
66
-
67
- var setStateForKey = function setStateForKey(key) {
68
- return function (storeState) {
69
- return setState(function () {
70
- return _defineProperty({}, key, storeState);
71
- });
72
- };
73
- };
74
-
75
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
76
- var store = (0,_remote_data_store__WEBPACK_IMPORTED_MODULE_1__.getRemoteDataStore)();
77
- var resolvedState = Object.keys(selectors).reduce(function (acc, key) {
78
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, selectors[key](store)));
79
- }, {}); // Set initial state
80
-
81
- setState(resolvedState); // Create a store subscription for each selector. Depending on your use case, this can be inefficient.
82
- // When optimising for renders, look for wins with selectors better for your use and using connectState directly.
83
-
84
- Object.keys(selectors).forEach(function (key) {
85
- (0,_remote_data_store__WEBPACK_IMPORTED_MODULE_1__.connectState)(selectors[key], setStateForKey(key));
86
- });
87
- }, []);
88
-
89
- var WrappedComponent = function WrappedComponent(props) {
90
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Component, _extends({}, props, state));
91
- };
92
-
93
- return WrappedComponent;
94
- };
95
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ConnectStateWrapper);
96
-
97
- /***/ }),
98
-
99
- /***/ "./src/core/Flash/component.jsx":
100
- /*!**************************************!*\
101
- !*** ./src/core/Flash/component.jsx ***!
102
- \**************************************/
103
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
104
-
105
- __webpack_require__.r(__webpack_exports__);
106
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
107
- /* harmony export */ "FLASH_DATA_ID": () => (/* binding */ FLASH_DATA_ID),
108
- /* harmony export */ "Flashes": () => (/* binding */ Flashes),
109
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
110
- /* harmony export */ "reducerFlashes": () => (/* binding */ reducerFlashes)
111
- /* harmony export */ });
112
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
113
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
114
- /* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dompurify */ "dompurify");
115
- /* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_1__);
116
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ "prop-types");
117
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);
118
- /* harmony import */ var nanoid_non_secure__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! nanoid/non-secure */ "./node_modules/nanoid/non-secure/index.js");
119
- /* harmony import */ var _remote_data_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../remote-data-store */ "./src/core/remote-data-store.js");
120
- /* harmony import */ var _ConnectStateWrapper_component_jsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ConnectStateWrapper/component.jsx */ "./src/core/ConnectStateWrapper/component.jsx");
121
- /* harmony import */ var _Icon_component_jsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Icon/component.jsx */ "./src/core/Icon/component.jsx");
122
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
123
-
124
- 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; }
125
-
126
- 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; }
127
-
128
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
129
-
130
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
131
-
132
- function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
133
-
134
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
135
-
136
- 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; }
137
-
138
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
139
-
140
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
141
-
142
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
143
-
144
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
145
-
146
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
147
-
148
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
149
-
150
-
151
-
152
-
153
-
154
-
155
-
156
-
157
- var REDUCER_KEY = "flashes";
158
- var FLASH_DATA_ID = "ui-flashes";
159
- var initialState = {
160
- items: []
161
- };
162
-
163
- var reducerFlashes = _defineProperty({}, REDUCER_KEY, function () {
164
- var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
165
- var action = arguments.length > 1 ? arguments[1] : undefined;
166
-
167
- switch (action.type) {
168
- case "flash/push":
169
- {
170
- var flashes = Array.isArray(action.payload) ? action.payload : [action.payload];
171
- return {
172
- items: [].concat(_toConsumableArray(state.items), _toConsumableArray(flashes))
173
- };
174
- }
175
-
176
- default:
177
- return state;
178
- }
179
- });
180
-
181
- var selectFlashes = function selectFlashes(store) {
182
- return store.getState()[REDUCER_KEY];
183
- };
184
-
185
- var FlashT = {
186
- type: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOf(["error", "success", "notice", "info", "alert"]),
187
- content: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string)
188
- };
189
- var FLASH_BG_COLOR = {
190
- error: "bg-gui-error",
191
- success: "bg-zingy-green",
192
- notice: "bg-electric-cyan",
193
- info: "bg-electric-cyan",
194
- alert: "bg-active-orange"
195
- };
196
- var FLASH_TEXT_COLOR = {
197
- error: "text-white",
198
- success: "text-cool-black",
199
- notice: "text-cool-black",
200
- info: "text-cool-black",
201
- alert: "text-white"
202
- };
203
- var AUTO_HIDE = ["success", "info", "notice"];
204
- var AUTO_HIDE_TIME = 8000;
205
-
206
- var useAutoHide = function useAutoHide(type, closeFlash) {
207
- var timeoutId = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
208
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
209
- if (AUTO_HIDE.includes(type)) {
210
- timeoutId.current = setTimeout(function () {
211
- closeFlash();
212
- }, AUTO_HIDE_TIME);
213
- }
214
-
215
- return function () {
216
- if (timeoutId.current) {
217
- clearTimeout(timeoutId.current);
218
- }
219
- };
220
- }, []);
221
- };
222
-
223
- var Flash = function Flash(_ref) {
224
- var id = _ref.id,
225
- type = _ref.type,
226
- content = _ref.content,
227
- removeFlash = _ref.removeFlash;
228
- var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
229
-
230
- var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
231
- _useState2 = _slicedToArray(_useState, 2),
232
- closed = _useState2[0],
233
- setClosed = _useState2[1];
234
-
235
- var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0),
236
- _useState4 = _slicedToArray(_useState3, 2),
237
- flashHeight = _useState4[0],
238
- setFlashHeight = _useState4[1];
239
-
240
- var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),
241
- _useState6 = _slicedToArray(_useState5, 2),
242
- triggerEntryAnimation = _useState6[0],
243
- setTriggerEntryAnimation = _useState6[1];
244
-
245
- var closeFlash = function closeFlash() {
246
- if (ref.current) {
247
- setFlashHeight(ref.current.getBoundingClientRect().height);
248
- }
249
-
250
- setClosed(true);
251
- setTimeout(function () {
252
- removeFlash(id);
253
- }, 100);
254
- };
255
-
256
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
257
- return setTriggerEntryAnimation(true);
258
- }, []);
259
- useAutoHide(type, closeFlash);
260
- var animateEntry = triggerEntryAnimation && !closed;
261
- var style;
262
-
263
- if (flashHeight && !closed) {
264
- style = {
265
- height: "".concat(flashHeight, "px")
266
- };
267
- } else if (closed) {
268
- style = {
269
- height: 0,
270
- marginTop: 0,
271
- zIndex: -1
272
- };
273
- } else {
274
- style = {};
275
- }
276
-
277
- var safeContent = dompurify__WEBPACK_IMPORTED_MODULE_1___default().sanitize(content, {
278
- ALLOWED_TAGS: ["a"],
279
- ALLOWED_ATTR: ["href", "data-method", "rel"]
280
- });
281
- var withIcons = {
282
- notice: "icon-gui-ably-badge",
283
- success: "icon-gui-tick",
284
- error: "icon-gui-warning",
285
- alert: "icon-gui-warning"
286
- };
287
- var iconColor = {
288
- notice: "text-cool-black",
289
- success: "text-cool-black",
290
- error: "text-white",
291
- alert: "text-white"
292
- };
293
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
294
- className: "ui-flash-message ui-grid-px ".concat(animateEntry ? "ui-flash-message-enter" : ""),
295
- style: style,
296
- ref: ref,
297
- "data-id": "ui-flash"
298
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
299
- className: "".concat(FLASH_BG_COLOR[type], " p-32 flex align-center rounded shadow-container-subtle")
300
- }, withIcons[type] && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_5__["default"], {
301
- name: withIcons[type],
302
- color: iconColor[type],
303
- size: "1.5rem",
304
- additionalCSS: "mr-16 self-baseline"
305
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
306
- className: "ui-flash-text ".concat(FLASH_TEXT_COLOR[type]),
307
- dangerouslySetInnerHTML: {
308
- __html: safeContent
309
- }
310
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
311
- type: "button",
312
- className: "p-0 ml-auto self-start focus:outline-none",
313
- onClick: closeFlash
314
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_5__["default"], {
315
- name: "icon-gui-close",
316
- color: iconColor[type],
317
- size: "1.5rem",
318
- additionalCSS: "transition-colors"
319
- }))));
320
- };
321
-
322
- Flash.propTypes = _objectSpread({}, FlashT);
323
-
324
- var Flashes = function Flashes(_ref2) {
325
- var flashes = _ref2.flashes;
326
-
327
- var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),
328
- _useState8 = _slicedToArray(_useState7, 2),
329
- flashesWithIds = _useState8[0],
330
- setFlashesWithIds = _useState8[1];
331
-
332
- var removeFlash = function removeFlash(flashId) {
333
- return setFlashesWithIds(function (items) {
334
- return items.filter(function (item) {
335
- return item.id !== flashId;
336
- });
337
- });
338
- };
339
-
340
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
341
- setFlashesWithIds(function (state) {
342
- return [].concat(_toConsumableArray(state), _toConsumableArray(((flashes === null || flashes === void 0 ? void 0 : flashes.items) || []).map(function (flash) {
343
- return _objectSpread(_objectSpread({}, flash), {}, {
344
- id: (0,nanoid_non_secure__WEBPACK_IMPORTED_MODULE_6__.nanoid)(),
345
- removed: false
346
- });
347
- })));
348
- });
349
- }, [flashes]);
350
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
351
- className: "ui-flash",
352
- "data-id": FLASH_DATA_ID
353
- }, flashesWithIds.filter(function (item) {
354
- return !item.removed;
355
- }).map(function (flash) {
356
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Flash, _extends({
357
- removeFlash: removeFlash,
358
- key: flash.id
359
- }, flash));
360
- }));
361
- };
362
-
363
- Flashes.propTypes = {
364
- flashes: prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({
365
- items: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape(FlashT))
366
- })
367
- };
368
-
369
- var BackendFlashes = function BackendFlashes(_ref3) {
370
- var flashes = _ref3.flashes;
371
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
372
- var transformedFlashes = flashes.map(function (flash) {
373
- var _flash = _slicedToArray(flash, 2),
374
- type = _flash[0],
375
- content = _flash[1];
376
-
377
- return {
378
- type: type,
379
- content: content
380
- };
381
- }) || [];
382
-
383
- if (transformedFlashes.length > 0) {
384
- var store = (0,_remote_data_store__WEBPACK_IMPORTED_MODULE_3__.getRemoteDataStore)();
385
- store.dispatch({
386
- type: "flash/push",
387
- payload: transformedFlashes
388
- });
389
- }
390
- }, []);
391
- var WrappedFlashes = (0,_ConnectStateWrapper_component_jsx__WEBPACK_IMPORTED_MODULE_4__["default"])(Flashes, {
392
- flashes: selectFlashes
393
- });
394
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(WrappedFlashes, null);
395
- };
396
-
397
- BackendFlashes.propTypes = {
398
- flashes: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().string)))
399
- };
400
-
401
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BackendFlashes);
402
-
403
- /***/ }),
404
-
405
- /***/ "./src/core/Icon/component.jsx":
406
- /*!*************************************!*\
407
- !*** ./src/core/Icon/component.jsx ***!
408
- \*************************************/
409
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
410
-
411
- __webpack_require__.r(__webpack_exports__);
412
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
413
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
414
- /* harmony export */ });
415
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
416
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
417
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
418
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
419
- var _excluded = ["name", "size", "color", "additionalCSS"];
420
-
421
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
422
-
423
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
424
-
425
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
426
-
427
-
428
-
429
-
430
- var Icon = function Icon(_ref) {
431
- var name = _ref.name,
432
- _ref$size = _ref.size,
433
- size = _ref$size === void 0 ? "0.75rem" : _ref$size,
434
- _ref$color = _ref.color,
435
- color = _ref$color === void 0 ? "" : _ref$color,
436
- _ref$additionalCSS = _ref.additionalCSS,
437
- additionalCSS = _ref$additionalCSS === void 0 ? "" : _ref$additionalCSS,
438
- additionalAttributes = _objectWithoutProperties(_ref, _excluded);
439
-
440
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("svg", _extends({
441
- className: "".concat(color, " ").concat(additionalCSS),
442
- style: {
443
- width: size,
444
- height: size
445
- }
446
- }, additionalAttributes), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("use", {
447
- xlinkHref: "#sprite-".concat(name)
448
- }));
449
- };
450
-
451
- Icon.propTypes = {
452
- name: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string.isRequired),
453
- size: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
454
- color: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
455
- additionalCSS: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
456
- };
457
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Icon);
458
-
459
- /***/ }),
460
-
461
- /***/ "./src/core/dom-query.js":
462
- /*!*******************************!*\
463
- !*** ./src/core/dom-query.js ***!
464
- \*******************************/
465
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
466
-
467
- __webpack_require__.r(__webpack_exports__);
468
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
469
- /* harmony export */ "queryId": () => (/* binding */ queryId),
470
- /* harmony export */ "queryIdAll": () => (/* binding */ queryIdAll)
471
- /* harmony export */ });
472
- var queryId = function queryId(val) {
473
- var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
474
- return root.querySelector("[data-id=".concat(val, "]"));
475
- };
476
- var queryIdAll = function queryIdAll(val) {
477
- var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
478
- return root.querySelectorAll("[data-id=".concat(val, "]"));
479
- };
480
-
481
- /***/ }),
482
-
483
- /***/ "./src/core/remote-data-store.js":
484
- /*!***************************************!*\
485
- !*** ./src/core/remote-data-store.js ***!
486
- \***************************************/
487
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
488
-
489
- __webpack_require__.r(__webpack_exports__);
490
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
491
- /* harmony export */ "attachStoreToWindow": () => (/* binding */ attachStoreToWindow),
492
- /* harmony export */ "connectState": () => (/* binding */ connectState),
493
- /* harmony export */ "createRemoteDataStore": () => (/* binding */ createRemoteDataStore),
494
- /* harmony export */ "getRemoteDataStore": () => (/* binding */ getRemoteDataStore)
495
- /* harmony export */ });
496
- /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ "redux");
497
- /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(redux__WEBPACK_IMPORTED_MODULE_0__);
498
-
499
- var attachStoreToWindow = function attachStoreToWindow(store) {
500
- window.AblyUi = window.AblyUi || {};
501
- window.AblyUi.RemoteDataStore = store;
502
- };
503
- var getRemoteDataStore = function getRemoteDataStore() {
504
- if (!window.AblyUi.RemoteDataStore) {
505
- throw new Error("Remote store was called before one was created");
506
- }
507
-
508
- return window.AblyUi.RemoteDataStore;
509
- };
510
- var connectState = function connectState(selector, setState) {
511
- var store = getRemoteDataStore();
512
- var cachedOldState = selector(store);
513
- store.subscribe(function () {
514
- var newState = selector(store); // Do nothing, state is the same
515
-
516
- if (newState === cachedOldState) {
517
- return;
518
- }
519
-
520
- cachedOldState = newState;
521
- setState(newState);
522
- });
523
- };
524
- var createRemoteDataStore = function createRemoteDataStore(reducers) {
525
- return (0,redux__WEBPACK_IMPORTED_MODULE_0__.createStore)((0,redux__WEBPACK_IMPORTED_MODULE_0__.combineReducers)(reducers));
526
- };
527
-
528
- /***/ }),
529
-
530
- /***/ "./src/core/Notice/component.css":
531
- /*!***************************************!*\
532
- !*** ./src/core/Notice/component.css ***!
533
- \***************************************/
534
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
535
-
536
- __webpack_require__.r(__webpack_exports__);
537
- // extracted by mini-css-extract-plugin
538
-
539
-
540
- /***/ }),
541
-
542
- /***/ "dompurify":
543
- /*!*****************************************************************!*\
544
- !*** external {"commonjs":"dompurify","commonjs2":"dompurify"} ***!
545
- \*****************************************************************/
546
- /***/ ((module) => {
547
-
548
- module.exports = __WEBPACK_EXTERNAL_MODULE_dompurify__;
549
-
550
- /***/ }),
551
-
552
- /***/ "js-cookie":
553
- /*!*****************************************************************!*\
554
- !*** external {"commonjs":"js-cookie","commonjs2":"js-cookie"} ***!
555
- \*****************************************************************/
556
- /***/ ((module) => {
557
-
558
- module.exports = __WEBPACK_EXTERNAL_MODULE_js_cookie__;
559
-
560
- /***/ }),
561
-
562
- /***/ "lodash.throttle":
563
- /*!*****************************************************************************!*\
564
- !*** external {"commonjs":"lodash.throttle","commonjs2":"lodash.throttle"} ***!
565
- \*****************************************************************************/
566
- /***/ ((module) => {
567
-
568
- module.exports = __WEBPACK_EXTERNAL_MODULE_lodash_throttle__;
569
-
570
- /***/ }),
571
-
572
- /***/ "prop-types":
573
- /*!*******************************************************************!*\
574
- !*** external {"commonjs":"prop-types","commonjs2":"prop-types"} ***!
575
- \*******************************************************************/
576
- /***/ ((module) => {
577
-
578
- module.exports = __WEBPACK_EXTERNAL_MODULE_prop_types__;
579
-
580
- /***/ }),
581
-
582
- /***/ "react":
583
- /*!*********************************************************!*\
584
- !*** external {"commonjs":"react","commonjs2":"react"} ***!
585
- \*********************************************************/
586
- /***/ ((module) => {
587
-
588
- module.exports = __WEBPACK_EXTERNAL_MODULE_react__;
589
-
590
- /***/ }),
591
-
592
- /***/ "redux":
593
- /*!*********************************************************!*\
594
- !*** external {"commonjs":"redux","commonjs2":"redux"} ***!
595
- \*********************************************************/
596
- /***/ ((module) => {
597
-
598
- module.exports = __WEBPACK_EXTERNAL_MODULE_redux__;
599
-
600
- /***/ }),
601
-
602
- /***/ "./node_modules/nanoid/non-secure/index.js":
603
- /*!*************************************************!*\
604
- !*** ./node_modules/nanoid/non-secure/index.js ***!
605
- \*************************************************/
606
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
607
-
608
- __webpack_require__.r(__webpack_exports__);
609
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
610
- /* harmony export */ "customAlphabet": () => (/* binding */ customAlphabet),
611
- /* harmony export */ "nanoid": () => (/* binding */ nanoid)
612
- /* harmony export */ });
613
- let urlAlphabet =
614
- 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'
615
- let customAlphabet = (alphabet, defaultSize = 21) => {
616
- return (size = defaultSize) => {
617
- let id = ''
618
- let i = size
619
- while (i--) {
620
- id += alphabet[(Math.random() * alphabet.length) | 0]
621
- }
622
- return id
623
- }
624
- }
625
- let nanoid = (size = 21) => {
626
- let id = ''
627
- let i = size
628
- while (i--) {
629
- id += urlAlphabet[(Math.random() * 64) | 0]
630
- }
631
- return id
632
- }
633
-
634
-
635
- /***/ })
636
-
637
- /******/ });
638
- /************************************************************************/
639
- /******/ // The module cache
640
- /******/ var __webpack_module_cache__ = {};
641
- /******/
642
- /******/ // The require function
643
- /******/ function __webpack_require__(moduleId) {
644
- /******/ // Check if module is in cache
645
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
646
- /******/ if (cachedModule !== undefined) {
647
- /******/ return cachedModule.exports;
648
- /******/ }
649
- /******/ // Create a new module (and put it into the cache)
650
- /******/ var module = __webpack_module_cache__[moduleId] = {
651
- /******/ // no module.id needed
652
- /******/ // no module.loaded needed
653
- /******/ exports: {}
654
- /******/ };
655
- /******/
656
- /******/ // Execute the module function
657
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
658
- /******/
659
- /******/ // Return the exports of the module
660
- /******/ return module.exports;
661
- /******/ }
662
- /******/
663
- /************************************************************************/
664
- /******/ /* webpack/runtime/compat get default export */
665
- /******/ (() => {
666
- /******/ // getDefaultExport function for compatibility with non-harmony modules
667
- /******/ __webpack_require__.n = (module) => {
668
- /******/ var getter = module && module.__esModule ?
669
- /******/ () => (module['default']) :
670
- /******/ () => (module);
671
- /******/ __webpack_require__.d(getter, { a: getter });
672
- /******/ return getter;
673
- /******/ };
674
- /******/ })();
675
- /******/
676
- /******/ /* webpack/runtime/define property getters */
677
- /******/ (() => {
678
- /******/ // define getter functions for harmony exports
679
- /******/ __webpack_require__.d = (exports, definition) => {
680
- /******/ for(var key in definition) {
681
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
682
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
683
- /******/ }
684
- /******/ }
685
- /******/ };
686
- /******/ })();
687
- /******/
688
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
689
- /******/ (() => {
690
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
691
- /******/ })();
692
- /******/
693
- /******/ /* webpack/runtime/make namespace object */
694
- /******/ (() => {
695
- /******/ // define __esModule on exports
696
- /******/ __webpack_require__.r = (exports) => {
697
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
698
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
699
- /******/ }
700
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
701
- /******/ };
702
- /******/ })();
703
- /******/
704
- /************************************************************************/
705
- var __webpack_exports__ = {};
706
- // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
707
- (() => {
708
- /*!**************************************!*\
709
- !*** ./src/core/Notice/component.js ***!
710
- \**************************************/
711
- __webpack_require__.r(__webpack_exports__);
712
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
713
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
714
- /* harmony export */ });
715
- /* harmony import */ var _component_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./component.css */ "./src/core/Notice/component.css");
716
- /* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! js-cookie */ "js-cookie");
717
- /* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(js_cookie__WEBPACK_IMPORTED_MODULE_1__);
718
- /* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash.throttle */ "lodash.throttle");
719
- /* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_2__);
720
- /* harmony import */ var _dom_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-query */ "./src/core/dom-query.js");
721
- /* harmony import */ var _Flash_component_jsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Flash/component.jsx */ "./src/core/Flash/component.jsx");
722
- 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; }
723
-
724
- 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; }
725
-
726
- 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; }
727
-
728
-
729
-
730
-
731
-
732
-
733
- var COOKIE_EXPIRY = 90;
734
- var COLLAPSE_TRIGGER_DISTANCE = 5;
735
- var SCROLL_LISTENER_THROTTLE = 100;
736
- var RESIZE_LISTENER_THROTTLE = 100;
737
-
738
- var isMdViewport = function isMdViewport() {
739
- return !window.matchMedia("(min-width: 65rem)").matches;
740
- };
741
-
742
- var adjustFlashMargin = function adjustFlashMargin(open) {
743
- // HACK ALERT
744
- // Add margin to flashes when opening the notice.
745
- // Flashes are react components and this notice needs to work as a view-component and react component.
746
- // We could do this with redux but then we potentially update state on every scroll event, which
747
- // even with debounce will deplate our frame budget.
748
- var flash = (0,_dom_query__WEBPACK_IMPORTED_MODULE_3__.queryId)(_Flash_component_jsx__WEBPACK_IMPORTED_MODULE_4__.FLASH_DATA_ID);
749
-
750
- if (flash) {
751
- flash.style.marginTop = open ? "4rem" : null;
752
- }
753
- };
754
-
755
- var hideOnMobile = function hideOnMobile(bannerContainer) {
756
- if (isMdViewport()) {
757
- bannerContainer.style.display = "none";
758
- } else {
759
- bannerContainer.style.display = null;
760
- }
761
- };
762
-
763
- var hideNotice = function hideNotice(bannerContainer) {
764
- bannerContainer.style.maxHeight = 0;
765
- bannerContainer.style.overflow = "hidden";
766
- adjustFlashMargin(false);
767
- };
768
-
769
- var showNotice = function showNotice(bannerContainer) {
770
- bannerContainer.style.maxHeight = null;
771
- bannerContainer.style.overflow = null;
772
- adjustFlashMargin(true);
773
- };
774
-
775
- var setupRememberClosed = function setupRememberClosed(cookieId, noticeId) {
776
- var cookie = js_cookie__WEBPACK_IMPORTED_MODULE_1___default().get(cookieId) || "";
777
- js_cookie__WEBPACK_IMPORTED_MODULE_1___default().set(cookieId, "".concat(cookie.replace("".concat(noticeId, ","), "") + noticeId, ","), {
778
- expires: COOKIE_EXPIRY
779
- });
780
- };
781
-
782
- var hasBeenClosedBefore = function hasBeenClosedBefore(cookieId, noticeId) {
783
- return (js_cookie__WEBPACK_IMPORTED_MODULE_1___default().get(cookieId) || "").includes(noticeId);
784
- };
785
-
786
- var setupNoticeCollapse = function setupNoticeCollapse(bannerContainer) {
787
- var scrollTop = window.scrollY;
788
-
789
- if (scrollTop > COLLAPSE_TRIGGER_DISTANCE) {
790
- hideNotice(bannerContainer);
791
- }
792
-
793
- var listener = lodash_throttle__WEBPACK_IMPORTED_MODULE_2___default()(function () {
794
- var scrollTop = window.scrollY;
795
-
796
- if (scrollTop > COLLAPSE_TRIGGER_DISTANCE) {
797
- hideNotice(bannerContainer);
798
- } else if (bannerContainer.style.overflow) {
799
- showNotice(bannerContainer);
800
- }
801
- }, SCROLL_LISTENER_THROTTLE);
802
- document.addEventListener("scroll", listener);
803
- return function () {
804
- return document.removeEventListener("scroll", listener);
805
- };
806
- };
807
-
808
- var setupCloseBtn = function setupCloseBtn(bannerContainer, cookieId, noticeId, collapseUnmountListeners) {
809
- var closeBtn = bannerContainer.querySelector("button");
810
- if (!closeBtn) return function () {};
811
-
812
- var listener = function listener() {
813
- if (cookieId && noticeId) setupRememberClosed(cookieId, noticeId);
814
- hideNotice(bannerContainer);
815
- collapseUnmountListeners();
816
- };
817
-
818
- closeBtn.addEventListener("click", listener);
819
- return function () {
820
- return document.removeEventListener("click", listener);
821
- };
822
- };
823
-
824
- var resizeHandler = function resizeHandler(bannerContainer) {
825
- var handler = lodash_throttle__WEBPACK_IMPORTED_MODULE_2___default()(function () {
826
- hideOnMobile(bannerContainer);
827
- }, RESIZE_LISTENER_THROTTLE);
828
- window.addEventListener("resize", handler);
829
- return function () {
830
- return window.removeEventListener("resize", handler);
831
- };
832
- };
833
-
834
- var Notice = function Notice(_ref) {
835
- var bannerContainer = _ref.bannerContainer,
836
- cookieId = _ref.cookieId,
837
- noticeId = _ref.noticeId,
838
- options = _ref.options;
839
- if (typeof window === "undefined") return function () {};
840
-
841
- if (!bannerContainer) {
842
- console.warn("A Notice component was initited but no notice container was found.");
843
- return function () {};
844
- }
845
-
846
- if (hasBeenClosedBefore(cookieId, noticeId)) return function () {};
847
- hideOnMobile(bannerContainer);
848
- showNotice(bannerContainer);
849
-
850
- var opts = _objectSpread({
851
- collapse: true
852
- }, options);
853
-
854
- var collapseUnmountListeners = opts.collapse ? setupNoticeCollapse(bannerContainer) : function () {};
855
- var closeBtnUnmountListeners = setupCloseBtn(bannerContainer, cookieId, noticeId, collapseUnmountListeners);
856
- var resizeUnmountListener = resizeHandler(bannerContainer);
857
- return function () {
858
- [closeBtnUnmountListeners, collapseUnmountListeners, resizeUnmountListener].forEach(function (unmount) {
859
- return unmount();
860
- });
861
- };
862
- };
863
-
864
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Notice);
865
- })();
866
-
867
- __webpack_exports__ = __webpack_exports__["default"];
868
- /******/ return __webpack_exports__;
869
- /******/ })()
870
- ;
871
- });
872
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS8uL3NyYy9jb3JlL0Nvbm5lY3RTdGF0ZVdyYXBwZXIvY29tcG9uZW50LmpzeCIsIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS8uL3NyYy9jb3JlL0ZsYXNoL2NvbXBvbmVudC5qc3giLCJ3ZWJwYWNrOi8vQWJseVVpLkNvcmUvLi9zcmMvY29yZS9JY29uL2NvbXBvbmVudC5qc3giLCJ3ZWJwYWNrOi8vQWJseVVpLkNvcmUvLi9zcmMvY29yZS9kb20tcXVlcnkuanMiLCJ3ZWJwYWNrOi8vQWJseVVpLkNvcmUvLi9zcmMvY29yZS9yZW1vdGUtZGF0YS1zdG9yZS5qcyIsIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS8uL3NyYy9jb3JlL05vdGljZS9jb21wb25lbnQuY3NzP2IxZDgiLCJ3ZWJwYWNrOi8vQWJseVVpLkNvcmUvZXh0ZXJuYWwgdW1kIHtcImNvbW1vbmpzXCI6XCJkb21wdXJpZnlcIixcImNvbW1vbmpzMlwiOlwiZG9tcHVyaWZ5XCJ9Iiwid2VicGFjazovL0FibHlVaS5Db3JlL2V4dGVybmFsIHVtZCB7XCJjb21tb25qc1wiOlwianMtY29va2llXCIsXCJjb21tb25qczJcIjpcImpzLWNvb2tpZVwifSIsIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS9leHRlcm5hbCB1bWQge1wiY29tbW9uanNcIjpcImxvZGFzaC50aHJvdHRsZVwiLFwiY29tbW9uanMyXCI6XCJsb2Rhc2gudGhyb3R0bGVcIn0iLCJ3ZWJwYWNrOi8vQWJseVVpLkNvcmUvZXh0ZXJuYWwgdW1kIHtcImNvbW1vbmpzXCI6XCJwcm9wLXR5cGVzXCIsXCJjb21tb25qczJcIjpcInByb3AtdHlwZXNcIn0iLCJ3ZWJwYWNrOi8vQWJseVVpLkNvcmUvZXh0ZXJuYWwgdW1kIHtcImNvbW1vbmpzXCI6XCJyZWFjdFwiLFwiY29tbW9uanMyXCI6XCJyZWFjdFwifSIsIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS9leHRlcm5hbCB1bWQge1wiY29tbW9uanNcIjpcInJlZHV4XCIsXCJjb21tb25qczJcIjpcInJlZHV4XCJ9Iiwid2VicGFjazovL0FibHlVaS5Db3JlLy4vbm9kZV9tb2R1bGVzL25hbm9pZC9ub24tc2VjdXJlL2luZGV4LmpzIiwid2VicGFjazovL0FibHlVaS5Db3JlL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0FibHlVaS5Db3JlL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL0FibHlVaS5Db3JlL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0FibHlVaS5Db3JlL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vQWJseVVpLkNvcmUvLi9zcmMvY29yZS9Ob3RpY2UvY29tcG9uZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImRvbXB1cmlmeVwiKSwgcmVxdWlyZShcImpzLWNvb2tpZVwiKSwgcmVxdWlyZShcImxvZGFzaC50aHJvdHRsZVwiKSwgcmVxdWlyZShcInByb3AtdHlwZXNcIiksIHJlcXVpcmUoXCJyZWFjdFwiKSwgcmVxdWlyZShcInJlZHV4XCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFssICwgLCAsICwgXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJBYmx5VWlcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJkb21wdXJpZnlcIiksIHJlcXVpcmUoXCJqcy1jb29raWVcIiksIHJlcXVpcmUoXCJsb2Rhc2gudGhyb3R0bGVcIiksIHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpLCByZXF1aXJlKFwicmVhY3RcIiksIHJlcXVpcmUoXCJyZWR1eFwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1wiQWJseVVpXCJdID0gcm9vdFtcIkFibHlVaVwiXSB8fCB7fSwgcm9vdFtcIkFibHlVaVwiXVtcIkNvcmVcIl0gPSByb290W1wiQWJseVVpXCJdW1wiQ29yZVwiXSB8fCB7fSwgcm9vdFtcIkFibHlVaVwiXVtcIkNvcmVcIl1bXCJOb3RpY2VcIl0gPSBmYWN0b3J5KHJvb3RbdW5kZWZpbmVkXSwgcm9vdFt1bmRlZmluZWRdLCByb290W3VuZGVmaW5lZF0sIHJvb3RbdW5kZWZpbmVkXSwgcm9vdFt1bmRlZmluZWRdLCByb290W3VuZGVmaW5lZF0pO1xufSkodGhpcywgKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfZG9tcHVyaWZ5X18sIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfanNfY29va2llX18sIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfbG9kYXNoX3Rocm90dGxlX18sIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfcHJvcF90eXBlc19fLCBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX3JlYWN0X18sIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfcmVkdXhfXykgPT4ge1xucmV0dXJuICIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNvbm5lY3RTdGF0ZSwgZ2V0UmVtb3RlRGF0YVN0b3JlIH0gZnJvbSBcIi4uL3JlbW90ZS1kYXRhLXN0b3JlXCI7XG5cbi8qXG4gIENvbm5lY3QgYSByZWFjdCBjb21wb25lbnQgdG8gYSBnbG9iYWwgc3RvcmUuXG4gIFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IHJlYWN0LXJlZHV4IGRvZXMgYnV0IHVzZXMgb3VyIGdsb2JhbCBzdG9yZSBzb1xuICBjYW4gc2hhcmUgc3RhdGUgd2l0aCBvdGhlciBSZWFjdCBtb3VudCBwb2ludHMgb3IgYW55dGhpbmcgdGhhdCB1c2VzIHRoZVxuICBzdG9yZS5cbiAgLSBzZWxlY3RvcnMgaXMgYW4gb2JqZWN0IHdoZXJlIGtleXMgYXJlIHlvdXIgcHJvcCBuYW1lcyBhbmQgdmFsdWVzIGFyZSB5b3VyIHNlbGVjdFxuICBmdW5jdGlvbnMgdGhhdCB3b3JrIG9uIHRoZSBzdG9yZSB0byByZXRyaWV2ZSB0aGUgc3RhdGUgeW91IGFyZSBpbnRlcmVzdGVkIGluXG4gIC0gaW5pdGlhbCBzdGF0ZSBpcyBzZXQgaW4gdXNlRWZmZWN0IHNvIHRoZSB3cmFwcGVkIGNvbXBvbmVudCBuZWVkcyB0byBoYW5kbGUgaXQncyBwcm9wcyBzZXQgdG8gdW5kZWZpbmVkIGluaXRpYWxseVxuKi9cblxuZXhwb3J0IGNvbnN0IENvbm5lY3RTdGF0ZVdyYXBwZXIgPSAoQ29tcG9uZW50LCBzZWxlY3RvcnMpID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgY29uc3Qgc2V0U3RhdGVGb3JLZXkgPSAoa2V5KSA9PiAoc3RvcmVTdGF0ZSkgPT4gc2V0U3RhdGUoKCkgPT4gKHsgW2tleV06IHN0b3JlU3RhdGUgfSkpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc3RvcmUgPSBnZXRSZW1vdGVEYXRhU3RvcmUoKTtcbiAgICBjb25zdCByZXNvbHZlZFN0YXRlID0gT2JqZWN0LmtleXMoc2VsZWN0b3JzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiAoeyAuLi5hY2MsIFtrZXldOiBzZWxlY3RvcnNba2V5XShzdG9yZSkgfSksIHt9KTtcblxuICAgIC8vIFNldCBpbml0aWFsIHN0YXRlXG4gICAgc2V0U3RhdGUocmVzb2x2ZWRTdGF0ZSk7XG5cbiAgICAvLyBDcmVhdGUgYSBzdG9yZSBzdWJzY3JpcHRpb24gZm9yIGVhY2ggc2VsZWN0b3IuIERlcGVuZGluZyBvbiB5b3VyIHVzZSBjYXNlLCB0aGlzIGNhbiBiZSBpbmVmZmljaWVudC5cbiAgICAvLyBXaGVuIG9wdGltaXNpbmcgZm9yIHJlbmRlcnMsIGxvb2sgZm9yIHdpbnMgd2l0aCBzZWxlY3RvcnMgYmV0dGVyIGZvciB5b3VyIHVzZSBhbmQgdXNpbmcgY29ubmVjdFN0YXRlIGRpcmVjdGx5LlxuICAgIE9iamVjdC5rZXlzKHNlbGVjdG9ycykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25uZWN0U3RhdGUoc2VsZWN0b3JzW2tleV0sIHNldFN0YXRlRm9yS2V5KGtleSkpO1xuICAgIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgV3JhcHBlZENvbXBvbmVudCA9IChwcm9wcykgPT4gPENvbXBvbmVudCB7Li4ucHJvcHN9IHsuLi5zdGF0ZX0gLz47XG5cbiAgcmV0dXJuIFdyYXBwZWRDb21wb25lbnQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb25uZWN0U3RhdGVXcmFwcGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IERPTVB1cmlmeSBmcm9tIFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgVCBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIm5hbm9pZC9ub24tc2VjdXJlXCI7XG5cbmltcG9ydCB7IGdldFJlbW90ZURhdGFTdG9yZSB9IGZyb20gXCIuLi9yZW1vdGUtZGF0YS1zdG9yZVwiO1xuaW1wb3J0IENvbm5lY3RTdGF0ZVdyYXBwZXIgZnJvbSBcIi4uL0Nvbm5lY3RTdGF0ZVdyYXBwZXIvY29tcG9uZW50LmpzeFwiO1xuaW1wb3J0IEljb24gZnJvbSBcIi4uL0ljb24vY29tcG9uZW50LmpzeFwiO1xuXG5jb25zdCBSRURVQ0VSX0tFWSA9IFwiZmxhc2hlc1wiO1xuY29uc3QgRkxBU0hfREFUQV9JRCA9IFwidWktZmxhc2hlc1wiO1xuXG5jb25zdCBpbml0aWFsU3RhdGUgPSB7IGl0ZW1zOiBbXSB9O1xuXG5jb25zdCByZWR1Y2VyRmxhc2hlcyA9IHtcbiAgW1JFRFVDRVJfS0VZXTogKHN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIFwiZmxhc2gvcHVzaFwiOiB7XG4gICAgICAgIGNvbnN0IGZsYXNoZXMgPSBBcnJheS5pc0FycmF5KGFjdGlvbi5wYXlsb2FkKSA/IGFjdGlvbi5wYXlsb2FkIDogW2FjdGlvbi5wYXlsb2FkXTtcbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IFsuLi5zdGF0ZS5pdGVtcywgLi4uZmxhc2hlc10gfTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gIH0sXG59O1xuXG5jb25zdCBzZWxlY3RGbGFzaGVzID0gKHN0b3JlKSA9PiBzdG9yZS5nZXRTdGF0ZSgpW1JFRFVDRVJfS0VZXTtcblxuY29uc3QgRmxhc2hUID0ge1xuICB0eXBlOiBULm9uZU9mKFtcImVycm9yXCIsIFwic3VjY2Vzc1wiLCBcIm5vdGljZVwiLCBcImluZm9cIiwgXCJhbGVydFwiXSksXG4gIGNvbnRlbnQ6IFQuc3RyaW5nLFxufTtcblxuY29uc3QgRkxBU0hfQkdfQ09MT1IgPSB7XG4gIGVycm9yOiBcImJnLWd1aS1lcnJvclwiLFxuICBzdWNjZXNzOiBcImJnLXppbmd5LWdyZWVuXCIsXG4gIG5vdGljZTogXCJiZy1lbGVjdHJpYy1jeWFuXCIsXG4gIGluZm86IFwiYmctZWxlY3RyaWMtY3lhblwiLFxuICBhbGVydDogXCJiZy1hY3RpdmUtb3JhbmdlXCIsXG59O1xuXG5jb25zdCBGTEFTSF9URVhUX0NPTE9SID0ge1xuICBlcnJvcjogXCJ0ZXh0LXdoaXRlXCIsXG4gIHN1Y2Nlc3M6IFwidGV4dC1jb29sLWJsYWNrXCIsXG4gIG5vdGljZTogXCJ0ZXh0LWNvb2wtYmxhY2tcIixcbiAgaW5mbzogXCJ0ZXh0LWNvb2wtYmxhY2tcIixcbiAgYWxlcnQ6IFwidGV4dC13aGl0ZVwiLFxufTtcblxuY29uc3QgQVVUT19ISURFID0gW1wic3VjY2Vzc1wiLCBcImluZm9cIiwgXCJub3RpY2VcIl07XG5jb25zdCBBVVRPX0hJREVfVElNRSA9IDgwMDA7XG5cbmNvbnN0IHVzZUF1dG9IaWRlID0gKHR5cGUsIGNsb3NlRmxhc2gpID0+IHtcbiAgY29uc3QgdGltZW91dElkID0gdXNlUmVmKG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKEFVVE9fSElERS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgdGltZW91dElkLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY2xvc2VGbGFzaCgpO1xuICAgICAgfSwgQVVUT19ISURFX1RJTUUpO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAodGltZW91dElkLmN1cnJlbnQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZC5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG59O1xuXG5jb25zdCBGbGFzaCA9ICh7IGlkLCB0eXBlLCBjb250ZW50LCByZW1vdmVGbGFzaCB9KSA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgW2Nsb3NlZCwgc2V0Q2xvc2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZsYXNoSGVpZ2h0LCBzZXRGbGFzaEhlaWdodF0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgW3RyaWdnZXJFbnRyeUFuaW1hdGlvbiwgc2V0VHJpZ2dlckVudHJ5QW5pbWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZUZsYXNoID0gKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgc2V0Rmxhc2hIZWlnaHQocmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICBzZXRDbG9zZWQodHJ1ZSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHJlbW92ZUZsYXNoKGlkKTtcbiAgICB9LCAxMDApO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRUcmlnZ2VyRW50cnlBbmltYXRpb24odHJ1ZSksIFtdKTtcbiAgdXNlQXV0b0hpZGUodHlwZSwgY2xvc2VGbGFzaCk7XG5cbiAgY29uc3QgYW5pbWF0ZUVudHJ5ID0gdHJpZ2dlckVudHJ5QW5pbWF0aW9uICYmICFjbG9zZWQ7XG5cbiAgbGV0IHN0eWxlO1xuXG4gIGlmIChmbGFzaEhlaWdodCAmJiAhY2xvc2VkKSB7XG4gICAgc3R5bGUgPSB7IGhlaWdodDogYCR7Zmxhc2hIZWlnaHR9cHhgIH07XG4gIH0gZWxzZSBpZiAoY2xvc2VkKSB7XG4gICAgc3R5bGUgPSB7IGhlaWdodDogMCwgbWFyZ2luVG9wOiAwLCB6SW5kZXg6IC0xIH07XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUgPSB7fTtcbiAgfVxuXG4gIGNvbnN0IHNhZmVDb250ZW50ID0gRE9NUHVyaWZ5LnNhbml0aXplKGNvbnRlbnQsIHtcbiAgICBBTExPV0VEX1RBR1M6IFtcImFcIl0sXG4gICAgQUxMT1dFRF9BVFRSOiBbXCJocmVmXCIsIFwiZGF0YS1tZXRob2RcIiwgXCJyZWxcIl0sXG4gIH0pO1xuXG4gIGNvbnN0IHdpdGhJY29ucyA9IHtcbiAgICBub3RpY2U6IFwiaWNvbi1ndWktYWJseS1iYWRnZVwiLFxuICAgIHN1Y2Nlc3M6IFwiaWNvbi1ndWktdGlja1wiLFxuICAgIGVycm9yOiBcImljb24tZ3VpLXdhcm5pbmdcIixcbiAgICBhbGVydDogXCJpY29uLWd1aS13YXJuaW5nXCIsXG4gIH07XG5cbiAgY29uc3QgaWNvbkNvbG9yID0ge1xuICAgIG5vdGljZTogXCJ0ZXh0LWNvb2wtYmxhY2tcIixcbiAgICBzdWNjZXNzOiBcInRleHQtY29vbC1ibGFja1wiLFxuICAgIGVycm9yOiBcInRleHQtd2hpdGVcIixcbiAgICBhbGVydDogXCJ0ZXh0LXdoaXRlXCIsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17YHVpLWZsYXNoLW1lc3NhZ2UgdWktZ3JpZC1weCAke2FuaW1hdGVFbnRyeSA/IFwidWktZmxhc2gtbWVzc2FnZS1lbnRlclwiIDogXCJcIn1gfSBzdHlsZT17c3R5bGV9IHJlZj17cmVmfSBkYXRhLWlkPVwidWktZmxhc2hcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtGTEFTSF9CR19DT0xPUlt0eXBlXX0gcC0zMiBmbGV4IGFsaWduLWNlbnRlciByb3VuZGVkIHNoYWRvdy1jb250YWluZXItc3VidGxlYH0+XG4gICAgICAgIHt3aXRoSWNvbnNbdHlwZV0gJiYgPEljb24gbmFtZT17d2l0aEljb25zW3R5cGVdfSBjb2xvcj17aWNvbkNvbG9yW3R5cGVdfSBzaXplPVwiMS41cmVtXCIgYWRkaXRpb25hbENTUz1cIm1yLTE2IHNlbGYtYmFzZWxpbmVcIiAvPn1cbiAgICAgICAgPHAgY2xhc3NOYW1lPXtgdWktZmxhc2gtdGV4dCAke0ZMQVNIX1RFWFRfQ09MT1JbdHlwZV19YH0gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBzYWZlQ29udGVudCB9fSAvPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJwLTAgbWwtYXV0byBzZWxmLXN0YXJ0IGZvY3VzOm91dGxpbmUtbm9uZVwiIG9uQ2xpY2s9e2Nsb3NlRmxhc2h9PlxuICAgICAgICAgIDxJY29uIG5hbWU9XCJpY29uLWd1aS1jbG9zZVwiIGNvbG9yPXtpY29uQ29sb3JbdHlwZV19IHNpemU9XCIxLjVyZW1cIiBhZGRpdGlvbmFsQ1NTPVwidHJhbnNpdGlvbi1jb2xvcnNcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRmxhc2gucHJvcFR5cGVzID0ge1xuICAuLi5GbGFzaFQsXG59O1xuXG5jb25zdCBGbGFzaGVzID0gKHsgZmxhc2hlcyB9KSA9PiB7XG4gIGNvbnN0IFtmbGFzaGVzV2l0aElkcywgc2V0Rmxhc2hlc1dpdGhJZHNdID0gdXNlU3RhdGUoW10pO1xuXG4gIGNvbnN0IHJlbW92ZUZsYXNoID0gKGZsYXNoSWQpID0+IHNldEZsYXNoZXNXaXRoSWRzKChpdGVtcykgPT4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkICE9PSBmbGFzaElkKSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGbGFzaGVzV2l0aElkcygoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBbLi4uc3RhdGUsIC4uLihmbGFzaGVzPy5pdGVtcyB8fCBbXSkubWFwKChmbGFzaCkgPT4gKHsgLi4uZmxhc2gsIGlkOiBuYW5vaWQoKSwgcmVtb3ZlZDogZmFsc2UgfSkpXTtcbiAgICB9KTtcbiAgfSwgW2ZsYXNoZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwidWktZmxhc2hcIiBkYXRhLWlkPXtGTEFTSF9EQVRBX0lEfT5cbiAgICAgIHtmbGFzaGVzV2l0aElkc1xuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5yZW1vdmVkKVxuICAgICAgICAubWFwKChmbGFzaCkgPT4gKFxuICAgICAgICAgIDxGbGFzaCByZW1vdmVGbGFzaD17cmVtb3ZlRmxhc2h9IGtleT17Zmxhc2guaWR9IHsuLi5mbGFzaH0gLz5cbiAgICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5GbGFzaGVzLnByb3BUeXBlcyA9IHtcbiAgZmxhc2hlczogVC5zaGFwZSh7IGl0ZW1zOiBULmFycmF5T2YoVC5zaGFwZShGbGFzaFQpKSB9KSxcbn07XG5cbmNvbnN0IEJhY2tlbmRGbGFzaGVzID0gKHsgZmxhc2hlcyB9KSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRGbGFzaGVzID1cbiAgICAgIGZsYXNoZXMubWFwKChmbGFzaCkgPT4ge1xuICAgICAgICBjb25zdCBbdHlwZSwgY29udGVudF0gPSBmbGFzaDtcbiAgICAgICAgcmV0dXJuIHsgdHlwZSwgY29udGVudCB9O1xuICAgICAgfSkgfHwgW107XG5cbiAgICBpZiAodHJhbnNmb3JtZWRGbGFzaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHN0b3JlID0gZ2V0UmVtb3RlRGF0YVN0b3JlKCk7XG5cbiAgICAgIHN0b3JlLmRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogXCJmbGFzaC9wdXNoXCIsXG4gICAgICAgIHBheWxvYWQ6IHRyYW5zZm9ybWVkRmxhc2hlcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IFdyYXBwZWRGbGFzaGVzID0gQ29ubmVjdFN0YXRlV3JhcHBlcihGbGFzaGVzLCB7IGZsYXNoZXM6IHNlbGVjdEZsYXNoZXMgfSk7XG5cbiAgcmV0dXJuIDxXcmFwcGVkRmxhc2hlcyAvPjtcbn07XG5cbkJhY2tlbmRGbGFzaGVzLnByb3BUeXBlcyA9IHtcbiAgZmxhc2hlczogVC5hcnJheU9mKFQuYXJyYXlPZihULnN0cmluZykpLFxufTtcblxuZXhwb3J0IHsgcmVkdWNlckZsYXNoZXMsIEZMQVNIX0RBVEFfSUQsIEZsYXNoZXMgfTtcbmV4cG9ydCBkZWZhdWx0IEJhY2tlbmRGbGFzaGVzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFQgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuY29uc3QgSWNvbiA9ICh7IG5hbWUsIHNpemUgPSBcIjAuNzVyZW1cIiwgY29sb3IgPSBcIlwiLCBhZGRpdGlvbmFsQ1NTID0gXCJcIiwgLi4uYWRkaXRpb25hbEF0dHJpYnV0ZXMgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzdmcgY2xhc3NOYW1lPXtgJHtjb2xvcn0gJHthZGRpdGlvbmFsQ1NTfWB9IHN0eWxlPXt7IHdpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemUgfX0gey4uLmFkZGl0aW9uYWxBdHRyaWJ1dGVzfT5cbiAgICAgIDx1c2UgeGxpbmtIcmVmPXtgI3Nwcml0ZS0ke25hbWV9YH0gLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn07XG5cbkljb24ucHJvcFR5cGVzID0ge1xuICBuYW1lOiBULnN0cmluZy5pc1JlcXVpcmVkLFxuICBzaXplOiBULnN0cmluZyxcbiAgY29sb3I6IFQuc3RyaW5nLFxuICBhZGRpdGlvbmFsQ1NTOiBULnN0cmluZyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEljb247XG4iLCJleHBvcnQgY29uc3QgcXVlcnlJZCA9ICh2YWwsIHJvb3QgPSBkb2N1bWVudCkgPT5cbiAgcm9vdC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1pZD0ke3ZhbH1dYCk7XG5cbmV4cG9ydCBjb25zdCBxdWVyeUlkQWxsID0gKHZhbCwgcm9vdCA9IGRvY3VtZW50KSA9PlxuICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWlkPSR7dmFsfV1gKTtcbiIsImltcG9ydCB7IGNyZWF0ZVN0b3JlLCBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcblxuZXhwb3J0IGNvbnN0IGF0dGFjaFN0b3JlVG9XaW5kb3cgPSAoc3RvcmUpID0+IHtcbiAgd2luZG93LkFibHlVaSA9IHdpbmRvdy5BYmx5VWkgfHwge307XG4gIHdpbmRvdy5BYmx5VWkuUmVtb3RlRGF0YVN0b3JlID0gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVtb3RlRGF0YVN0b3JlID0gKCkgPT4ge1xuICBpZiAoIXdpbmRvdy5BYmx5VWkuUmVtb3RlRGF0YVN0b3JlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUmVtb3RlIHN0b3JlIHdhcyBjYWxsZWQgYmVmb3JlIG9uZSB3YXMgY3JlYXRlZFwiKTtcbiAgfVxuXG4gIHJldHVybiB3aW5kb3cuQWJseVVpLlJlbW90ZURhdGFTdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25uZWN0U3RhdGUgPSAoc2VsZWN0b3IsIHNldFN0YXRlKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0UmVtb3RlRGF0YVN0b3JlKCk7XG4gIGxldCBjYWNoZWRPbGRTdGF0ZSA9IHNlbGVjdG9yKHN0b3JlKTtcblxuICBzdG9yZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIGNvbnN0IG5ld1N0YXRlID0gc2VsZWN0b3Ioc3RvcmUpO1xuXG4gICAgLy8gRG8gbm90aGluZywgc3RhdGUgaXMgdGhlIHNhbWVcbiAgICBpZiAobmV3U3RhdGUgPT09IGNhY2hlZE9sZFN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY2FjaGVkT2xkU3RhdGUgPSBuZXdTdGF0ZTtcbiAgICBzZXRTdGF0ZShuZXdTdGF0ZSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVJlbW90ZURhdGFTdG9yZSA9IChyZWR1Y2VycykgPT5cbiAgY3JlYXRlU3RvcmUoY29tYmluZVJlZHVjZXJzKHJlZHVjZXJzKSk7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfZG9tcHVyaWZ5X187IiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX2pzX2Nvb2tpZV9fOyIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9sb2Rhc2hfdGhyb3R0bGVfXzsiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfcHJvcF90eXBlc19fOyIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9yZWFjdF9fOyIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9yZWR1eF9fOyIsImxldCB1cmxBbHBoYWJldCA9XG4gICd1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0J1xuZXhwb3J0IGxldCBjdXN0b21BbHBoYWJldCA9IChhbHBoYWJldCwgZGVmYXVsdFNpemUgPSAyMSkgPT4ge1xuICByZXR1cm4gKHNpemUgPSBkZWZhdWx0U2l6ZSkgPT4ge1xuICAgIGxldCBpZCA9ICcnXG4gICAgbGV0IGkgPSBzaXplXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgaWQgKz0gYWxwaGFiZXRbKE1hdGgucmFuZG9tKCkgKiBhbHBoYWJldC5sZW5ndGgpIHwgMF1cbiAgICB9XG4gICAgcmV0dXJuIGlkXG4gIH1cbn1cbmV4cG9ydCBsZXQgbmFub2lkID0gKHNpemUgPSAyMSkgPT4ge1xuICBsZXQgaWQgPSAnJ1xuICBsZXQgaSA9IHNpemVcbiAgd2hpbGUgKGktLSkge1xuICAgIGlkICs9IHVybEFscGhhYmV0WyhNYXRoLnJhbmRvbSgpICogNjQpIHwgMF1cbiAgfVxuICByZXR1cm4gaWRcbn1cbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgXCIuL2NvbXBvbmVudC5jc3NcIjtcbmltcG9ydCBDb29raWUgZnJvbSBcImpzLWNvb2tpZVwiO1xuaW1wb3J0IHRocm90dGxlIGZyb20gXCJsb2Rhc2gudGhyb3R0bGVcIjtcblxuaW1wb3J0IHsgcXVlcnlJZCB9IGZyb20gXCIuLi9kb20tcXVlcnlcIjtcbmltcG9ydCB7IEZMQVNIX0RBVEFfSUQgfSBmcm9tIFwiLi4vRmxhc2gvY29tcG9uZW50LmpzeFwiO1xuXG5jb25zdCBDT09LSUVfRVhQSVJZID0gOTA7XG5jb25zdCBDT0xMQVBTRV9UUklHR0VSX0RJU1RBTkNFID0gNTtcbmNvbnN0IFNDUk9MTF9MSVNURU5FUl9USFJPVFRMRSA9IDEwMDtcbmNvbnN0IFJFU0laRV9MSVNURU5FUl9USFJPVFRMRSA9IDEwMDtcblxuY29uc3QgaXNNZFZpZXdwb3J0ID0gKCkgPT4gIXdpbmRvdy5tYXRjaE1lZGlhKGAobWluLXdpZHRoOiA2NXJlbSlgKS5tYXRjaGVzO1xuXG5jb25zdCBhZGp1c3RGbGFzaE1hcmdpbiA9IChvcGVuKSA9PiB7XG4gIC8vIEhBQ0sgQUxFUlRcbiAgLy8gQWRkIG1hcmdpbiB0byBmbGFzaGVzIHdoZW4gb3BlbmluZyB0aGUgbm90aWNlLlxuICAvLyBGbGFzaGVzIGFyZSByZWFjdCBjb21wb25lbnRzIGFuZCB0aGlzIG5vdGljZSBuZWVkcyB0byB3b3JrIGFzIGEgdmlldy1jb21wb25lbnQgYW5kIHJlYWN0IGNvbXBvbmVudC5cbiAgLy8gV2UgY291bGQgZG8gdGhpcyB3aXRoIHJlZHV4IGJ1dCB0aGVuIHdlIHBvdGVudGlhbGx5IHVwZGF0ZSBzdGF0ZSBvbiBldmVyeSBzY3JvbGwgZXZlbnQsIHdoaWNoXG4gIC8vIGV2ZW4gd2l0aCBkZWJvdW5jZSB3aWxsIGRlcGxhdGUgb3VyIGZyYW1lIGJ1ZGdldC5cblxuICBjb25zdCBmbGFzaCA9IHF1ZXJ5SWQoRkxBU0hfREFUQV9JRCk7XG5cbiAgaWYgKGZsYXNoKSB7XG4gICAgZmxhc2guc3R5bGUubWFyZ2luVG9wID0gb3BlbiA/IGA0cmVtYCA6IG51bGw7XG4gIH1cbn07XG5cbmNvbnN0IGhpZGVPbk1vYmlsZSA9IChiYW5uZXJDb250YWluZXIpID0+IHtcbiAgaWYgKGlzTWRWaWV3cG9ydCgpKSB7XG4gICAgYmFubmVyQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgfSBlbHNlIHtcbiAgICBiYW5uZXJDb250YWluZXIuc3R5bGUuZGlzcGxheSA9IG51bGw7XG4gIH1cbn07XG5cbmNvbnN0IGhpZGVOb3RpY2UgPSAoYmFubmVyQ29udGFpbmVyKSA9PiB7XG4gIGJhbm5lckNvbnRhaW5lci5zdHlsZS5tYXhIZWlnaHQgPSAwO1xuICBiYW5uZXJDb250YWluZXIuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xuXG4gIGFkanVzdEZsYXNoTWFyZ2luKGZhbHNlKTtcbn07XG5cbmNvbnN0IHNob3dOb3RpY2UgPSAoYmFubmVyQ29udGFpbmVyKSA9PiB7XG4gIGJhbm5lckNvbnRhaW5lci5zdHlsZS5tYXhIZWlnaHQgPSBudWxsO1xuICBiYW5uZXJDb250YWluZXIuc3R5bGUub3ZlcmZsb3cgPSBudWxsO1xuXG4gIGFkanVzdEZsYXNoTWFyZ2luKHRydWUpO1xufTtcblxuY29uc3Qgc2V0dXBSZW1lbWJlckNsb3NlZCA9IChjb29raWVJZCwgbm90aWNlSWQpID0+IHtcbiAgY29uc3QgY29va2llID0gQ29va2llLmdldChjb29raWVJZCkgfHwgXCJcIjtcblxuICBDb29raWUuc2V0KGNvb2tpZUlkLCBgJHtjb29raWUucmVwbGFjZShgJHtub3RpY2VJZH0sYCwgXCJcIikgKyBub3RpY2VJZH0sYCwge1xuICAgIGV4cGlyZXM6IENPT0tJRV9FWFBJUlksXG4gIH0pO1xufTtcblxuY29uc3QgaGFzQmVlbkNsb3NlZEJlZm9yZSA9IChjb29raWVJZCwgbm90aWNlSWQpID0+XG4gIChDb29raWUuZ2V0KGNvb2tpZUlkKSB8fCBcIlwiKS5pbmNsdWRlcyhub3RpY2VJZCk7XG5cbmNvbnN0IHNldHVwTm90aWNlQ29sbGFwc2UgPSAoYmFubmVyQ29udGFpbmVyKSA9PiB7XG4gIGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdy5zY3JvbGxZO1xuXG4gIGlmIChzY3JvbGxUb3AgPiBDT0xMQVBTRV9UUklHR0VSX0RJU1RBTkNFKSB7XG4gICAgaGlkZU5vdGljZShiYW5uZXJDb250YWluZXIpO1xuICB9XG5cbiAgY29uc3QgbGlzdGVuZXIgPSB0aHJvdHRsZSgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gd2luZG93LnNjcm9sbFk7XG5cbiAgICBpZiAoc2Nyb2xsVG9wID4gQ09MTEFQU0VfVFJJR0dFUl9ESVNUQU5DRSkge1xuICAgICAgaGlkZU5vdGljZShiYW5uZXJDb250YWluZXIpO1xuICAgIH0gZWxzZSBpZiAoYmFubmVyQ29udGFpbmVyLnN0eWxlLm92ZXJmbG93KSB7XG4gICAgICBzaG93Tm90aWNlKGJhbm5lckNvbnRhaW5lcik7XG4gICAgfVxuICB9LCBTQ1JPTExfTElTVEVORVJfVEhST1RUTEUpO1xuXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgbGlzdGVuZXIpO1xuXG4gIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIGxpc3RlbmVyKTtcbn07XG5cbmNvbnN0IHNldHVwQ2xvc2VCdG4gPSAoXG4gIGJhbm5lckNvbnRhaW5lcixcbiAgY29va2llSWQsXG4gIG5vdGljZUlkLFxuICBjb2xsYXBzZVVubW91bnRMaXN0ZW5lcnNcbikgPT4ge1xuICBjb25zdCBjbG9zZUJ0biA9IGJhbm5lckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFwiYnV0dG9uXCIpO1xuXG4gIGlmICghY2xvc2VCdG4pIHJldHVybiAoKSA9PiB7fTtcblxuICBjb25zdCBsaXN0ZW5lciA9ICgpID0+IHtcbiAgICBpZiAoY29va2llSWQgJiYgbm90aWNlSWQpIHNldHVwUmVtZW1iZXJDbG9zZWQoY29va2llSWQsIG5vdGljZUlkKTtcblxuICAgIGhpZGVOb3RpY2UoYmFubmVyQ29udGFpbmVyKTtcbiAgICBjb2xsYXBzZVVubW91bnRMaXN0ZW5lcnMoKTtcbiAgfTtcblxuICBjbG9zZUJ0bi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgbGlzdGVuZXIpO1xuXG4gIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgbGlzdGVuZXIpO1xufTtcblxuY29uc3QgcmVzaXplSGFuZGxlciA9IChiYW5uZXJDb250YWluZXIpID0+IHtcbiAgY29uc3QgaGFuZGxlciA9IHRocm90dGxlKCgpID0+IHtcbiAgICBoaWRlT25Nb2JpbGUoYmFubmVyQ29udGFpbmVyKTtcbiAgfSwgUkVTSVpFX0xJU1RFTkVSX1RIUk9UVExFKTtcblxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBoYW5kbGVyKTtcblxuICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgaGFuZGxlcik7XG59O1xuXG5jb25zdCBOb3RpY2UgPSAoeyBiYW5uZXJDb250YWluZXIsIGNvb2tpZUlkLCBub3RpY2VJZCwgb3B0aW9ucyB9KSA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gKCkgPT4ge307XG5cbiAgaWYgKCFiYW5uZXJDb250YWluZXIpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIkEgTm90aWNlIGNvbXBvbmVudCB3YXMgaW5pdGl0ZWQgYnV0IG5vIG5vdGljZSBjb250YWluZXIgd2FzIGZvdW5kLlwiXG4gICAgKTtcbiAgICByZXR1cm4gKCkgPT4ge307XG4gIH1cblxuICBpZiAoaGFzQmVlbkNsb3NlZEJlZm9yZShjb29raWVJZCwgbm90aWNlSWQpKSByZXR1cm4gKCkgPT4ge307XG5cbiAgaGlkZU9uTW9iaWxlKGJhbm5lckNvbnRhaW5lcik7XG4gIHNob3dOb3RpY2UoYmFubmVyQ29udGFpbmVyKTtcblxuICBjb25zdCBvcHRzID0geyBjb2xsYXBzZTogdHJ1ZSwgLi4ub3B0aW9ucyB9O1xuXG4gIGNvbnN0IGNvbGxhcHNlVW5tb3VudExpc3RlbmVycyA9IG9wdHMuY29sbGFwc2VcbiAgICA/IHNldHVwTm90aWNlQ29sbGFwc2UoYmFubmVyQ29udGFpbmVyKVxuICAgIDogKCkgPT4ge307XG5cbiAgY29uc3QgY2xvc2VCdG5Vbm1vdW50TGlzdGVuZXJzID0gc2V0dXBDbG9zZUJ0bihcbiAgICBiYW5uZXJDb250YWluZXIsXG4gICAgY29va2llSWQsXG4gICAgbm90aWNlSWQsXG4gICAgY29sbGFwc2VVbm1vdW50TGlzdGVuZXJzXG4gICk7XG5cbiAgY29uc3QgcmVzaXplVW5tb3VudExpc3RlbmVyID0gcmVzaXplSGFuZGxlcihiYW5uZXJDb250YWluZXIpO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgW1xuICAgICAgY2xvc2VCdG5Vbm1vdW50TGlzdGVuZXJzLFxuICAgICAgY29sbGFwc2VVbm1vdW50TGlzdGVuZXJzLFxuICAgICAgcmVzaXplVW5tb3VudExpc3RlbmVyLFxuICAgIF0uZm9yRWFjaCgodW5tb3VudCkgPT4gdW5tb3VudCgpKTtcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE5vdGljZTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29ubmVjdFN0YXRlIiwiZ2V0UmVtb3RlRGF0YVN0b3JlIiwiQ29ubmVjdFN0YXRlV3JhcHBlciIsIkNvbXBvbmVudCIsInNlbGVjdG9ycyIsInN0YXRlIiwic2V0U3RhdGUiLCJzZXRTdGF0ZUZvcktleSIsImtleSIsInN0b3JlU3RhdGUiLCJzdG9yZSIsInJlc29sdmVkU3RhdGUiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwiYWNjIiwiZm9yRWFjaCIsIldyYXBwZWRDb21wb25lbnQiLCJwcm9wcyIsInVzZVJlZiIsIkRPTVB1cmlmeSIsIlQiLCJuYW5vaWQiLCJJY29uIiwiUkVEVUNFUl9LRVkiLCJGTEFTSF9EQVRBX0lEIiwiaW5pdGlhbFN0YXRlIiwiaXRlbXMiLCJyZWR1Y2VyRmxhc2hlcyIsImFjdGlvbiIsInR5cGUiLCJmbGFzaGVzIiwiQXJyYXkiLCJpc0FycmF5IiwicGF5bG9hZCIsInNlbGVjdEZsYXNoZXMiLCJnZXRTdGF0ZSIsIkZsYXNoVCIsIm9uZU9mIiwiY29udGVudCIsInN0cmluZyIsIkZMQVNIX0JHX0NPTE9SIiwiZXJyb3IiLCJzdWNjZXNzIiwibm90aWNlIiwiaW5mbyIsImFsZXJ0IiwiRkxBU0hfVEVYVF9DT0xPUiIsIkFVVE9fSElERSIsIkFVVE9fSElERV9USU1FIiwidXNlQXV0b0hpZGUiLCJjbG9zZUZsYXNoIiwidGltZW91dElkIiwiaW5jbHVkZXMiLCJjdXJyZW50Iiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIkZsYXNoIiwiaWQiLCJyZW1vdmVGbGFzaCIsInJlZiIsImNsb3NlZCIsInNldENsb3NlZCIsImZsYXNoSGVpZ2h0Iiwic2V0Rmxhc2hIZWlnaHQiLCJ0cmlnZ2VyRW50cnlBbmltYXRpb24iLCJzZXRUcmlnZ2VyRW50cnlBbmltYXRpb24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJoZWlnaHQiLCJhbmltYXRlRW50cnkiLCJzdHlsZSIsIm1hcmdpblRvcCIsInpJbmRleCIsInNhZmVDb250ZW50Iiwic2FuaXRpemUiLCJBTExPV0VEX1RBR1MiLCJBTExPV0VEX0FUVFIiLCJ3aXRoSWNvbnMiLCJpY29uQ29sb3IiLCJfX2h0bWwiLCJwcm9wVHlwZXMiLCJGbGFzaGVzIiwiZmxhc2hlc1dpdGhJZHMiLCJzZXRGbGFzaGVzV2l0aElkcyIsImZsYXNoSWQiLCJmaWx0ZXIiLCJpdGVtIiwibWFwIiwiZmxhc2giLCJyZW1vdmVkIiwic2hhcGUiLCJhcnJheU9mIiwiQmFja2VuZEZsYXNoZXMiLCJ0cmFuc2Zvcm1lZEZsYXNoZXMiLCJsZW5ndGgiLCJkaXNwYXRjaCIsIldyYXBwZWRGbGFzaGVzIiwibmFtZSIsInNpemUiLCJjb2xvciIsImFkZGl0aW9uYWxDU1MiLCJhZGRpdGlvbmFsQXR0cmlidXRlcyIsIndpZHRoIiwiaXNSZXF1aXJlZCIsInF1ZXJ5SWQiLCJ2YWwiLCJyb290IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicXVlcnlJZEFsbCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJjcmVhdGVTdG9yZSIsImNvbWJpbmVSZWR1Y2VycyIsImF0dGFjaFN0b3JlVG9XaW5kb3ciLCJ3aW5kb3ciLCJBYmx5VWkiLCJSZW1vdGVEYXRhU3RvcmUiLCJFcnJvciIsInNlbGVjdG9yIiwiY2FjaGVkT2xkU3RhdGUiLCJzdWJzY3JpYmUiLCJuZXdTdGF0ZSIsImNyZWF0ZVJlbW90ZURhdGFTdG9yZSIsInJlZHVjZXJzIiwiQ29va2llIiwidGhyb3R0bGUiLCJDT09LSUVfRVhQSVJZIiwiQ09MTEFQU0VfVFJJR0dFUl9ESVNUQU5DRSIsIlNDUk9MTF9MSVNURU5FUl9USFJPVFRMRSIsIlJFU0laRV9MSVNURU5FUl9USFJPVFRMRSIsImlzTWRWaWV3cG9ydCIsIm1hdGNoTWVkaWEiLCJtYXRjaGVzIiwiYWRqdXN0Rmxhc2hNYXJnaW4iLCJvcGVuIiwiaGlkZU9uTW9iaWxlIiwiYmFubmVyQ29udGFpbmVyIiwiZGlzcGxheSIsImhpZGVOb3RpY2UiLCJtYXhIZWlnaHQiLCJvdmVyZmxvdyIsInNob3dOb3RpY2UiLCJzZXR1cFJlbWVtYmVyQ2xvc2VkIiwiY29va2llSWQiLCJub3RpY2VJZCIsImNvb2tpZSIsImdldCIsInNldCIsInJlcGxhY2UiLCJleHBpcmVzIiwiaGFzQmVlbkNsb3NlZEJlZm9yZSIsInNldHVwTm90aWNlQ29sbGFwc2UiLCJzY3JvbGxUb3AiLCJzY3JvbGxZIiwibGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldHVwQ2xvc2VCdG4iLCJjb2xsYXBzZVVubW91bnRMaXN0ZW5lcnMiLCJjbG9zZUJ0biIsInJlc2l6ZUhhbmRsZXIiLCJoYW5kbGVyIiwiTm90aWNlIiwib3B0aW9ucyIsImNvbnNvbGUiLCJ3YXJuIiwib3B0cyIsImNvbGxhcHNlIiwiY2xvc2VCdG5Vbm1vdW50TGlzdGVuZXJzIiwicmVzaXplVW5tb3VudExpc3RlbmVyIiwidW5tb3VudCJdLCJzb3VyY2VSb290IjoiIn0=
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("dompurify"),require("js-cookie"),require("lodash.throttle"),require("prop-types"),require("react"),require("redux")):"function"==typeof define&&define.amd?define([,,,,,],t):"object"==typeof exports?exports.AblyUi=t(require("dompurify"),require("js-cookie"),require("lodash.throttle"),require("prop-types"),require("react"),require("redux")):(e.AblyUi=e.AblyUi||{},e.AblyUi.Core=e.AblyUi.Core||{},e.AblyUi.Core.Notice=t(e[void 0],e[void 0],e[void 0],e[void 0],e[void 0],e[void 0]))}(this,(function(e,t,r,n,o,i){return(()=>{"use strict";var c={6357:t=>{t.exports=e},9349:e=>{e.exports=t},2040:e=>{e.exports=r},3474:e=>{e.exports=n},9281:e=>{e.exports=o},5044:e=>{e.exports=i}},a={};function u(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return c[e](r,r.exports,u),r.exports}u.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return u.d(t,{a:t}),t},u.d=(e,t)=>{for(var r in t)u.o(t,r)&&!u.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var l={};return(()=>{u.d(l,{default:()=>M});var e=u(9349),t=u.n(e),r=u(2040),n=u.n(r),o=u(9281),i=u.n(o),c=u(6357),a=u.n(c),s=u(3474),f=u.n(s);let p=(e=21)=>{let t="",r=e;for(;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t};u(5044);var d=["name","size","color","additionalCSS"];function y(){return y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},y.apply(this,arguments)}var m=function(e){var t=e.name,r=e.size,n=void 0===r?"0.75rem":r,o=e.color,c=void 0===o?"":o,a=e.additionalCSS,u=void 0===a?"":a,l=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,d);return i().createElement("svg",y({className:"".concat(c," ").concat(u),style:{width:n,height:n}},l),i().createElement("use",{xlinkHref:"#sprite-".concat(t)}))};m.propTypes={name:f().string.isRequired,size:f().string,color:f().string,additionalCSS:f().string};const b=m;function v(){return v=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},v.apply(this,arguments)}function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function g(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?h(Object(r),!0).forEach((function(t){w(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):h(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function O(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null!=r){var n,o,i=[],c=!0,a=!1;try{for(r=r.call(e);!(c=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);c=!0);}catch(e){a=!0,o=e}finally{try{c||null==r.return||r.return()}finally{if(a)throw o}}return i}}(e,t)||x(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function j(e){return function(e){if(Array.isArray(e))return S(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||x(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e,t){if(e){if("string"==typeof e)return S(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?S(e,t):void 0}}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var E="ui-flashes",P={items:[]},A=(w({},"flashes",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:P,t=arguments.length>1?arguments[1]:void 0;if("flash/push"===t.type){var r=Array.isArray(t.payload)?t.payload:[t.payload];return{items:[].concat(j(e.items),j(r))}}return e})),{type:f().oneOf(["error","success","notice","info","alert"]),content:f().string}),k={error:"bg-gui-error",success:"bg-zingy-green",notice:"bg-electric-cyan",info:"bg-electric-cyan",alert:"bg-active-orange"},q={error:"text-white",success:"text-cool-black",notice:"text-cool-black",info:"text-cool-black",alert:"text-white"},T=["success","info","notice"],C=function(e){var t=e.id,r=e.type,n=e.content,c=e.removeFlash,u=(0,o.useRef)(null),l=O((0,o.useState)(!1),2),s=l[0],f=l[1],p=O((0,o.useState)(0),2),d=p[0],y=p[1],m=O((0,o.useState)(!1),2),v=m[0],h=m[1],g=function(){u.current&&y(u.current.getBoundingClientRect().height),f(!0),setTimeout((function(){c(t)}),100)};(0,o.useEffect)((function(){return h(!0)}),[]),function(e,t){var r=(0,o.useRef)(null);(0,o.useEffect)((function(){return T.includes(e)&&(r.current=setTimeout((function(){t()}),8e3)),function(){r.current&&clearTimeout(r.current)}}),[])}(r,g);var w,j=v&&!s;w=d&&!s?{height:"".concat(d,"px")}:s?{height:0,marginTop:0,zIndex:-1}:{};var x=a().sanitize(n,{ALLOWED_TAGS:["a"],ALLOWED_ATTR:["href","data-method","rel"]}),S={notice:"icon-gui-ably-badge",success:"icon-gui-tick",error:"icon-gui-warning",alert:"icon-gui-warning"},E={notice:"text-cool-black",success:"text-cool-black",error:"text-white",alert:"text-white"};return i().createElement("div",{className:"ui-flash-message ui-grid-px ".concat(j?"ui-flash-message-enter":""),style:w,ref:u,"data-id":"ui-flash"},i().createElement("div",{className:"".concat(k[r]," p-32 flex align-center rounded shadow-container-subtle")},S[r]&&i().createElement(b,{name:S[r],color:E[r],size:"1.5rem",additionalCSS:"mr-16 self-baseline"}),i().createElement("p",{className:"ui-flash-text ".concat(q[r]),dangerouslySetInnerHTML:{__html:x}}),i().createElement("button",{type:"button",className:"p-0 ml-auto self-start focus:outline-none",onClick:g},i().createElement(b,{name:"icon-gui-close",color:E[r],size:"1.5rem",additionalCSS:"transition-colors"}))))};C.propTypes=g({},A);var L=function(e){var t=e.flashes,r=O((0,o.useState)([]),2),n=r[0],c=r[1],a=function(e){return c((function(t){return t.filter((function(t){return t.id!==e}))}))};return(0,o.useEffect)((function(){c((function(e){return[].concat(j(e),j(((null==t?void 0:t.items)||[]).map((function(e){return g(g({},e),{},{id:p(),removed:!1})}))))}))}),[t]),i().createElement("div",{className:"ui-flash","data-id":E},n.filter((function(e){return!e.removed})).map((function(e){return i().createElement(C,v({removeFlash:a,key:e.id},e))})))};L.propTypes={flashes:f().shape({items:f().arrayOf(f().shape(A))})};function z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function D(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}f().arrayOf(f().arrayOf(f().string));var I=function(e){var t=function(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:document).querySelector("[data-id=".concat(e,"]"))}(E);t&&(t.style.marginTop=e?"4rem":null)},N=function(e){window.matchMedia("(min-width: 65rem)").matches?e.style.display=null:e.style.display="none"},U=function(e){e.style.maxHeight=0,e.style.overflow="hidden",I(!1)},_=function(e){e.style.maxHeight=null,e.style.overflow=null,I(!0)};const M=function(e){var r=e.bannerContainer,o=e.cookieId,i=e.noticeId,c=e.options;if("undefined"==typeof window)return function(){};if(!r)return console.warn("A Notice component was initited but no notice container was found."),function(){};if(function(e,r){return(t().get(e)||"").includes(r)}(o,i))return function(){};N(r),_(r);var a=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?z(Object(r),!0).forEach((function(t){D(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):z(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({collapse:!0},c),u=a.collapse?function(e){window.scrollY>5&&U(e);var t=n()((function(){window.scrollY>5?U(e):e.style.overflow&&_(e)}),100);return document.addEventListener("scroll",t),function(){return document.removeEventListener("scroll",t)}}(r):function(){},l=function(e,r,n,o){var i=e.querySelector("button");if(!i)return function(){};var c=function(){r&&n&&function(e,r){var n=t().get(e)||"";t().set(e,"".concat(n.replace("".concat(r,","),"")+r,","),{expires:90})}(r,n),U(e),o()};return i.addEventListener("click",c),function(){return document.removeEventListener("click",c)}}(r,o,i,u),s=function(e){var t=n()((function(){N(e)}),100);return window.addEventListener("resize",t),function(){return window.removeEventListener("resize",t)}}(r);return function(){[l,u,s].forEach((function(e){return e()}))}}})(),l.default})()}));