@linzjs/lui 17.10.1 → 17.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/components/LuiAccordicard/LuiAccordicard.d.ts +1 -0
- package/dist/components/LuiAccordicardStatic/LuiAccordicardStatic.d.ts +1 -0
- package/dist/components/LuiFormElements/LuiCheckboxInput/LuiCheckboxInput.d.ts +1 -0
- package/dist/components/LuiForms/LuiComboSelect/LuiComboSelect.d.ts +2 -2
- package/dist/components/LuiListBox/LuiListBox.d.ts +33 -0
- package/dist/components/LuiListBox/LuiListBoxItem.d.ts +10 -0
- package/dist/components/LuiListBox/Renderers/CheckboxItemRenderer.d.ts +4 -0
- package/dist/components/LuiListBox/Renderers/DefaultItemRenderer.d.ts +3 -0
- package/dist/components/LuiListBox/Renderers/RadioItemRenderer.d.ts +4 -0
- package/dist/components/LuiListBox/helpers.d.ts +3 -0
- package/dist/components/LuiTabs/LuiTab/LuiTab.d.ts +1 -0
- package/dist/components/lol/MockBackendUtils.d.ts +85 -85
- package/dist/components/lol/handlers.d.ts +10 -10
- package/dist/index.js +858 -1010
- package/dist/index.js.map +1 -1
- package/dist/lui.css +70 -4
- package/dist/lui.css.map +1 -1
- package/dist/lui.esm.js +843 -995
- package/dist/lui.esm.js.map +1 -1
- package/dist/scss/Components/LuiAccordicard/LuiAccordicard.scss +40 -2
- package/dist/scss/Components/LuiAccordicardStatic/LuiAccordicardStatic.scss +40 -2
- package/package.json +9 -4
package/dist/lui.esm.js
CHANGED
|
@@ -7,177 +7,10 @@ import require$$1, { createPortal } from 'react-dom';
|
|
|
7
7
|
import lottie from 'lottie-web/build/player/lottie_light';
|
|
8
8
|
import { useQuery } from 'react-query';
|
|
9
9
|
|
|
10
|
-
function
|
|
11
|
-
var k, y, str='';
|
|
12
|
-
|
|
13
|
-
if (typeof mix === 'string' || typeof mix === 'number') {
|
|
14
|
-
str += mix;
|
|
15
|
-
} else if (typeof mix === 'object') {
|
|
16
|
-
if (Array.isArray(mix)) {
|
|
17
|
-
for (k=0; k < mix.length; k++) {
|
|
18
|
-
if (mix[k]) {
|
|
19
|
-
if (y = toVal(mix[k])) {
|
|
20
|
-
str && (str += ' ');
|
|
21
|
-
str += y;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
} else {
|
|
26
|
-
for (k in mix) {
|
|
27
|
-
if (mix[k]) {
|
|
28
|
-
str && (str += ' ');
|
|
29
|
-
str += k;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return str;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function clsx () {
|
|
39
|
-
var i=0, tmp, x, str='';
|
|
40
|
-
while (i < arguments.length) {
|
|
41
|
-
if (tmp = arguments[i++]) {
|
|
42
|
-
if (x = toVal(tmp)) {
|
|
43
|
-
str && (str += ' ');
|
|
44
|
-
str += x;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return str;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/*! *****************************************************************************
|
|
52
|
-
Copyright (c) Microsoft Corporation.
|
|
53
|
-
|
|
54
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
55
|
-
purpose with or without fee is hereby granted.
|
|
56
|
-
|
|
57
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
58
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
59
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
60
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
61
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
62
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
63
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
64
|
-
***************************************************************************** */
|
|
65
|
-
/* global Reflect, Promise */
|
|
66
|
-
|
|
67
|
-
var extendStatics = function(d, b) {
|
|
68
|
-
extendStatics = Object.setPrototypeOf ||
|
|
69
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
70
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
71
|
-
return extendStatics(d, b);
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
function __extends(d, b) {
|
|
75
|
-
if (typeof b !== "function" && b !== null)
|
|
76
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
77
|
-
extendStatics(d, b);
|
|
78
|
-
function __() { this.constructor = d; }
|
|
79
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
var __assign = function() {
|
|
83
|
-
__assign = Object.assign || function __assign(t) {
|
|
84
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
85
|
-
s = arguments[i];
|
|
86
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
87
|
-
}
|
|
88
|
-
return t;
|
|
89
|
-
};
|
|
90
|
-
return __assign.apply(this, arguments);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
function __rest(s, e) {
|
|
94
|
-
var t = {};
|
|
95
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
96
|
-
t[p] = s[p];
|
|
97
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
98
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
99
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
100
|
-
t[p[i]] = s[p[i]];
|
|
101
|
-
}
|
|
102
|
-
return t;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
106
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
107
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
108
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
109
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
110
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
111
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
function __generator(thisArg, body) {
|
|
116
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
117
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
118
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
119
|
-
function step(op) {
|
|
120
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
121
|
-
while (_) try {
|
|
122
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
123
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
124
|
-
switch (op[0]) {
|
|
125
|
-
case 0: case 1: t = op; break;
|
|
126
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
127
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
128
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
129
|
-
default:
|
|
130
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
131
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
132
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
133
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
134
|
-
if (t[2]) _.ops.pop();
|
|
135
|
-
_.trys.pop(); continue;
|
|
136
|
-
}
|
|
137
|
-
op = body.call(thisArg, _);
|
|
138
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
139
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
function __read(o, n) {
|
|
144
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
145
|
-
if (!m) return o;
|
|
146
|
-
var i = m.call(o), r, ar = [], e;
|
|
147
|
-
try {
|
|
148
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
149
|
-
}
|
|
150
|
-
catch (error) { e = { error: error }; }
|
|
151
|
-
finally {
|
|
152
|
-
try {
|
|
153
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
154
|
-
}
|
|
155
|
-
finally { if (e) throw e.error; }
|
|
156
|
-
}
|
|
157
|
-
return ar;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/** @deprecated */
|
|
161
|
-
function __spreadArrays() {
|
|
162
|
-
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
163
|
-
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
164
|
-
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
165
|
-
r[k] = a[j];
|
|
166
|
-
return r;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
function __spreadArray(to, from, pack) {
|
|
170
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
171
|
-
if (ar || !(i in from)) {
|
|
172
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
173
|
-
ar[i] = from[i];
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
177
|
-
}
|
|
10
|
+
function r$2(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r$2(e[t]))&&(n&&(n+=" "),n+=f);else for(t in e)e[t]&&(n&&(n+=" "),n+=t);return n}function clsx(){for(var e,t,f=0,n="";f<arguments.length;)(e=arguments[f++])&&(t=r$2(e))&&(n&&(n+=" "),n+=t);return n}
|
|
178
11
|
|
|
179
12
|
// START OF GENERATED FILE`;
|
|
180
|
-
|
|
13
|
+
let iconMap = {};
|
|
181
14
|
// @TODO This is a generated file, nothing is safe.
|
|
182
15
|
iconMap['ic_account_circle'] = (React__default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24" },
|
|
183
16
|
React__default.createElement("path", { d: "M12 19.219q1.594 0 3.352-.938T18 15.984q-.047-1.313-2.109-2.203T12 12.89t-3.891.867T6 15.984q.891 1.359 2.648 2.297t3.352.938zm0-14.203q-1.219 0-2.109.891T9 8.016t.891 2.109 2.109.891 2.109-.891T15 8.016t-.891-2.109T12 5.016zm0-3q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055T12 21.986t-7.055-2.93-2.93-7.055 2.93-7.055T12 2.016z" })));
|
|
@@ -475,10 +308,10 @@ iconMap['ic_zoom_out'] = (React__default.createElement("svg", { viewBox: "0 0 24
|
|
|
475
308
|
React__default.createElement("path", { d: "M19 13H5v-2h14v2Z" })));
|
|
476
309
|
iconMap['ic_zoom_previous'] = (React__default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
477
310
|
React__default.createElement("path", { d: "M6 6h2v12H6V6Zm12 12-8.5-6L18 6v12Zm-5.03-6L16 14.14V9.86L12.97 12Z" })));
|
|
478
|
-
|
|
311
|
+
const ICONS = iconMap;
|
|
479
312
|
// END OF GENERATED FILE
|
|
480
313
|
|
|
481
|
-
|
|
314
|
+
const ICON_SIZES = {
|
|
482
315
|
xs: 'LuiIcon--xs',
|
|
483
316
|
sm: 'LuiIcon--sm',
|
|
484
317
|
md: 'LuiIcon--md',
|
|
@@ -486,7 +319,7 @@ var ICON_SIZES = {
|
|
|
486
319
|
xl: 'LuiIcon--xl',
|
|
487
320
|
ns: 'LuiIcon--noSize',
|
|
488
321
|
};
|
|
489
|
-
|
|
322
|
+
const ICON_STATUS = {
|
|
490
323
|
none: '',
|
|
491
324
|
error: 'LuiIcon--error',
|
|
492
325
|
warning: 'LuiIcon--warning',
|
|
@@ -494,14 +327,13 @@ var ICON_STATUS = {
|
|
|
494
327
|
interactive: 'LuiIcon--interactive',
|
|
495
328
|
disabled: 'LuiIcon--disabled',
|
|
496
329
|
};
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
var iconSVG = ICONS[name];
|
|
330
|
+
const LuiIcon = ({ name, className, size = 'ns', title, alt, status = 'none', spanProps, }) => {
|
|
331
|
+
const iconSVG = ICONS[name];
|
|
500
332
|
if (!iconSVG) {
|
|
501
|
-
console.warn(
|
|
333
|
+
console.warn(`<LuiIcon>: No icon found for: ${iconSVG}`);
|
|
502
334
|
return null;
|
|
503
335
|
}
|
|
504
|
-
return (React.createElement("span",
|
|
336
|
+
return (React.createElement("span", { className: clsx('LuiIcon', className, size && ICON_SIZES[size], status && ICON_STATUS[status]), "data-icon": name, title: title, "aria-label": alt, ...spanProps }, iconSVG));
|
|
505
337
|
};
|
|
506
338
|
|
|
507
339
|
function getMaterialIconForLevel(level) {
|
|
@@ -516,85 +348,84 @@ function getMaterialIconForLevel(level) {
|
|
|
516
348
|
return 'error';
|
|
517
349
|
}
|
|
518
350
|
}
|
|
519
|
-
|
|
520
|
-
return (React__default.createElement("div", { className: clsx('lui-msg-banner-container', props.className ? props.className
|
|
351
|
+
const LuiBanner = (props) => {
|
|
352
|
+
return (React__default.createElement("div", { className: clsx('lui-msg-banner-container', props.className ? `${props.className}-bannerContainer` : '') },
|
|
521
353
|
React__default.createElement(LuiBannerContent, { level: props.level, className: props.className }, props.children)));
|
|
522
354
|
};
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
return (React__default.createElement("div", { className: clsx(
|
|
526
|
-
React__default.createElement(LuiIcon, { name:
|
|
355
|
+
const LuiBannerContent = (props) => {
|
|
356
|
+
let materialIcon = getMaterialIconForLevel(props.level);
|
|
357
|
+
return (React__default.createElement("div", { className: clsx(`lui-msg-${props.level} lui-msg-dynamic-banner`, props.className) },
|
|
358
|
+
React__default.createElement(LuiIcon, { name: `ic_${materialIcon}`, alt: `${props.level} banner icon`, size: "lg", className: "lui-msg-status-icon" }),
|
|
527
359
|
React__default.createElement("div", null, props.children)));
|
|
528
360
|
};
|
|
529
361
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
return display ? (React__default.createElement("div", { className: clsx(
|
|
534
|
-
React__default.createElement(LuiIcon, { name:
|
|
362
|
+
const LuiStaticMessage = (props) => {
|
|
363
|
+
const [display, setDisplay] = useState(true);
|
|
364
|
+
let materialIcon = getMaterialIconForLevel(props.level);
|
|
365
|
+
return display ? (React__default.createElement("div", { className: clsx(`lui-msg-${props.level}`, props.className), "data-testid": 'static-message-container' },
|
|
366
|
+
React__default.createElement(LuiIcon, { name: `ic_${materialIcon}`, alt: `${props.level} static icon`, size: "lg", className: "lui-msg-status-icon" }),
|
|
535
367
|
props.children,
|
|
536
|
-
(props.closable === undefined || props.closable) && (React__default.createElement("button", { "aria-label": "Close dialog", onClick:
|
|
368
|
+
(props.closable === undefined || props.closable) && (React__default.createElement("button", { "aria-label": "Close dialog", onClick: () => {
|
|
537
369
|
setDisplay(false);
|
|
538
370
|
} },
|
|
539
371
|
React__default.createElement(LuiIcon, { name: "ic_clear", alt: 'close', size: "md", className: "LuiStaticMsg-close" }))))) : (React__default.createElement(React__default.Fragment, null));
|
|
540
372
|
};
|
|
541
373
|
|
|
542
|
-
|
|
543
|
-
return (React__default.createElement("button",
|
|
374
|
+
const PlainButton = React__default.forwardRef((props, ref) => {
|
|
375
|
+
return (React__default.createElement("button", { ...props.buttonProps, type: props.type, title: props.title, disabled: props.disabled, name: props.name, onClick: props.onClick, className: clsx('lui-button', `lui-button-${props.level}`, `lui-button-${props.size}`, props.className), "data-testid": props['data-testid'], style: props.style, ref: ref }, props.children));
|
|
544
376
|
});
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
377
|
+
const LuiButton = React__default.forwardRef((props, ref) => {
|
|
378
|
+
const _level = props.level ? props.level : 'primary';
|
|
379
|
+
const size = props.size ? props.size : 'med';
|
|
548
380
|
if (props.href) {
|
|
549
|
-
|
|
381
|
+
let aProps = {
|
|
550
382
|
href: props.href,
|
|
551
383
|
'data-testid': props['data-testid'],
|
|
552
384
|
name: props.name,
|
|
553
385
|
title: props.title,
|
|
554
|
-
className: clsx('lui-button',
|
|
386
|
+
className: clsx('lui-button', `lui-button-${props.level}`, `lui-button-${props.size}`, props.className),
|
|
555
387
|
style: props.style,
|
|
556
388
|
};
|
|
557
389
|
if (props.openInNewTab) {
|
|
558
390
|
aProps.target = '_blank';
|
|
559
391
|
aProps.rel = 'noopener noreferrer';
|
|
560
392
|
}
|
|
561
|
-
return React__default.createElement("a",
|
|
393
|
+
return React__default.createElement("a", { ...aProps }, props.children);
|
|
562
394
|
}
|
|
563
395
|
return (React__default.createElement(PlainButton, { type: props.type, title: props.title, disabled: props.disabled, name: props.name, onClick: props.onClick, level: _level, size: size, "data-testid": props['data-testid'], style: props.style, className: props.className, buttonProps: props.buttonProps, ref: ref }, props.children));
|
|
564
396
|
});
|
|
565
397
|
/**
|
|
566
398
|
* A series of Lui buttons together.
|
|
567
399
|
*/
|
|
568
|
-
|
|
569
|
-
|
|
400
|
+
const LuiButtonGroup = (props) => {
|
|
401
|
+
const children = Array.isArray(props.children)
|
|
570
402
|
? props.children
|
|
571
403
|
: [props.children];
|
|
572
|
-
return (React__default.createElement("div", { className: "lui-button-group", "data-testid": 'button-group' }, children.map(
|
|
404
|
+
return (React__default.createElement("div", { className: "lui-button-group", "data-testid": 'button-group' }, children.map((child, i) => {
|
|
573
405
|
return (React__default.createElement("div", { key: i, className: 'lui-button-wrapper' }, child));
|
|
574
406
|
})));
|
|
575
407
|
};
|
|
576
408
|
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
var callOnCloseAfterDissolved = function () {
|
|
409
|
+
const LuiToastMessage = ({ level, displayTimeout = 4000, display = true, requireDismiss, onClose, children, type, }) => {
|
|
410
|
+
const [className, setClassname] = useState('lui-msg-toast-show');
|
|
411
|
+
const [fadeOutTimer, setFadeOutTimer] = useState(undefined);
|
|
412
|
+
const [removeTimer, setRemoveTimer] = useState(undefined);
|
|
413
|
+
let materialIcon = getMaterialIconForLevel(level);
|
|
414
|
+
const callOnCloseAfterDissolved = () => {
|
|
584
415
|
// This is so the caller can remove it from the dom
|
|
585
416
|
if (onClose) {
|
|
586
|
-
|
|
417
|
+
const timer = window.setTimeout(onClose, displayTimeout);
|
|
587
418
|
setRemoveTimer(timer);
|
|
588
419
|
}
|
|
589
420
|
};
|
|
590
|
-
useEffect(
|
|
421
|
+
useEffect(() => {
|
|
591
422
|
// clear timers if previously set
|
|
592
423
|
fadeOutTimer && clearTimeout(fadeOutTimer);
|
|
593
424
|
removeTimer && clearTimeout(removeTimer);
|
|
594
425
|
setClassname('lui-msg-toast-show');
|
|
595
426
|
if (!requireDismiss && displayTimeout !== 0) {
|
|
596
427
|
// set a new timer
|
|
597
|
-
|
|
428
|
+
const timer = window.setTimeout(() => {
|
|
598
429
|
setClassname('lui-msg-toast-hide');
|
|
599
430
|
callOnCloseAfterDissolved();
|
|
600
431
|
}, displayTimeout);
|
|
@@ -602,36 +433,36 @@ var LuiToastMessage = function (_a) {
|
|
|
602
433
|
}
|
|
603
434
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
604
435
|
}, [requireDismiss, displayTimeout, children]);
|
|
605
|
-
useEffect(
|
|
436
|
+
useEffect(() => {
|
|
606
437
|
if (!display) {
|
|
607
438
|
setClassname('lui-msg-toast-hide');
|
|
608
439
|
callOnCloseAfterDissolved();
|
|
609
440
|
}
|
|
610
441
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
611
442
|
}, [display]);
|
|
612
|
-
return (React__default.createElement("div", { role: "status", "data-testid": className, className:
|
|
443
|
+
return (React__default.createElement("div", { role: "status", "data-testid": className, className: `lui-msg-${level} lui-msg-toast lui-msg-toast-dismissable ${className}` },
|
|
613
444
|
React__default.createElement("i", { className: "lui-msg-status-icon material-icons-round" }, materialIcon),
|
|
614
445
|
children,
|
|
615
|
-
React__default.createElement("button", { "aria-label": "Close dialog", type: type || 'button', onClick:
|
|
446
|
+
React__default.createElement("button", { "aria-label": "Close dialog", type: type || 'button', onClick: () => {
|
|
616
447
|
setClassname('lui-msg-toast-hide');
|
|
617
448
|
callOnCloseAfterDissolved();
|
|
618
449
|
} },
|
|
619
450
|
React__default.createElement("i", { className: "material-icons-round" }, "close"))));
|
|
620
451
|
};
|
|
621
452
|
|
|
622
|
-
|
|
453
|
+
const UIMessagingContext = createContext({
|
|
623
454
|
// @ts-ignore
|
|
624
|
-
showMessage:
|
|
455
|
+
showMessage: (props) => { },
|
|
625
456
|
});
|
|
626
457
|
function useShowLUIMessage() {
|
|
627
458
|
return useContext(UIMessagingContext).showMessage;
|
|
628
459
|
}
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
460
|
+
const LuiMessagingContextProvider = (props) => {
|
|
461
|
+
const [_message, setMessage] = useState();
|
|
462
|
+
const [_messageType, setMessageType] = useState();
|
|
463
|
+
const [_messageLevel, setMessageLevel] = useState('success');
|
|
464
|
+
const [_requireDismiss, setRequireDismiss] = useState(true);
|
|
465
|
+
const showMessage = (props) => {
|
|
635
466
|
setMessage(props.message);
|
|
636
467
|
setMessageType(props.messageType);
|
|
637
468
|
setMessageLevel(props.messageLevel);
|
|
@@ -639,10 +470,10 @@ var LuiMessagingContextProvider = function (props) {
|
|
|
639
470
|
? props.messageLevel === 'error'
|
|
640
471
|
: props.requireDismiss);
|
|
641
472
|
};
|
|
642
|
-
|
|
473
|
+
const renderMessage = () => {
|
|
643
474
|
switch (_messageType) {
|
|
644
475
|
case 'toast':
|
|
645
|
-
return (React__default.createElement(LuiToastMessage, { onClose:
|
|
476
|
+
return (React__default.createElement(LuiToastMessage, { onClose: () => {
|
|
646
477
|
setMessage(undefined);
|
|
647
478
|
}, level: _messageLevel, requireDismiss: _requireDismiss },
|
|
648
479
|
React__default.createElement("span", { "data-testid": 'toastMessageShow' }, typeof _message === 'string' ? React__default.createElement("h2", null, _message) : _message)));
|
|
@@ -650,45 +481,45 @@ var LuiMessagingContextProvider = function (props) {
|
|
|
650
481
|
return null;
|
|
651
482
|
}
|
|
652
483
|
};
|
|
653
|
-
return (React__default.createElement(UIMessagingContext.Provider, { value: { showMessage
|
|
484
|
+
return (React__default.createElement(UIMessagingContext.Provider, { value: { showMessage } },
|
|
654
485
|
_message && renderMessage(),
|
|
655
486
|
props.children));
|
|
656
487
|
};
|
|
657
488
|
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
489
|
+
const LuiExpandableBanner = (props) => {
|
|
490
|
+
const display = useRef(null);
|
|
491
|
+
const [collapse, setCollapse] = useState(true);
|
|
492
|
+
const collapseSection = (element) => {
|
|
662
493
|
// get the height of the element's inner content, regardless of its actual size
|
|
663
|
-
|
|
494
|
+
const sectionHeight = element.scrollHeight;
|
|
664
495
|
// on the next frame (as soon as the previous style change has taken effect),
|
|
665
496
|
// explicitly set the element's height to its current pixel height, so we
|
|
666
497
|
// aren't transitioning out of 'auto'
|
|
667
|
-
requestAnimationFrame(
|
|
498
|
+
requestAnimationFrame(() => {
|
|
668
499
|
element.style.height = sectionHeight + 'px';
|
|
669
500
|
// on the next frame (as soon as the previous style change has taken effect),
|
|
670
501
|
// have the element transition to height: 0
|
|
671
|
-
requestAnimationFrame(
|
|
502
|
+
requestAnimationFrame(() => {
|
|
672
503
|
element.style.height = 0 + 'px';
|
|
673
504
|
});
|
|
674
505
|
});
|
|
675
506
|
// mark the section as "currently collapsed"
|
|
676
507
|
setCollapse(true);
|
|
677
508
|
};
|
|
678
|
-
|
|
509
|
+
const expandSection = (element) => {
|
|
679
510
|
// get the height of the element's inner content, regardless of its actual size
|
|
680
|
-
|
|
511
|
+
const sectionHeight = element.scrollHeight;
|
|
681
512
|
// have the element transition to the height of its inner content
|
|
682
513
|
element.style.height = sectionHeight + 'px';
|
|
683
514
|
// when the next css transition finishes (which should be the one we just triggered)
|
|
684
|
-
setTimeout(
|
|
515
|
+
setTimeout(() => {
|
|
685
516
|
element.style.height = 'auto';
|
|
686
517
|
}, 500);
|
|
687
518
|
// mark the section as "currently not collapsed"
|
|
688
519
|
setCollapse(false);
|
|
689
520
|
};
|
|
690
|
-
|
|
691
|
-
|
|
521
|
+
const expandFunction = () => {
|
|
522
|
+
const section = display.current;
|
|
692
523
|
if (collapse) {
|
|
693
524
|
expandSection(section);
|
|
694
525
|
}
|
|
@@ -711,36 +542,33 @@ var LuiExpandableBanner = function (props) {
|
|
|
711
542
|
* A menu controlled by a user-supplied MenuButton. Open/closed state is managed internally. The defaulted style props,
|
|
712
543
|
* menuClassName and offsetY, can be overridden simply by setting them in the usual way.
|
|
713
544
|
*/
|
|
714
|
-
|
|
715
|
-
return React__default.createElement(Menu$1,
|
|
545
|
+
const LuiMenu = (props) => {
|
|
546
|
+
return React__default.createElement(Menu$1, { menuClassName: 'lui-menu', offsetY: 12, ...props });
|
|
716
547
|
};
|
|
717
548
|
/**
|
|
718
549
|
* A menu with state managed externally. Can be used quite conveniently as a context menu. The defaulted style props,
|
|
719
550
|
* menuClassName and offsetY, can be overridden simply by setting them in the usual way.
|
|
720
551
|
*/
|
|
721
|
-
|
|
722
|
-
return React__default.createElement(ControlledMenu,
|
|
552
|
+
const LuiControlledMenu = (props) => {
|
|
553
|
+
return React__default.createElement(ControlledMenu, { menuClassName: 'lui-menu', offsetY: 12, ...props });
|
|
723
554
|
};
|
|
724
555
|
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
return React__default.createElement(Menu$1, __assign({ menuClassName: 'lui-select-menu', offsetY: 12 }, props));
|
|
556
|
+
const LuiSelectMenu = ({ ...props }) => {
|
|
557
|
+
return React__default.createElement(Menu$1, { menuClassName: 'lui-select-menu', offsetY: 12, ...props });
|
|
728
558
|
};
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
return (React__default.createElement(MenuItem, __assign({}, rest, { className: clsx('lui-select-menuItem', "lui-select-menuItem--" + (level ? level : 'primary'), rest.className), "data-testid": rest['data-testid'] }),
|
|
559
|
+
const LuiSelectMenuItem = ({ iconName, iconAlt, level, noPadding = false, ...rest }) => {
|
|
560
|
+
return (React__default.createElement(MenuItem, { ...rest, className: clsx('lui-select-menuItem', `lui-select-menuItem--${level ? level : 'primary'}`, rest.className), "data-testid": rest['data-testid'] },
|
|
732
561
|
iconName ? (React__default.createElement(LuiIcon, { className: "lui-select-icon", name: iconName, alt: iconAlt ? iconAlt : '', size: "md" })) : (''),
|
|
733
562
|
React__default.createElement("p", { className: clsx('lui-select-menuItemText', {
|
|
734
563
|
'lui-select-menuItemText--noPadding': noPadding,
|
|
735
564
|
}) }, rest.children)));
|
|
736
565
|
};
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
return (React__default.createElement(SubMenu, __assign({}, rest, { className: clsx({ 'lui-select-submenu': iconName === undefined }, { 'lui-select-submenu-with-icon': !!iconName }, rest.className), menuClassName: 'lui-select-menu', label: iconName === undefined
|
|
566
|
+
const LuiSelectSubMenuItem = ({ label, iconName, iconAlt, ...rest }) => {
|
|
567
|
+
return (React__default.createElement(SubMenu, { ...rest, className: clsx({ 'lui-select-submenu': iconName === undefined }, { 'lui-select-submenu-with-icon': !!iconName }, rest.className), menuClassName: 'lui-select-menu', label: iconName === undefined
|
|
740
568
|
? label
|
|
741
|
-
: LuiSubMenuComponent(label, iconName, iconAlt) }
|
|
569
|
+
: LuiSubMenuComponent(label, iconName, iconAlt) }, rest.children));
|
|
742
570
|
};
|
|
743
|
-
|
|
571
|
+
const LuiSubMenuComponent = (label, iconName, iconAlt) => {
|
|
744
572
|
return (React__default.createElement(React__default.Fragment, null,
|
|
745
573
|
iconName === undefined ? ('') : (React__default.createElement(LuiIcon, { className: "lui-menu-sub-header-icon", name: iconName, alt: iconAlt ? iconAlt : '', size: "md" })),
|
|
746
574
|
label));
|
|
@@ -775,11 +603,10 @@ let nanoid = (size = 21) => {
|
|
|
775
603
|
};
|
|
776
604
|
|
|
777
605
|
// Lui Select menu with dynamic data
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
return (React__default.createElement(LuiSelectMenu, __assign({ menuClassName: 'lui-select-menu', offsetY: 12 }, props), displayMenu(props.items)));
|
|
606
|
+
const LuiSelectDataMenu = ({ ...props }) => {
|
|
607
|
+
return (React__default.createElement(LuiSelectMenu, { menuClassName: 'lui-select-menu', offsetY: 12, ...props }, displayMenu(props.items)));
|
|
781
608
|
};
|
|
782
|
-
|
|
609
|
+
const displayMenu = (items) => (React__default.createElement(React__default.Fragment, null, items.map((item) => {
|
|
783
610
|
if (item.options === undefined) {
|
|
784
611
|
return (React__default.createElement(React__default.Fragment, { key: nanoid() },
|
|
785
612
|
item.header ? React__default.createElement(GroupHeader, null, item.headerLabel) : null,
|
|
@@ -789,18 +616,15 @@ var displayMenu = function (items) { return (React__default.createElement(React_
|
|
|
789
616
|
return (React__default.createElement(React__default.Fragment, { key: nanoid() },
|
|
790
617
|
React__default.createElement(LuiSelectSubMenuItem, { label: item.label, iconName: item.iconName }, displayMenu(item.options))));
|
|
791
618
|
}
|
|
792
|
-
})));
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
children && (React__default.createElement(MenuHeader, { autoCapitalize: "false", className: "lui-select-menu-group" }, children))));
|
|
798
|
-
};
|
|
799
|
-
var LuiSelectMenuDivider = function () {
|
|
619
|
+
})));
|
|
620
|
+
const GroupHeader = ({ children, }) => (React__default.createElement(React__default.Fragment, null,
|
|
621
|
+
React__default.createElement(MenuDivider, { className: "lui-select-divider" }),
|
|
622
|
+
children && (React__default.createElement(MenuHeader, { autoCapitalize: "false", className: "lui-select-menu-group" }, children))));
|
|
623
|
+
const LuiSelectMenuDivider = () => {
|
|
800
624
|
return React__default.createElement(MenuDivider, { className: "lui-select-divider" });
|
|
801
625
|
};
|
|
802
|
-
|
|
803
|
-
return React__default.createElement(MenuHeader,
|
|
626
|
+
const LuiSelectMenuHeader = (props) => {
|
|
627
|
+
return React__default.createElement(MenuHeader, { className: "lui-select-menu-group", ...props });
|
|
804
628
|
};
|
|
805
629
|
|
|
806
630
|
function styleInject(css, ref) {
|
|
@@ -830,12 +654,12 @@ function styleInject(css, ref) {
|
|
|
830
654
|
}
|
|
831
655
|
}
|
|
832
656
|
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
657
|
+
const LuiFilterMenu = (props) => {
|
|
658
|
+
const [filter, setFilter] = useState('');
|
|
659
|
+
const { toggleMenu, ...menuProps } = useMenuState();
|
|
660
|
+
const ref = useRef(null);
|
|
837
661
|
return (React__default.createElement("div", { ref: ref },
|
|
838
|
-
props.menuButton(
|
|
662
|
+
props.menuButton(() => {
|
|
839
663
|
switch (props.enabled) {
|
|
840
664
|
case false: {
|
|
841
665
|
toggleMenu(false);
|
|
@@ -847,28 +671,23 @@ var LuiFilterMenu = function (props) {
|
|
|
847
671
|
}
|
|
848
672
|
}
|
|
849
673
|
}),
|
|
850
|
-
React__default.createElement(ControlledMenu,
|
|
674
|
+
React__default.createElement(ControlledMenu, { ...menuProps, anchorRef: ref, onClose: () => toggleMenu(false), className: "lui-menu", offsetY: 12, onChange: (e) => {
|
|
851
675
|
e.open && setFilter('');
|
|
852
676
|
}, menuStyles: props.maxRows !== undefined
|
|
853
677
|
? { maxHeight: 62 + 34 * props.maxRows, overflowY: 'auto' }
|
|
854
|
-
: {} }
|
|
855
|
-
React__default.createElement(FocusableItem, null,
|
|
856
|
-
var ref = _a.ref;
|
|
857
|
-
return (React__default.createElement("input", { ref: ref, type: "text", placeholder: "Type to filter", value: filter, onChange: function (e) { return setFilter(e.target.value); } }));
|
|
858
|
-
}),
|
|
678
|
+
: {} },
|
|
679
|
+
React__default.createElement(FocusableItem, null, ({ ref }) => (React__default.createElement("input", { ref: ref, type: "text", placeholder: "Type to filter", value: filter, onChange: (e) => setFilter(e.target.value) }))),
|
|
859
680
|
props.filteredItems
|
|
860
|
-
.filter(
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
.map(function (item) {
|
|
864
|
-
if ((item === null || item === void 0 ? void 0 : item.specialType) === 'div') {
|
|
681
|
+
.filter((item) => item.display.toUpperCase().includes(filter.trim().toUpperCase()))
|
|
682
|
+
.map((item) => {
|
|
683
|
+
if (item?.specialType === 'div') {
|
|
865
684
|
return React__default.createElement(MenuDivider, { key: item.id });
|
|
866
685
|
}
|
|
867
|
-
else if (
|
|
686
|
+
else if (item?.specialType === 'head') {
|
|
868
687
|
return React__default.createElement(MenuHeader, { key: item.id }, item.display);
|
|
869
688
|
}
|
|
870
689
|
else {
|
|
871
|
-
return (React__default.createElement(MenuItem, { key: item.id, onMouseDown:
|
|
690
|
+
return (React__default.createElement(MenuItem, { key: item.id, onMouseDown: (e) => {
|
|
872
691
|
props.onItemClick(item.id);
|
|
873
692
|
e.stopPropagation();
|
|
874
693
|
} }, item.display));
|
|
@@ -876,51 +695,50 @@ var LuiFilterMenu = function (props) {
|
|
|
876
695
|
}))));
|
|
877
696
|
};
|
|
878
697
|
|
|
879
|
-
|
|
698
|
+
const LuiTabsContext = React__default.createContext({
|
|
880
699
|
activePanel: null,
|
|
881
|
-
setActivePanel:
|
|
700
|
+
setActivePanel: () => { },
|
|
882
701
|
});
|
|
883
|
-
|
|
884
|
-
|
|
702
|
+
const LuiTabs = (props) => {
|
|
703
|
+
let [activePanel, setActivePanel] = useState(props.defaultPanel);
|
|
885
704
|
return (React__default.createElement("div", { className: "LuiTabs" },
|
|
886
|
-
React__default.createElement(LuiTabsContext.Provider, { value: { activePanel
|
|
705
|
+
React__default.createElement(LuiTabsContext.Provider, { value: { activePanel, setActivePanel } }, props.children)));
|
|
887
706
|
};
|
|
888
707
|
|
|
889
|
-
|
|
890
|
-
return (React__default.createElement("button", { className: clsx('LuiTab', props.active && 'LuiTab--active'), id: props.id, role: "tab", "aria-selected": props.active, "aria-controls":
|
|
708
|
+
const LuiTab = (props) => {
|
|
709
|
+
return (React__default.createElement("button", { className: clsx('LuiTab', props.active && 'LuiTab--active'), id: props.id, role: "tab", "aria-selected": props.active, "aria-controls": `${props.ariaControls}`, title: props.titleAttribute, onClick: props.onClick }, props.children));
|
|
891
710
|
};
|
|
892
711
|
|
|
893
712
|
// import './LuiTabsGroup.scss';
|
|
894
|
-
|
|
895
|
-
return (React__default.createElement("div", { className:
|
|
713
|
+
const LuiTabsGroup = (props) => {
|
|
714
|
+
return (React__default.createElement("div", { className: `LuiTabsGroup ${props.justify ? 'LuiTabsGroup--justified' : ''}`, role: "tablist", "aria-label": props.ariaLabel }, props.children));
|
|
896
715
|
};
|
|
897
716
|
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
useEffect(function () {
|
|
717
|
+
const LuiTabsPanel = ({ children, panel, mode = 'eager', }) => {
|
|
718
|
+
const context = useContext(LuiTabsContext);
|
|
719
|
+
const [shouldShow, setShouldShow] = useState(mode === 'eager');
|
|
720
|
+
let active = context.activePanel === panel;
|
|
721
|
+
useEffect(() => {
|
|
904
722
|
if (active && !shouldShow) {
|
|
905
723
|
setShouldShow(true);
|
|
906
724
|
}
|
|
907
725
|
}, [active, shouldShow]);
|
|
908
|
-
return (React__default.createElement("div", { className: clsx('LuiTabsPanel', active && 'LuiTabsPanel--active'), id: panel
|
|
726
|
+
return (React__default.createElement("div", { className: clsx('LuiTabsPanel', active && 'LuiTabsPanel--active'), id: `${panel}-tab-panel`, role: "tabpanel", "aria-labelledby": `${panel}-tab` }, shouldShow ? children : null));
|
|
909
727
|
};
|
|
910
728
|
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
return (React__default.createElement(LuiTab, { id: props.targetPanel
|
|
729
|
+
const LuiTabsPanelSwitch = (props) => {
|
|
730
|
+
const context = useContext(LuiTabsContext);
|
|
731
|
+
let active = context.activePanel === props.targetPanel;
|
|
732
|
+
return (React__default.createElement(LuiTab, { id: `${props.targetPanel}-tab`, ariaControls: `${props.targetPanel}-tab-panel`, active: active, onClick: () => {
|
|
915
733
|
if (context.setActivePanel)
|
|
916
734
|
context.setActivePanel(props.targetPanel);
|
|
917
735
|
} }, props.children));
|
|
918
736
|
};
|
|
919
737
|
|
|
920
738
|
function useDeprecatedWarning(componentName) {
|
|
921
|
-
useEffect(
|
|
739
|
+
useEffect(() => {
|
|
922
740
|
if (window.location.hostname.includes('localhost')) {
|
|
923
|
-
console.warn(componentName
|
|
741
|
+
console.warn(`${componentName} will be deprecated in future versions of Lui. Please see the 'Current Deprecations' page in Lui docs.`);
|
|
924
742
|
}
|
|
925
743
|
}, []);
|
|
926
744
|
}
|
|
@@ -928,9 +746,11 @@ function useDeprecatedWarning(componentName) {
|
|
|
928
746
|
function LuiFormikForm(props) {
|
|
929
747
|
useDeprecatedWarning('LuiFormikForm');
|
|
930
748
|
// this spreads all keys, except className
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
return (
|
|
749
|
+
const { className, ...formikProps } = { ...props };
|
|
750
|
+
const classNames = clsx(props.className);
|
|
751
|
+
return (
|
|
752
|
+
// @ts-ignore not fixing due this component being deprecated
|
|
753
|
+
React__default.createElement(Formik, { ...formikProps },
|
|
934
754
|
React__default.createElement("div", { className: classNames },
|
|
935
755
|
React__default.createElement(Form, null,
|
|
936
756
|
props.children,
|
|
@@ -940,12 +760,9 @@ function LuiFormikForm(props) {
|
|
|
940
760
|
var css_248z$5 = "/**\n @deprecated\n */\n/**\n @deprecated\n */\n/**\n @deprecated\n */\n.LuiError {\n font-family: \"Open Sans\", system-ui, sans-serif;\n font-style: normal;\n font-weight: 600;\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5rem;\n color: #2a292c;\n}\n.LuiError-errorIcon {\n vertical-align: middle;\n display: inline-block;\n}\n.LuiError-errorText {\n margin-left: 0.5rem;\n}";
|
|
941
761
|
styleInject(css_248z$5);
|
|
942
762
|
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
React__default.createElement(LuiIcon, { className: "LuiError-errorIcon " + className + "-errorIcon", alt: 'Error', name: "ic_error", size: "md", status: "error" }),
|
|
947
|
-
error && (React__default.createElement("span", { className: "LuiError-errorText " + className + "-errorText" }, error))));
|
|
948
|
-
};
|
|
763
|
+
const LuiError = ({ error, className }) => (React__default.createElement("div", { className: `LuiError ${className}-error` },
|
|
764
|
+
React__default.createElement(LuiIcon, { className: `LuiError-errorIcon ${className}-errorIcon`, alt: 'Error', name: "ic_error", size: "md", status: "error" }),
|
|
765
|
+
error && (React__default.createElement("span", { className: `LuiError-errorText ${className}-errorText` }, error))));
|
|
949
766
|
|
|
950
767
|
// Unique ID creation requires a high quality random # generator. In the browser we therefore
|
|
951
768
|
// require the crypto API and do not support built-in fallback to lower quality random number
|
|
@@ -1022,29 +839,27 @@ function v4(options, buf, offset) {
|
|
|
1022
839
|
}
|
|
1023
840
|
|
|
1024
841
|
function useGenerateOrDefaultId(idFromProps) {
|
|
1025
|
-
|
|
842
|
+
const [id] = useState(idFromProps ? idFromProps : v4());
|
|
1026
843
|
return id;
|
|
1027
844
|
}
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
var id = useGenerateOrDefaultId((_a = props.inputProps) === null || _a === void 0 ? void 0 : _a.id);
|
|
845
|
+
const LuiTextInput = (props) => {
|
|
846
|
+
const id = useGenerateOrDefaultId(props.inputProps?.id);
|
|
1031
847
|
return (React__default.createElement("div", { className: clsx('LuiTextInput', props.error && 'hasError', props.className) },
|
|
1032
848
|
React__default.createElement("label", { className: 'LuiTextInput-label', htmlFor: id },
|
|
1033
849
|
props.mandatory && React__default.createElement("span", { className: "LuiTextInput-mandatory" }, "*"),
|
|
1034
850
|
React__default.createElement("span", { className: 'LuiTextInput-label-text ' +
|
|
1035
851
|
clsx(props.hideLabel ? 'LuiScreenReadersOnly' : '') }, props.label),
|
|
1036
852
|
React__default.createElement("span", { className: "LuiTextInput-inputWrapper" },
|
|
1037
|
-
React__default.createElement("input",
|
|
1038
|
-
clsx('LuiTextInput-input'), min: "0", value: props.value, onChange: props.onChange
|
|
853
|
+
React__default.createElement("input", { type: 'text', className: (props.showPadlockIcon ? 'LuiTextInput-padlock-icon ' : '') +
|
|
854
|
+
clsx('LuiTextInput-input'), min: "0", value: props.value, onChange: props.onChange, ...props.inputProps, id: id }),
|
|
1039
855
|
props.icon),
|
|
1040
856
|
props.error && (React__default.createElement("span", { className: "LuiTextInput-error" },
|
|
1041
857
|
React__default.createElement(LuiIcon, { alt: "error", name: "ic_error", className: "LuiTextInput-error-icon", size: "sm", status: "error" }),
|
|
1042
858
|
props.error)))));
|
|
1043
859
|
};
|
|
1044
860
|
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
var id = useGenerateOrDefaultId((_a = props.inputProps) === null || _a === void 0 ? void 0 : _a.id);
|
|
861
|
+
const LuiCheckboxInput = (props) => {
|
|
862
|
+
const id = useGenerateOrDefaultId(props.inputProps?.id);
|
|
1048
863
|
return (React__default.createElement("div", { className: clsx('LuiCheckboxInput', {
|
|
1049
864
|
'LuiCheckboxInput--isChecked': props.isChecked,
|
|
1050
865
|
'LuiCheckboxInput--hasError': !!props.error,
|
|
@@ -1052,27 +867,25 @@ var LuiCheckboxInput = function (props) {
|
|
|
1052
867
|
}, props.className) },
|
|
1053
868
|
React__default.createElement("label", { htmlFor: id, className: "LuiCheckboxInput-group" },
|
|
1054
869
|
props.mandatory && (React__default.createElement("span", { "aria-label": "Required", className: "LuiCheckboxInput-mandatory" }, "*")),
|
|
1055
|
-
React__default.createElement("input",
|
|
870
|
+
React__default.createElement("input", { className: clsx('LuiCheckboxInput-input'), id: id, type: "checkbox", value: props.value, onChange: props.onChange, checked: props.isChecked, disabled: props.isDisabled, ...props.inputProps }),
|
|
1056
871
|
React__default.createElement("span", { className: "LuiCheckboxInput-label" },
|
|
1057
872
|
props.label,
|
|
1058
|
-
React__default.createElement(LuiIcon, { name: props.isIndeterminate ? 'ic_zoom_out' : 'ic_check', size: "md", alt: props.isIndeterminate ? 'Indeterminate Check' : 'Check', className: "LuiCheckboxInput-labelCheck" }))),
|
|
873
|
+
React__default.createElement(LuiIcon, { name: props.isIndeterminate ? 'ic_zoom_out' : 'ic_check', size: "md", alt: props.isIndeterminate ? 'Indeterminate Check' : 'Check', className: "LuiCheckboxInput-labelCheck", title: props.titleAttribute }))),
|
|
1059
874
|
props.error && (React__default.createElement(LuiError, { className: "LuiCheckboxInput", error: props.error }))));
|
|
1060
875
|
};
|
|
1061
876
|
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
877
|
+
const LuiFileInputBox = (props) => {
|
|
878
|
+
const [file, setFile] = useState();
|
|
879
|
+
const [hasFileFormatError, setHasFileFormatError] = useState(false);
|
|
880
|
+
const onChange = (e) => {
|
|
1066
881
|
// Logic to go here to check extensions and setHasFileFormatError
|
|
1067
882
|
setHasFileFormatError(false);
|
|
1068
|
-
|
|
883
|
+
const files = e.target.files;
|
|
1069
884
|
// File upload box is configured to only accept 1 file, we can't have more than one here
|
|
1070
885
|
if (files && files.length === 1) {
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
});
|
|
1075
|
-
var fileName = selectedFile.name;
|
|
886
|
+
const selectedFile = files[0];
|
|
887
|
+
const supportedFileTypes = props.acceptedExtensions.map((ext) => ext.toUpperCase());
|
|
888
|
+
const fileName = selectedFile.name;
|
|
1076
889
|
if (!supportedFileTypes.includes(getFileNameExtension(fileName))) {
|
|
1077
890
|
setHasFileFormatError(true);
|
|
1078
891
|
setFile(undefined);
|
|
@@ -1083,10 +896,10 @@ var LuiFileInputBox = function (props) {
|
|
|
1083
896
|
}
|
|
1084
897
|
}
|
|
1085
898
|
};
|
|
1086
|
-
|
|
899
|
+
const hasError = hasFileFormatError || props.showMustSelectFileError === true;
|
|
1087
900
|
return (React__default.createElement("div", { className: clsx('LuiFileInputBox-upload', hasError && 'LuiFileInputBox-upload-error'), style: { width: props.width || 320, height: props.height || 320 } },
|
|
1088
901
|
React__default.createElement("input", { role: "button", "aria-label": "File Upload", type: "file", className: "LuiFileInputBox-upload-input", accept: props.acceptedExtensions
|
|
1089
|
-
.map(
|
|
902
|
+
.map((extension) => `.${extension}`)
|
|
1090
903
|
.join(','), onChange: onChange }),
|
|
1091
904
|
React__default.createElement(React__default.Fragment, null, hasError ? (React__default.createElement("div", { className: "LuiFileInputBox-upload-container" },
|
|
1092
905
|
React__default.createElement(React__default.Fragment, null,
|
|
@@ -1096,26 +909,26 @@ var LuiFileInputBox = function (props) {
|
|
|
1096
909
|
"You must select a file with extension of",
|
|
1097
910
|
' ',
|
|
1098
911
|
extensionsAsHumanReadableList(props.acceptedExtensions),
|
|
1099
|
-
"."))))) : (React__default.createElement(FileUploadInfo, { fileName: file
|
|
912
|
+
"."))))) : (React__default.createElement(FileUploadInfo, { fileName: file?.name, fileFormatText: props.fileFormatText, fileDescription: props.fileDescription })))));
|
|
1100
913
|
};
|
|
1101
914
|
// Only exported for chromatic
|
|
1102
|
-
|
|
1103
|
-
|
|
915
|
+
const FileUploadInfo = (props) => {
|
|
916
|
+
const DragAndDropInstruction = () => (React__default.createElement("p", { className: "LuiFileInputBox-upload-text" },
|
|
1104
917
|
"Drag and drop your ",
|
|
1105
918
|
props.fileDescription,
|
|
1106
919
|
" into the box",
|
|
1107
920
|
React__default.createElement("br", null),
|
|
1108
|
-
React__default.createElement("span", null, "(or upload file manually)")));
|
|
1109
|
-
|
|
921
|
+
React__default.createElement("span", null, "(or upload file manually)")));
|
|
922
|
+
const WaitingForFileSelection = () => (React__default.createElement(React__default.Fragment, null,
|
|
1110
923
|
React__default.createElement("div", { className: 'LuiFileInputBox-upload-icon-upload' },
|
|
1111
924
|
React__default.createElement(LuiIcon, { name: "ic_publish", size: 'ns', alt: "Upload" })),
|
|
1112
925
|
React__default.createElement(DragAndDropInstruction, null),
|
|
1113
|
-
props.fileFormatText && (React__default.createElement("p", { className: "LuiFileInputBox-upload-text LuiFileInputBox-upload-text-no-padding" }, props.fileFormatText))));
|
|
1114
|
-
|
|
926
|
+
props.fileFormatText && (React__default.createElement("p", { className: "LuiFileInputBox-upload-text LuiFileInputBox-upload-text-no-padding" }, props.fileFormatText))));
|
|
927
|
+
const UploadSuccess = () => (React__default.createElement(React__default.Fragment, null,
|
|
1115
928
|
React__default.createElement("div", { className: 'LuiFileInputBox-upload-icon-success' },
|
|
1116
929
|
React__default.createElement(LuiIcon, { name: "ic_check_circle_outline", size: 'ns', alt: "Success" })),
|
|
1117
930
|
React__default.createElement("p", { className: "LuiFileInputBox-upload-file-name" }, props.fileName),
|
|
1118
|
-
React__default.createElement(DragAndDropInstruction, null)));
|
|
931
|
+
React__default.createElement(DragAndDropInstruction, null)));
|
|
1119
932
|
return (React__default.createElement("div", { className: "LuiFileInputBox-upload-container" }, props.fileName ? React__default.createElement(UploadSuccess, null) : React__default.createElement(WaitingForFileSelection, null)));
|
|
1120
933
|
};
|
|
1121
934
|
/**
|
|
@@ -1124,8 +937,8 @@ var FileUploadInfo = function (props) {
|
|
|
1124
937
|
* @param fileName File-name to get extension from
|
|
1125
938
|
* @return fileName extension in upper-case if found else empty string
|
|
1126
939
|
*/
|
|
1127
|
-
|
|
1128
|
-
|
|
940
|
+
const getFileNameExtension = (fileName) => {
|
|
941
|
+
const idx = fileName.lastIndexOf('.');
|
|
1129
942
|
return idx === -1 ? '' : fileName.substr(idx + 1).toUpperCase();
|
|
1130
943
|
};
|
|
1131
944
|
/**
|
|
@@ -1135,68 +948,63 @@ var getFileNameExtension = function (fileName) {
|
|
|
1135
948
|
* @param extensions List of extensions to convert.
|
|
1136
949
|
* @return Extensions in a human readable string in upper-case.
|
|
1137
950
|
*/
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
return extension.toUpperCase();
|
|
1141
|
-
});
|
|
951
|
+
const extensionsAsHumanReadableList = (extensions) => {
|
|
952
|
+
const uppercaseExtensions = extensions.map((extension) => extension.toUpperCase());
|
|
1142
953
|
if (!extensions.length)
|
|
1143
954
|
return '';
|
|
1144
955
|
if (extensions.length === 1)
|
|
1145
956
|
return uppercaseExtensions[0];
|
|
1146
|
-
return uppercaseExtensions.slice(0, -1).join(', ')
|
|
957
|
+
return `${uppercaseExtensions.slice(0, -1).join(', ')} or ${uppercaseExtensions[extensions.length - 1]}`;
|
|
1147
958
|
};
|
|
1148
959
|
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
return (React__default.createElement("div", { className: clsx('LuiSelect', ((_b = props.selectProps) === null || _b === void 0 ? void 0 : _b.disabled) ? 'isDisabled' : '', props.error ? 'hasError' : '') },
|
|
960
|
+
const LuiSelectInput = (props) => {
|
|
961
|
+
const id = useGenerateOrDefaultId(props.selectProps?.id);
|
|
962
|
+
return (React__default.createElement("div", { className: clsx('LuiSelect', props.selectProps?.disabled ? 'isDisabled' : '', props.error ? 'hasError' : '') },
|
|
1153
963
|
React__default.createElement("label", { htmlFor: id, className: "LuiSelect-label" },
|
|
1154
964
|
props.mandatory && React__default.createElement("span", { className: "LuiSelect-mandatory" }, "*"),
|
|
1155
965
|
React__default.createElement("span", { className: clsx('LuiSelect-label-text', props.hideLabel ? 'LuiScreenReadersOnly' : '') }, props.label),
|
|
1156
966
|
React__default.createElement("div", { className: "LuiSelect-wrapper" },
|
|
1157
|
-
React__default.createElement("select",
|
|
967
|
+
React__default.createElement("select", { name: id, onChange: props.onChange, value: props.value, className: "LuiSelect-select", ...props.selectProps },
|
|
1158
968
|
props.placeholderText && (React__default.createElement("option", { value: "", disabled: true }, props.placeholderText)),
|
|
1159
|
-
props.options.map(
|
|
969
|
+
props.options.map((selection) => (React__default.createElement("option", { key: selection.value, value: selection.value }, selection.label)))),
|
|
1160
970
|
React__default.createElement(LuiIcon, { alt: 'Error', name: "ic_keyboard_arrow_down", className: "LuiSelect-chevron-icon", size: "md" })),
|
|
1161
971
|
props.error && (React__default.createElement("span", { className: "LuiSelect-error" },
|
|
1162
972
|
React__default.createElement(LuiIcon, { alt: 'Error', name: "ic_error", className: "LuiSelect-error-icon", size: "sm", status: "error" }),
|
|
1163
973
|
props.error)))));
|
|
1164
974
|
};
|
|
1165
975
|
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
return (React__default.createElement("div", { className: clsx('LuiTextAreaInput', ((_b = props.inputProps) === null || _b === void 0 ? void 0 : _b.disabled) ? 'isDisabled' : '', (props === null || props === void 0 ? void 0 : props.error) ? 'hasError' : '') },
|
|
976
|
+
const LuiTextAreaInput = (props) => {
|
|
977
|
+
const id = useGenerateOrDefaultId(props.inputProps?.id);
|
|
978
|
+
return (React__default.createElement("div", { className: clsx('LuiTextAreaInput', props.inputProps?.disabled ? 'isDisabled' : '', props?.error ? 'hasError' : '') },
|
|
1170
979
|
React__default.createElement("label", { htmlFor: id },
|
|
1171
980
|
props.mandatory && (React__default.createElement("span", { className: "LuiTextAreaInput-mandatory" }, "*")),
|
|
1172
981
|
React__default.createElement("span", { className: "LuiTextAreaInput-label" }, props.label),
|
|
1173
982
|
React__default.createElement("div", { className: "LuiTextAreaInput-wrapper" },
|
|
1174
983
|
' ',
|
|
1175
|
-
React__default.createElement("textarea",
|
|
984
|
+
React__default.createElement("textarea", { id: id, value: props.value, onChange: props.onChange, rows: 5, ...props.inputProps }))),
|
|
1176
985
|
props.error && (React__default.createElement("span", { className: "LuiTextAreaInput-error" },
|
|
1177
986
|
React__default.createElement(LuiIcon, { alt: "error", name: "ic_error", className: "LuiTextAreaInput-error-icon", size: "sm", status: "error" }),
|
|
1178
987
|
props.error))));
|
|
1179
988
|
};
|
|
1180
989
|
|
|
1181
990
|
// @NOTE Can use LuiRadioInput in block form and pass through your own legend (label)
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
var id = useGenerateOrDefaultId((_a = props.inputProps) === null || _a === void 0 ? void 0 : _a.id);
|
|
991
|
+
const LuiRadioInput = (props) => {
|
|
992
|
+
const id = useGenerateOrDefaultId(props.inputProps?.id);
|
|
1185
993
|
return (React__default.createElement(React__default.Fragment, null,
|
|
1186
994
|
React__default.createElement("div", { className: clsx('LuiRadioInput', {
|
|
1187
995
|
'LuiRadioInput--hasError': props.error,
|
|
1188
996
|
}) },
|
|
1189
997
|
React__default.createElement("fieldset", { className: 'LuiRadioInput-fieldset' },
|
|
1190
998
|
props.legend && (React__default.createElement("legend", { className: "LuiRadioInput-legend" }, props.legend)),
|
|
1191
|
-
props.options.map(
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
999
|
+
props.options.map((option, index) => {
|
|
1000
|
+
const radioId = `${id}-${index}`;
|
|
1001
|
+
const isSelected = props.selectedValue === option;
|
|
1002
|
+
const isDisabled = props.isOptionDisabled && props.isOptionDisabled(index);
|
|
1195
1003
|
return (React__default.createElement("label", { htmlFor: radioId, className: clsx('LuiRadioInput-label', {
|
|
1196
1004
|
'LuiRadioInput-label--isDisabled': isDisabled,
|
|
1197
1005
|
'LuiRadioInput-label--isSelected': isSelected,
|
|
1198
1006
|
}), key: radioId },
|
|
1199
|
-
React__default.createElement("input",
|
|
1007
|
+
React__default.createElement("input", { disabled: isDisabled, className: "LuiRadioInput-input", type: "radio", id: radioId, name: option, value: option, checked: isSelected, onChange: props.onChange, ...props.inputProps }),
|
|
1200
1008
|
props.renderLabelFor ? props.renderLabelFor(option) : option));
|
|
1201
1009
|
})),
|
|
1202
1010
|
props.error && (React__default.createElement("div", { className: "LuiRadioInput-errorMsg" },
|
|
@@ -1206,76 +1014,70 @@ var LuiRadioInput = function (props) {
|
|
|
1206
1014
|
|
|
1207
1015
|
function LuiFormikCheckbox(props) {
|
|
1208
1016
|
useDeprecatedWarning('LuiFormikCheckbox');
|
|
1209
|
-
|
|
1017
|
+
let ctx = useFormikContext();
|
|
1210
1018
|
return (React__default.createElement(React__default.Fragment, null,
|
|
1211
|
-
React__default.createElement(Field, { name: props.name },
|
|
1212
|
-
|
|
1213
|
-
var showError = getIn(ctx === null || ctx === void 0 ? void 0 : ctx.errors, props.name);
|
|
1019
|
+
React__default.createElement(Field, { name: props.name }, ({ field }) => {
|
|
1020
|
+
const showError = getIn(ctx?.errors, props.name);
|
|
1214
1021
|
return (React__default.createElement("div", { className: clsx(showError && 'lui-input-error') },
|
|
1215
1022
|
React__default.createElement("div", { className: "lui-input-group-wrapper " },
|
|
1216
1023
|
showError && (React__default.createElement("i", { className: "lui-form-status-icon material-icons-round" }, "error")),
|
|
1217
1024
|
React__default.createElement("div", { className: clsx('lui-checkbox-container', props.className) },
|
|
1218
|
-
React__default.createElement("input",
|
|
1025
|
+
React__default.createElement("input", { ...props.inputProps, type: "checkbox", id: props.value, disabled: !!props.disabled, checked: field.value, ...field }),
|
|
1219
1026
|
typeof props.label === 'string' ? (React__default.createElement("label", { htmlFor: props.value }, props.label)) : (props.label)))));
|
|
1220
1027
|
})));
|
|
1221
1028
|
}
|
|
1222
1029
|
|
|
1223
|
-
|
|
1030
|
+
const LuiFormikFormLabel = (props) => {
|
|
1224
1031
|
useDeprecatedWarning('LuiFormikFormLabel');
|
|
1225
|
-
return (React__default.createElement("div", { className: clsx('LuiFormLabel-wrapper', props.className &&
|
|
1032
|
+
return (React__default.createElement("div", { className: clsx('LuiFormLabel-wrapper', props.className && `${props.className}`) },
|
|
1226
1033
|
props.children,
|
|
1227
|
-
React__default.createElement("label", { className: "LuiFormLabel", htmlFor: props
|
|
1034
|
+
React__default.createElement("label", { className: "LuiFormLabel", htmlFor: props.for },
|
|
1228
1035
|
props.required && React__default.createElement("span", { className: "lui-required-input-icon" }, "*"),
|
|
1229
1036
|
props.label),
|
|
1230
1037
|
props.tooltip && React__default.createElement("i", { className: "material-icons-round" }, "help")));
|
|
1231
1038
|
};
|
|
1232
1039
|
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1040
|
+
const LuiFormikTextInput = connect((props) => {
|
|
1041
|
+
const error = getIn(props.formik.errors, props.name);
|
|
1042
|
+
const touch = getIn(props.formik.touched, props.name);
|
|
1043
|
+
const showError = touch && error;
|
|
1044
|
+
const { setFieldValue } = useFormikContext();
|
|
1238
1045
|
useDeprecatedWarning('LuiFormikTextInput');
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
props.
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
} })));
|
|
1259
|
-
};
|
|
1260
|
-
return (React__default.createElement("div", { className: clsx(props.className && "" + props.className) },
|
|
1261
|
-
props.label && (React__default.createElement(LuiFormikFormLabel, { required: props.required, label: props.label, "for": props.name, tooltip: props.tooltip })),
|
|
1046
|
+
const multiLineToggle = (field) => !props.multiLine ? (React__default.createElement("input", { id: props.name, "data-testid": props.name, ...field, type: "text", ...props.inputProps, onChange: (event) => {
|
|
1047
|
+
setFieldValue(props.name, event.target.value, props.validateOnChange ?? true);
|
|
1048
|
+
if (props.onValueChange) {
|
|
1049
|
+
props.onValueChange({
|
|
1050
|
+
value: event.target.value,
|
|
1051
|
+
formik: props.formik,
|
|
1052
|
+
});
|
|
1053
|
+
}
|
|
1054
|
+
} })) : (React__default.createElement("textarea", { id: props.name, "data-testid": props.name, ...field, rows: 1, ...props.inputProps, onChange: (event) => {
|
|
1055
|
+
setFieldValue(props.name, event.target.value, props.validateOnChange ?? true);
|
|
1056
|
+
if (props.onValueChange) {
|
|
1057
|
+
props.onValueChange({
|
|
1058
|
+
value: event.target.value,
|
|
1059
|
+
formik: props.formik,
|
|
1060
|
+
});
|
|
1061
|
+
}
|
|
1062
|
+
} }));
|
|
1063
|
+
return (React__default.createElement("div", { className: clsx(props.className && `${props.className}`) },
|
|
1064
|
+
props.label && (React__default.createElement(LuiFormikFormLabel, { required: props.required, label: props.label, for: props.name, tooltip: props.tooltip })),
|
|
1262
1065
|
props.helperInfo,
|
|
1263
|
-
React__default.createElement(Field, { name: props.name, validate: props.validate },
|
|
1264
|
-
var field = _a.field;
|
|
1066
|
+
React__default.createElement(Field, { name: props.name, validate: props.validate }, ({ field }) => {
|
|
1265
1067
|
return (React__default.createElement("div", { className: clsx(showError && 'lui-input-error') },
|
|
1266
|
-
React__default.createElement(ErrorMessage, { name: props.name, render:
|
|
1068
|
+
React__default.createElement(ErrorMessage, { name: props.name, render: () => (React__default.createElement("i", { className: "lui-form-status-icon material-icons-round" }, "error")) }),
|
|
1267
1069
|
multiLineToggle(field),
|
|
1268
1070
|
React__default.createElement(ErrorMessage, { name: props.name, className: 'lui-error-msg', component: "p" })));
|
|
1269
1071
|
})));
|
|
1270
1072
|
});
|
|
1271
1073
|
|
|
1272
|
-
|
|
1273
|
-
|
|
1074
|
+
const LuiFormikRadioButton = (props) => {
|
|
1075
|
+
const [field, meta] = useField(props);
|
|
1274
1076
|
useDeprecatedWarning('LuiFormikRadioButton');
|
|
1275
1077
|
return (React__default.createElement("div", { className: props.className },
|
|
1276
1078
|
meta.touched && meta.error && (React__default.createElement("i", { className: "lui-form-status-icon material-icons-round" }, "error")),
|
|
1277
1079
|
React__default.createElement("div", { className: 'lui-radio-container' },
|
|
1278
|
-
React__default.createElement("input",
|
|
1080
|
+
React__default.createElement("input", { disabled: !!props.disabled, ...field, checked: props.value === field.value, value: props.value, id: props.value, type: "radio", ...props.inputProps }),
|
|
1279
1081
|
React__default.createElement("label", { htmlFor: props.value }, props.label))));
|
|
1280
1082
|
};
|
|
1281
1083
|
|
|
@@ -1415,14 +1217,14 @@ camelcase$1.exports.default = camelCase;
|
|
|
1415
1217
|
var camelcase = camelcase$1.exports;
|
|
1416
1218
|
|
|
1417
1219
|
// TODO: It's annoying that we have to pass name into the RadioGroup and RadioButton
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1220
|
+
const LuiFormikRadioGroup = (props) => {
|
|
1221
|
+
let ctx = useFormikContext();
|
|
1222
|
+
const error = getIn(ctx.errors, props.name);
|
|
1223
|
+
const touch = getIn(ctx.touched, props.name);
|
|
1224
|
+
const showError = touch && error;
|
|
1423
1225
|
useDeprecatedWarning('LuiFormikRadioGroup');
|
|
1424
|
-
|
|
1425
|
-
|
|
1226
|
+
const describedby = props.hint && camelcase(props?.hint) + 'Id';
|
|
1227
|
+
const errorDescribedBy = error && camelcase(error) + 'Id';
|
|
1426
1228
|
return (React__default.createElement("div", { className: clsx('lui-fieldsetBlock-form-group', showError && 'lui-input-error') },
|
|
1427
1229
|
React__default.createElement("fieldset", { "aria-describedby": clsx(props.hint && describedby + 'Id', showError && errorDescribedBy) },
|
|
1428
1230
|
React__default.createElement("legend", null,
|
|
@@ -1435,42 +1237,42 @@ var LuiFormikRadioGroup = function (props) {
|
|
|
1435
1237
|
React__default.createElement("div", { className: "lui-input-group-wrapper" }, props.children))));
|
|
1436
1238
|
};
|
|
1437
1239
|
|
|
1438
|
-
|
|
1240
|
+
const LuiFormikFormSubmitButton = connect((props) => {
|
|
1439
1241
|
useDeprecatedWarning('LuiFormikFormSubmitButton');
|
|
1440
1242
|
return (React__default.createElement(LuiButton, { type: "submit", className: props.className, level: "primary", "data-testid": props['data-testid'], disabled: !!props.disabled }, props.children));
|
|
1441
1243
|
});
|
|
1442
1244
|
|
|
1443
|
-
|
|
1245
|
+
const LuiFormikSelect = connect((props) => {
|
|
1444
1246
|
useDeprecatedWarning('LuiFormikSelect');
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1247
|
+
const error = getIn(props.formik.errors, props.name);
|
|
1248
|
+
const touch = getIn(props.formik.touched, props.name);
|
|
1249
|
+
const showError = touch && error;
|
|
1448
1250
|
return (React__default.createElement("div", { className: props.className },
|
|
1449
|
-
props.label && (React__default.createElement(LuiFormikFormLabel, { className: 'lui-margin-bottom-xxs',
|
|
1251
|
+
props.label && (React__default.createElement(LuiFormikFormLabel, { className: 'lui-margin-bottom-xxs', for: props.name, label: props.label, required: !!props.required, tooltip: props.tooltip })),
|
|
1450
1252
|
props.helperInfo,
|
|
1451
1253
|
React__default.createElement("div", { className: clsx('lui-input-wrapper', showError && 'lui-input-error') },
|
|
1452
|
-
React__default.createElement(ErrorMessage, { name: props.name, render:
|
|
1453
|
-
React__default.createElement(Field,
|
|
1254
|
+
React__default.createElement(ErrorMessage, { name: props.name, render: () => (React__default.createElement("i", { className: "lui-form-status-icon material-icons-round" }, "error")) }),
|
|
1255
|
+
React__default.createElement(Field, { disabled: props.disabled, defaultValue: props.defaultValue, name: props.name, id: props.name, validate: props.validate, as: "select", ...props.inputProps }, props.children),
|
|
1454
1256
|
React__default.createElement(ErrorMessage, { name: props.name, className: 'lui-error-msg', component: "p" }))));
|
|
1455
1257
|
});
|
|
1456
1258
|
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1259
|
+
const LuiBearingInput = (props) => {
|
|
1260
|
+
const maxDecimal = 1;
|
|
1261
|
+
const maxAfterDP = 4 + maxDecimal;
|
|
1262
|
+
const parseBearing = (decimalIsh) => {
|
|
1263
|
+
const sign = decimalIsh.startsWith('-') ? '-' : '+';
|
|
1264
|
+
const parts = decimalIsh.split('.');
|
|
1265
|
+
const degrees = Math.abs(parseInt(parts[0])) || 0;
|
|
1266
|
+
let remainder = parts.length > 1 ? parts[1] : '0000';
|
|
1465
1267
|
while (remainder.length < 4) {
|
|
1466
1268
|
remainder += '0';
|
|
1467
1269
|
}
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
return { sign
|
|
1270
|
+
const minutes = parseInt(remainder.substr(0, 2));
|
|
1271
|
+
const seconds = parseFloat(`${remainder.substr(2, 2)}.${remainder.length > 4 ? remainder.substr(4, 2) : '0'}`);
|
|
1272
|
+
return { sign, degrees, minutes, seconds };
|
|
1471
1273
|
};
|
|
1472
|
-
|
|
1473
|
-
|
|
1274
|
+
const validateBearing = (bearing) => {
|
|
1275
|
+
const signedDegrees = bearing.sign === '-' ? bearing.degrees * -1 : bearing.degrees;
|
|
1474
1276
|
if (signedDegrees < -360 || signedDegrees > 360)
|
|
1475
1277
|
return 'Degrees must be between -360 and 360';
|
|
1476
1278
|
if (bearing.minutes < 0 || bearing.minutes >= 60)
|
|
@@ -1481,16 +1283,16 @@ var LuiBearingInput = function (props) {
|
|
|
1481
1283
|
//here ---
|
|
1482
1284
|
return null;
|
|
1483
1285
|
};
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
return displaySign
|
|
1286
|
+
const formatBearing = (decimalIsh) => {
|
|
1287
|
+
const { sign, degrees, minutes, seconds } = parseBearing(decimalIsh);
|
|
1288
|
+
const displaySign = degrees === 0 && minutes === 0 && seconds === 0 ? '' : sign;
|
|
1289
|
+
return `${displaySign} ${degrees}° ${padToTwo(minutes)}' ${padToTwo(seconds)}"`;
|
|
1488
1290
|
};
|
|
1489
|
-
|
|
1490
|
-
|
|
1291
|
+
const onChange = (event) => {
|
|
1292
|
+
const newValue = event.target.value;
|
|
1491
1293
|
if (newValue === '' ||
|
|
1492
1294
|
newValue === '-' ||
|
|
1493
|
-
newValue.match(RegExp(
|
|
1295
|
+
newValue.match(RegExp(`^-?[0-9]+(\\.[0-9]{0,${maxAfterDP}})?$`))) {
|
|
1494
1296
|
props.onChange && props.onChange(event);
|
|
1495
1297
|
}
|
|
1496
1298
|
else {
|
|
@@ -1500,26 +1302,26 @@ var LuiBearingInput = function (props) {
|
|
|
1500
1302
|
function padToTwo(number) {
|
|
1501
1303
|
return number <= 9 ? '0' + number : number.toString();
|
|
1502
1304
|
}
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1305
|
+
const parsedBearing = parseBearing(props.value);
|
|
1306
|
+
const internalError = validateBearing(parsedBearing);
|
|
1307
|
+
const error = props.preferValidationError
|
|
1506
1308
|
? props.validationError || internalError || null
|
|
1507
1309
|
: internalError || props.validationError || null;
|
|
1508
|
-
|
|
1310
|
+
const showError = error !== null;
|
|
1509
1311
|
props.onValidate && props.onValidate(internalError);
|
|
1510
1312
|
return (React__default.createElement(React__default.Fragment, null,
|
|
1511
|
-
props.label && (React__default.createElement(LuiFormikFormLabel, { required: !!props.required, label: props.label,
|
|
1313
|
+
props.label && (React__default.createElement(LuiFormikFormLabel, { required: !!props.required, label: props.label, for: props.name, tooltip: props.tooltip })),
|
|
1512
1314
|
props.helperInfo,
|
|
1513
1315
|
React__default.createElement("div", { className: clsx('lui-margin-top-xs', showError && 'lui-input-error') },
|
|
1514
1316
|
showError && (React__default.createElement("i", { className: "lui-form-status-icon material-icons-round" }, "error")),
|
|
1515
1317
|
React__default.createElement("div", { className: 'lui-bearing-input-wrapper' },
|
|
1516
|
-
React__default.createElement("input",
|
|
1318
|
+
React__default.createElement("input", { id: props.name, type: "text", disabled: props.disabled, ...props.inputProps, onChange: onChange, value: props.value }),
|
|
1517
1319
|
React__default.createElement("div", { className: 'lui-bearing-display' }, formatBearing(props.value || '0'))),
|
|
1518
1320
|
showError && React__default.createElement("p", null, error))));
|
|
1519
1321
|
};
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1322
|
+
const LuiBearingFormikInput = (props) => {
|
|
1323
|
+
let ctx = useFormikContext();
|
|
1324
|
+
const [error, setError] = useState(null);
|
|
1523
1325
|
function validateBearing() {
|
|
1524
1326
|
return error;
|
|
1525
1327
|
}
|
|
@@ -1527,8 +1329,8 @@ var LuiBearingFormikInput = function (props) {
|
|
|
1527
1329
|
setError(error);
|
|
1528
1330
|
}
|
|
1529
1331
|
return (React__default.createElement(React__default.Fragment, null,
|
|
1530
|
-
React__default.createElement(Field, { name: props.name, validate: validateBearing },
|
|
1531
|
-
return (React__default.createElement(LuiBearingInput,
|
|
1332
|
+
React__default.createElement(Field, { name: props.name, validate: validateBearing }, (renderProps) => {
|
|
1333
|
+
return (React__default.createElement(LuiBearingInput, { name: props.name, ...renderProps.field, validationError: getIn(ctx?.errors, props.name), required: true, onValidate: onValidate, inputProps: props.inputProps, preferValidationError: props.preferValidationError }));
|
|
1532
1334
|
})));
|
|
1533
1335
|
};
|
|
1534
1336
|
|
|
@@ -1536,7 +1338,7 @@ var LinzLogoFooter = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
|
|
|
1536
1338
|
|
|
1537
1339
|
var NzGovtLogoRev = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTkwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMTkwIDIwIj4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGlkPSJhIiBkPSJNMCAwaDE4OS41NzJ2MTkuMzEySDB6Ii8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG9wYWNpdHk9Ii43Ij4KICAgICAgICA8bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2EiLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPHBhdGggZmlsbD0iI0ZFRkVGRSIgZD0iTTgzLjEzOSAxMy44MTNIODEuMzFWNy4wMjFjMC0uOTA0LS4wODItMS4yMjYtLjMyMy0xLjU0Ny0uMi0uMjYxLS41NjItLjQwMi0xLjAyNC0uNDAyLS43MjQgMC0xLjgxLjU2My0yLjQ5MiAxLjI4NnY3LjQ1NWgtLjkzYy0uNTg2IDAtLjktLjQ0LS45LTEuMTI3VjYuMzE4YzAtMS4yMDYtLjEtMS42NjgtLjM4MS0yLjM5MmwxLjc0OS0uNDgyYy4yNC40ODIuMzQyLjkyNC4zNDIgMS41NDcuNTgyLS40ODIuODg0LS43NDMgMS4zMDYtLjk4NGEzLjczMiAzLjczMiAwIDAgMSAxLjg2OS0uNTAyYzEuMDY0IDAgMi4wMDkuNTYyIDIuMzcgMS40MjYuMTYxLjM2Mi4yNDIuODA0LjI0MiAxLjI2N3Y3LjYxNXptOC4wNTQtMi41NTJWNS45OTZjLS41MjItLjYyMy0xLjE4Ni0uOTQ0LTIuMTMtLjk0NC0uNzYzIDAtMS4zNjcuMzgxLTEuNzQ4IDEuMDI1LS4zODIuNjYyLS41MjMgMS40NjctLjUyMyAyLjc3MyAwIDEuOTUuMjQxIDIuNDkyLjc4NCAzLjA1NC4zNDEuMzYyLjgwNC41MjMgMS40ODcuNTIzIDEuMDY1IDAgMS43ODktLjU2MyAyLjEzLTEuMTY2em0yLjE1IDIuNTUyaC0xLjc2OGMtLjEtLjMwMS0uMTItLjQ0Mi0uMTgxLS45NDQtLjcwMy43NDQtMS41MjggMS4xMDUtMi41OTIgMS4xMDUtMi41NzIgMC00LjA4LTEuOTI5LTQuMDgtNS4xMDQgMC0yLjE3Ljc0NC0zLjgzOCAyLjExLTQuNzIzYTMuNDc3IDMuNDc3IDAgMCAxIDEuOTctLjU4MmMuOTY0IDAgMS43NjguMzQxIDIuNDUxIDEuMTY2IDAtLjI4Mi0uMDQtMS44MTktLjA0LTIuNTAyVi4xNDNsMS44NDkuMzAxdjkuOTk0YzAgMS42MjcuMDYgMi43NTMuMjgxIDMuMzc1ek03MS44NiA4Ljg3Yy0uMjgyLS4wMi0uNDQyLS4wNC0uNjAzLS4wNC0xLjM4NyAwLTIuMjMuMjYxLTIuNjMzLjcyMy0uMzgxLjQ0My0uNTIyLjgwNC0uNTIyIDEuNDY3IDAgMS4xMDYuNTYzIDEuNzQ5IDEuNTg4IDEuNzQ5Ljg0MyAwIDEuNjQ4LS41MjMgMi4xMS0xLjMyN2wuMDYtMi41NzJ6bTIuNjEyIDQuMTJsLS45NDQgMS4yNDVjLS42MjMtLjI0LTEuMTA2LS43NDMtMS4zNDctMS40NDctLjI2LjMyMi0xLjEwNSAxLjMyNy0yLjg1MyAxLjMyNy0yLjAxIDAtMy4yNTUtMS4wMjUtMy4yNTUtMi45NTQgMC0yLjMzMSAxLjg2OC0zLjU3NyA1LjEyNC0zLjU3Ny4yNCAwIC40NDIgMCAuNzAzLjAyVjYuOTRjMC0xLjE4Ni0uMTYtMS45OS0xLjU2Ny0xLjk5LTEuMDY1IDAtMi4yNzIuNTIzLTMuMDk1IDEuMTQ2bC0uODQ0LTEuMzI3Yy45ODUtLjU2MiAyLjI3LTEuMzI2IDQuMjItMS4zMjYgMS40NjcgMCAyLjUzMi41NDMgMi45MTQgMS42MDguMTYuNDQyLjIuNzg0LjIgMS43NjggMCAuNzI0LS4wOCAyLjI3MS0uMDggMy43MzggMCAxLjM4Ny4wNCAxLjk1LjgyNCAyLjQzMnptLTkuMTcxLjgwM2EyLjcxIDIuNzEgMCAwIDEtMS4xNDYuMjIxYy0uNzIzIDAtMS4xODYtLjIyLTEuNTY3LS43NjMtLjMwMS0uNDIyLS4zODItLjc2NC0uMzgyLTEuNzQ5VjMuMjk1YzAtMS40MjYtLjA2LTIuMTEtLjIyMS0yLjg5M0w2My45MTUgMGMuMTguNjYzLjE4IDEuNjI4LjE4IDIuODc0djguMTQ2YzAgMS4wNjUuMDYgMS4zMDYuMjYxIDEuNDg3LjEyMS4xNDEuNDAyLjIwMS42MjMuMTQxbC4zMjIgMS4xNDV6TTU4LjI2NyA4Ljg3Yy0uMjgtLjAyLS40NDItLjA0LS42MDItLjA0LTEuMzg3IDAtMi4yMy4yNjEtMi42MzMuNzIzLS4zODIuNDQzLS41MjMuODA0LS41MjMgMS40NjcgMCAxLjEwNi41NjMgMS43NDkgMS41ODggMS43NDkuODQ0IDAgMS42NDgtLjUyMyAyLjExLTEuMzI3bC4wNi0yLjU3MnptMi42MTMgNC4xMmwtLjk0NCAxLjI0NWMtLjYyMy0uMjQtMS4xMDYtLjc0My0xLjM0Ny0xLjQ0Ny0uMjYuMzIyLTEuMTA1IDEuMzI3LTIuODU0IDEuMzI3LTIuMDA5IDAtMy4yNTUtMS4wMjUtMy4yNTUtMi45NTQgMC0yLjMzMSAxLjg2OS0zLjU3NyA1LjEyNC0zLjU3Ny4yNDEgMCAuNDQzIDAgLjcwNC4wMlY2Ljk0YzAtMS4xODYtLjE2MS0xLjk5LTEuNTY4LTEuOTktMS4wNjUgMC0yLjI3LjUyMy0zLjA5NSAxLjE0NmwtLjg0My0xLjMyN2MuOTg0LS41NjIgMi4yNy0xLjMyNiA0LjIyLTEuMzI2IDEuNDY2IDAgMi41MzIuNTQzIDIuOTE0IDEuNjA4LjE2LjQ0Mi4yLjc4NC4yIDEuNzY4IDAgLjcyNC0uMDggMi4yNzEtLjA4IDMuNzM4IDAgMS4zODcuMDQgMS45NS44MjQgMi40MzJ6TTQ5LjQ2MSA3LjgwNWMwLS45NjQtLjIyLTEuNzY4LS42MjItMi4yNzFhMS44MSAxLjgxIDAgMCAwLTEuNDQ3LS43MDNjLTEuNDA3IDAtMi4xMSAxLjE0Ni0yLjExIDIuOTc0aDQuMTh6bTEuOTMgMS4zNjZoLTYuMTN2LjI0MmMwIC44NjMuMTIxIDEuNTI3LjQyMyAyLjAxLjUyMi44MDMgMS4zNDUgMS4xODUgMi4zMSAxLjE4NS45NDUgMCAxLjc0OS0uMzIyIDIuNDcyLS45NjVsLjcwNCAxLjEwNmMtLjk4Ni44NjQtMi4xNyAxLjI4NS0zLjQ3NyAxLjI4NS0yLjc5MyAwLTQuNTAyLTIuMDI5LTQuNTAyLTUuMzI0IDAtMS43NDkuMzQyLTIuODc0IDEuMjA2LTMuOS44MDQtLjk0NCAxLjc4OS0xLjM4NiAzLjAzNS0xLjM4NiAxLjEyNSAwIDIuMDMuMzYyIDIuNzMzIDEuMDg1Ljg4NC45MDUgMS4yMDUgMi4wMyAxLjIyNiA0LjM0di4zMjJ6TTMyLjY0IDMuNzQ2bC0yLjgxMyAxMC4xNDhIMjguMDRsLTEuNDY3LTUuNDg2Yy0uMTgtLjcwMy0uNjIzLTIuMzcxLS42MjMtMi4zNzFoLS4wNnMtLjQwMiAxLjcwOC0uNTQyIDIuMjVsLTEuNTA4IDUuNjA3aC0xLjc2OEwxOS4zMTggMy44MjZsMS44NjgtLjMwMSAxLjI4NyA1LjY0NmMuMjIgMS4wMDUuNTIyIDIuNDcyLjUyMiAyLjQ3MmguMDYxcy4yMi0xLjQyNi40NjItMi4yOWwxLjUyNy01LjYwN2gxLjkxTDI4LjM2IDkuMTljLjI4MSAxLjA4NS41NjIgMi4zNTIuNTYyIDIuNDUyaC4wOGMwLS4xLjMyMi0xLjcyOC40NjMtMi4zOWwxLjI0Ni01LjUwN2gxLjkzem0tMTUuODIgNC4wNmMwLS45NjUtLjIyLTEuNzctLjYyMy0yLjI3MmExLjgwNyAxLjgwNyAwIDAgMC0xLjQ0Ni0uNzAzYy0xLjQwNyAwLTIuMTEgMS4xNDYtMi4xMSAyLjk3NGg0LjE4em0xLjkzIDEuMzY1aC02LjEzdi4yNDJjMCAuODYzLjEyMSAxLjUyNy40MjMgMi4wMS41MjMuODAzIDEuMzQ2IDEuMTg1IDIuMzEgMS4xODUuOTQ1IDAgMS43NDktLjMyMiAyLjQ3Mi0uOTY1bC43MDMgMS4xMDZjLS45ODQuODY0LTIuMTcgMS4yODUtMy40NzYgMS4yODUtMi43OTMgMC00LjUwMS0yLjAyOS00LjUwMS01LjMyNCAwLTEuNzQ5LjM0MS0yLjg3NCAxLjIwNS0zLjkuODA0LS45NDQgMS43OS0xLjM4NiAzLjAzNS0xLjM4NiAxLjEyNSAwIDIuMDMuMzYyIDIuNzMzIDEuMDg1Ljg4NC45MDUgMS4yMDUgMi4wMyAxLjIyNiA0LjM0di4zMjJ6bTE3MC44MjItNS4zOTZsLS41IDEuM2gtMS45OHY2LjAzOWMwIDEuMjQuMyAxLjYyIDEuMyAxLjYyLjM0IDAgLjYyLS4wNi45MzktLjJsLjIyIDEuMTJjLS41Ni4yOC0xLjE2LjQyLTEuODIuNDItLjY2IDAtMS4zNzktLjItMS43LS41LS40MTktLjM4MS0uNzQtLjU4LS43NC0yLjA0di02LjQ2aC0xLjE5OHYtMS4zaDEuMTk5YzAtLjc3OS4wMi0xLjguMTItMi41NTlsMS45LS40NGMtLjA4LjcyLS4xOCAxLjk4LS4xOCAzaDIuNDR6bS02Ljc3NSAxMC4wMThoLTEuODJWNy4wMzVjMC0uOS0uMDgtMS4yMi0uMzE5LTEuNTQtLjItLjI2LS41Ni0uNC0xLjAyLS40LS43MiAwLTEuOC41Ni0yLjQ4IDEuMjh2Ny40MThoLTEuODJWNi4zMzRjMC0xLjItLjEtMS42NTktLjM4LTIuMzhsMS43NC0uNDc5Yy4yNC40OC4zNC45Mi4zNCAxLjU0LjU4LS40OC44OC0uNzQgMS4zLS45OC41OC0uMzQgMS4yNC0uNSAxLjg2LS41IDEuMDYgMCAxLjk5OS41NiAyLjM2IDEuNDIuMTU5LjM2LjI0LjguMjQgMS4yNnY3LjU3OHptLTEwLjk4My01Ljk3OWMwLS45Ni0uMjItMS43Ni0uNjItMi4yNi0uMzItLjQtLjgtLjctMS40NC0uNy0xLjM5OSAwLTIuMSAxLjE0LTIuMSAyLjk2aDQuMTZ6bTEuOTIgMS4zNmgtNi4xdi4yNGMwIC44Ni4xMiAxLjUyLjQyIDIgLjUyMS44IDEuMzQgMS4xOCAyLjMgMS4xOC45NCAwIDEuNzQtLjMyIDIuNDYtLjk2bC43IDEuMWMtLjk4Ljg2LTIuMTYgMS4yOC0zLjQ2IDEuMjgtMi43OCAwLTQuNDc5LTIuMDItNC40NzktNS4zIDAtMS43NC4zNC0yLjg2IDEuMi0zLjg4LjgtLjk0IDEuNzgtMS4zNzkgMy4wMi0xLjM3OSAxLjEyIDAgMi4wMi4zNiAyLjcyIDEuMDguODguOSAxLjE5OSAyLjAyIDEuMjE5IDQuMzJ2LjMxOXptLTkuNTc3IDQuNjJoLTEuODJ2LTcuMThjMC0xLjE0LS4zNi0xLjU0LTEuMi0xLjU0LS45MiAwLTEuNTguNi0yLjMzOSAxLjM2djcuMzZoLTEuOHYtNy4xNGMwLTEuMTItLjMyLTEuNTQtMS4yNC0xLjU0LS42OCAwLTEuNDQuMzQtMi4zIDEuMTZ2Ny41MmgtMS44MnYtNy4zNmMwLTEuNDItLjA4LTEuOC0uMzU5LTIuNDk5bDEuNzItLjQyYy4yLjM0LjM0Ljg0LjM0IDEuNC44Ni0uOSAxLjg4LTEuNDIgMi44MTktMS40Mi45NCAwIDEuODguNSAyLjM4IDEuNTggMS0xLjA2IDIuMDQtMS41OCAzLjA2LTEuNTggMS41NTkgMCAyLjU1OS45OCAyLjU1OSAyLjgydjcuNDc4em0tMTQuMzk3IDBoLTEuODJ2LTYuNzZjMC0uODk5LS4wOC0xLjIyLS4zMi0xLjU0LS4yLS4yNi0uNTYtLjQtMS4wMi0uNC0uNzIgMC0xLjc5OS41Ni0yLjQ4IDEuMjh2Ny40MmgtMS44MnYtNy40NmMwLTEuMi0uMDk5LTEuNjU5LS4zNzktMi4zOGwxLjc0LS40NzljLjI0LjQ4LjM0LjkyLjM0IDEuNTQuNTgtLjQ4Ljg4LS43NCAxLjMtLjk4LjU4LS4zNCAxLjI0LS41IDEuODYtLjUgMS4wNTkgMCAxLjk5OS41NiAyLjM2IDEuNDIuMTU5LjM2LjIzOS44LjIzOSAxLjI2djcuNTc4em0tOC43ODItMTAuMjM5bC0uNjQgMS44NGExLjUgMS41IDAgMCAwLS41Mi0uMWMtMS4xMiAwLTIuMDc5Ljk0LTIuMDc5IDIuMDM5djYuNDZoLTEuODR2LTcuMzZjMC0xLjIyLS4xNC0xLjg4LS4zOC0yLjQ5OWwxLjc4LS40NmMuMTguMzguMzQgMS4wNC4zNCAxLjU0di4xOGMuOC0xLjE2IDEuNjYtMS43NCAyLjcyLTEuNzQuMjQgMCAuNDYuMDQuNjIuMXptLTguNjAzIDQuMjU5YzAtLjk2LS4yMi0xLjc2LS42Mi0yLjI2LS4zMi0uNC0uOC0uNy0xLjQ0LS43LTEuMzk5IDAtMi4xIDEuMTQtMi4xIDIuOTZoNC4xNnptMS45MiAxLjM2aC02LjF2LjI0YzAgLjg2LjEyIDEuNTIuNDIxIDIgLjUyLjggMS4zNCAxLjE4IDIuMyAxLjE4LjkzOSAwIDEuNzQtLjMyIDIuNDU5LS45NmwuNyAxLjFjLS45OC44Ni0yLjE2IDEuMjgtMy40NiAxLjI4LTIuNzc5IDAtNC40NzktMi4wMi00LjQ3OS01LjMgMC0xLjc0LjM0LTIuODYgMS4yLTMuODguOC0uOTQgMS43OC0xLjM3OSAzLjAyLTEuMzc5IDEuMTIgMCAyLjAyLjM2IDIuNzE5IDEuMDguODguOSAxLjIgMi4wMiAxLjIyIDQuMzJ2LjMxOXptLTguMzczLTUuNGwtMy42NTkgMTAuMWgtMS43MmwtMy41OC0xMC4wNiAxLjktLjMgMS45OCA2LjA2Yy4yMi42OC40NCAxLjQ4LjYgMi4xNi4xNi0uNi4zNi0xLjM4LjY0LTIuMmwxLjktNS43NmgxLjk0em0tMTEuMjU4IDUuMThjMC0zLjEtLjktNC4wNC0yLjM0LTQuMDQtMS42IDAtMi4yNTkgMS4xNC0yLjI1OSAzLjY2IDAgMy4wNi43OCA0LjA4IDIuMzQgNC4wOCAxLjQgMCAyLjI2LTEuMDggMi4yNi0zLjd6bTIuMDYtLjA4YzAgMy4xOC0xLjcgNS4yLTQuMzYgNS4yLTIuNjc5IDAtNC4zNC0yLjA0LTQuMzQtNS4zIDAtMy4yNCAxLjY2MS01LjI4IDQuMy01LjI4IDIuOTYgMCA0LjQgMi4zNiA0LjQgNS4zOHptLTEwLjAyNSA0LjAyYy0xLjEyLjctMi42MiAxLjEtNC4wOCAxLjEtMS44NCAwLTMuMy0uNjItNC4zNTgtMS44Ni0xLjEtMS4yOC0xLjYtMi45LTEuNi01LjE2IDAtMS45MTMuOC00LjEwMyAyLjM4LTUuNDAzLjk5OC0uODIgMi4wOTktMS4xOCAzLjQ1OS0xLjE4IDEuNSAwIDIuODE5LjQ0IDMuODk5IDEuMzhsLS45MiAxLjJjLTEuMDItLjc0LTEuODgtMS4wNC0yLjk0LTEuMDQtMS4zMiAwLTIuMjk4LjU1Mi0yLjk1OSAxLjc2LS40ODEuODgtLjc2IDEuNzQ0LS43NiAzLjM4MyAwIDEuOS4zNCAzLjMyLjk4IDQuMTYuNi43OCAxLjc4IDEuMjQgMi45NiAxLjI0Ljc3OSAwIDEuNDgtLjIgMi4wNC0uNTJ2LTMuOTJoLTIuNTRsLS4zMi0xLjU4aDQuNzU5djYuNDR6bS02My4yMy0uMzc0bC0uNDggMS42aC04LjIxOHYtMS40OGw1LjU1OS04Ljc4MmMuMy0uNTIuNy0xLjA2Ljk4LTEuNDItLjQuMDQtLjkuMDYtMS41OC4wNmgtNC43MTlsLjQ2LTEuNmg3LjkxOHYxLjU0bC01LjQ5OSA4Ljc4M2MtLjMuNTItLjYyLjkyLS44NiAxLjMyLjQyLS4wMi44OC0uMDIgMS4zOC0uMDJoNS4wNnpNOS4xOTQgMTMuOTU3aC0yLjA2bC0zLjYyLTcuMzE5Yy0uNy0xLjQyLTEuNDE5LTIuOTgtMS42NzktMy43OGwtLjEyLjAyYy4xIDEuMTguMTQgMi41Ni4xNiAzLjg0bC4wOCA3LjIzOWgtLjc1NmMtLjg3MyAwLTEuMTg0LS44NDQtMS4xODQtMS43OTZWLjE4aDIuMjRsMy44NCA3LjU5OWMuNTggMS4xNCAxLjI2IDIuOTIgMS4zNiAzLjNsLjEyLS4wNDFjLS4wNC0uNC0uMi0yLjU4LS4yLTQuMUw3LjMzMy4xOGgxLjg2djEzLjc3OHpNMCAxOC4zNTlzMjMuOTA5LTIuNjk5IDQ2LjUyMy0yLjY5OWMyMy4xIDAgNDcuMTUgMi43IDQ3LjE1IDIuN3YuOTUycy0yNC4yMS0yLjU1OS00Ny4xNDYtMi41NTlDMjMuOTEgMTYuNzUzIDAgMTkuMzEzIDAgMTkuMzEzdi0uOTU0eiIgbWFzaz0idXJsKCNiKSIvPgogICAgPC9nPgo8L3N2Zz4=';
|
|
1538
1340
|
|
|
1539
|
-
|
|
1341
|
+
const LuiFooter = (props) => {
|
|
1540
1342
|
return (React__default.createElement("footer", { className: 'lui-footer' },
|
|
1541
1343
|
React__default.createElement("div", { className: 'lui-footer-columns' },
|
|
1542
1344
|
React__default.createElement("h2", null, props.footerText),
|
|
@@ -25029,35 +24831,33 @@ var loaderDataChristmas = {
|
|
|
25029
24831
|
* Very trivial react wrapper for Lottie-web light. Using lottie-web directly rather than with `react-lottie` or
|
|
25030
24832
|
* `lottie-react` reduces our bundle size and enables use to use lottie-web in light mode.
|
|
25031
24833
|
*/
|
|
25032
|
-
|
|
25033
|
-
|
|
25034
|
-
|
|
25035
|
-
|
|
25036
|
-
React__default.useEffect(function () {
|
|
24834
|
+
const LuiLottieLight = ({ animationData, style, rendererSettings, autoplay, loop, }) => {
|
|
24835
|
+
const element = React__default.useRef(null);
|
|
24836
|
+
const lottieInstance = React__default.useRef();
|
|
24837
|
+
React__default.useEffect(() => {
|
|
25037
24838
|
if (element.current) {
|
|
25038
24839
|
lottieInstance.current = lottie.loadAnimation({
|
|
25039
|
-
animationData
|
|
24840
|
+
animationData,
|
|
25040
24841
|
container: element.current,
|
|
25041
|
-
rendererSettings
|
|
25042
|
-
autoplay
|
|
25043
|
-
loop
|
|
24842
|
+
rendererSettings,
|
|
24843
|
+
autoplay,
|
|
24844
|
+
loop,
|
|
25044
24845
|
});
|
|
25045
24846
|
}
|
|
25046
|
-
return
|
|
25047
|
-
|
|
25048
|
-
(_a = lottieInstance.current) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
24847
|
+
return () => {
|
|
24848
|
+
lottieInstance.current?.destroy();
|
|
25049
24849
|
};
|
|
25050
24850
|
}, [animationData, autoplay, loop, rendererSettings]);
|
|
25051
24851
|
return React__default.createElement("div", { style: style, ref: element });
|
|
25052
24852
|
};
|
|
25053
24853
|
|
|
25054
24854
|
// This prevents spinners from animating and causing diffs in chromatic
|
|
25055
|
-
|
|
25056
|
-
|
|
25057
|
-
|
|
24855
|
+
const autoplay = !isChromatic();
|
|
24856
|
+
const style = { height: 148, width: 148 };
|
|
24857
|
+
const renderSettings = {
|
|
25058
24858
|
preserveAspectRatio: 'xMidYMid slice',
|
|
25059
24859
|
};
|
|
25060
|
-
|
|
24860
|
+
const LuiLoadingSpinnerBase = (props) => {
|
|
25061
24861
|
return (React__default.createElement("div", { style: {
|
|
25062
24862
|
position: 'absolute',
|
|
25063
24863
|
top: '50%',
|
|
@@ -25071,7 +24871,7 @@ var LuiLoadingSpinnerBase = function (props) {
|
|
|
25071
24871
|
/**
|
|
25072
24872
|
* A LuiSpinner with a status message beneath it.
|
|
25073
24873
|
*/
|
|
25074
|
-
|
|
24874
|
+
const LuiStatusSpinner = (props) => {
|
|
25075
24875
|
return (React__default.createElement("div", { className: 'LuiStatusSpinner' },
|
|
25076
24876
|
React__default.createElement(LuiLoadingSpinner, null),
|
|
25077
24877
|
React__default.createElement("div", { style: {
|
|
@@ -25086,24 +24886,25 @@ var LuiStatusSpinner = function (props) {
|
|
|
25086
24886
|
width: '300px',
|
|
25087
24887
|
} }, props.children))));
|
|
25088
24888
|
};
|
|
25089
|
-
|
|
25090
|
-
return (React__default.createElement("div",
|
|
24889
|
+
const LuiMiniSpinner = (props) => {
|
|
24890
|
+
return (React__default.createElement("div", { ...props.divProps },
|
|
25091
24891
|
React__default.createElement(LuiLottieLight, { animationData: loaderData, loop: true, autoplay: autoplay, rendererSettings: {
|
|
25092
24892
|
preserveAspectRatio: 'xMidYMid slice',
|
|
25093
24893
|
}, style: { height: props.size, width: props.size } })));
|
|
25094
24894
|
};
|
|
25095
|
-
|
|
24895
|
+
const LuiLoadingSpinner = () => {
|
|
25096
24896
|
return React__default.createElement(LuiLoadingSpinnerBase, { animationData: loaderData });
|
|
25097
24897
|
};
|
|
25098
|
-
|
|
24898
|
+
const LuiLoadingSpinnerEaster = () => {
|
|
25099
24899
|
return React__default.createElement(LuiLoadingSpinnerBase, { animationData: loaderDataEaster });
|
|
25100
24900
|
};
|
|
25101
|
-
|
|
24901
|
+
const LuiLoadingSpinnerChristmas = () => {
|
|
25102
24902
|
return React__default.createElement(LuiLoadingSpinnerBase, { animationData: loaderDataChristmas });
|
|
25103
24903
|
};
|
|
25104
24904
|
// this function was extracted from chromatic/isChromatic. It was causing TS issues for the consumer
|
|
25105
24905
|
function isChromatic() {
|
|
25106
|
-
return !!(
|
|
24906
|
+
return !!(window?.navigator.userAgent.match(/Chromatic/) ||
|
|
24907
|
+
window?.location.href.match(/chromatic=true/));
|
|
25107
24908
|
}
|
|
25108
24909
|
|
|
25109
24910
|
var css_248z$4 = ":export {\n charcoal: #2a292c;\n fuscous: #6b6966;\n gray: #989189;\n silver: #beb9b4;\n lily: #eaeaea;\n hint: #f9f9f9;\n snow: #ffffff;\n white: #ffffff;\n teal: #00425d;\n sea: #007198;\n electric: #0096cc;\n spray: #73c8e1;\n polar: #e2f3f7;\n sherpa: #004b50;\n surfie: #017a76;\n persian: #00a599;\n downy: #73cdc8;\n iceberg: #dcf5f0;\n sacramento: #004e32;\n salem: #08814d;\n pigment: #0aa245;\n granny: #9bd79b;\n panache: #e9fae7;\n brand-primary: #004b50;\n brand-secondary: #017a76;\n error: #cc0000;\n error-bg: #f5cccc;\n error-focus: #5a0000;\n warning: #ea6a2e;\n warning-bg: #fbdfd2;\n warning-focus: #b33a01;\n success: #0aa245;\n success-bg: #e9fae7;\n info: #3a7cdf;\n info-bg: #d8e5f9;\n visited: #00425d;\n green-hover: #107c3a;\n green-active: #094a22;\n green-btn: #0aa245;\n txt-link: #0096cc;\n primary-hover-btn: #005678;\n selection: #c7e9f3;\n heading-color: #017a76;\n heading-color--secondary: #2a292c;\n base-type-color: #2a292c;\n input-text: #2a292c;\n input-placeholder: #6b6966;\n input-placeholder-when-disabled: #989189;\n base-icon-color: #007198;\n disabled-color: #989189;\n disabled-color-dark: #6b6966;\n linz-color-primary: #023d48;\n linz-color-primary-hover: #01818a;\n linz-color-tertiary: #e1e44a;\n linz-color-tertiary-hover: #cdcf59;\n color-test-pink: #f09;\n linz-linear-gradient-blue: linear-gradient(70deg, #00425d 12%, #007198 100%);\n linz-linear-gradient-teal: linear-gradient(270deg, #00a599 1%, #73cdc8 100%);\n}";
|
|
@@ -25214,61 +25015,114 @@ var CreatableSelect = /*#__PURE__*/React__default.forwardRef(function (props, re
|
|
|
25214
25015
|
/**
|
|
25215
25016
|
* A wrapper around React Select with Lui styling
|
|
25216
25017
|
*/
|
|
25217
|
-
|
|
25018
|
+
const LuiComboSelect = forwardRef(LuiComboSelectActual);
|
|
25218
25019
|
// declare the indicator in here so it gets the types from
|
|
25219
25020
|
// the function declaration
|
|
25220
|
-
|
|
25021
|
+
const LuiLoadingIndicator = () => React__default.createElement(LuiMiniSpinner, { size: 25 });
|
|
25221
25022
|
function LuiComboSelectActual(givenProps, ref) {
|
|
25222
|
-
|
|
25223
|
-
noOptionsMessage:
|
|
25224
|
-
return "No options found containing '" + i.inputValue + "'";
|
|
25225
|
-
},
|
|
25023
|
+
const props = Object.assign({
|
|
25024
|
+
noOptionsMessage: (i) => `No options found containing '${i.inputValue}'`,
|
|
25226
25025
|
}, givenProps);
|
|
25227
|
-
props.components =
|
|
25026
|
+
props.components = {
|
|
25027
|
+
LoadingIndicator: LuiLoadingIndicator,
|
|
25028
|
+
...props.components,
|
|
25029
|
+
};
|
|
25228
25030
|
// box-shadow: "-8px 0px 0 0 #cc0000";
|
|
25229
25031
|
// border-radius: "4px";
|
|
25230
|
-
|
|
25231
|
-
|
|
25232
|
-
|
|
25032
|
+
const id = useGenerateOrDefaultId(props?.id);
|
|
25033
|
+
const selectProp = {
|
|
25034
|
+
inputId: id,
|
|
25035
|
+
...props,
|
|
25036
|
+
classNamePrefix: 'LuiComboSelect',
|
|
25037
|
+
theme: (theme) => ({
|
|
25038
|
+
...theme,
|
|
25039
|
+
colors: {
|
|
25040
|
+
...theme.colors,
|
|
25041
|
+
primary: css_248z$4['sea'],
|
|
25042
|
+
primary75: css_248z$4['electric'],
|
|
25043
|
+
primary50: css_248z$4['spray'],
|
|
25044
|
+
primary25: css_248z$4['polar'],
|
|
25045
|
+
neutral90: css_248z$4['charcoal'],
|
|
25046
|
+
neutral80: css_248z$4['charcoal'],
|
|
25047
|
+
neutral70: css_248z$4['charcoal'],
|
|
25048
|
+
neutral60: css_248z$4['fuscous'],
|
|
25049
|
+
neutral50: css_248z$4['fuscous'],
|
|
25050
|
+
neutral40: css_248z$4['gray'],
|
|
25051
|
+
neutral30: css_248z$4['gray'],
|
|
25052
|
+
neutral20: css_248z$4['silver'],
|
|
25053
|
+
neutral10: css_248z$4['lily'],
|
|
25054
|
+
neutral5: css_248z$4['hint'],
|
|
25055
|
+
danger: css_248z$4['error'],
|
|
25056
|
+
dangerLight: css_248z$4['error-bg'],
|
|
25057
|
+
},
|
|
25058
|
+
}),
|
|
25059
|
+
styles: {
|
|
25060
|
+
control: (provided, state) => ({
|
|
25061
|
+
...provided,
|
|
25233
25062
|
/* matches style of .LuiTextInput-input */
|
|
25234
|
-
boxShadow: 'none',
|
|
25063
|
+
boxShadow: 'none',
|
|
25064
|
+
border: state.isFocused ? '1px solid #053d52' : '1px solid #b2b2b2',
|
|
25065
|
+
'&:hover, &:active': {
|
|
25235
25066
|
borderColor: '#053d52',
|
|
25236
|
-
}
|
|
25237
|
-
|
|
25238
|
-
|
|
25239
|
-
|
|
25067
|
+
},
|
|
25068
|
+
}),
|
|
25069
|
+
dropdownIndicator: (provided) => ({
|
|
25070
|
+
...provided,
|
|
25071
|
+
color: css_248z$4['fuscous'],
|
|
25072
|
+
}),
|
|
25073
|
+
indicatorSeparator: (provided) => ({
|
|
25074
|
+
...provided,
|
|
25075
|
+
width: 0,
|
|
25076
|
+
}),
|
|
25077
|
+
input: (provided) => ({
|
|
25078
|
+
...provided,
|
|
25079
|
+
height: '40px',
|
|
25080
|
+
minHeight: '40px',
|
|
25081
|
+
fontWeight: 400,
|
|
25082
|
+
input: {
|
|
25240
25083
|
height: '38px !important',
|
|
25241
|
-
}
|
|
25242
|
-
|
|
25243
|
-
|
|
25084
|
+
},
|
|
25085
|
+
}),
|
|
25086
|
+
singleValue: (provided) => ({
|
|
25087
|
+
...provided,
|
|
25088
|
+
color: '#414042',
|
|
25089
|
+
fontWeight: 400,
|
|
25090
|
+
}),
|
|
25091
|
+
placeholder: (provided) => ({
|
|
25092
|
+
...provided,
|
|
25244
25093
|
/* please keep this in sync with FormVars.scss/mixin.formPlaceholder */
|
|
25245
|
-
fontWeight: 'normal',
|
|
25246
|
-
|
|
25247
|
-
|
|
25248
|
-
|
|
25249
|
-
}
|
|
25250
|
-
|
|
25094
|
+
fontWeight: 'normal',
|
|
25095
|
+
fontStyle: 'italic',
|
|
25096
|
+
color: css_248z$4['input-placeholder'],
|
|
25097
|
+
}),
|
|
25098
|
+
option: (provided, { isSelected }) => ({
|
|
25099
|
+
...provided,
|
|
25100
|
+
color: css_248z$4['input-text'],
|
|
25101
|
+
backgroundColor: isSelected ? css_248z$4['selection'] : css_248z$4['white'],
|
|
25102
|
+
}),
|
|
25103
|
+
},
|
|
25104
|
+
};
|
|
25251
25105
|
return (React__default.createElement("label", { htmlFor: id, className: clsx('LuiComboSelect-label', props.error && 'hasError') },
|
|
25252
25106
|
React__default.createElement("span", { className: clsx('LuiSelect-label-text', props.hideLabel ? 'LuiScreenReadersOnly' : '') }, props.label),
|
|
25253
|
-
props.isCreateable ? (React__default.createElement(CreatableSelect,
|
|
25107
|
+
props.isCreateable ? (React__default.createElement(CreatableSelect, { formatCreateLabel: (inputValue) => inputValue, createOptionPosition: "first", ref: ref, ...selectProp })) : (React__default.createElement(Select, { ref: ref, ...selectProp })),
|
|
25254
25108
|
props.error && (React__default.createElement("span", { className: "LuiComboSelect-error" },
|
|
25255
25109
|
React__default.createElement(LuiIcon, { alt: 'Error', name: "ic_error", className: "LuiComboSelect-error-icon", size: "sm", status: "error" }),
|
|
25256
25110
|
props.error))));
|
|
25257
25111
|
}
|
|
25258
25112
|
|
|
25259
|
-
|
|
25113
|
+
const LuiShadow = (props) => {
|
|
25260
25114
|
return (React__default.createElement("div", { className: clsx('LuiShadow', props.className) }, props.children));
|
|
25261
25115
|
};
|
|
25262
25116
|
|
|
25263
|
-
|
|
25117
|
+
const HelpInfo = (props) => (React__default.createElement("div", { className: clsx('lui-small', 'HelpInfo') },
|
|
25264
25118
|
React__default.createElement(LuiIcon, { name: "ic_error_outline", className: 'HelpInfo-icon', size: "sm", alt: "Extra Information" }),
|
|
25265
|
-
React__default.createElement("div", { className: 'HelpInfo-info' }, props.info)));
|
|
25119
|
+
React__default.createElement("div", { className: 'HelpInfo-info' }, props.info)));
|
|
25266
25120
|
|
|
25267
|
-
|
|
25121
|
+
const LuiFormSectionHeader = (props) => (React__default.createElement("div", { className: "LuiFormSectionHeader" },
|
|
25268
25122
|
React__default.createElement("div", { className: "LuiFormSectionHeader-header" },
|
|
25269
25123
|
React__default.createElement("h3", { className: "LuiFormSectionHeader-heading" }, props.header),
|
|
25270
25124
|
props.details && React__default.createElement(HelpInfo, { info: props.details })),
|
|
25271
|
-
React__default.createElement(LuiShadow, { className: 'LuiFormSectionHeader-details' }, props.children)));
|
|
25125
|
+
React__default.createElement(LuiShadow, { className: 'LuiFormSectionHeader-details' }, props.children)));
|
|
25272
25126
|
|
|
25273
25127
|
var logo = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIzMDBweCIgaGVpZ2h0PSI3MHB4IiB2aWV3Qm94PSIwIDAgMzAwIDcwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDAgNzA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkZGRkZGO30KCS5zdDF7ZmlsbDp1cmwoI1NWR0lEXzFfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8yXyk7fQoJLnN0M3tmaWxsOnVybCgjU1ZHSURfM18pO30KCS5zdDR7ZmlsbDp1cmwoI1NWR0lEXzRfKTt9Cgkuc3Q1e2ZpbGw6dXJsKCNTVkdJRF81Xyk7fQoJLnN0NntvcGFjaXR5OjAuNDtmaWxsOnVybCgjU1ZHSURfNl8pO2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyAgICA7fQo8L3N0eWxlPgoJPGcgaWQ9IkxheWVyXzJfMl8iPgoJPGcgaWQ9IlRvaXR1X0xvZ29zIj4KCQk8ZyBpZD0iQmFkZ2VfVG9pdHUiPgoJCQk8ZyBpZD0iX0dyb3VwXyI+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNOTUuOSw1LjZjLTIuMSwwLTMuOS0wLjEtNi4zLTAuMWMwLDAuNiwwLDEuNCwwLDEuOHYxMC41YzAsMS4xLDAsMy4zLDAuMSw0LjFoLTVjMC4xLTEuNCwwLjItNS4xLDAuMi03di01CgkJCQkJYzAtMS4xLDAtMy0wLjEtNC41Yy0yLjQsMC00LjQsMC02LjQsMC4xYzAuMS0xLjIsMC4xLTIuNywwLjEtNGMyLjcsMC4xLDUuNCwwLjEsOC43LDAuMXM2LjEtMC4xLDguOC0wLjEKCQkJCQlDOTYsMyw5NS45LDQuMyw5NS45LDUuNnoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMDAsMjIuNmMtMy43LDAuMS02LjktMi44LTctNi41YzAtMC4yLDAtMC4zLDAtMC41YzAtNC40LDIuOS03LjcsNy4zLTcuN2MzLjctMC4xLDYuOSwyLjgsNyw2LjUKCQkJCQljMCwwLjIsMCwwLjMsMCwwLjVDMTA3LjQsMTkuMywxMDQuNSwyMi42LDEwMCwyMi42eiBNMTAwLjMsMTEuMWMtMS44LDAtMywxLjUtMyw0YzAsMywxLjIsNC4yLDIuOSw0LjJjMS45LDAsMy0xLjUsMy00CgkJCQkJQzEwMy4yLDEyLjMsMTAxLjksMTEuMSwxMDAuMywxMS4xeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTExMS44LDUuOGMtMS4zLDAuMS0yLjQtMC45LTIuNS0yLjJjMCwwLDAtMC4xLDAtMC4xYzAtMS40LDEuMS0yLjQsMi41LTIuNGMwLDAsMC4xLDAsMC4xLDAKCQkJCQljMS4zLTAuMSwyLjQsMC45LDIuNSwyLjNjMCwwLDAsMCwwLDBjMCwxLjMtMS4xLDIuNC0yLjUsMi40QzExMS44LDUuOCwxMTEuOCw1LjgsMTExLjgsNS44eiBNMTA5LjMsMjIuMQoJCQkJCWMwLjEtMS42LDAuMi0zLjEsMC4yLTQuN3YtNC4xYzAtMS43LTAuMS0zLjctMC4yLTQuOWMxLDAsMy44LTAuMiw0LjctMC4zYy0wLjEsMC43LTAuMSwyLjEtMC4xLDMuMXY4LjFjMCwwLjksMCwxLjksMC4xLDIuOAoJCQkJCUwxMDkuMywyMi4xeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNS40LDIxLjdjLTEsMC41LTIuMSwwLjgtMy4yLDAuOGMtMi45LDAtNC41LTEuMi00LjUtNC44di02LjVoLTIuNGwwLjctMy4xaDEuN2wwLjMtMi44bDQtMS4zdjQuMmgzLjUKCQkJCQljLTAuMSwwLjYtMC4xLDIuMS0wLjEsMy4xSDEyMnY2YzAsMS40LDAuNSwxLjgsMS41LDEuOGMwLjcsMCwxLjQtMC4yLDIuMS0wLjZMMTI1LjQsMjEuN3oiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzcuMiwyMi4xbC0wLjUtMi40Yy0wLjksMS43LTIuNywyLjgtNC43LDIuOWMtMywwLTQuNi0xLjgtNC42LTUuMnYtNC4yYzAtMS42LTAuMS0zLjQtMC4xLTQuOAoJCQkJCWMxLjYsMCwzLjMtMC4xLDQuNi0wLjJjLTAuMSwxLjEtMC4yLDIuMS0wLjEsMy4ydjQuOWMwLDIsMC41LDIuOSwyLjEsMi45YzEuNC0wLjEsMi42LTEuMiwyLjctMi43di0zLjNjMC0xLjYtMC4xLTMuNC0wLjItNC44CgkJCQkJYzEuNiwwLDMuMy0wLjEsNC43LTAuMmMtMC4xLDEuMS0wLjIsMi4xLTAuMiwzLjJ2NS45YzAsMS42LDAuMSwzLjIsMC4yLDQuOEwxMzcuMiwyMi4xeiBNMTM5LjIsNS40Yy0xLjMsMC0yLjMtMC4xLTMuNC0wLjFoLTMKCQkJCQljLTEuNCwwLTIuNCwwLTMuNCwwLjFjMC4xLTAuNywwLjEtMi4xLDAuMS0yLjljMS42LDAuMSwyLjgsMC4xLDUsMC4xYzEuNSwwLDMuMywwLDQuOS0wLjFDMTM5LjMsMy4zLDEzOS4yLDQuNCwxMzkuMiw1LjR6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTY1LjEsNS42Yy0yLjEsMC0zLjktMC4xLTYuMy0wLjFjMCwwLjYsMCwxLjQsMCwxLjh2MTAuNWMwLDEuMSwwLDMuMywwLjEsNC4xaC01YzAuMS0xLjQsMC4yLTUuMSwwLjItNwoJCQkJCXYtNWMwLTEuMSwwLTMtMC4xLTQuNWMtMi40LDAtNC40LDAtNi40LDAuMWMwLjEtMS4yLDAuMS0yLjcsMC4xLTRjMi43LDAuMSw1LjQsMC4xLDguNywwLjFzNi4xLTAuMSw4LjktMC4xCgkJCQkJQzE2NS4yLDMsMTY1LjEsNC4zLDE2NS4xLDUuNnoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNzUuMSwxNS44bC04LDAuMmMwLjEsMi4xLDEuNCwzLjIsMy43LDMuMmMxLjgsMCwzLjYtMC42LDUuMi0xLjZsLTAuMSwzLjNjLTEuNywxLjEtMy42LDEuNi01LjYsMS42CgkJCQkJYy01LDAtNy40LTMuMi03LjQtNy4xYzAtNC40LDMtNy42LDcuNC03LjZjNC40LDAsNi4yLDMsNi4yLDYuOEwxNzUuMSwxNS44eiBNMTcyLjYsMTMuOGMtMC4yLTEuOC0wLjktMi44LTIuNS0yLjgKCQkJCQljLTEuNywwLTIuNywxLjMtMywzTDE3Mi42LDEzLjh6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjA1LjgsMTYuNmMtMC45LDIuNS0xLjQsNC0xLjksNS43bC0zLDAuM2wtNC42LTEzLjNsLTIuNyw4Yy0wLjUsMS42LTEuMiwzLjMtMS44LDUuMmgtM2wtNS4xLTE0LjcKCQkJCQljLTAuNi0xLjgtMS40LTQuMS0yLjEtNS45bDUtMC4ybDQuMSwxMy42bDIuOC04LjhjMC40LTEuMiwxLjItMy42LDEuNi00LjhsMi44LTAuM2w0LjYsMTMuN2wyLjUtOC42bDEuNC00LjdoNC44TDIwNS44LDE2LjZ6IgoJCQkJLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMjAuOSwyMi4xYzAuMS0xLjIsMC4yLTMuMiwwLjItNC45VjE0YzAtMS43LTAuNC0yLjYtMS44LTIuNmMtMS42LDAtMi45LDEuMy0zLDIuOXY1YzAsMSwwLDEuOSwwLjEsMi45CgkJCQkJaC00LjZjMC4xLTEuMiwwLjItMy4xLDAuMi00Ljh2LTExYzAtMS43LTAuMS0zLjQtMC4yLTQuNmMxLTAuMSwzLjgtMC4zLDQuNi0wLjVjLTAuMSwwLjgtMC4xLDMuMy0wLjEsMy44djYKCQkJCQljMS0xLjgsMi45LTIuOSw1LTMuMWMyLjksMCw0LjIsMS44LDQuMiw0Ljl2Ni4zYzAsMSwwLjEsMi4yLDAuMSwzSDIyMC45eiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTIzOS43LDE1LjhsLTgsMC4yYzAuMSwyLjEsMS40LDMuMiwzLjcsMy4yYzEuOSwwLDMuNy0wLjYsNS4yLTEuNmwtMC4xLDMuM2MtMS43LDEuMS0zLjYsMS42LTUuNiwxLjYKCQkJCQljLTUsMC03LjQtMy4yLTcuNC03LjFjMC00LjQsMy03LjYsNy40LTcuNnM2LjIsMyw2LjIsNi44TDIzOS43LDE1Ljh6IE0yMzcuMiwxMy44Yy0wLjItMS44LTAuOS0yLjgtMi41LTIuOGMtMS43LDAtMi43LDEuMy0zLDMKCQkJCQlMMjM3LjIsMTMuOHoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNTIuMSwyMi4xYzAuMS0xLjIsMC4yLTMuMiwwLjItNC45VjE0YzAtMS43LTAuNC0yLjYtMS44LTIuNmMtMS42LDAuMS0yLjksMS4zLTMsMi45djQuOWMwLDEsMCwyLDAuMSwzCgkJCQkJSDI0M2MwLjEtMS4yLDAuMi0zLjIsMC4yLTQuOXYtNGMwLTEuNy0wLjEtMy41LTAuMi00LjhjMSwwLDMuNC0wLjMsNC4zLTAuNGwwLjIsMi45YzEtMS44LDIuOS0zLDUtMy4xYzIuOSwwLDQuMiwxLjgsNC4yLDQuOQoJCQkJCXY2LjNjMCwxLDAuMSwyLjIsMC4xLDNIMjUyLjF6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjY5LjEsMjIuMWwtMC41LTIuNGMtMC45LDEuNy0yLjcsMi44LTQuNywyLjljLTMsMC00LjUtMS44LTQuNS01LjJ2LTQuMmMwLTEuNi0wLjEtMy40LTAuMS00LjgKCQkJCQljMS42LDAsMy4zLTAuMSw0LjYtMC4yYy0wLjEsMS4xLTAuMiwyLjEtMC4xLDMuMnY0LjljMCwyLDAuNSwyLjksMi4xLDIuOWMxLjQtMC4xLDIuNi0xLjIsMi43LTIuN3YtMy4zYzAtMS42LTAuMS0zLjQtMC4yLTQuOAoJCQkJCWMxLjYsMCwzLjMtMC4xLDQuNy0wLjJjLTAuMSwxLjEtMC4yLDIuMS0wLjIsMy4ydjUuOWMwLDEuNiwwLjEsMy4yLDAuMiw0LjhMMjY5LjEsMjIuMXoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNzQuOSwxOC42YzAtMi43LDIuNC00LjYsNy4xLTQuNmMwLjMsMCwwLjcsMCwxLjEsMC4xbDAtMC40YzAuMS0xLjUtMC42LTIuMy0yLjQtMi4zCgkJCQkJYy0xLjUsMC0yLjksMC41LTQuMiwxLjNsLTAuNi0zLjJjMS43LTEsMy43LTEuNSw1LjYtMS41YzQsMCw1LjgsMS45LDUuNyw1LjVsLTAuMSw1YzAsMC44LDAuMiwxLjEsMC44LDEuMQoJCQkJCWMwLjMsMCwwLjYtMC4xLDAuOS0wLjJsLTAuMiwyLjZjLTAuNywwLjMtMS41LDAuNC0yLjMsMC41Yy0xLjQsMC0yLjYtMC42LTMtMi4zYy0wLjksMS40LTIuNSwyLjMtNC4yLDIuMwoJCQkJCUMyNzYuNSwyMi40LDI3NC45LDIxLDI3NC45LDE4LjZ6IE0yODMsMTcuM1YxNmMtMC4zLDAtMC42LTAuMS0wLjktMC4xYy0yLjMsMC0zLjIsMC45LTMuMiwyLjFjLTAuMSwwLjksMC42LDEuNiwxLjUsMS43CgkJCQkJYzAuMSwwLDAuMiwwLDAuMywwQzI4MiwxOS44LDI4Mi45LDE4LjgsMjgzLDE3LjN6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNOTMuMiw0Ni4yYy0xLjQtMC4xLTMtMC4xLTQuNy0wLjFzLTMuNCwwLTQuOSwwLjFjMC4xLTEsMC4xLTMuOCwwLjEtNS4ydi00LjdjMC0xLjQsMC00LjEtMC4xLTUuMQoJCQkJCWMwLjgsMCwyLjksMCwzLjYtMC4xYy0wLjEsMC42LTAuMSwyLjMtMC4xLDMuMXY4YzAsMC40LDAsMC44LDAsMS4yYzAuNSwwLDEuMSwwLDEuNywwYzEuNiwwLDMsMCw0LjQtMC4xCgkJCQkJQzkzLjMsNDQuMiw5My4yLDQ1LjEsOTMuMiw0Ni4yeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTk0LjMsNDMuNWMwLTIuMSwxLjctMy40LDUuMi0zLjRjMC4yLDAsMC41LDAsMC44LDB2LTAuM2MwLTEuMS0wLjQtMS43LTEuNy0xLjdjLTEuMSwwLTIuMiwwLjQtMy4xLDAuOQoJCQkJCWwtMC40LTIuNGMxLjMtMC43LDIuNy0xLjEsNC4yLTEuMWMyLjksMCw0LjMsMS40LDQuMiw0LjFsLTAuMSwzLjdjMCwwLjYsMC4yLDAuOCwwLjYsMC44YzAuMiwwLDAuNCwwLDAuNi0wLjFsLTAuMiwxLjkKCQkJCQljLTAuNSwwLjItMS4xLDAuMy0xLjcsMC4zYy0xLjEsMC4xLTItMC42LTIuMi0xLjdjLTAuNywxLjEtMS45LDEuNy0zLjEsMS43Qzk1LjYsNDYuNCw5NC4zLDQ1LjMsOTQuMyw0My41eiBNMTAwLjMsNDIuNnYtMQoJCQkJCWMtMC4yLDAtMC40LDAtMC43LDBjLTEuNywwLTIuNCwwLjctMi40LDEuNmMwLDAuNywwLjUsMS4yLDEuMSwxLjNjMC4xLDAsMC4xLDAsMC4yLDBjMC45LDAsMS43LTAuNywxLjctMS43CgkJCQkJQzEwMC4zLDQyLjcsMTAwLjMsNDIuNiwxMDAuMyw0Mi42TDEwMC4zLDQyLjZ6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTEyLjYsNDYuMWMwLjEtMC45LDAuMS0yLjQsMC4xLTMuNnYtMi40YzAtMS4yLTAuMy0yLTEuNC0yYy0xLjIsMC0yLjEsMS0yLjIsMi4xdjMuNmMwLDAuNywwLDEuNiwwLjEsMi4yCgkJCQkJaC0zLjRjMC4xLTAuOSwwLjEtMi40LDAuMS0zLjZ2LTIuOWMwLTEuMiwwLTIuNi0wLjEtMy41YzAuNywwLDIuNS0wLjIsMy4yLTAuM2wwLjIsMi4xYzAuOC0xLjQsMi4yLTIuMiwzLjgtMi4zCgkJCQkJYzIuMSwwLDMuMSwxLjQsMy4xLDMuNnY0LjdjMCwwLjcsMCwxLjYsMC4xLDIuMkgxMTIuNnoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMjQuOSwzNi4zdi0xLjljMC0xLjIsMC0yLjUtMC4xLTMuNGMwLjgtMC4xLDIuOC0wLjMsMy40LTAuNGMtMC4xLDAuNi0wLjEsMS42LTAuMSwyLjN2OS42CgkJCQkJYzAsMS4yLDAsMi42LDAuMiwzLjVoLTMuMUwxMjUsNDVjLTAuNywwLjktMS44LDEuNC0yLjksMS40Yy0yLjgsMC00LjUtMi40LTQuNS01YzAtMy4zLDIuMS01LjgsNS4xLTUuOAoJCQkJCUMxMjMuNCwzNS42LDEyNC4yLDM1LjgsMTI0LjksMzYuM3ogTTEyMC44LDQxLjFjMCwyLDEsMywyLjMsM2MwLjcsMCwxLjQtMC40LDEuOC0xdi00LjVjLTAuNS0wLjQtMS4xLTAuNy0xLjctMC42CgkJCQkJQzEyMS42LDM4LDEyMC44LDM5LjQsMTIwLjgsNDEuMXoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzUuMyw0Ni4xYzAuMS0xLDAuMi0zLjcsMC4yLTUuMXYtNC43YzAtMS40LDAtNC4xLTAuMi01LjFjMC44LDAsMywwLDMuNy0wLjFjLTAuMSwwLjYtMC4xLDIuMy0wLjEsMy4xCgkJCQkJVjQzYzAsMC44LDAsMi41LDAuMSwzLjFIMTM1LjN6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTQ4LjMsNDYuMWMwLjEtMC45LDAuMi0yLjQsMC4yLTMuNnYtMi40YzAtMS4yLTAuMy0yLTEuNC0yYy0xLjIsMC0yLjEsMS0yLjIsMi4xdjMuNmMwLDAuNywwLDEuNiwwLjEsMi4yCgkJCQkJaC0zLjRjMC4xLTAuOSwwLjEtMi40LDAuMS0zLjZ2LTIuOWMwLTEuMiwwLTIuNi0wLjEtMy41YzAuNywwLDIuNS0wLjIsMy4yLTAuM2wwLjIsMi4xYzAuOC0xLjMsMi4yLTIuMiwzLjctMi4zCgkJCQkJYzIuMSwwLDMuMSwxLjQsMy4xLDMuNnY0LjdjMCwwLjcsMCwxLjYsMC4xLDIuMkgxNDguM3oiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNjAuNCwzMy4zYy0wLjMtMC4xLTAuNi0wLjItMS0wLjJjLTEuMSwwLTEuNywwLjctMS43LDIuMXYwLjdoMi41Yy0wLjEsMC41LTAuMSwxLjUtMC4xLDIuM2gtMi40djUuOQoJCQkJCWMwLDAuNywwLDEuNCwwLjEsMi4xaC0zLjRjMC4xLTEuMiwwLjItMi4zLDAuMi0zLjV2LTQuNWgtMS44bDAuNS0yLjNoMS4zdi0wLjVjMC0yLjksMS41LTQuNyw0LjMtNC43YzAuNSwwLDAuOSwwLjEsMS40LDAuMgoJCQkJCUwxNjAuNCwzMy4zeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NS45LDQ2LjVjLTIuOCwwLjEtNS4xLTIuMS01LjEtNC44YzAtMC4xLDAtMC4yLDAtMC4zYzAtMy4zLDIuMi01LjcsNS40LTUuN2MyLjgtMC4xLDUuMSwyLDUuMiw0LjgKCQkJCQljMCwwLjEsMCwwLjMsMCwwLjRDMTcxLjMsNDQsMTY5LjIsNDYuNSwxNjUuOSw0Ni41eiBNMTY2LjEsMzhjLTEuMywwLTIuMiwxLjEtMi4yLDNjMCwyLjIsMC45LDMuMSwyLjEsMy4xYzEuNCwwLDIuMi0xLjEsMi4yLTMKCQkJCQlDMTY4LjIsMzguOSwxNjcuMywzOCwxNjYuMSwzOHoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNzkuNiwzOC43Yy0xLjYtMC4yLTMuNCwwLjMtMy40LDIuMXYzYzAsMC43LDAsMS42LDAuMSwyLjJoLTMuNGMwLjEtMS4yLDAuMS0yLjQsMC4xLTMuNnYtMy4xCgkJCQkJYzAtMS4xLDAtMi4yLTAuMi0zLjJjMS4xLTAuMSwyLjEtMC4yLDMuMi0wLjRsMC4yLDIuNGMwLjYtMS41LDIuMS0yLjQsMy42LTIuNUwxNzkuNiwzOC43eiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE5My44LDQ2LjFjMC4xLTEuMiwwLjEtMi40LDAuMS0zLjZ2LTIuNGMwLTEuMi0wLjMtMi0xLjMtMmMtMS4xLDAtMiwwLjktMiwxLjljMCwwLDAsMCwwLDB2My44CgkJCQkJYzAsMC43LDAsMS42LDAuMSwyLjJoLTMuNGMwLjEtMC45LDAuMS0yLjQsMC4xLTMuNnYtMi4zYzAtMS4yLTAuMi0yLTEuMi0yYy0xLjEsMC0yLDAuOS0yLDJ2My44YzAsMC43LDAsMS41LDAuMSwyLjJoLTMuNAoJCQkJCWMwLjEtMC45LDAuMS0yLjQsMC4xLTMuNnYtMi45YzAtMS4yLDAtMi42LTAuMS0zLjVjMC43LDAsMi41LTAuMiwzLjItMC4zbDAuMiwxLjljMC43LTEuMiwyLTIsMy40LTIuMWMxLjQtMC4xLDIuNiwwLjgsMi45LDIuMQoJCQkJCWMwLjctMS4zLDIuMS0yLjEsMy41LTIuMWMyLjEsMCwzLjEsMS40LDMuMSwzLjZ2NC43YzAsMC43LDAsMS41LDAuMSwyLjJMMTkzLjgsNDYuMXoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOTguNyw0My41YzAtMi4xLDEuNy0zLjQsNS4yLTMuNGMwLjIsMCwwLjUsMCwwLjgsMHYtMC4zYzAtMS4xLTAuNC0xLjctMS43LTEuN2MtMS4xLDAtMi4yLDAuNC0zLjEsMC45CgkJCQkJbC0wLjQtMi40YzEuMy0wLjcsMi43LTEuMSw0LjItMS4xYzIuOSwwLDQuMywxLjQsNC4yLDQuMWwtMC4xLDMuN2MwLDAuNiwwLjIsMC44LDAuNiwwLjhjMC4yLDAsMC40LDAsMC42LTAuMWwtMC4xLDEuOQoJCQkJCWMtMC41LDAuMi0xLjEsMC4zLTEuNywwLjNjLTEuMSwwLjEtMi0wLjYtMi4yLTEuN2MtMC43LDEuMS0xLjksMS43LTMuMSwxLjdDMTk5LjksNDYuNCwxOTguNyw0NS4zLDE5OC43LDQzLjV6IE0yMDQuNyw0Mi42di0xCgkJCQkJYy0wLjIsMC0wLjQsMC0wLjcsMGMtMS43LDAtMi40LDAuNy0yLjQsMS42YzAsMC43LDAuNSwxLjIsMS4xLDEuM2MwLjEsMCwwLjEsMCwwLjIsMGMxLDAsMS43LTAuNywxLjgtMS43CgkJCQkJQzIwNC43LDQyLjcsMjA0LjcsNDIuNiwyMDQuNyw0Mi42TDIwNC43LDQyLjZ6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjE2LjUsNDUuOGMtMC43LDAuNC0xLjUsMC42LTIuNCwwLjZjLTIuMSwwLTMuNC0wLjktMy40LTMuNXYtNC44SDIwOWwwLjUtMi4zaDEuM2wwLjItMi4xbDMtMXYzLjFoMi42CgkJCQkJYzAsMC41LTAuMSwxLjUtMC4xLDIuM0gyMTR2NC40YzAsMS4xLDAuNCwxLjMsMS4xLDEuM2MwLjUsMCwxLjEtMC4yLDEuNS0wLjVMMjE2LjUsNDUuOHoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMTkuOSwzNC4xYy0xLDAuMS0xLjgtMC42LTEuOC0xLjZjMCwwLDAsMCwwLTAuMWMwLTEsMC44LTEuOCwxLjgtMS44YzAsMCwwLDAsMC4xLDBjMSwwLDEuOCwwLjcsMS44LDEuNwoJCQkJCWMwLDAsMCwwLDAsMEMyMjEuOCwzMy4zLDIyMSwzNC4xLDIxOS45LDM0LjFDMjIwLDM0LjEsMjE5LjksMzQuMSwyMTkuOSwzNC4xeiBNMjE4LjEsNDYuMWMwLjEtMS4yLDAuMi0yLjMsMC4yLTMuNXYtMwoJCQkJCWMwLTEuMiwwLTIuNC0wLjItMy42YzAuOCwwLDIuOC0wLjEsMy40LTAuMmMtMC4xLDAuNS0wLjEsMS41LTAuMSwyLjN2NmMwLDAuNywwLDEuNCwwLjEsMi4xTDIxOC4xLDQ2LjF6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjI4LjIsNDYuNWMtMi44LDAuMS01LjEtMi4xLTUuMS00LjhjMC0wLjEsMC0wLjIsMC0wLjNjMC0zLjMsMi4yLTUuNyw1LjQtNS43YzIuNy0wLjEsNS4xLDIuMSw1LjEsNC44CgkJCQkJYzAsMC4xLDAsMC4yLDAsMC40QzIzMy42LDQ0LDIzMS41LDQ2LjUsMjI4LjIsNDYuNXogTTIyOC40LDM4Yy0xLjMsMC0yLjIsMS4xLTIuMiwzYzAsMi4yLDAuOSwzLjEsMi4xLDMuMWMxLjQsMCwyLjItMS4xLDIuMi0zCgkJCQkJQzIzMC41LDM4LjksMjI5LjYsMzgsMjI4LjQsMzh6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjQyLDQ2LjFjMC4xLTEuMiwwLjItMi40LDAuMi0zLjZ2LTIuNGMwLTEuMi0wLjMtMi0xLjMtMmMtMS4yLDAtMi4xLDEtMi4yLDIuMXYzLjZjMCwwLjcsMCwxLjUsMC4xLDIuMgoJCQkJCWgtMy40YzAuMS0wLjksMC4xLTIuNCwwLjEtMy42di0yLjljMC0xLjIsMC0yLjYtMC4xLTMuNWMwLjcsMCwyLjUtMC4yLDMuMi0wLjNsMC4yLDIuMWMwLjgtMS4zLDIuMi0yLjIsMy43LTIuMwoJCQkJCWMyLjEsMCwzLjEsMS40LDMuMSwzLjZ2NC43YzAsMC43LDAsMS42LDAuMSwyLjJIMjQyeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTgzLjcsNjIuMmwwLTQuOWMwLTEuNCwwLTQtMC4xLTVsMi4xLTAuMmw4LDkuNnYtNC4yYzAtMS40LDAtNC4xLTAuMi01LjFjMC44LDAsMi44LDAsMy41LTAuMQoJCQkJCWMtMC4xLDAuNi0wLjEsMi4zLTAuMSwzLjFMOTcsNjQuNGMwLDAuOCwwLDIuNSwwLDMuMUw5NSw2Ny43bC04LTkuNnY2LjJjMCwwLjgsMCwyLjUsMC4xLDMuMWgtMy41CgkJCQkJQzgzLjYsNjYuMyw4My43LDYzLjYsODMuNyw2Mi4yeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTEwOC4yLDYyLjhsLTUuOSwwLjJjMC4xLDEuNiwxLDIuNCwyLjcsMi40YzEuNCwwLDIuNy0wLjQsMy44LTEuMmwwLDIuNGMtMS4yLDAuOC0yLjcsMS4yLTQuMSwxLjIKCQkJCQljLTMuNywwLTUuNC0yLjQtNS40LTUuMmMwLTMuMywyLjItNS42LDUuNC01LjZjMy4yLDAsNC42LDIuMiw0LjYsNUwxMDguMiw2Mi44eiBNMTA2LjMsNjEuMmMtMC4xLTEuNC0wLjctMi4xLTEuOC0yLjEKCQkJCQlzLTIuMSwwLjktMi4yLDIuMkwxMDYuMyw2MS4yeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTExMS45LDY0bC0xLTIuN2MtMC41LTEuMy0xLjEtMy0xLjUtMy45YzAuMywwLDIuOC0wLjIsMy4yLTAuMmwxLjksNmwwLjgtMi4zbDEuMi0zLjZsMi4xLTAuMWwyLjEsNgoJCQkJCWwwLjgtMi4zYzAuMS0wLjQsMC45LTMsMS4xLTMuNmMxLjIsMCwyLjEsMCwzLjEtMC4xbC0zLjgsMTAuM2wtMi4yLDAuMWMtMC4zLTEuMS0wLjgtMi40LTEuMy0zLjhsLTAuOC0yLjFsLTIuMSw1LjlsLTIuMywwLjEKCQkJCQlDMTEyLjgsNjYuNSwxMTIuNCw2NS4zLDExMS45LDY0eiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE0My40LDUzLjhsLTgsMTAuOWgyLjZjMS44LDAsMy45LDAsNS4xLTAuMWMtMC4xLDAuOS0wLjIsMS44LTAuMiwyLjhjLTEuMy0wLjEtMy43LTAuMS01LjgtMC4xCgkJCQkJYy0yLjQsMC00LjcsMC02LjMsMC4xbC0wLjMtMS42bDgtMTAuOGgtMi4zYy0xLjksMC0zLjYsMC01LDBjMC4xLTAuOCwwLjItMS45LDAuMy0yLjhjMi4xLDAuMSwzLDAuMSw1LjgsMC4xCgkJCQkJYzIuNywwLDQuNCwwLDUuOC0wLjFMMTQzLjQsNTMuOHoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTMuMiw2Mi44bC01LjksMC4yYzAuMSwxLjYsMSwyLjQsMi43LDIuNGMxLjQsMCwyLjctMC40LDMuOC0xLjJsLTAuMSwyLjRjLTEuMiwwLjgtMi43LDEuMi00LjEsMS4yCgkJCQkJYy0zLjcsMC01LjQtMi40LTUuNC01LjJjMC0zLjMsMi4yLTUuNiw1LjQtNS42YzMuMiwwLDQuNiwyLjIsNC42LDVMMTUzLjIsNjIuOHogTTE1MS40LDYxLjJjLTAuMS0xLjQtMC43LTIuMS0xLjgtMi4xCgkJCQkJcy0yLjEsMC45LTIuMiwyLjJMMTUxLjQsNjEuMnoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTUuMSw2NC44YzAtMi4xLDEuNy0zLjQsNS4yLTMuNGMwLjIsMCwwLjUsMCwwLjgsMHYtMC4zYzAtMS4xLTAuNC0xLjctMS43LTEuN2MtMS4xLDAtMi4yLDAuNC0zLjEsMC45CgkJCQkJbC0wLjQtMi40YzEuMy0wLjcsMi43LTEuMSw0LjItMS4xYzIuOSwwLDQuMywxLjQsNC4yLDQuMWwtMC4xLDMuN2MwLDAuNiwwLjIsMC44LDAuNiwwLjhjMC4yLDAsMC40LDAsMC42LTAuMWwtMC4yLDEuOQoJCQkJCWMtMC41LDAuMi0xLjEsMC4zLTEuNywwLjNjLTEuMSwwLjEtMi0wLjYtMi4yLTEuN2MtMC43LDEuMS0xLjksMS43LTMuMSwxLjdDMTU2LjMsNjcuNiwxNTUuMSw2Ni42LDE1NS4xLDY0Ljh6IE0xNjEuMSw2My45di0xCgkJCQkJYy0wLjIsMC0wLjUsMC0wLjcsMGMtMS43LDAtMi40LDAuNy0yLjQsMS42YzAsMC43LDAuNSwxLjIsMS4xLDEuM2MwLjEsMCwwLjEsMCwwLjIsMGMxLDAsMS43LTAuNywxLjgtMS43CgkJCQkJQzE2MS4xLDYzLjksMTYxLjEsNjMuOSwxNjEuMSw2My45TDE2MS4xLDYzLjl6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTY2LjYsNjcuNGMwLjEtMC45LDAuMS0yLjMsMC4xLTMuNnYtOC4xYzAtMS4yLDAtMi41LTAuMS0zLjRjMC43LDAsMi44LTAuMywzLjQtMC40CgkJCQkJYy0wLjEsMC42LTAuMSwyLjQtMC4xLDIuOHYxMC41YzAsMC43LDAsMS42LDAuMSwyLjFIMTY2LjZ6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTcxLjUsNjQuOGMwLTIuMSwxLjctMy40LDUuMi0zLjRjMC4yLDAsMC41LDAsMC44LDB2LTAuM2MwLTEuMS0wLjQtMS43LTEuNy0xLjdjLTEuMSwwLTIuMiwwLjQtMy4xLDAuOQoJCQkJCWwtMC40LTIuNGMxLjMtMC43LDIuNy0xLjEsNC4yLTEuMWMyLjksMCw0LjMsMS40LDQuMiw0LjFsLTAuMSwzLjdjMCwwLjYsMC4yLDAuOCwwLjYsMC44YzAuMiwwLDAuNCwwLDAuNi0wLjFsLTAuMSwxLjkKCQkJCQljLTAuNSwwLjItMS4xLDAuMy0xLjcsMC4zYy0xLDAuMS0yLTAuNi0yLjItMS43Yy0wLjcsMS4xLTEuOCwxLjctMy4xLDEuN0MxNzIuNyw2Ny42LDE3MS41LDY2LjYsMTcxLjUsNjQuOHogTTE3Ny40LDYzLjl2LTEKCQkJCQljLTAuMiwwLTAuNCwwLTAuNywwYy0xLjcsMC0yLjQsMC43LTIuNCwxLjZjMCwwLjcsMC41LDEuMiwxLjEsMS4zYzAuMSwwLDAuMSwwLDAuMiwwYzAuOSwwLDEuNy0wLjcsMS44LTEuNwoJCQkJCUMxNzcuNCw2NCwxNzcuNCw2My45LDE3Ny40LDYzLjlMMTc3LjQsNjMuOXoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xODkuNyw2Ny40YzAuMS0xLjIsMC4yLTIuNCwwLjItMy42di0yLjRjMC0xLjItMC4zLTItMS4zLTJjLTEuMiwwLTIuMSwxLTIuMiwyLjF2My42YzAsMC43LDAsMS41LDAuMSwyLjIKCQkJCQlIMTgzYzAuMS0wLjksMC4xLTIuNCwwLjEtMy42di0yLjljMC0xLjIsMC0yLjYtMC4xLTMuNWMwLjcsMCwyLjUtMC4yLDMuMi0wLjNsMC4xLDIuMWMwLjgtMS4zLDIuMi0yLjIsMy43LTIuMwoJCQkJCWMyLjEsMCwzLjEsMS40LDMuMSwzLjZ2NC43YzAsMC43LDAsMS42LDAuMSwyLjJMMTg5LjcsNjcuNHoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMDIsNTcuNXYtMS45YzAtMS4yLDAtMi41LTAuMS0zLjRjMC44LTAuMSwyLjgtMC4zLDMuNC0wLjRjLTAuMSwwLjYtMC4xLDEuNi0wLjEsMi4zdjkuNgoJCQkJCWMwLDEuMiwwLDIuNCwwLjIsMy41aC0zLjFsLTAuMS0xLjFjLTAuNywwLjktMS44LDEuNC0yLjksMS40Yy0yLjgsMC00LjUtMi40LTQuNS01YzAtMy4zLDIuMS01LjgsNS4xLTUuOAoJCQkJCUMyMDAuNSw1Ni44LDIwMS4zLDU3LjEsMjAyLDU3LjV6IE0xOTcuOSw2Mi40YzAsMi4xLDEsMywyLjMsM2MwLjcsMCwxLjQtMC40LDEuOC0xdi00LjVjLTAuNS0wLjQtMS4xLTAuNy0xLjctMC42CgkJCQkJQzE5OC44LDU5LjIsMTk3LjksNjAuNywxOTcuOSw2Mi40TDE5Ny45LDYyLjR6Ii8+CgkJCTwvZz4KCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTczLDE1LjFjLTAuNS0xLTEuNS0xLjYtMi42LTEuN2wtMS4xLTAuMWMwLjEtMC4xLDAuMS0wLjIsMC4yLTAuNGMwLjktMS41LDAuNC0zLjQtMS4xLTQuNAoJCQkJYy0wLjQtMC4zLTAuOS0wLjQtMS40LTAuNGgtMC4yaC0wLjFoLTAuMWgtMC4yaC0wLjFMNjQuOCw4YzAtMS43LTEuMy0zLjEtMi45LTMuMmwtMC42LDBoLTAuMUM1NS40LDQuMyw0OS40LDQsNDMuNiw0CgkJCQljLTEuMywwLTMuMywwLTQuNiwwLjFsLTAuMy0wLjNjLTAuMy0wLjQtMC42LTAuOC0wLjktMS4yYy0wLjMtMC40LTAuNy0wLjgtMS4yLTFjLTAuNS0wLjMtMS0wLjQtMS42LTAuNEgzNWgtMC43bDAsMGgtMC41bDAsMAoJCQkJYy0yLjQsMC4xLTQuNiwwLjItNi45LDAuNGgtMC4yYy0yLjIsMC4yLTQuMSwwLjMtNS45LDAuNWMtMC43LDAuMS0xLjQsMC40LTEuOSwwLjljLTMsMy01LjksNy41LTguOSwxMy4ydjAuMQoJCQkJYy0wLjEsMC4xLTAuMSwwLjMtMC4yLDAuNGMtMS4xLDIuMi0yLjIsNC41LTMuMiw2LjljMCwwLDAsMCwwLDAuMUw2LjQsMjRjLTAuOSwyLjItMS44LDQuNS0yLjcsNi45bDAsMC4xbC0wLjEsMC4zbC0wLjEsMC4yCgkJCQljMCwwLDAsMC4xLDAsMC4xQzIuNywzMy44LDIsMzYsMS4zLDM4LjNjMCwwLDAsMC4xLDAsMC4xbC0wLjEsMC4zbDAsMC4xYzAsMCwwLDAuMSwwLDAuMWMtMC45LDIuOC0xLjYsNS41LTIuMSw4bDAsMFY0N3YwbDAsMC4yCgkJCQlsLTAuMSwwLjNjLTAuMywxLjcsMC44LDMuNCwyLjUsMy43YzAuMiwwLDAuNCwwLjEsMC42LDAuMWgwLjFjLTAuMSwwLjQtMC4yLDAuOC0wLjMsMS4ydjAuMWwtMC4xLDAuNmMtMC40LDEuNywwLjcsMy40LDIuNSwzLjgKCQkJCUM0LjYsNTcsNC44LDU3LDUsNTdoMC4xYy0wLjEsMC40LTAuMiwwLjgtMC4zLDEuMmMwLDAsMCwwLjEsMCwwLjF2MC4xbDAsMHYwLjFjMCwwLDAsMC4xLDAsMC4xdjAuMmMtMC40LDEuNywwLjcsMy40LDIuNSwzLjgKCQkJCWMwLjIsMCwwLjMsMC4xLDAuNSwwLjFIOGMtMC4xLDAuMy0wLjEsMC43LTAuMiwxYy0wLjMsMS43LDAuOCwzLjQsMi41LDMuN2MwLjIsMCwwLjQsMC4xLDAuNiwwLjFjMC4yLDAsMC4zLDAsMC41LDAKCQkJCWM2LjMtMC44LDEyLjYtMS4yLDE4LjktMS4yYzguMywwLDE2LjYsMC41LDI0LjgsMS41YzAuMSwwLDAuMywwLDAuNCwwYzEuNiwwLDIuOS0xLjEsMy4xLTIuN2MyLjItMTQuNyw3LjEtMzQuNywxNC40LTQ3CgkJCQlDNzMuNSwxNy4zLDczLjUsMTYuMSw3MywxNS4xeiIvPgoKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNS40MDE4IiB5MT0iNDYuMjE0MiIgeDI9IjY3LjUxNzQiIHkyPSI0LjA5MTciIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA3MikiPgoJCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzczQzhFMSIvPgoJCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzAwNzE5OSIvPgoJCQk8L2xpbmVhckdyYWRpZW50PgoJCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNzAuMiwxNi44QzU1LjcsMTUuNiw0MiwxNS45LDMyLjMsMTdjLTkuMSw5LjMtMTguNSwzMi4xLTIxLjYsNDcuOEMyMSw2My4zLDM4LjEsNjMsNTUuNCw2NS4yCgkJCQlDNTcuNSw1MC44LDYyLjUsMjkuOSw3MC4yLDE2Ljh6Ii8+CgoJCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIyLjE2NTQiIHkxPSI1MS4zNDE5IiB4Mj0iNjMuODM1IiB5Mj0iOS42NzIzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNzIpIj4KCQkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiM3NUNCQzciLz4KCQkJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiMwMDg3ODIiLz4KCQkJPC9saW5lYXJHcmFkaWVudD4KCQkJPHBhdGggY2xhc3M9InN0MiIgZD0iTTY2LjYsMTEuNWMtMTQuNS0xLjItMjguMS0wLjktMzcuOSwwLjNjLTkuMSw5LjMtMTcuOSwzMi4zLTIxLDQ3LjljMTAuNC0xLjUsMjUuOS0yLDQyLjUtMC41CgkJCQlDNTMsNDIuOSw1OC40LDI1LjMsNjYuNiwxMS41eiIvPgoJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNy42LDU5LjlsMC4xLTAuNmMxMS40LTEuNywyNy4xLTEuOSw0Mi4yLTAuNWMzLjItMTguMiw4LjktMzQuOSwxNi4zLTQ3LjRsMC42LDAKCQkJCUM1OS40LDI0LDUzLjUsNDEuMSw1MC40LDU5LjNsMCwwLjNoLTAuMkMzNSw1OC4xLDE5LDU4LjMsNy42LDU5Ljl6Ii8+CgoJCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzNfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjE4LjcwOTQiIHkxPSI1NS4zMzA2IiB4Mj0iNTguNjkxMSIgeTI9IjE1LjM1NTgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA3MikiPgoJCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzlERDE5QSIvPgoJCQkJPHN0b3AgIG9mZnNldD0iMC41IiBzdHlsZT0ic3RvcC1jb2xvcjojMDZBMjRBIi8+CgkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCTxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik00NS42LDMyLjRsMS41LTRsNy4xLTguMWMwLjMtMC4xLDAuNi0wLjEsMC45LTAuMUM1Ni45LDE2LDU5LDEyLDYxLjMsOC4xYy0xMy45LTEuMi0yNy0wLjktMzYuNCwwLjIKCQkJCUMxNi4zLDE3LjEsNy43LDM5LjEsNC44LDUzLjljNS40LTAuNywxMC44LTEuMiwxNi4yLTEuM2MtMC4zLTAuMi0wLjEtMS40LTAuMS0xLjVjMC40LTEuNiwxLjUtMi44LDMtNC4xYzEuNS0xLjMsMC44LTIuMSwyLTIuNgoJCQkJYzIuNS0xLjEsNC45LTIuNSw3LjEtNC4xYzIuOC0yLjEsMy44LTkuMiwzLjktOC43YzAuMSwwLjUsMS4xLDAuMywxLjEsMC43YzAsMC40LDAuMywxLjIsMC41LDEuM3MxLTIuMSwyLjktMi4yCgkJCQljMS4yLDAuMSwyLjQsMC41LDMuMywxLjNjMC4xLDAsMC44LTAuMSwwLjgtMC4xTDQ1LjYsMzIuNHoiLz4KCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTU0LjksMjEuMWwtMC41LTAuM2wwLjQtMC43YzEuOC00LjEsMy45LTguMiw2LjItMTJsMC42LDBjLTIuNCwzLjktNC41LDgtNi4zLDEyLjJMNTQuOSwyMS4xeiIvPgoJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzYuOCw3LjFjLTAuMiwwLjEsMC4xLDAuMiwwLjUsMC43YzAuNSwwLjYsMC45LDEuMywxLjIsMi4xYzAsMC40LTAuNSwwLjIsMC4xLDAuOGMwLjUsMC42LDIuMywzLjIsMi41LDMuNwoJCQkJczAuNSwwLjMsMC41LDAuMWMwLTAuMywwLjMsMC4yLDAuNCwwLjVjMCwwLjItMC4yLDAuMS0wLjIsMC4yczAuNiwwLjgsMSwyLjFjMC41LDEuNCwxLDIuMSwwLjksMy41Yy0wLjEsMS4zLTAuNCwzLjMtMS40LDMuOAoJCQkJYy0xLDAuNS0xLjksMC42LTEuOCwxLjZjMC4xLDEsMS4xLDEuMSwxLjgsMS42YzAuNywwLjUsMS44LDAuMywyLjIsMS4zcy0wLjEsMi43LTAuOCwzLjRzLTAuOSwxLjEtMC42LDEuNAoJCQkJYzAuMywwLjMsMC42LDAuMywwLjksMC4yczAuNSwwLjEsMC41LDAuNXMwLjIsMC41LDEuMy0wLjJzMS42LTIuMSwyLjUtMy4xYzAuOC0xLDEuNC0yLjEsMi0zLjJjMC4xLTAuMiwwLjEtMC4zLTAuMy0wLjQKCQkJCWMtMC40LTAuMS0wLjUtMC41LTAuNC0wLjljMCwwLDAtMC4xLDAtMC4xYzAuNC0wLjksMS4yLTEsMS45LTEuMmMwLjQtMC4xLDAuNy0wLjEsMS4xLDBjMC4zLDAuMywwLjEsMC44LDAuMiwwLjcKCQkJCWMwLjItMC4yLDAuMy0wLjQsMC40LTAuN2MwLTAuMSwwLTAuMS0wLjEtMC4yYy0wLjEsMC0wLjMtMC4zLTAuMS0wLjljMC4zLTAuOCwxLjItMC41LDEuNC0xLjljMC4zLTEuMywxLTIuMSwwLjYtMi42CgkJCQljLTAuNC0wLjUtMS4yLTAuMy0xLjktMC4xYy0wLjYsMC4zLTEuNCwxLjYtMi4zLDEuM2MtMC45LTAuMy0zLTAuOS0zLjMtMS41Yy0wLjQtMS4xLTAuNy0yLjItMC45LTMuM2MtMC4xLTAuOC0wLjctMC41LTEtMC45CgkJCQljLTAuMy0wLjQtMC41LDAuMy0wLjQsMWMwLjEsMC43LDAuOCwxLjQsMC4zLDEuN3MtMC44LTEtMS40LTEuM3MtMC45LTAuNi0wLjgtMS45YzAuMS0xLjMtMS4xLTEuNS0wLjktMi4yCgkJCQljMC4yLTAuNywwLjQtMS40LTEuMS0yLjRjLTEuNS0xLTIuMS0wLjgtMi42LTEuM2MtMC41LTAuNS0xLTAuOC0xLTEuM3MwLjQtMC43LTAuNC0wLjVDMzcuMSw3LjEsMzcsNywzNi44LDcuMXoiLz4KCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTQxLjIsMzYuMmMwLjMtMC4zLDAuNS0wLjcsMC42LTEuMWMwLjEtMC4yLTAuNy0wLjItMC43LTAuN2MwLTAuNiwwLjQtMS4xLDAuNC0xLjRjMC0wLjItMC4yLTAuMS0wLjMtMC4xCgkJCQljLTAuMSwwLTAuMy0wLjEtMC4zLTAuMmMtMC4xLTAuMy0wLjQtMC4zLTEtMC4xYy0wLjYsMC4yLTEuMiwxLTEuNCwwLjljLTAuMiwwLTAuNS0wLjktMC41LTEuM3MtMS4xLTAuMi0xLTAuOAoJCQkJYzAtMC4yLDAuMS0wLjQsMC4yLTAuNWMwLDAsMC4xLTAuMSwwLTAuMmMtMC44LTAuMS0xLjQsMC44LTEuOCwxLjJDMzUsMzIuMywzNiwzMy43LDM1LDM0LjVjLTEsMC44LTEuNCwwLjYtMS41LDEKCQkJCWMtMC4zLDItMS4zLDMuOC0yLjksNC45Yy0yLjcsMi4yLTQuMiwzLjUtNS40LDRzLTEuNCwyLjEtMi44LDMuNGMtMS40LDEuMy0yLjMsNC4yLTEuNSw1YzAuNiwwLjUsMS40LDAuNywyLjEsMC40CgkJCQljMC40LTAuMSwwLjgsMCwxLjEsMC4zYzAuMiwwLjMsMC45LTAuMSwxLjMsMC4zYzAuNiwwLjQsMS40LDAuNiwyLjEsMC41YzEtMC4xLDIuNy0wLjksNC4xLTMuMWMxLjQtMi4zLDEuMi00LjMsMS41LTUuMQoJCQkJYzAuNC0xLjEsMS4zLTIsMi41LTIuNGMxLjItMC4zLDEuNC0wLjUsMS44LTAuM3MxLjMsMC4zLDEuMi0wLjRzLTEuMS0wLjUtMS4xLTEuMWMwLTAuNi0wLjItMSwwLjYtMS40YzAuOC0wLjMsMS4yLTEuNCwxLjctMi4zCgkJCQlDNDAuMSwzNy4zLDQwLjcsMzcsNDEuMiwzNi4yeiIvPgoKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF80XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMC4yMzUiIHkxPSI1NC4xODQzIiB4Mj0iNDAuNDI1NCIgeTI9IjIzLjk4NyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDcyKSI+CgkJCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojOUREMTlBIi8+CgkJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojMDZBMjRBIi8+CgkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCTxwYXRoIGNsYXNzPSJzdDQiIGQ9Ik00NC41LDI4LjljLTAuMS0wLjEtMC4yLTAuMy0wLjMtMC40Yy0wLjEtMC4xLTAuMi0wLjItMC4zLTAuMmMtMC41LTAuMy0xLjItMC4zLTEuNi0wLjcKCQkJCUM0MS42LDI3LDQwLjYsMjcsNDAuNSwyNnMwLjgtMS4xLDEuOC0xLjZjMS0wLjUsMS4zLTIuNCwxLjQtMy44YzAuMS0xLjMtMC40LTIuMS0wLjktMy41Yy0wLjUtMS4yLTEtMS45LTEtMi4xczAuMiwwLDAuMi0wLjIKCQkJCWMtMC4xLTAuMy0wLjQtMC42LTAuNC0wLjVzLTAuMywwLjQtMC41LTAuMWMtMC4zLTAuNC0yLjEtMy4xLTIuNS0zLjdzLTAuMS0wLjQtMC4xLTAuOGMtMC4zLTAuOC0wLjctMS41LTEuMi0yLjEKCQkJCWMtMC4xLTAuMi0wLjMtMC4zLTAuNC0wLjVsMCwwYy0wLjEsMC0wLjEsMCwwLDBjLTAuMS0wLjEtMC4xLTAuMS0wLjEtMC4yYy0wLjQtMC45LTAuOS0xLjctMS41LTIuNWMtMC4xLTAuMS0wLjItMC4yLTAuNC0wLjMKCQkJCWMtNC45LDAuMS0xMC4yLDAuNS0xNCwwLjlDMTIuOCwxMy42LDQuOCwzMy43LDIsNDcuOWM0LjItMC42LDEzLjEtMS4zLDE5LjItMS40aDAuOGwwLjgsMGgwLjljMC41LTAuOSwwLjktMS42LDEuNi0xLjkKCQkJCWMxLjEtMC41LDIuNy0xLjgsNS40LTRjMS42LTEuMiwyLjctMywyLjktNC45YzAuMS0wLjQsMC41LTAuMiwxLjUtMWMxLTAuOCwwLTIuMywwLjQtMi43YzAuNC0wLjQsMS0xLjMsMS44LTEuMgoJCQkJYzAuMSwwLDAsMC4xLDAsMC4yYy0wLjEsMC4yLTAuMiwwLjMtMC4yLDAuNWMwLDAuNSwxLDAuMywxLDAuOGMwLDAuNCwwLjMsMS4zLDAuNSwxLjNzMC43LTAuNywxLjQtMC45bDAuMi0wLjFsMCwwCgkJCQljMC4xLDAsMC4yLTAuMSwwLjMtMC4xbDAsMGMwLjYsMCwxLjIsMC4xLDEuOCwwLjRjMC4zLDAuMiwwLjUsMC40LDAuNywwLjdjMC0wLjIsMC4yLTAuNiwwLjctMS4xQzQ0LjQsMzEuNiw0NC45LDI5LjgsNDQuNSwyOC45CgkJCQl6Ii8+CgkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMC42LDUyLjRjLTUuMywwLjEtMTAuNSwwLjYtMTUuOCwxLjNsLTAuMSwwLjZjNS40LTAuNywxMC44LTEuMSwxNi4zLTEuM2MwLDAtMC4xLTAuMS0wLjEtMC4xCgkJCQlDMjAuOCw1Mi43LDIwLjcsNTIuNSwyMC42LDUyLjR6Ii8+CgkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMy42LDQ2LjRoLTAuOWwtMC44LDBoLTAuOGMtNi4xLDAuMS0xNSwwLjgtMTkuMiwxLjR2MC4xdjAuMmwtMC4xLDAuM2M0LjEtMC42LDEzLjItMS4zLDE5LjMtMS40SDIybDEuMiwwCgkJCQljMC4xLTAuMSwwLjItMC4yLDAuMy0wLjRsMCwwTDIzLjYsNDYuNEwyMy42LDQ2LjR6Ii8+CgkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNC4zLDU0LjVjLTAuNS0wLjItMC4zLDAuMy0wLjMsMC43YzAsMC40LTAuMiwwLjMtMC4zLDAuN2MtMC4xLDAuMy0wLjIsMC43LTAuMSwwLjlzMC4yLDAuMiwwLjUtMC4xCgkJCQljMC4zLTAuMywwLjMtMC4zLDAuNy0wLjNzMC42LTAuMSwwLjYtMC42QzI1LjIsNTUuMSwyNC44LDU0LjcsMjQuMyw1NC41eiIvPgoKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF81XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMy45ODAyIiB5MT0iNjAuMzg1MyIgeDI9IjMwLjQ0MDkiIHkyPSIzMC4wNzgzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNzIpIj4KCQkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkZGRkY7c3RvcC1vcGFjaXR5OjAuOSIvPgoJCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRkZGRjtzdG9wLW9wYWNpdHk6MC4xIi8+CgkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCTxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik03LjUsNDcuM2gwLjRjMC43LTIuNywxLjMtNS4zLDIuMS03LjdjMS45LTAuMSw0LjItMC4yLDYuNi0wLjNjLTAuNywyLjQtMS40LDQuOS0yLjEsNy42SDE1CgkJCQljMC43LTIuNywxLjMtNS4yLDIuMS03LjVjMi4xLTAuMSw0LjMtMC4yLDYuNi0wLjJjLTAuNywyLjQtMS40LDQuOS0yLjEsNy41aDAuMkgyMmMwLjYtMi42LDEuMy01LjEsMi4xLTcuNWMyLjIsMCw0LjQsMCw2LjYsMAoJCQkJYy0wLjIsMC42LTAuNCwxLjItMC41LDEuOGMwLjEtMC4xLDAuMi0wLjIsMC40LTAuM2wwLjItMC4yYzAuMS0wLjUsMC4zLTAuOSwwLjQtMS40aDAuOWMwLjEtMC4xLDAuMi0wLjMsMC4zLTAuNGgtMS4xCgkJCQljMC43LTIuNCwxLjUtNC43LDIuMy02LjlsMi4xLDBjMC4xLTAuMSwwLjItMC4yLDAuNC0wLjRjLTAuNywwLTEuNSwwLTIuMy0wLjFjMC45LTIuNSwxLjgtNC43LDIuNy02LjljMS44LDAsMy42LDAuMSw1LjQsMC4yCgkJCQljMC4yLTAuMSwwLjQtMC4yLDAuNS0wLjNjMC4xLDAsMC4xLTAuMSwwLjItMC4xYy0xLjktMC4xLTMuOS0wLjItNS45LTAuMmMxLjEtMi41LDIuMi00LjgsMy4yLTYuOWMxLDAsMi4xLDAsMy4xLDAuMWwtMC4xLTAuMgoJCQkJTDQyLjcsMTdjLTAuOSwwLTEuOC0wLjEtMi43LTAuMWMwLjQtMC44LDAuOC0xLjUsMS4yLTIuM2MtMC4xLTAuMS0wLjEtMC4xLTAuMS0wLjJMNDEsMTQuM2MtMC41LDAuOC0wLjksMS43LTEuNCwyLjYKCQkJCWMtMi4yLDAtNC40LDAtNi42LDBjMS40LTIuNywyLjctNSw0LTYuOWgxLjVjMCwwLDAtMC4xLDAtMC4xYzAtMC4xLDAtMC4yLTAuMS0wLjNoLTEuMmMwLjItMC40LDAuNS0wLjcsMC43LTEKCQkJCWMtMC4xLTAuMS0wLjItMC4yLTAuMi0wLjRjLTAuMywwLjQtMC42LDAuOS0wLjksMS40Yy0yLjMsMC00LjUsMC4xLTYuNSwwLjJjMS4yLTEuOSwyLjYtMy43LDQuMS01LjRoLTAuNQoJCQkJYy0xLjUsMS43LTIuOCwzLjUtNCw1LjRjLTIuNCwwLjEtNC42LDAuMi02LjUsMC4zYzEuMi0xLjksMi42LTMuNyw0LjEtNS41bC0wLjYsMGMtMS41LDEuNy0yLjgsMy41LTQsNS40CgkJCQljLTMsMC4yLTUuMSwwLjMtNS45LDAuNGMtMC4xLDAuMS0wLjIsMC4zLTAuMywwLjRjMC40LDAsMi42LTAuMiw1LjktMC40Yy0xLjIsMS44LTIuNSw0LjEtNCw2LjljLTMsMC4yLTUuMSwwLjQtNS45LDAuNAoJCQkJbC0wLjIsMC40YzAuNSwwLDIuNy0wLjIsNS45LTAuNGMtMS4xLDItMi4xLDQuMy0zLjIsNi44Yy0yLjgsMC4yLTQuOSwwLjMtNS44LDAuNGwtMC4yLDAuNGMwLjctMC4xLDIuOS0wLjIsNS44LTAuNAoJCQkJYy0wLjksMi4xLTEuOCw0LjQtMi43LDYuOWMtMi45LDAuMi01LDAuNC01LjcsMC40bC0wLjEsMC40YzAuNSwwLDIuNi0wLjIsNS43LTAuNGMtMC44LDIuMS0xLjUsNC40LTIuMyw2LjkKCQkJCWMtMi45LDAuMi01LDAuMy01LjcsMC40QzQsMzkuNyw0LDM5LjksNCw0MGMwLjUsMCwyLjYtMC4yLDUuNy0wLjRDOC45LDQyLDguMiw0NC41LDcuNSw0Ny4zeiBNMjMuOCwzOC41Yy0yLjMsMC00LjUsMC4xLTYuNiwwLjIKCQkJCWMwLjctMi40LDEuNS00LjcsMi4zLTYuOWMyLjEtMC4xLDQuMy0wLjIsNi42LTAuMkMyNS4zLDMzLjksMjQuNiwzNi4xLDIzLjgsMzguNXogTTI4LjksMjQuNWMtMC45LDIuMS0xLjgsNC40LTIuNyw2LjkKCQkJCWMtMi4zLDAtNC41LDAuMS02LjYsMC4yYzAuOS0yLjUsMS44LTQuNywyLjctNi45QzI0LjQsMjQuNiwyNi42LDI0LjUsMjguOSwyNC41eiBNMjIuNSwyNC4yYzEuMS0yLjUsMi4yLTQuOCwzLjMtNi45CgkJCQljMi4xLTAuMSw0LjMtMC4yLDYuNi0wLjJjLTEsMi4xLTIuMSw0LjMtMy4yLDYuOUMyNi44LDI0LjEsMjQuNiwyNC4yLDIyLjUsMjQuMnogTTMwLjksMzguNWMtMi4yLDAtNC40LDAtNi42LDAKCQkJCWMwLjctMi40LDEuNS00LjcsMi4zLTYuOWMyLjIsMCw0LjQsMCw2LjYsMEMzMi40LDMzLjgsMzEuNiwzNi4xLDMwLjksMzguNXogTTMzLjMsMzEuM2MtMi4yLDAtNC40LDAtNi42LDAKCQkJCWMwLjktMi41LDEuOC00LjcsMi43LTYuOWMyLjIsMCw0LjQsMCw2LjYsMEMzNS4xLDI2LjYsMzQuMiwyOC44LDMzLjMsMzEuM3ogTTM5LjQsMTcuMmMtMSwyLjEtMi4xLDQuMy0zLjIsNi45CgkJCQljLTIuMiwwLTQuNCwwLTYuNiwwYzEuMS0yLjUsMi4yLTQuOCwzLjItNi45QzM0LjksMTcuMiwzNy4yLDE3LjIsMzkuNCwxNy4yTDM5LjQsMTcuMnogTTI5LjksMTAuMmMyLjEtMC4xLDQuMy0wLjIsNi41LTAuMgoJCQkJYy0xLjIsMS45LTIuNSw0LjEtMy45LDYuOWMtMi4zLDAtNC41LDAuMS02LjYsMC4yQzI3LjQsMTQuMywyOC43LDEyLDI5LjksMTAuMnogTTIyLjksMTAuNWMxLjktMC4xLDQuMS0wLjIsNi42LTAuMwoJCQkJYy0xLjIsMS44LTIuNSw0LjEtNCw2LjljLTIuNCwwLjEtNC43LDAuMi02LjYsMC4zQzIwLjMsMTQuNiwyMS43LDEyLjQsMjIuOSwxMC41eiBNMTguNywxNy44YzEuOS0wLjEsNC4yLTAuMiw2LjYtMC4zCgkJCQljLTEsMi4xLTIuMSw0LjMtMy4yLDYuOWMtMi40LDAuMS00LjcsMC4yLTYuNiwwLjNDMTYuNSwyMi4xLDE3LjYsMTkuOCwxOC43LDE3Ljh6IE0xNS4zLDI1YzEuOS0wLjEsNC4yLTAuMiw2LjYtMC4zCgkJCQljLTAuOSwyLjEtMS44LDQuNC0yLjcsNi45Yy0yLjUsMC4xLTQuNywwLjItNi42LDAuM0MxMy40LDI5LjQsMTQuNCwyNy4xLDE1LjMsMjV6IE0xMi40LDMyLjNjMS45LTAuMSw0LjItMC4yLDYuNi0wLjMKCQkJCWMtMC44LDIuMS0xLjUsNC40LTIuMiw2LjhjLTIuNSwwLjEtNC43LDAuMi02LjYsMC4zQzEwLjksMzYuNywxMS42LDM0LjQsMTIuNCwzMi4zeiIvPgoKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF82XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIzOS4yOTMxIiB5MT0iNDMuMjE1NiIgeDI9IjQxLjc5MDYiIHkyPSIzOC42MDQ3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNzIpIj4KCQkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkY3OTk7c3RvcC1vcGFjaXR5OjAuOSIvPgoJCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRjhBMztzdG9wLW9wYWNpdHk6MC4xIi8+CgkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCTxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik00MC43LDMxLjZjMC41LTEuNCwxLTIuNywxLjUtNGMtMC4xLTAuMS0wLjItMC4yLTAuMy0wLjJjLTAuNSwxLjQtMS4xLDIuNy0xLjYsNC4yYy0xLTAuMS0yLjEtMC4xLTMuMi0wLjIKCQkJCWMwLDAuMywwLjMsMC4zLDAuNiwwLjRjMC44LDAsMS42LDAuMSwyLjQsMC4xTDQwLDMyLjZINDBjMC4xLTAuMSwwLjMtMC4xLDAuNC0wLjFsMC4yLTAuNGMxLjEsMC4xLDIuMiwwLjIsMy4yLDAuMwoJCQkJYzAuMS0wLjEsMC4yLTAuMiwwLjItMC40QzQzLDMxLjgsNDEuOSwzMS43LDQwLjcsMzEuNnoiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPC9zdmc+';
|
|
25274
25128
|
|
|
@@ -25279,15 +25133,15 @@ var motif = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id
|
|
|
25279
25133
|
*
|
|
25280
25134
|
* @param onEscape the handler function
|
|
25281
25135
|
*/
|
|
25282
|
-
|
|
25283
|
-
|
|
25136
|
+
const useEscapeFunction = (onEscape) => {
|
|
25137
|
+
const escFunction = useCallback((event) => {
|
|
25284
25138
|
if (event.keyCode === 27) {
|
|
25285
25139
|
onEscape();
|
|
25286
25140
|
}
|
|
25287
25141
|
}, [onEscape]);
|
|
25288
|
-
useEffect(
|
|
25142
|
+
useEffect(() => {
|
|
25289
25143
|
document.addEventListener('keydown', escFunction, false);
|
|
25290
|
-
return
|
|
25144
|
+
return () => {
|
|
25291
25145
|
document.removeEventListener('keydown', escFunction, false);
|
|
25292
25146
|
};
|
|
25293
25147
|
}, [escFunction]);
|
|
@@ -25300,14 +25154,13 @@ var useEscapeFunction = function (onEscape) {
|
|
|
25300
25154
|
* @param onClickOutsideArg handler for mouse clicks outside the element
|
|
25301
25155
|
* @return a react ref which can be bound to an html element
|
|
25302
25156
|
*/
|
|
25303
|
-
|
|
25304
|
-
|
|
25305
|
-
|
|
25306
|
-
|
|
25307
|
-
useEffect(
|
|
25308
|
-
|
|
25309
|
-
|
|
25310
|
-
if ((_a = elementRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) {
|
|
25157
|
+
const usePageClickFunction = (onClickInsideArg, onClickOutsideArg) => {
|
|
25158
|
+
const elementRef = useRef(null);
|
|
25159
|
+
const onClickInside = useCallback(onClickInsideArg, []);
|
|
25160
|
+
const onClickOutside = useCallback(onClickOutsideArg, []);
|
|
25161
|
+
useEffect(() => {
|
|
25162
|
+
const handleClick = (e) => {
|
|
25163
|
+
if (elementRef.current?.contains(e.target)) {
|
|
25311
25164
|
onClickInside(e);
|
|
25312
25165
|
}
|
|
25313
25166
|
else {
|
|
@@ -25317,18 +25170,17 @@ var usePageClickFunction = function (onClickInsideArg, onClickOutsideArg) {
|
|
|
25317
25170
|
// add when mounted
|
|
25318
25171
|
document.addEventListener('click', handleClick);
|
|
25319
25172
|
// return function to be called when unmounted
|
|
25320
|
-
return
|
|
25173
|
+
return () => {
|
|
25321
25174
|
document.removeEventListener('click', handleClick);
|
|
25322
25175
|
};
|
|
25323
25176
|
}, [elementRef, onClickInside, onClickOutside]);
|
|
25324
25177
|
return elementRef;
|
|
25325
25178
|
};
|
|
25326
25179
|
|
|
25327
|
-
|
|
25328
|
-
|
|
25329
|
-
|
|
25330
|
-
|
|
25331
|
-
var idx = sizes.indexOf(size);
|
|
25180
|
+
const sizes = ['xs', 'sm', 'md', 'lg', 'xl'];
|
|
25181
|
+
const buildHideClassDict = ({ from = 'xs', upto = 'xl', }) => {
|
|
25182
|
+
const inRange = (size) => {
|
|
25183
|
+
const idx = sizes.indexOf(size);
|
|
25332
25184
|
return idx >= sizes.indexOf(from) && idx <= sizes.indexOf(upto);
|
|
25333
25185
|
};
|
|
25334
25186
|
return {
|
|
@@ -25340,15 +25192,14 @@ var buildHideClassDict = function (_a) {
|
|
|
25340
25192
|
};
|
|
25341
25193
|
};
|
|
25342
25194
|
|
|
25343
|
-
|
|
25344
|
-
|
|
25345
|
-
|
|
25346
|
-
var logoContainer = logoElement;
|
|
25195
|
+
const LuiHeader = ({ headingText, size = 'small', homeLink, transparent, children, sticky = true, }) => {
|
|
25196
|
+
const logoElement = size === 'normal' ? (React__default.createElement("img", { className: "linz-logo", alt: "LINZ Logo", src: logo })) : (React__default.createElement("img", { className: "linz-motif", alt: "LINZ Logo", src: motif }));
|
|
25197
|
+
let logoContainer = logoElement;
|
|
25347
25198
|
if (typeof homeLink === 'string') {
|
|
25348
25199
|
logoContainer = React__default.createElement("a", { href: homeLink }, logoElement);
|
|
25349
25200
|
}
|
|
25350
25201
|
else if (typeof homeLink === 'function') {
|
|
25351
|
-
logoContainer = (React__default.createElement("div", { className: "clickable", onClick:
|
|
25202
|
+
logoContainer = (React__default.createElement("div", { className: "clickable", onClick: () => {
|
|
25352
25203
|
homeLink();
|
|
25353
25204
|
} }, logoElement));
|
|
25354
25205
|
}
|
|
@@ -25370,55 +25221,48 @@ var LuiHeader = function (_a) {
|
|
|
25370
25221
|
* Note that it depends on it being rendered inside a LuiHeader for its styles to apply properly.
|
|
25371
25222
|
* To configure the item for responsiveness, ensure to set any of the hideOn* properties.
|
|
25372
25223
|
*/
|
|
25373
|
-
|
|
25374
|
-
|
|
25375
|
-
|
|
25376
|
-
var resolvedIcon = !icon && !label ? 'menu' : icon;
|
|
25224
|
+
const LuiHeaderMenuItem = forwardRef(({ icon, label, badge, hide, onClick, 'data-testid': dataTestId = 'menu-item', children, }, ref) => {
|
|
25225
|
+
const menuItemClasses = clsx('lui-header-menu-item', hide && buildHideClassDict(hide));
|
|
25226
|
+
const resolvedIcon = !icon && !label ? 'menu' : icon;
|
|
25377
25227
|
return (React__default.createElement("div", { className: menuItemClasses, ref: ref },
|
|
25378
25228
|
React__default.createElement("div", { className: clsx('lui-header-menu-icon', onClick && 'clickable'), onClick: onClick, "data-testid": dataTestId },
|
|
25379
|
-
resolvedIcon && (React__default.createElement("i", { className: "material-icons-round md-36" }, resolvedIcon)),
|
|
25229
|
+
resolvedIcon && (React__default.createElement("i", { title: "Main menu", className: "material-icons-round md-36" }, resolvedIcon)),
|
|
25380
25230
|
label && React__default.createElement("div", { className: "lui-menu-label" }, label),
|
|
25381
25231
|
badge && React__default.createElement("div", { className: "badge" }, badge)),
|
|
25382
25232
|
children));
|
|
25383
25233
|
});
|
|
25384
|
-
|
|
25385
|
-
isOpen:
|
|
25386
|
-
open:
|
|
25387
|
-
close:
|
|
25234
|
+
const LuiCloseableHeaderMenuContext = createContext({
|
|
25235
|
+
isOpen: () => false,
|
|
25236
|
+
open: () => { },
|
|
25237
|
+
close: () => { },
|
|
25388
25238
|
});
|
|
25389
|
-
|
|
25390
|
-
|
|
25391
|
-
|
|
25392
|
-
var menuDiv = usePageClickFunction(function (event) { return open || event.stopPropagation(); }, function (event) {
|
|
25239
|
+
const LuiCloseableHeaderMenuItem = ({ open, setOpen, ...props }) => {
|
|
25240
|
+
useEscapeFunction(() => setOpen(false));
|
|
25241
|
+
const menuDiv = usePageClickFunction((event) => open || event.stopPropagation(), (event) => {
|
|
25393
25242
|
if (!open) {
|
|
25394
25243
|
event.stopPropagation();
|
|
25395
25244
|
setOpen(false);
|
|
25396
25245
|
}
|
|
25397
25246
|
});
|
|
25398
|
-
|
|
25399
|
-
isOpen:
|
|
25400
|
-
open:
|
|
25401
|
-
close:
|
|
25247
|
+
const menuControls = {
|
|
25248
|
+
isOpen: () => open,
|
|
25249
|
+
open: () => setOpen(true),
|
|
25250
|
+
close: () => setOpen(false),
|
|
25402
25251
|
};
|
|
25403
|
-
|
|
25252
|
+
const menuItemProps = { onClick: () => menuControls.open(), ...props };
|
|
25404
25253
|
return (React__default.createElement(LuiCloseableHeaderMenuContext.Provider, { value: menuControls },
|
|
25405
|
-
React__default.createElement(LuiHeaderMenuItem,
|
|
25254
|
+
React__default.createElement(LuiHeaderMenuItem, { ref: menuDiv, ...menuItemProps }, props.children)));
|
|
25406
25255
|
};
|
|
25407
|
-
|
|
25408
|
-
|
|
25409
|
-
|
|
25410
|
-
var classes = clsx('material-icons-round', 'lui-menu-close-button', hide && buildHideClassDict(hide));
|
|
25256
|
+
const LuiMenuCloseButton = ({ icon = 'close', hide, 'data-testid': dataTestId = 'close-button', }) => {
|
|
25257
|
+
const menu = useContext(LuiCloseableHeaderMenuContext);
|
|
25258
|
+
const classes = clsx('material-icons-round', 'lui-menu-close-button', hide && buildHideClassDict(hide));
|
|
25411
25259
|
return (React__default.createElement("i", { className: classes, onClick: menu.close, "data-testid": dataTestId }, icon));
|
|
25412
25260
|
};
|
|
25413
25261
|
|
|
25414
|
-
|
|
25415
|
-
|
|
25416
|
-
|
|
25417
|
-
|
|
25418
|
-
var LuiDrawerMenuOption = function (_a) {
|
|
25419
|
-
var icon = _a.icon, label = _a.label, badge = _a.badge, _b = _a.onClick, onClick = _b === void 0 ? function () { } : _b;
|
|
25420
|
-
var menu = useContext(LuiCloseableHeaderMenuContext);
|
|
25421
|
-
return (React__default.createElement("div", { className: "lui-menu-drawer-option", onClick: function () {
|
|
25262
|
+
const LuiDrawerMenuOptions = ({ children }) => (React__default.createElement("div", { className: "lui-menu-drawer-options" }, children));
|
|
25263
|
+
const LuiDrawerMenuOption = ({ icon, label, badge, onClick = () => { }, }) => {
|
|
25264
|
+
const menu = useContext(LuiCloseableHeaderMenuContext);
|
|
25265
|
+
return (React__default.createElement("div", { className: "lui-menu-drawer-option", onClick: () => {
|
|
25422
25266
|
menu.close();
|
|
25423
25267
|
onClick();
|
|
25424
25268
|
}, "data-testid": 'drawer-option' },
|
|
@@ -25427,13 +25271,17 @@ var LuiDrawerMenuOption = function (_a) {
|
|
|
25427
25271
|
label),
|
|
25428
25272
|
badge));
|
|
25429
25273
|
};
|
|
25430
|
-
|
|
25431
|
-
|
|
25432
|
-
|
|
25433
|
-
|
|
25434
|
-
|
|
25435
|
-
|
|
25436
|
-
|
|
25274
|
+
const LuiDrawerMenu = ({ ...restOfProps }) => {
|
|
25275
|
+
const { children, hasStickyHeader = true, ...menuPropsCopy } = restOfProps;
|
|
25276
|
+
const [open, setOpen] = useState(false);
|
|
25277
|
+
const closeableMenuProps = {
|
|
25278
|
+
...menuPropsCopy,
|
|
25279
|
+
open,
|
|
25280
|
+
setOpen,
|
|
25281
|
+
icon: open ? 'close' : 'menu',
|
|
25282
|
+
onClick: () => setOpen(!open),
|
|
25283
|
+
};
|
|
25284
|
+
useEffect(() => {
|
|
25437
25285
|
// Support for non-sticky headers. Scroll back to top when menu is opened
|
|
25438
25286
|
if (open && !hasStickyHeader) {
|
|
25439
25287
|
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
@@ -25446,18 +25294,17 @@ var LuiDrawerMenu = function (_a) {
|
|
|
25446
25294
|
document.body.classList.remove('lui-menu-drawer-open');
|
|
25447
25295
|
}
|
|
25448
25296
|
}, [open, hasStickyHeader]);
|
|
25449
|
-
return (React__default.createElement(LuiCloseableHeaderMenuItem,
|
|
25297
|
+
return (React__default.createElement(LuiCloseableHeaderMenuItem, { ...closeableMenuProps },
|
|
25450
25298
|
React__default.createElement("div", { className: clsx({
|
|
25451
25299
|
'lui-menu-drawer': true,
|
|
25452
25300
|
'lui-menu-drawer-closed': !open,
|
|
25453
25301
|
}), "data-testid": 'drawer', "aria-hidden": !open }, children)));
|
|
25454
25302
|
};
|
|
25455
|
-
|
|
25456
|
-
|
|
25457
|
-
|
|
25458
|
-
|
|
25459
|
-
|
|
25460
|
-
return (React__default.createElement(LuiCloseableHeaderMenuItem, __assign({}, closeableMenuProps),
|
|
25303
|
+
const LuiDropdownMenu = ({ ...restOfProps }) => {
|
|
25304
|
+
const { children, ...menuPropsCopy } = restOfProps;
|
|
25305
|
+
const [open, setOpen] = useState(false);
|
|
25306
|
+
const closeableMenuProps = { ...menuPropsCopy, open, setOpen };
|
|
25307
|
+
return (React__default.createElement(LuiCloseableHeaderMenuItem, { ...closeableMenuProps },
|
|
25461
25308
|
React__default.createElement("div", { className: clsx({
|
|
25462
25309
|
'lui-menu-dropdown lui-box-shadow': true,
|
|
25463
25310
|
'lui-menu-dropdown-closed': !open,
|
|
@@ -25465,8 +25312,8 @@ var LuiDropdownMenu = function (_a) {
|
|
|
25465
25312
|
children,
|
|
25466
25313
|
' ')));
|
|
25467
25314
|
};
|
|
25468
|
-
|
|
25469
|
-
|
|
25315
|
+
const LuiDrawerMenuSection = (props) => {
|
|
25316
|
+
const { children, title, collapsible } = props;
|
|
25470
25317
|
return (React__default.createElement("div", null,
|
|
25471
25318
|
collapsible && (React__default.createElement(LuiExpandableBanner, { label: title || '', className: "LuiDrawerMenuSection-header" }, children)),
|
|
25472
25319
|
!collapsible && (React__default.createElement(React__default.Fragment, null,
|
|
@@ -25475,7 +25322,7 @@ var LuiDrawerMenuSection = function (props) {
|
|
|
25475
25322
|
React__default.createElement("h3", null, title)))),
|
|
25476
25323
|
children))));
|
|
25477
25324
|
};
|
|
25478
|
-
|
|
25325
|
+
const LuiDrawerMenuDivider = () => {
|
|
25479
25326
|
return React__default.createElement("hr", { className: "LuiDrawerMenuDivider" });
|
|
25480
25327
|
};
|
|
25481
25328
|
|
|
@@ -27823,8 +27670,8 @@ function polyfill(Component) {
|
|
|
27823
27670
|
}
|
|
27824
27671
|
|
|
27825
27672
|
var reactLifecyclesCompat_es = /*#__PURE__*/Object.freeze({
|
|
27826
|
-
|
|
27827
|
-
|
|
27673
|
+
__proto__: null,
|
|
27674
|
+
polyfill: polyfill
|
|
27828
27675
|
});
|
|
27829
27676
|
|
|
27830
27677
|
var require$$6 = /*@__PURE__*/getAugmentedNamespace(reactLifecyclesCompat_es);
|
|
@@ -28117,30 +27964,29 @@ module.exports = exports["default"];
|
|
|
28117
27964
|
|
|
28118
27965
|
var Modal = /*@__PURE__*/getDefaultExportFromCjs(lib.exports);
|
|
28119
27966
|
|
|
28120
|
-
|
|
28121
|
-
|
|
28122
|
-
var node = useRef(null);
|
|
27967
|
+
const LuiUpdatesSplashModal = (props) => {
|
|
27968
|
+
const node = useRef(null);
|
|
28123
27969
|
// We have to do this as the CSS takes over a lot of the page
|
|
28124
27970
|
// https://medium.com/@pitipatdop/little-neat-trick-to-capture-click-outside-with-react-hook-ba77c37c7e82
|
|
28125
|
-
|
|
27971
|
+
const handleClickOutside = useCallback((e) => {
|
|
28126
27972
|
console.log('clicking anywhere');
|
|
28127
27973
|
// current DOES have a contains!
|
|
28128
|
-
if (
|
|
27974
|
+
if (node?.current && node.current.contains(e.target)) {
|
|
28129
27975
|
// inside click
|
|
28130
27976
|
return;
|
|
28131
27977
|
}
|
|
28132
27978
|
// outside click
|
|
28133
27979
|
props.onClose();
|
|
28134
27980
|
}, [props]);
|
|
28135
|
-
useEffect(
|
|
27981
|
+
useEffect(() => {
|
|
28136
27982
|
document.addEventListener('mousedown', handleClickOutside);
|
|
28137
|
-
return
|
|
27983
|
+
return () => {
|
|
28138
27984
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
28139
27985
|
};
|
|
28140
27986
|
}, [handleClickOutside]);
|
|
28141
27987
|
// process may be undefined, e.g. webpack 5 does not include a polyfill for it. Assume if process is undefined then
|
|
28142
27988
|
// this isn't running in a test.
|
|
28143
|
-
if (typeof process === 'undefined' ||
|
|
27989
|
+
if (typeof process === 'undefined' || process?.env?.NODE_ENV !== 'test') {
|
|
28144
27990
|
Modal.setAppElement('#root');
|
|
28145
27991
|
}
|
|
28146
27992
|
return (React__default.createElement(Modal, { key: props.id, isOpen: true, shouldCloseOnOverlayClick: true, onRequestClose: props.onClose, contentLabel: "Recent updates", className: "lui-scrim", style: { overlay: { backgroundColor: 'transparent' } } },
|
|
@@ -28154,12 +28000,11 @@ var LuiUpdatesSplashModal = function (props) {
|
|
|
28154
28000
|
React__default.createElement("div", { className: 'lui-feature-text' }, props.children))));
|
|
28155
28001
|
};
|
|
28156
28002
|
|
|
28157
|
-
|
|
28158
|
-
|
|
28159
|
-
|
|
28160
|
-
var handleClickOutside = useCallback(function (e) {
|
|
28003
|
+
const LuiModal = (props) => {
|
|
28004
|
+
const node = useRef(null);
|
|
28005
|
+
const handleClickOutside = useCallback((e) => {
|
|
28161
28006
|
// current DOES have a contains!
|
|
28162
|
-
if (
|
|
28007
|
+
if (node?.current && node.current.contains(e.target)) {
|
|
28163
28008
|
// inside click
|
|
28164
28009
|
return;
|
|
28165
28010
|
}
|
|
@@ -28168,37 +28013,37 @@ var LuiModal = function (props) {
|
|
|
28168
28013
|
props.onClose && props.onClose();
|
|
28169
28014
|
}
|
|
28170
28015
|
}, [props]);
|
|
28171
|
-
useEffect(
|
|
28016
|
+
useEffect(() => {
|
|
28172
28017
|
document.addEventListener('mousedown', handleClickOutside);
|
|
28173
|
-
return
|
|
28018
|
+
return () => {
|
|
28174
28019
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
28175
28020
|
};
|
|
28176
28021
|
}, [handleClickOutside]);
|
|
28177
|
-
|
|
28022
|
+
let isTest = false;
|
|
28178
28023
|
// this is here for the tests
|
|
28179
28024
|
if (typeof process !== 'undefined') {
|
|
28180
|
-
isTest =
|
|
28025
|
+
isTest = process?.env?.NODE_ENV === 'test';
|
|
28181
28026
|
if (!isTest) {
|
|
28182
28027
|
Modal.setAppElement('#root');
|
|
28183
28028
|
}
|
|
28184
28029
|
}
|
|
28185
|
-
return (React__default.createElement(Modal,
|
|
28186
|
-
|
|
28187
|
-
|
|
28030
|
+
return (React__default.createElement(Modal, { key: props.key, isOpen: true, shouldCloseOnOverlayClick: props.shouldCloseOnOverlayClick, onRequestClose: props.onClose, overlayClassName: "modal", className: props.lowContrast ? 'lui-scrim-low-contrast' : 'lui-scrim', ariaHideApp: !isTest, ...(props.appendToElement && {
|
|
28031
|
+
parentSelector: props.appendToElement,
|
|
28032
|
+
}) },
|
|
28188
28033
|
React__default.createElement("div", { ref: node, className: clsx('lui-modal lui-box-shadow', props.maxWidth && 'lui-max-width', props.headingText && 'lui-modal-no-padding', props.className) },
|
|
28189
28034
|
props.headingText && (React__default.createElement(LuiModalHeader, { headingText: props.headingText, onClose: props.onClose })),
|
|
28190
28035
|
React__default.createElement("div", { className: clsx(props.headingText && 'lui-modal-container') }, props.children))));
|
|
28191
28036
|
};
|
|
28192
|
-
|
|
28193
|
-
|
|
28194
|
-
return (React__default.createElement(LuiModal, { key: props.key, shouldCloseOnOverlayClick: props.shouldCloseOnOverlayClick, onClose: props.onClose, className: clsx(
|
|
28195
|
-
React__default.createElement(LuiIcon, { name:
|
|
28037
|
+
const LuiAlertModal = (props) => {
|
|
28038
|
+
let materialIcon = getMaterialIconForLevel(props.level);
|
|
28039
|
+
return (React__default.createElement(LuiModal, { key: props.key, shouldCloseOnOverlayClick: props.shouldCloseOnOverlayClick, onClose: props.onClose, className: clsx(`lui-modal-${props.level}`, props.className), appendToElement: props.appendToElement },
|
|
28040
|
+
React__default.createElement(LuiIcon, { name: `ic_${materialIcon}`, alt: `${props.level} status icon`, size: "lg", className: "lui-msg-status-icon" }),
|
|
28196
28041
|
props.children));
|
|
28197
28042
|
};
|
|
28198
|
-
|
|
28043
|
+
const LuiAlertModalButtons = (props) => {
|
|
28199
28044
|
return React__default.createElement("div", { className: "modal-btn-row" }, props.children);
|
|
28200
28045
|
};
|
|
28201
|
-
|
|
28046
|
+
const LuiModalHeader = (props) => {
|
|
28202
28047
|
return (React__default.createElement("header", { className: "lui-modal-header" }, props.headingText && (React__default.createElement("div", { className: "lui-modal-header-title" },
|
|
28203
28048
|
React__default.createElement("h1", null, props.headingText),
|
|
28204
28049
|
props.onClose && (React__default.createElement("button", { className: "lui-modal-header-close-btn", onClick: props.onClose },
|
|
@@ -28299,18 +28144,17 @@ function Skeleton({ count = 1, wrapper: Wrapper, className: customClassName, con
|
|
|
28299
28144
|
: elements));
|
|
28300
28145
|
}
|
|
28301
28146
|
|
|
28302
|
-
|
|
28303
|
-
|
|
28304
|
-
|
|
28305
|
-
|
|
28306
|
-
|
|
28307
|
-
return (React__default.createElement("div", { className: clsx('LuiSearchInput-resultEntry', isSelected && 'selected'), key: result.id, ref: isSelected ? selectedRef : null, onClick: function () { return onClick(result.id); }, onMouseEnter: function () { return setSelectedId(result.id); } }, renderItem(result)));
|
|
28147
|
+
const SKELETON_COUNT = 3;
|
|
28148
|
+
const ResultsDisplay = ({ isLoading, onClick, children, selectedId, selectedRef, setSelectedId, results, renderItem, }) => {
|
|
28149
|
+
const ResultLine = (result) => {
|
|
28150
|
+
const isSelected = result.id === selectedId;
|
|
28151
|
+
return (React__default.createElement("div", { className: clsx('LuiSearchInput-resultEntry', isSelected && 'selected'), key: result.id, ref: isSelected ? selectedRef : null, onClick: () => onClick(result.id), onMouseEnter: () => setSelectedId(result.id) }, renderItem(result)));
|
|
28308
28152
|
};
|
|
28309
|
-
|
|
28153
|
+
const GroupedResult = (result) => {
|
|
28310
28154
|
return (React__default.createElement("div", null,
|
|
28311
28155
|
React__default.createElement("div", { className: "LuiSearchInput-resultHeader" }, result.label),
|
|
28312
|
-
result.items.map(
|
|
28313
|
-
return React__default.createElement(ResultLine,
|
|
28156
|
+
result.items.map((item) => {
|
|
28157
|
+
return React__default.createElement(ResultLine, { key: item.id, ...item });
|
|
28314
28158
|
})));
|
|
28315
28159
|
};
|
|
28316
28160
|
return (React__default.createElement("div", { className: "LuiSearchInput-results" },
|
|
@@ -28318,15 +28162,15 @@ var ResultsDisplay = function (_a) {
|
|
|
28318
28162
|
React__default.createElement(Skeleton, { className: "LuiSearchInput-skeletonItem", count: SKELETON_COUNT }))),
|
|
28319
28163
|
!isLoading &&
|
|
28320
28164
|
isGroupedResult(results) &&
|
|
28321
|
-
results.map(
|
|
28165
|
+
results.map((result, index) => {
|
|
28322
28166
|
return (React__default.createElement(React__default.Fragment, null,
|
|
28323
|
-
React__default.createElement(GroupedResult,
|
|
28167
|
+
React__default.createElement(GroupedResult, { key: result.id, ...result }),
|
|
28324
28168
|
index !== results.length - 1 && (React__default.createElement("hr", { className: "LuiSearchInput-groupSeparator" }))));
|
|
28325
28169
|
}),
|
|
28326
28170
|
!isLoading &&
|
|
28327
28171
|
!isGroupedResult(results) &&
|
|
28328
|
-
results.map(
|
|
28329
|
-
return React__default.createElement(ResultLine,
|
|
28172
|
+
results.map((result) => {
|
|
28173
|
+
return React__default.createElement(ResultLine, { key: result.id, ...result });
|
|
28330
28174
|
}),
|
|
28331
28175
|
children));
|
|
28332
28176
|
};
|
|
@@ -28339,36 +28183,34 @@ function isGroupedResult(result) {
|
|
|
28339
28183
|
}
|
|
28340
28184
|
function flatten(items) {
|
|
28341
28185
|
if (isGroupedResult(items)) {
|
|
28342
|
-
return items.flatMap(
|
|
28186
|
+
return items.flatMap((item) => item.items);
|
|
28343
28187
|
}
|
|
28344
28188
|
return items;
|
|
28345
28189
|
}
|
|
28346
|
-
|
|
28347
|
-
|
|
28348
|
-
|
|
28349
|
-
|
|
28350
|
-
|
|
28351
|
-
|
|
28352
|
-
|
|
28353
|
-
|
|
28190
|
+
const LuiSearchInput = (props) => {
|
|
28191
|
+
const [typedValue, setTypedValue] = useState(props.initialValue ? props.initialValue : '');
|
|
28192
|
+
const [results, setResults] = useState([]);
|
|
28193
|
+
const [selectedId, setSelectedId] = useState('');
|
|
28194
|
+
const [haveFocus, setHaveFocus] = useState(false);
|
|
28195
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
28196
|
+
const inputRef = useRef(null);
|
|
28197
|
+
const selectedRef = useRef(null);
|
|
28354
28198
|
//set focus to inut box
|
|
28355
|
-
useEffect(
|
|
28356
|
-
var _a;
|
|
28199
|
+
useEffect(() => {
|
|
28357
28200
|
if (props.focusUpdate !== undefined)
|
|
28358
|
-
|
|
28201
|
+
inputRef.current?.focus();
|
|
28359
28202
|
}, [props.focusUpdate]);
|
|
28360
28203
|
//clear result after search types changed
|
|
28361
|
-
useEffect(
|
|
28204
|
+
useEffect(() => {
|
|
28362
28205
|
setResults([]);
|
|
28363
28206
|
}, [props.getOptions]);
|
|
28364
28207
|
function setInputValue(value) {
|
|
28365
28208
|
setTypedValue(props.inputTransformer ? props.inputTransformer(value) : value);
|
|
28366
28209
|
}
|
|
28367
28210
|
function moveDown() {
|
|
28368
|
-
|
|
28369
|
-
|
|
28370
|
-
for (
|
|
28371
|
-
var item = items_1[_i];
|
|
28211
|
+
const items = flatten(results);
|
|
28212
|
+
let takeNext = selectedId === '';
|
|
28213
|
+
for (const item of items) {
|
|
28372
28214
|
if (item.id === selectedId) {
|
|
28373
28215
|
takeNext = true;
|
|
28374
28216
|
}
|
|
@@ -28380,10 +28222,9 @@ var LuiSearchInput = function (props) {
|
|
|
28380
28222
|
return;
|
|
28381
28223
|
}
|
|
28382
28224
|
function moveUp() {
|
|
28383
|
-
|
|
28384
|
-
|
|
28385
|
-
for (
|
|
28386
|
-
var item = _a[_i];
|
|
28225
|
+
const items = flatten(results);
|
|
28226
|
+
let takeNext = false;
|
|
28227
|
+
for (const item of [...items].reverse()) {
|
|
28387
28228
|
if (item.id === selectedId) {
|
|
28388
28229
|
takeNext = true;
|
|
28389
28230
|
}
|
|
@@ -28395,42 +28236,30 @@ var LuiSearchInput = function (props) {
|
|
|
28395
28236
|
return;
|
|
28396
28237
|
}
|
|
28397
28238
|
function selectItem(itemId) {
|
|
28398
|
-
|
|
28399
|
-
|
|
28239
|
+
const id = itemId ? itemId : selectedId;
|
|
28240
|
+
const selectedItem = flatten(results).find((item) => item.id === id);
|
|
28400
28241
|
if (selectedItem) {
|
|
28401
28242
|
setHaveFocus(false);
|
|
28402
28243
|
setInputValue(selectedItem.description);
|
|
28403
28244
|
props.onSelectOption(selectedItem);
|
|
28404
28245
|
}
|
|
28405
28246
|
}
|
|
28406
|
-
function retrieveResults(input) {
|
|
28407
|
-
|
|
28408
|
-
|
|
28409
|
-
|
|
28410
|
-
|
|
28411
|
-
|
|
28412
|
-
|
|
28413
|
-
|
|
28414
|
-
|
|
28415
|
-
|
|
28416
|
-
_a.trys.push([1, , 3, 4]);
|
|
28417
|
-
return [4 /*yield*/, props.getOptions(input)];
|
|
28418
|
-
case 2:
|
|
28419
|
-
results_1 = _a.sent();
|
|
28420
|
-
items = flatten(results_1);
|
|
28421
|
-
setResults(results_1);
|
|
28422
|
-
selectedIdInResults = items.some(function (item) { return item.id === selectedId; });
|
|
28423
|
-
if (!selectedIdInResults) {
|
|
28424
|
-
setSelectedId(items.length ? items[0].id : '');
|
|
28425
|
-
}
|
|
28426
|
-
return [3 /*break*/, 4];
|
|
28427
|
-
case 3:
|
|
28428
|
-
setIsLoading(false);
|
|
28429
|
-
return [7 /*endfinally*/];
|
|
28430
|
-
case 4: return [2 /*return*/];
|
|
28247
|
+
async function retrieveResults(input) {
|
|
28248
|
+
if (input !== '' && input.length >= props.minCharactersForSearch) {
|
|
28249
|
+
setIsLoading(true);
|
|
28250
|
+
try {
|
|
28251
|
+
const results = await props.getOptions(input);
|
|
28252
|
+
const items = flatten(results);
|
|
28253
|
+
setResults(results);
|
|
28254
|
+
const selectedIdInResults = items.some((item) => item.id === selectedId);
|
|
28255
|
+
if (!selectedIdInResults) {
|
|
28256
|
+
setSelectedId(items.length ? items[0].id : '');
|
|
28431
28257
|
}
|
|
28432
|
-
}
|
|
28433
|
-
|
|
28258
|
+
}
|
|
28259
|
+
finally {
|
|
28260
|
+
setIsLoading(false);
|
|
28261
|
+
}
|
|
28262
|
+
}
|
|
28434
28263
|
}
|
|
28435
28264
|
function handleKeyDown(event) {
|
|
28436
28265
|
switch (event.key) {
|
|
@@ -28453,19 +28282,19 @@ var LuiSearchInput = function (props) {
|
|
|
28453
28282
|
}
|
|
28454
28283
|
function scrollToViewSelected(topOfView) {
|
|
28455
28284
|
// Wait for ref to update before scrolling to it
|
|
28456
|
-
setTimeout(
|
|
28285
|
+
setTimeout(() => selectedRef.current?.scrollIntoView(topOfView), 0);
|
|
28457
28286
|
}
|
|
28458
|
-
useEffect(
|
|
28287
|
+
useEffect(() => {
|
|
28459
28288
|
retrieveResults(typedValue);
|
|
28460
28289
|
}, [typedValue]);
|
|
28461
|
-
|
|
28462
|
-
onClick:
|
|
28290
|
+
const cancelIcon = typedValue !== '' ? (React__default.createElement(LuiIcon, { alt: "clear", name: "ic_cancel_clear", size: "md", className: 'LuiSearchInput-iconPosition', spanProps: {
|
|
28291
|
+
onClick: () => {
|
|
28463
28292
|
setInputValue('');
|
|
28464
28293
|
setResults([]);
|
|
28465
28294
|
},
|
|
28466
28295
|
} })) : null;
|
|
28467
|
-
|
|
28468
|
-
|
|
28296
|
+
const searchIcon = (React__default.createElement(LuiIcon, { className: 'LuiSearchInput-startIconPosition', name: "ic_search", size: "md", alt: "search", spanProps: { onClick: () => inputRef.current?.focus() } }));
|
|
28297
|
+
const typeMore = 'You need to type a few more characters';
|
|
28469
28298
|
function enoughChars(input) {
|
|
28470
28299
|
if (typeof props.minCharactersForSearch === 'number')
|
|
28471
28300
|
return input.length >= props.minCharactersForSearch;
|
|
@@ -28480,20 +28309,20 @@ var LuiSearchInput = function (props) {
|
|
|
28480
28309
|
return typeMore;
|
|
28481
28310
|
}
|
|
28482
28311
|
if (props.name)
|
|
28483
|
-
return
|
|
28312
|
+
return `The ${props.name} could not be displayed or does not exist.`;
|
|
28484
28313
|
else
|
|
28485
28314
|
return null;
|
|
28486
28315
|
}
|
|
28487
28316
|
return (React__default.createElement("div", { className: "LuiSearchInput" },
|
|
28488
28317
|
React__default.createElement("span", { className: "LuiSearchInput-inputWrapper" },
|
|
28489
28318
|
searchIcon,
|
|
28490
|
-
React__default.createElement("input", { type: "text", className: clsx('LuiSearchInput-input'), ref: inputRef, value: typedValue, placeholder: props.placeholderText, "aria-label": "Search", onChange:
|
|
28319
|
+
React__default.createElement("input", { type: "text", className: clsx('LuiSearchInput-input'), ref: inputRef, value: typedValue, placeholder: props.placeholderText, "aria-label": "Search", onChange: (e) => setInputValue(e.target.value), onKeyDown: handleKeyDown, onFocus: (e) => {
|
|
28491
28320
|
e.target.select();
|
|
28492
28321
|
retrieveResults(typedValue);
|
|
28493
28322
|
setHaveFocus(true);
|
|
28494
28323
|
},
|
|
28495
28324
|
// This timeout could be a little brittle but allows the menu to stay open long enough to click it
|
|
28496
|
-
onBlur:
|
|
28325
|
+
onBlur: () => setTimeout(() => setHaveFocus(false), 200) }),
|
|
28497
28326
|
cancelIcon),
|
|
28498
28327
|
(isLoading || results.length > 0) && haveFocus && (React__default.createElement("div", null,
|
|
28499
28328
|
React__default.createElement(ResultsDisplay, { results: results, selectedId: selectedId, setSelectedId: setSelectedId, selectedRef: selectedRef, onClick: selectItem, isLoading: isLoading, renderItem: props.renderItem }))),
|
|
@@ -28509,43 +28338,33 @@ var LuiSearchInput = function (props) {
|
|
|
28509
28338
|
React__default.createElement("div", { "data-testid": "disclaimer", className: "LuiSearchInput-disclaimer" }, props.disclaimer)))));
|
|
28510
28339
|
};
|
|
28511
28340
|
|
|
28512
|
-
|
|
28341
|
+
const resultStyle$1 = { verticalAlign: 'middle' };
|
|
28513
28342
|
/**
|
|
28514
28343
|
* LuiSearchBox is a search input with select menu.
|
|
28515
28344
|
* The options of the menu and input can be passed in as an array.
|
|
28516
28345
|
* See examples in SearchBox in storybook.
|
|
28517
28346
|
*/
|
|
28518
|
-
|
|
28519
|
-
|
|
28520
|
-
|
|
28521
|
-
var value = _a.value;
|
|
28522
|
-
return value === initOptionValue;
|
|
28523
|
-
});
|
|
28524
|
-
var _b = useState(initOption ? initOption : searchBoxOptions[0]), selectedMenuOption = _b[0], setSelectedMenuOption = _b[1];
|
|
28347
|
+
const LuiSearchBox = ({ searchBoxOptions, initOptionValue, onMenuSelect, autoFocus, }) => {
|
|
28348
|
+
const initOption = searchBoxOptions.find(({ value }) => value === initOptionValue);
|
|
28349
|
+
const [selectedMenuOption, setSelectedMenuOption,] = useState(initOption ? initOption : searchBoxOptions[0]);
|
|
28525
28350
|
//auto focus every time select a menu item
|
|
28526
|
-
|
|
28351
|
+
const [focusUpdate, setFocusUpdate] = useState(false);
|
|
28527
28352
|
//don't focus when first time display
|
|
28528
|
-
|
|
28529
|
-
useEffect(
|
|
28530
|
-
|
|
28531
|
-
var value = _a.value;
|
|
28532
|
-
return value === initOptionValue;
|
|
28533
|
-
});
|
|
28353
|
+
const [isFocus, setIsFocus] = useState(false);
|
|
28354
|
+
useEffect(() => {
|
|
28355
|
+
const updatedOption = searchBoxOptions.find(({ value }) => value === initOptionValue);
|
|
28534
28356
|
if (updatedOption)
|
|
28535
28357
|
setSelectedMenuOption(updatedOption);
|
|
28536
28358
|
}, [initOptionValue]);
|
|
28537
|
-
|
|
28359
|
+
const handleMenuSelected = (e) => {
|
|
28538
28360
|
setSelectedMenuOption(findSelectedOption(e.value));
|
|
28539
28361
|
if (onMenuSelect !== undefined)
|
|
28540
28362
|
onMenuSelect(e);
|
|
28541
28363
|
setIsFocus(true);
|
|
28542
28364
|
setFocusUpdate(!focusUpdate);
|
|
28543
28365
|
};
|
|
28544
|
-
|
|
28545
|
-
|
|
28546
|
-
var value = _a.value;
|
|
28547
|
-
return value === v;
|
|
28548
|
-
});
|
|
28366
|
+
const findSelectedOption = (v) => {
|
|
28367
|
+
const selectedOption = searchBoxOptions.find(({ value }) => value === v);
|
|
28549
28368
|
return selectedOption ? selectedOption : searchBoxOptions[0];
|
|
28550
28369
|
};
|
|
28551
28370
|
return (React__default.createElement("div", { className: "LuiSearchBox" },
|
|
@@ -28553,23 +28372,23 @@ var LuiSearchBox = function (_a) {
|
|
|
28553
28372
|
React__default.createElement("div", { className: "LuiSearchBox-right" },
|
|
28554
28373
|
React__default.createElement(LuiSearchInput, { name: selectedMenuOption.name ? selectedMenuOption.name : undefined, minCharactersForSearch: 2, placeholderText: selectedMenuOption.placeholderText, getOptions: selectedMenuOption.getOption, onSelectOption: selectedMenuOption.onSelectOption, renderItem: selectedMenuOption.renderItem
|
|
28555
28374
|
? selectedMenuOption.renderItem
|
|
28556
|
-
:
|
|
28375
|
+
: (item) => {
|
|
28557
28376
|
return React__default.createElement("span", { style: resultStyle$1 }, item.description);
|
|
28558
28377
|
}, disclaimer: selectedMenuOption.disclaimer, focusUpdate: autoFocus && isFocus ? focusUpdate : undefined }))));
|
|
28559
28378
|
};
|
|
28560
|
-
|
|
28561
|
-
return (React__default.createElement(LuiButton,
|
|
28379
|
+
const LuiSearchBoxButton = React__default.forwardRef((props, ref) => {
|
|
28380
|
+
return (React__default.createElement(LuiButton, { level: "tertiary", ...props, ref: ref, className: "LuiSearchBox-button" },
|
|
28562
28381
|
props.children,
|
|
28563
28382
|
React__default.createElement(LuiIcon, { size: "md", name: 'ic_keyboard_arrow_down', className: 'LuiSearchBox-button-icon', alt: '' })));
|
|
28564
28383
|
});
|
|
28565
|
-
|
|
28384
|
+
const renderSelectMenu = (items, onClick) => (React__default.createElement(React__default.Fragment, null, items.map((item) => {
|
|
28566
28385
|
return (React__default.createElement(React__default.Fragment, { key: item.value },
|
|
28567
28386
|
item.groupDivider ? React__default.createElement(LuiSelectMenuDivider, null) : null,
|
|
28568
28387
|
item.groupTitle ? (React__default.createElement(LuiSelectMenuHeader, null, item.groupTitle)) : null,
|
|
28569
|
-
React__default.createElement(LuiSelectMenuItem, { "data-testid":
|
|
28570
|
-
})));
|
|
28388
|
+
React__default.createElement(LuiSelectMenuItem, { "data-testid": `select-box-${item.value}`, value: item.value, onClick: onClick, noPadding: true }, item.title)));
|
|
28389
|
+
})));
|
|
28571
28390
|
|
|
28572
|
-
|
|
28391
|
+
const exampleSearchResults = [
|
|
28573
28392
|
{
|
|
28574
28393
|
id: 'DP44035-1',
|
|
28575
28394
|
description: 'This is a example Newlands search result',
|
|
@@ -28579,27 +28398,27 @@ var exampleSearchResults = [
|
|
|
28579
28398
|
description: 'This is a example Newlands search result 2',
|
|
28580
28399
|
},
|
|
28581
28400
|
];
|
|
28582
|
-
|
|
28401
|
+
const getDefaultOptions = (input) => {
|
|
28583
28402
|
if (input) {
|
|
28584
|
-
|
|
28403
|
+
const results = exampleSearchResults.filter((item) => {
|
|
28585
28404
|
return item.description.toUpperCase().includes(input.toUpperCase());
|
|
28586
28405
|
});
|
|
28587
|
-
return new Promise(
|
|
28588
|
-
setTimeout(
|
|
28406
|
+
return new Promise((resolve) => {
|
|
28407
|
+
setTimeout(() => resolve(results), 250);
|
|
28589
28408
|
});
|
|
28590
28409
|
}
|
|
28591
28410
|
else {
|
|
28592
28411
|
return Promise.resolve([]);
|
|
28593
28412
|
}
|
|
28594
28413
|
};
|
|
28595
|
-
|
|
28414
|
+
const defaultSelectOption = (selectedOption) => {
|
|
28596
28415
|
console.log('SELECTED OPTION: ', selectedOption);
|
|
28597
28416
|
};
|
|
28598
|
-
|
|
28599
|
-
|
|
28417
|
+
const resultStyle = { verticalAlign: 'middle' };
|
|
28418
|
+
const defaultRenderItem = (item) => {
|
|
28600
28419
|
return React__default.createElement("span", { style: resultStyle }, item.description);
|
|
28601
28420
|
};
|
|
28602
|
-
|
|
28421
|
+
const searchBoxOptions = [
|
|
28603
28422
|
{
|
|
28604
28423
|
groupTitle: 'Title',
|
|
28605
28424
|
value: 'address',
|
|
@@ -28659,17 +28478,16 @@ var searchBoxOptions = [
|
|
|
28659
28478
|
onSelectOption: defaultSelectOption,
|
|
28660
28479
|
},
|
|
28661
28480
|
];
|
|
28662
|
-
|
|
28481
|
+
const getDefaultSearchMenuOptions = () => {
|
|
28663
28482
|
return searchBoxOptions;
|
|
28664
28483
|
};
|
|
28665
|
-
|
|
28666
|
-
var searchBoxOptions = _a.searchBoxOptions, initOptionValue = _a.initOptionValue, onMenuSelect = _a.onMenuSelect;
|
|
28484
|
+
const LOLSearchBox = ({ searchBoxOptions, initOptionValue, onMenuSelect, }) => {
|
|
28667
28485
|
return (React__default.createElement(LuiSearchBox, { onMenuSelect: onMenuSelect, initOptionValue: initOptionValue, searchBoxOptions: searchBoxOptions ? searchBoxOptions : getDefaultSearchMenuOptions() }));
|
|
28668
28486
|
};
|
|
28669
28487
|
|
|
28670
28488
|
var mountainBroken = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzAwIDI1MCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7fS5jbHMtMntmaWxsOiM0MjQ1NDc7fS5jbHMtM3tjbGlwLXBhdGg6dXJsKCNjbGlwLXBhdGgpO30uY2xzLTR7ZmlsbDojN2E3YTdhO30uY2xzLTV7b3BhY2l0eTowLjU7fS5jbHMtNntmaWxsOmdyYXk7fS5jbHMtN3tmaWxsOiNhM2EzYTM7fS5jbHMtOHtmaWxsOiNmZmY7fS5jbHMtOXtmaWxsOnVybCgjcmFkaWFsLWdyYWRpZW50KTt9LmNscy0xMHtmaWxsOnVybCgjcmFkaWFsLWdyYWRpZW50LTIpO30uY2xzLTExe2ZpbGw6dXJsKCNsaW5lYXItZ3JhZGllbnQpO30uY2xzLTEye2ZpbGw6I2ViY2VhYzt9LmNscy0xM3tmaWxsOiNkNGJhOWI7fS5jbHMtMTR7b3BhY2l0eTowLjM7fS5jbHMtMTUsLmNscy0xNntmaWxsOiM3ZDczNjg7fS5jbHMtMTZ7b3BhY2l0eTowLjI7fS5jbHMtMTd7ZmlsbDojYjNlZWY4O30uY2xzLTE4e2ZpbGw6IzAwYTRhMjt9LmNscy0xOXtmaWxsOiM2YmNhYzk7fS5jbHMtMjB7ZmlsbDojOTZkYWQ5O30uY2xzLTIxe2ZpbGw6IzAwNjkyYTt9LmNscy0yMntmaWxsOiMwMDgzOWQ7fS5jbHMtMjN7ZmlsbDojMDA4YTE3O30uY2xzLTI0e2ZpbGw6IzAwNjU1Yzt9LmNscy0yNXtmaWxsOiMwMGFkMWI7fS5jbHMtMjZ7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudC0yKTt9LmNscy0yN3tmaWxsOiM2YjE2MGY7fS5jbHMtMjh7ZmlsbDojYmMyNjFhO30uY2xzLTI5e2ZpbGw6IzNkMDUwMDt9LmNscy0zMHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTMpO30uY2xzLTMxe2ZpbGw6I2ViNGMzZjt9LmNscy0zMntmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTQpO30uY2xzLTMze2ZpbGw6IzYxNjA2MDt9LmNscy0zNHtmaWxsOiNkYmQ5ZDk7fTwvc3R5bGU+PGNsaXBQYXRoIGlkPSJjbGlwLXBhdGgiPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIyMTEuMTQgMTIwLjAxIDE3NS43MSA3MC44NiAxNDUuNDIgMjMuNDMgMTE5LjMyIDc2LjU4IDk0LjU2IDExNS40NCA1Ni44NCAxNzkuNDUgMTI4LjkzIDE3NC42OSAxODMuNzEgMTgxLjc0IDI1OS43MiAxNjcuNDUgMjExLjE0IDEyMC4wMSIvPjwvY2xpcFBhdGg+PHJhZGlhbEdyYWRpZW50IGlkPSJyYWRpYWwtZ3JhZGllbnQiIGN4PSIxNDguNiIgY3k9IjEwNC40NSIgcj0iNzYuODIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAuMTMiIHN0b3AtY29sb3I9IiM3Zjg1OGEiIHN0b3Atb3BhY2l0eT0iMCIvPjxzdG9wIG9mZnNldD0iMC4yMiIgc3RvcC1jb2xvcj0iIzZlNzM3NyIgc3RvcC1vcGFjaXR5PSIwLjA5Ii8+PHN0b3Agb2Zmc2V0PSIwLjk2IiBzdG9wLWNvbG9yPSIjMGUwZjBmIiBzdG9wLW9wYWNpdHk9IjAuNiIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPSJyYWRpYWwtZ3JhZGllbnQtMiIgY3g9IjExNS40OSIgY3k9Ijg0LjE3IiByPSIxNTUuMjQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNiN2MwYzciLz48c3RvcCBvZmZzZXQ9IjAuMDQiIHN0b3AtY29sb3I9IiNhY2I0YmIiLz48c3RvcCBvZmZzZXQ9IjAuMjgiIHN0b3AtY29sb3I9IiM3NDdhN2UiLz48c3RvcCBvZmZzZXQ9IjAuNSIgc3RvcC1jb2xvcj0iIzQ4NGM0ZSIvPjxzdG9wIG9mZnNldD0iMC43IiBzdG9wLWNvbG9yPSIjMjgyYjJjIi8+PHN0b3Agb2Zmc2V0PSIwLjg2IiBzdG9wLWNvbG9yPSIjMTUxNjE3Ii8+PHN0b3Agb2Zmc2V0PSIwLjk2IiBzdG9wLWNvbG9yPSIjMGUwZjBmIi8+PC9yYWRpYWxHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudCIgeDE9IjIwMC44MSIgeTE9IjE5NC43OSIgeDI9IjI5MC4wOSIgeTI9IjE5NC43OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2JhYmFiYSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2Y1ZjVmNSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjExMi40MSIgeTE9IjE5NC4zNiIgeDI9IjE1NCIgeTI9IjE4NC4wMyIgeGxpbms6aHJlZj0iI2xpbmVhci1ncmFkaWVudCIvPjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50LTMiIHgxPSItMjc2LjQyIiB5MT0iLTc2Ljg3IiB4Mj0iLTI1NC44OSIgeTI9Ii03Ny4xNSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtNzcuNTUgMzgyKSByb3RhdGUoMTE3LjY5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2M3ZDBkNiIvPjxzdG9wIG9mZnNldD0iMC4wOSIgc3RvcC1jb2xvcj0iI2FlYjZiYiIvPjxzdG9wIG9mZnNldD0iMC4zMiIgc3RvcC1jb2xvcj0iIzc2N2I3ZSIvPjxzdG9wIG9mZnNldD0iMC41MyIgc3RvcC1jb2xvcj0iIzQ5NGM0ZSIvPjxzdG9wIG9mZnNldD0iMC43MSIgc3RvcC1jb2xvcj0iIzI5MmIyYyIvPjxzdG9wIG9mZnNldD0iMC44NiIgc3RvcC1jb2xvcj0iIzE1MTYxNyIvPjxzdG9wIG9mZnNldD0iMC45NiIgc3RvcC1jb2xvcj0iIzBlMGYwZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtNCIgeDE9IjExNi4yNCIgeTE9IjE4NC42NSIgeDI9IjExNi4yOCIgeTI9IjE4OC4zNiIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtMjEuNDEgMTcuODcpIHJvdGF0ZSgtNy4wNSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNhNmFmYjUiLz48c3RvcCBvZmZzZXQ9IjAuMjQiIHN0b3AtY29sb3I9IiM3NDdhN2UiLz48c3RvcCBvZmZzZXQ9IjAuNDciIHN0b3AtY29sb3I9IiM0ODRjNGUiLz48c3RvcCBvZmZzZXQ9IjAuNjgiIHN0b3AtY29sb3I9IiMyODJiMmMiLz48c3RvcCBvZmZzZXQ9IjAuODUiIHN0b3AtY29sb3I9IiMxNTE2MTciLz48c3RvcCBvZmZzZXQ9IjAuOTYiIHN0b3AtY29sb3I9IiMwZTBmMGYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMjExLjE0IDEyMC4wMSAxNzUuNzEgNzAuODYgMTQ1LjQyIDIzLjQzIDExOS4zMiA3Ni41OCA5NC41NiAxMTUuNDQgNTYuODQgMTc5LjQ1IDEyOC45MyAxNzQuNjkgMTgzLjcxIDE4MS43NCAyNTkuNzIgMTY3LjQ1IDIxMS4xNCAxMjAuMDEiLz48ZyBjbGFzcz0iY2xzLTMiPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTE0Ni43OSw2OS44MmwtMS0uNDNjLS44Mi0uMzQtLjg3LTEtLjEyLTEuNDdsMS0uNTljLjc1LS40Ny42NC0uOS0uMjUtMWwtMS4xMS0uMDdjLS44OS0uMDYtMS4xNS0uNjYtLjU5LTEuMzVsLjctLjg3Yy41Ni0uNjkuMzItMS4wNS0uNTQtLjgybC0xLjA4LjNjLS44NS4yMy0xLjMtLjI2LTEtMS4wOWwuMzgtMWMuMzEtLjgzLDAtMS4xLS43Ny0uNmwtLjkzLjYzYy0uNzMuNS0xLjMxLjE5LTEuMjktLjdsMC0xLjEyYzAtLjg4LS40LTEtLjkzLS4zMmwtLjY3LjljLS41Mi43MS0xLjE4LjYtMS40NS0uMjRsLS4zNC0xLjA3Yy0uMjctLjg0LS43MS0uODQtMSwwTDEzNS40Myw2MGMtLjI3Ljg0LS45MywxLTEuNDUuMjRsLS42Ny0uOWMtLjUzLS43MS0uOTUtLjU2LS45My4zMmwwLDEuMTJjMCwuODktLjU2LDEuMi0xLjI5LjdsLS45My0uNjNjLS43My0uNS0xLjA4LS4yMy0uNzcuNmwuMzgsMWMuMzEuODMtLjE0LDEuMzItMSwxLjA5bC0xLjA4LS4zYy0uODYtLjIzLTEuMS4xMy0uNTQuODJsLjcxLjg3Yy41NS42OS4yOSwxLjI5LS42LDEuMzVsLTEuMTEuMDdjLS44OS4wNS0xLC40OC0uMjUsMWwxLC41OWMuNzUuNDcuNjksMS4xMy0uMTMsMS40N2wtMSwuNDNjLS44Mi4zNC0uNzguNzguMDgsMWwxLjA5LjI1Yy44Ni4yLDEsLjg0LjM2LDEuNDNsLS44NC43NGMtLjY2LjU4LS40OCwxLC40LjlsMS4xMS0uMTJjLjg4LS4wOSwxLjI0LjQ2LjgxLDEuMjNsLS41NiwxYy0uNDMuNzctLjEzLDEuMDkuNjcuNzJsMS0uNDdjLjgxLS4zNywxLjMzLDAsMS4xNy45bC0uMjEsMS4xYy0uMTcuODcuMjIsMS4wOC44Ni40N2wuODEtLjc4Yy42NC0uNjEsMS4yNi0uMzksMS4zOS40OGwuMTYsMS4xMWMuMTMuODguNTcsMSwxLC4xNmwuNTEtMWMuNDEtLjc5LDEuMDctLjc5LDEuNDgsMGwuNTEsMWMuNC43OS44NC43MiwxLS4xNmwuMTYtMS4xMWMuMTMtLjg3Ljc1LTEuMDksMS4zOS0uNDhsLjgxLjc4Yy42NC42MSwxLC40Ljg2LS40N2wtLjIxLTEuMWMtLjE2LS44Ny4zNi0xLjI3LDEuMTctLjlsMSwuNDdjLjgxLjM3LDEuMSwwLC42Ny0uNzJsLS41Ni0xYy0uNDMtLjc3LS4wNy0xLjMyLjgxLTEuMjNsMS4xMS4xMmMuODguMDksMS4wNi0uMzIuNC0uOWwtLjg0LS43NGMtLjY2LS41OS0uNS0xLjIzLjM2LTEuNDNsMS4wOS0uMjVDMTQ3LjU3LDcwLjYsMTQ3LjYxLDcwLjE2LDE0Ni43OSw2OS44MlptLTEwLjUzLDYuODNhNy4zLDcuMywwLDEsMSw3LjMtNy4yOUE3LjI5LDcuMjksMCwwLDEsMTM2LjI2LDc2LjY1WiIvPjxjaXJjbGUgY2xhc3M9ImNscy00IiBjeD0iMTM2LjI2IiBjeT0iNjkuMzYiIHI9IjMuNjIiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xMTEsMTI5LjgzbC0xLjY1LS42OGMtMS4zLS41NC0xLjM4LTEuNTktLjE5LTIuMzRsMS41MS0uOTRjMS4xOS0uNzQsMS0xLjQyLS4zOC0xLjUxbC0xLjc4LS4xMWMtMS40MS0uMDktMS44My0xLS45NC0yLjE0bDEuMTItMS4zOWMuODktMS4wOS41LTEuNjgtLjg1LTEuM2wtMS43Mi40N2MtMS4zNi4zNy0yLjA3LS40LTEuNTktMS43MmwuNjItMS42OGMuNDgtMS4zMi0uMDctMS43NS0xLjIzLS45NWwtMS40NywxYy0xLjE3Ljc5LTIuMDkuMjktMi4wNi0xLjExbDAtMS43OGMwLTEuNDEtLjYzLTEuNjQtMS40Ny0uNTFsLTEuMDcsMS40M2MtLjg0LDEuMTItMS44OCwxLTIuMzEtLjM5bC0uNTQtMS42OWMtLjQzLTEuMzQtMS4xMy0xLjM0LTEuNTYsMEw5MywxMTQuMThjLS40MywxLjM0LTEuNDcsMS41MS0yLjMxLjM5bC0xLjA3LTEuNDNjLS44NC0xLjEzLTEuNS0uOS0xLjQ3LjUxbDAsMS43OGMwLDEuNC0uODksMS45LTIsMS4xMWwtMS40OC0xYy0xLjE2LS44LTEuNzEtLjM3LTEuMjMuOTVsLjYyLDEuNjhjLjQ4LDEuMzItLjIzLDIuMDktMS41OSwxLjcybC0xLjcyLS40N2MtMS4zNS0uMzgtMS43NC4yMS0uODUsMS4zTDgxLDEyMi4xMWMuODksMS4wOS40NywyLS45NCwyLjE0bC0xLjc3LjExYy0xLjQxLjA5LTEuNTguNzctLjM5LDEuNTFsMS41MS45NGMxLjIuNzUsMS4xMSwxLjgtLjE5LDIuMzRsLTEuNjUuNjhjLTEuMjkuNTQtMS4yNCwxLjI0LjEzLDEuNTVsMS43NC40MWMxLjM3LjMxLDEuNjMsMS4zMy41NywyLjI2bC0xLjMzLDEuMThjLTEuMDYuOTMtLjc3LDEuNTguNjIsMS40M2wxLjc4LS4xOGMxLjQtLjE1LDIsLjc0LDEuMjgsMkw4MS40MywxNDBjLS43LDEuMjItLjIyLDEuNzQsMSwxLjE1bDEuNjItLjc1YzEuMjgtLjU5LDIuMTEuMDUsMS44NSwxLjQzbC0uMzMsMS43NWMtLjI2LDEuMzkuMzYsMS43MiwxLjM3Ljc1bDEuMjktMS4yNGMxLTEsMi0uNjMsMi4yMS43NmwuMjYsMS43N2MuMiwxLjM5Ljg5LDEuNSwxLjUzLjI1bC44Mi0xLjU4Yy42NC0xLjI1LDEuNy0xLjI1LDIuMzQsMGwuODIsMS41OGMuNjQsMS4yNSwxLjMzLDEuMTQsMS41NC0uMjVsLjI1LTEuNzdjLjIxLTEuMzksMS4yLTEuNzMsMi4yMi0uNzZsMS4yOCwxLjI0YzEsMSwxLjYzLjY0LDEuMzctLjc1bC0uMzMtMS43NWMtLjI2LTEuMzguNTgtMiwxLjg1LTEuNDNsMS42Mi43NWMxLjI3LjU5LDEuNzUuMDcsMS0xLjE1bC0uODgtMS41NWMtLjY5LTEuMjItLjExLTIuMTEsMS4yOC0ybDEuNzguMThjMS4zOS4xNSwxLjY4LS41LjYyLTEuNDNsLTEuMzMtMS4xOGMtMS4wNi0uOTMtLjgtMiwuNTctMi4yNmwxLjc0LS40MUMxMTIuMjYsMTMxLjA3LDExMi4zMiwxMzAuMzcsMTExLDEyOS44M1pNOTQuMjcsMTQwLjdhMTEuNjEsMTEuNjEsMCwxLDEsMTEuNi0xMS42MUExMS42LDExLjYsMCwwLDEsOTQuMjcsMTQwLjdaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTQiIGN4PSI5NC4yNyIgY3k9IjEyOS4wOSIgcj0iNS43NSIvPjxnIGNsYXNzPSJjbHMtNSI+PHJlY3QgY2xhc3M9ImNscy02IiB4PSIxMzQuMTYiIHk9Ijc3LjMiIHdpZHRoPSIzOS40NCIgaGVpZ2h0PSIzNS45MSIgcng9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMi4yOCAxMzYuNzEpIHJvdGF0ZSgtNDUpIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxNTMuODgiIGN5PSI5NS4yNSIgcj0iNy41MiIvPjxyZWN0IGNsYXNzPSJjbHMtNiIgeD0iMjA0LjIxIiB5PSI4MSIgd2lkdGg9IjIzLjQyIiBoZWlnaHQ9IjE1Mi41OSIgcng9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00Ny45OCAxOTguNzUpIHJvdGF0ZSgtNDUpIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNTguNzUiIHk9IjExMS4zNiIgd2lkdGg9IjIzLjQyIiBoZWlnaHQ9IjAuOTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yOS4xNSAxNTMuMjkpIHJvdGF0ZSgtNDUpIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNjAuMzUiIHk9IjExMi45NiIgd2lkdGg9IjIzLjQyIiBoZWlnaHQ9IjAuOTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yOS44MSAxNTQuODkpIHJvdGF0ZSgtNDUpIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNjEuOTciIHk9IjExNC41OCIgd2lkdGg9IjIzLjQyIiBoZWlnaHQ9IjAuOTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zMC40OSAxNTYuNTEpIHJvdGF0ZSgtNDUpIi8+PC9nPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTE3MC42OSw5NS45LDE2OSw5NS4yMmMtMS4yOS0uNTQtMS4zOC0xLjU5LS4xOS0yLjMzbDEuNTEtMWMxLjE5LS43NCwxLTEuNDItLjM4LTEuNTFsLTEuNzgtLjExYy0xLjQtLjA5LTEuODMtMS0uOTQtMi4xNGwxLjEyLTEuMzljLjg5LTEuMDkuNTEtMS42OC0uODUtMS4zbC0xLjcyLjQ3Yy0xLjM1LjM3LTIuMDctLjQtMS41OC0xLjcybC42MS0xLjY3Yy40OC0xLjMyLS4wNy0xLjc2LTEuMjMtMWwtMS40NywxYy0xLjE2Ljc5LTIuMDkuMjktMi4wNi0xLjExbDAtMS43OGMwLTEuNDEtLjY0LTEuNjQtMS40OC0uNTFsLTEuMDYsMS40M2MtLjg0LDEuMTMtMS44OCwxLTIuMzEtLjM5bC0uNTUtMS42OWMtLjQyLTEuMzQtMS4xMy0xLjM0LTEuNTYsMGwtLjU0LDEuNjljLS40MywxLjM0LTEuNDcsMS41Mi0yLjMxLjM5bC0xLjA2LTEuNDNjLS44NC0xLjEzLTEuNTEtLjktMS40OC41MWwwLDEuNzhjMCwxLjQtLjksMS45LTIuMDYsMS4xMWwtMS40Ny0xYy0xLjE2LS44LTEuNzItLjM2LTEuMjMsMWwuNjEsMS42N2MuNDgsMS4zMi0uMjMsMi4wOS0xLjU5LDEuNzJsLTEuNzEtLjQ3Yy0xLjM2LS4zOC0xLjc0LjIxLS44NiwxLjNsMS4xMywxLjM5Yy44OCwxLjA5LjQ2LDItLjk0LDIuMTRsLTEuNzguMTFjLTEuNC4wOS0xLjU4Ljc3LS4zOCwxLjUxbDEuNTEsMWMxLjE5Ljc0LDEuMSwxLjc5LS4yLDIuMzNsLTEuNjQuNjhjLTEuMy41NC0xLjI0LDEuMjQuMTMsMS41NmwxLjczLjRjMS4zNy4zMSwxLjYzLDEuMzQuNTgsMi4yN2wtMS4zNCwxLjE4Yy0xLjA1LjkzLS43NywxLjU3LjYzLDEuNDJsMS43Ny0uMThjMS40LS4xNCwyLC43NCwxLjI4LDJsLS44OCwxLjU1Yy0uNjksMS4yMi0uMjIsMS43NCwxLjA2LDEuMTVsMS42MS0uNzVjMS4yOC0uNTksMi4xMS4wNSwxLjg1LDEuNDRsLS4zMywxLjc1Yy0uMjYsMS4zOC4zNiwxLjcxLDEuMzcuNzRsMS4yOS0xLjIzYzEtMSwyLS42NCwyLjIxLjc2bC4yNiwxLjc2Yy4yLDEuMzkuODksMS41LDEuNTQuMjVsLjgxLTEuNThjLjY1LTEuMjUsMS43LTEuMjUsMi4zNCwwbC44MiwxLjU4Yy42NCwxLjI1LDEuMzQsMS4xNCwxLjU0LS4yNWwuMjYtMS43NmMuMi0xLjQsMS4xOS0xLjc0LDIuMjEtLjc2bDEuMjgsMS4yM2MxLDEsMS42NC42NCwxLjM4LS43NGwtLjMzLTEuNzVjLS4yNi0xLjM5LjU3LTIsMS44NC0xLjQ0bDEuNjIuNzVjMS4yOC41OSwxLjc1LjA3LDEuMDYtMS4xNWwtLjg4LTEuNTVjLS43LTEuMjItLjEyLTIuMSwxLjI4LTJsMS43Ny4xOGMxLjQuMTUsMS42OC0uNDkuNjMtMS40MmwtMS4zNC0xLjE4Yy0xLjA1LS45My0uNzktMiwuNTgtMi4yN2wxLjczLS40QzE3MS45Myw5Ny4xNCwxNzIsOTYuNDQsMTcwLjY5LDk1LjlabS0xNi43NSwxMC44N2ExMS42MSwxMS42MSwwLDEsMSwxMS42MS0xMS42MUExMS42MSwxMS42MSwwLDAsMSwxNTMuOTQsMTA2Ljc3WiIvPjxjaXJjbGUgY2xhc3M9ImNscy03IiBjeD0iMTUzLjk0IiBjeT0iOTUuMTYiIHI9IjUuNzUiLz48cmVjdCBjbGFzcz0iY2xzLTYiIHg9IjExNi4wMyIgeT0iMTAwLjA3IiB3aWR0aD0iNDguNTUiIGhlaWdodD0iNTMuMzIiIHJ4PSI2Ljc2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAuMTYgMjQxLjIxKSByb3RhdGUoLTc5LjM2KSIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMTQwLjMiIGN5PSIxMjYuNzMiIHI9IjEwLjE3Ii8+PHJlY3QgY2xhc3M9ImNscy02IiB4PSIxNS4yNSIgeT0iMjI3LjQ3IiB3aWR0aD0iMjA2LjI5IiBoZWlnaHQ9IjMxLjY3IiByeD0iNi43NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE0Mi41OSAzMTQuNzIpIHJvdGF0ZSgtNzkuMzYpIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxMTguNjEiIHk9IjE1Ny4yNSIgd2lkdGg9IjMxLjY3IiBoZWlnaHQ9IjEuMjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMxLjQ3IC0yMi4xMikgcm90YXRlKDEwLjY0KSIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTE4LjA1IiB5PSIxNjAuMjUiIHdpZHRoPSIzMS42NyIgaGVpZ2h0PSIxLjI4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMi4wMiAtMjEuOTYpIHJvdGF0ZSgxMC42NCkiLz48cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjExNy40OCIgeT0iMTYzLjMiIHdpZHRoPSIzMS42NyIgaGVpZ2h0PSIxLjI4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMi41NyAtMjEuOCkgcm90YXRlKDEwLjY0KSIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTEzOC43OSwxMDAuODdjLjY3LTIuMSwxLjc3LTIuMSwyLjQ0LDBsLjg1LDIuNjVjLjY3LDIuMSwyLjMsMi4zNywzLjYxLjZsMS42Ny0yLjIzYzEuMzEtMS43NiwyLjM1LTEuNDEsMi4zMS43OWwtLjA2LDIuNzljLS4wNSwyLjIsMS40LDMsMy4yMiwxLjc0bDIuMy0xLjU3YzEuODItMS4yNCwyLjY4LS41NywxLjkzLDEuNWwtMSwyLjYyYy0uNzYsMi4wNi4zNiwzLjI3LDIuNDgsMi42OWwyLjY5LS43NGMyLjEyLS41OCwyLjcyLjM0LDEuMzMsMi4wNWwtMS43NiwyLjE2Yy0xLjM4LDEuNzEtLjcyLDMuMjIsMS40OCwzLjM1bDIuNzguMThjMi4xOS4xMywyLjQ2LDEuMi42LDIuMzZsLTIuMzcsMS40OGMtMS44NiwxLjE2LTEuNzMsMi44MS4zLDMuNjVsMi41OCwxLjA2YzIsLjg1LDEuOTQsMS45NC0uMiwyLjQ0bC0yLjcyLjYzYy0yLjE0LjQ5LTIuNTUsMi4wOS0uOSwzLjU1bDIuMDksMS44NGMxLjY1LDEuNDYsMS4yMSwyLjQ2LTEsMi4yNGwtMi43Ny0uMjljLTIuMTktLjIzLTMuMDksMS4xNS0yLDMuMDdsMS4zNywyLjQyYzEuMDksMS45MS4zNSwyLjcyLTEuNjUsMS43OWwtMi41My0xLjE3Yy0yLS45Mi0zLjMuMDktMi44OSwyLjI1bC41MiwyLjc0Yy40LDIuMTYtLjU2LDIuNjktMi4xNSwxLjE2bC0yLTEuOTNjLTEuNTktMS41Mi0zLjE1LTEtMy40NywxLjE5bC0uNCwyLjc2Yy0uMzIsMi4xOC0xLjQsMi4zNi0yLjQxLjRsLTEuMjctMi40OGMtMS0yLTIuNjYtMi0zLjY2LDBsLTEuMjgsMi40OGMtMSwyLTIuMDksMS43OC0yLjQxLS40bC0uNC0yLjc2Yy0uMzItMi4xNy0xLjg4LTIuNzEtMy40Ni0xLjE5bC0yLDEuOTNjLTEuNTksMS41My0yLjU2LDEtMi4xNS0xLjE2bC41MS0yLjc0Yy40MS0yLjE2LS44OS0zLjE3LTIuODktMi4yNWwtMi41MywxLjE3Yy0yLC45My0yLjc0LjEyLTEuNjUtMS43OWwxLjM4LTIuNDJjMS4wOC0xLjkyLjE4LTMuMy0yLTMuMDdsLTIuNzguMjljLTIuMTkuMjItMi42My0uNzgtMS0yLjI0bDIuMDktMS44NGMxLjY1LTEuNDYsMS4yNS0zLjA2LS45LTMuNTVsLTIuNzEtLjYzYy0yLjE1LS41LTIuMjQtMS41OS0uMi0yLjQ0bDIuNTctMS4wNmMyLS44NCwyLjE3LTIuNDkuMy0zLjY1bC0yLjM2LTEuNDhjLTEuODctMS4xNi0xLjYtMi4yMy42LTIuMzZsMi43OC0uMThjMi4yLS4xMywyLjg2LTEuNjQsMS40Ny0zLjM1bC0xLjc2LTIuMTZjLTEuMzgtMS43MS0uNzgtMi42MywxLjM0LTIuMDVsMi42OS43NGMyLjEyLjU4LDMuMjMtLjYzLDIuNDgtMi42OWwtMS0yLjYyYy0uNzYtMi4wNy4xMS0yLjc0LDEuOTItMS41bDIuMzEsMS41N2MxLjgxLDEuMjQsMy4yNi40NiwzLjIyLTEuNzRsLS4wNi0yLjc5YzAtMi4yLDEtMi41NSwyLjMxLS43OWwxLjY2LDIuMjNjMS4zMiwxLjc3LDIuOTQsMS41LDMuNjItLjZaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxNDAuMDEiIGN5PSIxMjYuODUiIHI9IjE4LjE1Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTgiIGN4PSIxNDAuMDEiIGN5PSIxMjYuODUiIHI9IjkiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik0xMDcuNDYsMTQxLjc0Yy42Ny0yLjA5LDEuNzctMi4wOSwyLjQ0LDBsLjg1LDIuNjZjLjY3LDIuMDksMi4yOSwyLjM2LDMuNjEuNmwxLjY3LTIuMjRjMS4zMS0xLjc2LDIuMzUtMS40LDIuMy44bDAsMi43OGMwLDIuMiwxLjQsMywzLjIyLDEuNzVsMi4zLTEuNThjMS44Mi0xLjI0LDIuNjgtLjU2LDEuOTMsMS41bC0xLDIuNjJjLS43NiwyLjA3LjM2LDMuMjgsMi40OCwyLjdsMi42OC0uNzRjMi4xMy0uNTksMi43My4zMywxLjM0LDJsLTEuNzYsMi4xNmMtMS4zOCwxLjcxLS43MiwzLjIyLDEuNDcsMy4zNmwyLjc5LjE3YzIuMTkuMTQsMi40NiwxLjIuNiwyLjM3TDEzMiwxNjQuMTZjLTEuODcsMS4xNy0xLjczLDIuODEuMywzLjY1bDIuNTgsMS4wN2MyLC44NCwxLjk0LDEuOTQtLjIsMi40M2wtMi43Mi42M2MtMi4xNC41LTIuNTUsMi4wOS0uOSwzLjU1bDIuMDksMS44NWMxLjY1LDEuNDUsMS4yMSwyLjQ2LTEsMi4yM2wtMi43Ny0uMjljLTIuMTktLjIyLTMuMDksMS4xNi0yLDMuMDdsMS4zNywyLjQyYzEuMDksMS45Mi4zNCwyLjcyLTEuNjUsMS44bC0yLjUzLTEuMTdjLTItLjkzLTMuMy4wOC0yLjg5LDIuMjVsLjUyLDIuNzRjLjQsMi4xNi0uNTYsMi42OC0yLjE1LDEuMTZsLTItMS45M2MtMS41OS0xLjUzLTMuMTUtMS0zLjQ3LDEuMTlsLS40LDIuNzZjLS4zMiwyLjE3LTEuNCwyLjM1LTIuNDEuNGwtMS4yNy0yLjQ4Yy0xLTItMi42Ni0yLTMuNjYsMEwxMDUuNTcsMTk0Yy0xLDEuOTUtMi4wOSwxLjc3LTIuNDEtLjRsLS40LTIuNzZjLS4zMi0yLjE4LTEuODgtMi43Mi0zLjQ2LTEuMTlsLTIsMS45M2MtMS41OCwxLjUyLTIuNTUsMS0yLjE0LTEuMTZsLjUxLTIuNzRjLjQxLTIuMTctLjg5LTMuMTgtMi44OS0yLjI1bC0yLjUzLDEuMTdjLTIsLjkyLTIuNzQuMTItMS42NS0xLjhMOTAsMTgyLjM1YzEuMDgtMS45MS4xOC0zLjI5LTItMy4wN2wtMi43Ny4yOWMtMi4xOS4yMy0yLjYzLS43OC0xLTIuMjNsMi4wOS0xLjg1YzEuNjUtMS40NiwxLjI0LTMuMDUtLjktMy41NWwtMi43MS0uNjNjLTIuMTUtLjQ5LTIuMjQtMS41OS0uMjEtMi40M2wyLjU4LTEuMDdjMi0uODQsMi4xNy0yLjQ4LjMtMy42NUw4MywxNjIuNjljLTEuODctMS4xNy0xLjYtMi4yMy42LTIuMzdsMi43OC0uMTdjMi4xOS0uMTQsMi44Ni0xLjY1LDEuNDctMy4zNmwtMS43Ni0yLjE2Yy0xLjM4LTEuNzEtLjc4LTIuNjMsMS4zNC0ybDIuNjkuNzRjMi4xMi41OCwzLjIzLS42MywyLjQ4LTIuN2wtMS0yLjYyYy0uNzYtMi4wNi4xMS0yLjc0LDEuOTItMS41bDIuMywxLjU4YzEuODIsMS4yNCwzLjI3LjQ1LDMuMjItMS43NWwwLTIuNzhjMC0yLjIsMS0yLjU2LDIuMzEtLjhMMTAzLDE0NWMxLjMyLDEuNzYsMi45NCwxLjQ5LDMuNjEtLjZaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxMDguNjgiIGN5PSIxNjcuNzMiIHI9IjE4LjE1Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTgiIGN4PSIxMDguNjgiIGN5PSIxNjcuNzMiIHI9IjkiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik0xNzAuMjksMTQyLjM0Yy41LTEuNTUsMS4zMS0xLjU1LDEuODEsMHMxLjY5LDEuNzUsMi42Ny40NSwxLjc0LTEsMS43LjU4LDEsMi4yMSwyLjM4LDEuMjksMi0uNDIsMS40MywxLjExLjI2LDIuNDIsMS44MywyLDIsLjI1LDEsMS41MS0uNTQsMi4zOCwxLjA4LDIuNDgsMS44My44OS40NSwxLjc1LTEuMjgsMi4wNy4yMiwyLjcsMS40NCwxLjQzLS4xNSwxLjgtMS44OCwxLjU0LS42NiwyLjYyLjg5LDEuODItLjczLDEuNjUtMi4yOC44NS0xLjQ4LDIuMjcuMjUsMi0xLjIyLDEuMzMtMi40NC4wNi0yLjE0LDEuNjYtLjQxLDItMS41OC44Ni0yLjMzLS43My0yLjU2Ljg4LTEsMS43NC0xLjc4LjI5LTItMS40NC0yLjcxLDAtMS41NCwxLjMxLTEuNzgtLjI5LTEuMzktMi0yLjU2LS44OC0xLjg5Ljc0LTEuNTktLjg2LS42Ni0yLjM1LTIuMTMtMS42Ni0yLC4wOC0xLjIyLTEuMzMuMTMtMi40NC0xLjQ4LTIuMjctMi0uNTctLjczLTEuNjUuOTItMi4yNi0uNjYtMi42Mi0xLjY2LTEuMTgtLjE1LTEuOCwxLjYtMS44NC4yMi0yLjctMS4xOC0xLjY1LjQ0LTEuNzUsMi4xMi0xLjIyLDEuMDktMi40OC0uNTgtMS45NCwxLTEuNTEsMi4zOS0uNDYsMS44My0yLC4wOC0yLDEuNDItMS4xMSwyLjQyLjM0LDIuMzktMS4yOS43My0xLjg5LDEuNy0uNThTMTY5LjgsMTQzLjg5LDE3MC4yOSwxNDIuMzRaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxNzEuMTkiIGN5PSIxNTUuODYiIHI9IjkuOTUiLz48Y2lyY2xlIGNsYXNzPSJjbHMtOCIgY3g9IjE3MS4xOSIgY3k9IjE1NS44NiIgcj0iNy4wNCIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTE5OS42OCwxMjcuNTJjLjcxLTMuMDcsMS44Ny0zLjA3LDIuNTksMHMzLDMuNjIsNSwxLjI0LDMuMDktMS44NCwyLjMsMS4yLDEsNC41OSwzLjg4LDMuNDQsMy41OC0uMiwxLjQ3LDIuMTMtMS4yOSw0LjUxLDEuODQsNC44NSwzLjI2LDEuNDkuMzEsMi41Ny0zLjI0LDMuMzktLjYzLDUuMTUsMi4yLDIuODQtLjkyLDIuNDItNC40NCwxLjUtMi45NCw0LjI2LjYzLDMuNTQtMS45NCwxLjcyLTQuNjMtLjczLTQuNTksMi40MS0xLjA5LDMuNDMtMi41Mi42Mi0zLjc1LTIuOC01LjE4LDAtMi41NiwyLjUzLTIuNTItLjYyLTItNC4yMy00LjU5LTIuNDEtMy40MywxLjA1LTEuOTQtMS43Mi4xOC00LjY4LTIuOTQtNC4yNi0zLjUzLS42Ny0uOTItMi40MiwyLjMzLTQuMDctLjYyLTUuMTUtMi44Mi0yLjIzLjMxLTIuNTcsNC0yLjUyLDEuODQtNC44NS0xLjQ2LTMuMjksMS40Ny0yLjEzLDQuNjctLjQsMy44OC0zLjQ0LjI0LTMuNTksMi4yOS0xLjJTMTk5LDEzMC41OCwxOTkuNjgsMTI3LjUyWiIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMjAwLjk3IiBjeT0iMTQzLjI5IiByPSI3Ljk5Ii8+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNMTYxLjY2LDQxLjY0Yy43MS0zLjA2LDEuODgtMy4wNiwyLjU5LDBzMywzLjYzLDUsMS4yNCwzLjA4LTEuODQsMi4yOSwxLjIxLjk1LDQuNTksMy44OCwzLjQzLDMuNTktLjE5LDEuNDcsMi4xNC0xLjI5LDQuNTEsMS44NCw0Ljg0LDMuMjcsMS41LjMxLDIuNTgtMy4yMywzLjM5LS42Miw1LjE0LDIuMiwyLjg1LS45MiwyLjQzLTQuNDQsMS41LTIuOTUsNC4yNi42MywzLjU0LTEuOTQsMS43MlMxNjgsNjkuODksMTY4LjA3LDczcy0xLjEsMy40Mi0yLjUyLjYyLTMuNzYtMi44MS01LjE4LDAtMi41NiwyLjUzLTIuNTItLjYyLTItNC4yMy00LjU5LTIuNDEtMy40NCwxLjA1LTEuOTQtMS43Mi4xNy00LjY4LTIuOTUtNC4yNi0zLjUzLS42Ny0uOTEtMi40MywyLjMzLTQuMDctLjYzLTUuMTQtMi44Mi0yLjI0LjMxLTIuNTgsNC0yLjUxLDEuODQtNC44NC0xLjQ1LTMuMjksMS40Ny0yLjE0LDQuNjgtLjM5LDMuODgtMy40My4yNC0zLjU5LDIuMy0xLjIxUzE2MSw0NC43MSwxNjEuNjYsNDEuNjRaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxNjIuOTYiIGN5PSI1Ny40MiIgcj0iNy45OSIvPjwvZz48L2c+PGcgaWQ9IkxheWVyXzUiIGRhdGEtbmFtZT0iTGF5ZXIgNSI+PHBvbHlnb24gY2xhc3M9ImNscy05IiBwb2ludHM9IjIxMS4xNCAxMjAuMDEgMTc1LjcxIDcwLjg2IDE0NS40MiAyMy40MyAxMTkuMzIgNzYuNTggOTQuNTYgMTE1LjQ0IDU2Ljg0IDE3OS40NSAxMjguOTMgMTc0LjY5IDE4My43MSAxODEuNzQgMjU5LjcyIDE2Ny40NSAyMTEuMTQgMTIwLjAxIi8+PC9nPjxnIGlkPSJMYXllcl80IiBkYXRhLW5hbWU9IkxheWVyIDQiPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTAiIHBvaW50cz0iNjEuOTEgMTc4LjcyIDEwMy45NSAxMDcuNDIgMTIzLjE3IDc4LjIyIDE0Ny4yNSAyNi4yOSAxNDUuNDIgMjMuNDMgMTE5LjMyIDc2LjU4IDkzLjE0IDExNy44MyA1Ni44NCAxNzkuNDUgNjEuOTEgMTc4LjcyIi8+PC9nPjxnIGlkPSJMYXllcl83IiBkYXRhLW5hbWU9IkxheWVyIDciPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTEiIHBvaW50cz0iMjUxLjMgMjE0LjAzIDI2MS41OSAyMDAuMzUgMjc1LjAyIDE5OS4wOCAyNzQuMDUgMTg5LjQyIDI5MC4wOSAxNzUuNTUgMjQ5LjM1IDE3Ny45OCAyMDAuODEgMTgyLjk4IDI1MS4zIDIxNC4wMyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTIiIHBvaW50cz0iMjQxLjc1IDE5My40NiAyNjQuMzIgMTkxLjY0IDI2NC40MiAxOTMuMTkgMjQyLjc5IDE5NC42NiAyNDEuNzUgMTkzLjQ2Ii8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTIzMywyMDMuMDhjMS0uMTIsNDItNCw0Mi00TDIxNC42Myw2Ny42MVY4Nmw0OS43OSwxMDcuMTYtMzAuNiwyLjA3Ii8+PGcgY2xhc3M9ImNscy0xNCI+PHBhdGggY2xhc3M9ImNscy0xNSIgZD0iTTI2NC41NywxNzYuMzMsMjE0LjYzLDY3LjYxVjg2bDQ3LjcsMTAyLjY3QzI2Mi40NywxODIuOSwyNjQuNDYsMTgxLjQxLDI2NC41NywxNzYuMzNaIi8+PHBhdGggY2xhc3M9ImNscy0xNSIgZD0iTTI0MS42LDIwMi4yNWwyMC0xLjljLjExLTEuNTguNzYtMy44Ny44Ny03bC0yOC42NCwxLjk0LS42NCw2LjMxWiIvPjwvZz48cG9seWdvbiBjbGFzcz0iY2xzLTE2IiBwb2ludHM9IjI2Mi40NiAxOTMuMzIgMjYzLjIzIDE5MS45MiAyNDEuMTIgMTkzLjM2IDI0MS4xMiAxOTQuNzcgMjYyLjQ2IDE5My4zMiIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTMiIHBvaW50cz0iMjQ4LjIzIDIxNC45NiAyNTEuMyAyMTQuMDMgMjM2LjYgMTM5Ljk4IDIyNC4yMiA4MS41MSAyMTIuNzkgMjQuNjMgMjEwLjM1IDI0LjYzIDIxOC43NCA4Ni4wMyAyNDEuNzUgMjA4LjA3IDI0OC4yMyAyMTQuOTYiLz48cG9seWdvbiBjbGFzcz0iY2xzLTE3IiBwb2ludHM9IjIxMC4zNSAyNC42MyAyMDEuMDMgNzkuODIgMjIxLjE2IDgxLjUxIDIxMC4zNSAyNC42MyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTgiIHBvaW50cz0iMjIxLjE2IDgxLjUxIDIzMy44MSAxNDEuMDEgMjE0LjYzIDEyOC4zMSAyMjEuMTYgODEuNTEiLz48cG9seWdvbiBjbGFzcz0iY2xzLTE5IiBwb2ludHM9IjIwMS4wMyA3OS44MiAyMjEuMTYgODEuNTEgMjE0LjYzIDEyOC4zMSAyMDEuMDMgNzkuODIiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIwIiBwb2ludHM9IjIwMS4wMyA3OS44MiAxOTIuMTggMTE5LjM3IDIxNC42MyAxMjguMzEgMjAxLjAzIDc5LjgyIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yMSIgcG9pbnRzPSIyNDguMjMgMjE0Ljk2IDIxMi43MiAyMTAuNDMgMjMzLjgxIDE0MS4wMSAyNDguMjMgMjE0Ljk2Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yMiIgcG9pbnRzPSIyMzMuODEgMTQxLjAxIDIxNC42MyAxMjguMzEgMjEyLjcyIDIxMC40MyAyMzMuODEgMTQxLjAxIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yMyIgcG9pbnRzPSIyMTIuNzIgMjEwLjQzIDIwMC4yMiAxODYuMjIgMjE0LjYzIDEyOC4zMSAyMTIuNzIgMjEwLjQzIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yNCIgcG9pbnRzPSIxOTIuMTggMTE5LjM3IDIxNC42MyAxMjguMzEgMjAwLjIyIDE4Ni4yMiAxOTIuMTggMTE5LjM3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yNSIgcG9pbnRzPSIxNzYuODggMTgxLjU0IDE5Mi4xOCAxMTkuMzcgMjAwLjIyIDE4Ni4yMiAxNzYuODggMTgxLjU0Ii8+PC9nPjxnIGlkPSJ0b29sX2JveCIgZGF0YS1uYW1lPSJ0b29sIGJveCI+PHBvbHlnb24gY2xhc3M9ImNscy0yNiIgcG9pbnRzPSI5OC41NCAyMDAuMTkgMTQ0LjkgMTkyLjIgMTQ3Ljk1IDE4Ni42MSAxMzkuNjQgMTg1LjExIDE0Mi45NiAxODMuNTQgMTQwLjA1IDE4My41NCAxMzYuNTkgMTg0LjQ3IDEzMi4xNiAxODMuNTQgOTguNTQgMjAwLjE5Ii8+PHBhdGggY2xhc3M9ImNscy0yNyIgZD0iTTcxLjQsMTY5LjU2bDM2LjM0LTMuOTRzMTAuODQsNi40NCwxMC40Nyw2LjQ5LTEuMzIsMy42NC0xLjMyLDMuNjRsLTM1LDUuNzlaIi8+PHBhdGggY2xhc3M9ImNscy0yOCIgZD0iTTEwNy41LDE2OC4xOHM5Ljc3LDYuMyw5LjY5LDUuOTEsMS0yLDEtMmwtMTAuNDctNi40OVoiLz48cG9seWdvbiBjbGFzcz0iY2xzLTI5IiBwb2ludHM9IjcxIDE3Mi41MSAxMDcuNSAxNjguMTggMTA3Ljc0IDE2NS42MiA3MS40IDE2OS41NiA3MSAxNzIuNTEiLz48cG9seWdvbiBjbGFzcz0iY2xzLTI3IiBwb2ludHM9IjgzLjI1IDE3OC4yOSAxMTkuMjIgMTcyLjczIDEzNC43OSAxNzcuNDUgMTI4LjcgMTg0LjQgOTQuMDMgMTkxLjQ3IDgzLjI1IDE3OC4yOSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMjkiIHBvaW50cz0iMTE4LjcyIDE3Mi44MSA4My4yNSAxNzguMjkgOTQuMDMgMTkxLjQ3IDExOS42NyAxODAuNDkgMTE4LjcyIDE3Mi44MSIvPjxwYXRoIGNsYXNzPSJjbHMtMzAiIGQ9Ik0xMjEuMywxNzIuNjZhMy43NCwzLjc0LDAsMSwwLTMuNzktMi4zNWgwTDEwOSwxODYuNDRsMy45NCwyLjA3Wm0tMy4xMy0zLjYxLDEuMzEtMi41MSwyLjgzLS4xMSwxLjUxLDIuMzktMS4zMSwyLjUxLTIuODMuMTFaIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yOCIgcG9pbnRzPSI5OC41NCAyMDAuMTkgMTM1LjMgMTkxLjc5IDEzNC43OSAxNzcuNDUgOTcuNiAxODQuMzEgOTguNTQgMjAwLjE5Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0zMSIgcG9pbnRzPSI5Ny42IDE4NC4zMSA4My4yNSAxNzguMjkgODQuMjkgMTkzLjQ4IDk4LjU0IDIwMC4xOSA5Ny42IDE4NC4zMSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMzEiIHBvaW50cz0iODIuNjEgMTc4LjM3IDgxLjkxIDE4MS41NCA3MC42OSAxNzIuNzMgNzEuNCAxNjkuNTYgODIuNjEgMTc4LjM3Ii8+PHBhdGggY2xhc3M9ImNscy0zMiIgZD0iTTExNC44OCwxODVsLjQsMi41N3MuNzYsMS4zNiwxLjkxLDEuMTIuODgtMS44My44OC0xLjgzbC0uMy0yLjQxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMzMiIGQ9Ik0xMTUuMjYsMTg1LjA2bC4zOSwyLjU3cy42LDEuMjksMS43NCwxLjA2LDEtMS43NywxLTEuNzdsLS4zLTIuNDFaIi8+PHBvbHlnb24gY2xhc3M9ImNscy0zNCIgcG9pbnRzPSIxMTguMTQgMTg0LjUxIDExNy43NyAxODQuNDcgMTE0Ljg5IDE4NS4wMiAxMTUuMjYgMTg1LjA2IDExOC4xNCAxODQuNTEiLz48L2c+PC9zdmc+';
|
|
28671
28489
|
|
|
28672
|
-
|
|
28490
|
+
const LuiErrorPage = (props) => {
|
|
28673
28491
|
return (React__default.createElement("div", { className: 'LuiErrorPage' },
|
|
28674
28492
|
props.header,
|
|
28675
28493
|
React__default.createElement("div", { className: 'Container' },
|
|
@@ -28680,36 +28498,36 @@ var LuiErrorPage = function (props) {
|
|
|
28680
28498
|
props.footer));
|
|
28681
28499
|
};
|
|
28682
28500
|
|
|
28683
|
-
|
|
28501
|
+
const userHasAnyPrivilege = (privileges, selectedFirm) => {
|
|
28684
28502
|
return (privileges.length === 0 ||
|
|
28685
28503
|
(selectedFirm !== undefined &&
|
|
28686
|
-
selectedFirm.privileges.filter(
|
|
28504
|
+
selectedFirm.privileges.filter((value) => privileges.indexOf(value) > -1)
|
|
28687
28505
|
.length > 0));
|
|
28688
28506
|
};
|
|
28689
|
-
|
|
28690
|
-
|
|
28507
|
+
const userIsInternal = (user) => {
|
|
28508
|
+
const loginType = user?.loginType.code || user?.loginType;
|
|
28691
28509
|
return loginType === 'INTN';
|
|
28692
28510
|
};
|
|
28693
28511
|
|
|
28694
28512
|
function useLOLUserContext() {
|
|
28695
28513
|
return useContext(LOLUserContext);
|
|
28696
28514
|
}
|
|
28697
|
-
|
|
28515
|
+
const LOLUserContext = React__default.createContext({
|
|
28698
28516
|
user: undefined,
|
|
28699
28517
|
selectedFirm: undefined,
|
|
28700
|
-
changeFirm:
|
|
28518
|
+
changeFirm: (firmId) => {
|
|
28701
28519
|
console.error('Called changeFirm before UserContext loaded', firmId);
|
|
28702
28520
|
},
|
|
28703
|
-
isInternal:
|
|
28704
|
-
hasAnyPrivilege:
|
|
28521
|
+
isInternal: () => false,
|
|
28522
|
+
hasAnyPrivilege: () => false,
|
|
28705
28523
|
});
|
|
28706
28524
|
function LOLUserContextProvider(props) {
|
|
28707
|
-
|
|
28708
|
-
|
|
28709
|
-
|
|
28710
|
-
useEffect(
|
|
28525
|
+
const { isLoading, data, isError } = useGetUserInfo();
|
|
28526
|
+
const [selectedFirm, setSelectedFirm] = useState();
|
|
28527
|
+
const [ready, setReady] = useState(false);
|
|
28528
|
+
useEffect(() => {
|
|
28711
28529
|
// User data is still loading
|
|
28712
|
-
if (!
|
|
28530
|
+
if (!data?.user) {
|
|
28713
28531
|
return;
|
|
28714
28532
|
}
|
|
28715
28533
|
// Clear firm value if there are no firms
|
|
@@ -28720,23 +28538,22 @@ function LOLUserContextProvider(props) {
|
|
|
28720
28538
|
}
|
|
28721
28539
|
if (data.user.firms.length > 0 &&
|
|
28722
28540
|
(!getSelectedFirmIdCache() ||
|
|
28723
|
-
!data.user.firms.find(
|
|
28724
|
-
|
|
28541
|
+
!data.user.firms.find((firm) => firm.id === getSelectedFirmIdCache()))) {
|
|
28542
|
+
const firstFirm = data.user.firms[0];
|
|
28725
28543
|
setSelectedFirmCache(firstFirm.id, firstFirm.name);
|
|
28726
28544
|
setSelectedFirm(firstFirm);
|
|
28727
28545
|
setReady(true);
|
|
28728
28546
|
}
|
|
28729
28547
|
else {
|
|
28730
28548
|
// pull firm from cache and use it
|
|
28731
|
-
|
|
28732
|
-
|
|
28549
|
+
const selectedFirmIdFromCache = getSelectedFirmIdCache();
|
|
28550
|
+
const selectedFirmDerivedFromCache = data.user.firms.find((firm) => firm.id === selectedFirmIdFromCache);
|
|
28733
28551
|
setSelectedFirm(selectedFirmDerivedFromCache || undefined);
|
|
28734
28552
|
setReady(true);
|
|
28735
28553
|
}
|
|
28736
28554
|
}, [data]);
|
|
28737
|
-
|
|
28738
|
-
|
|
28739
|
-
var firm = (_a = data === null || data === void 0 ? void 0 : data.user) === null || _a === void 0 ? void 0 : _a.firms.find(function (f) {
|
|
28555
|
+
const changeFirm = useCallback((firmId) => {
|
|
28556
|
+
const firm = data?.user?.firms.find((f) => {
|
|
28740
28557
|
return f.id === firmId;
|
|
28741
28558
|
});
|
|
28742
28559
|
if (firm === undefined) {
|
|
@@ -28747,14 +28564,12 @@ function LOLUserContextProvider(props) {
|
|
|
28747
28564
|
setSelectedFirmCache(firm.id, firm.name);
|
|
28748
28565
|
setSelectedFirm(firm);
|
|
28749
28566
|
}, [data]);
|
|
28750
|
-
|
|
28751
|
-
|
|
28752
|
-
|
|
28753
|
-
|
|
28754
|
-
useEffect(function () {
|
|
28755
|
-
var onCachedFirmUpdate = function (event) {
|
|
28567
|
+
const isInternal = useCallback(() => userIsInternal(data?.user), [data]);
|
|
28568
|
+
const hasAnyPrivilege = useCallback((privileges) => userHasAnyPrivilege(privileges, selectedFirm), [selectedFirm]);
|
|
28569
|
+
useEffect(() => {
|
|
28570
|
+
const onCachedFirmUpdate = (event) => {
|
|
28756
28571
|
if (event.storageArea === localStorage && event.key === FIRM_KEY) {
|
|
28757
|
-
|
|
28572
|
+
const selectedFirmId = event.newValue;
|
|
28758
28573
|
if (selectedFirmId) {
|
|
28759
28574
|
changeFirm(selectedFirmId);
|
|
28760
28575
|
}
|
|
@@ -28765,7 +28580,7 @@ function LOLUserContextProvider(props) {
|
|
|
28765
28580
|
window.addEventListener('storage', onCachedFirmUpdate, false);
|
|
28766
28581
|
}
|
|
28767
28582
|
// cleanup listener on unmount
|
|
28768
|
-
return
|
|
28583
|
+
return () => {
|
|
28769
28584
|
window.removeEventListener('storage', onCachedFirmUpdate, false);
|
|
28770
28585
|
};
|
|
28771
28586
|
}, [ready, changeFirm]);
|
|
@@ -28779,10 +28594,10 @@ function LOLUserContextProvider(props) {
|
|
|
28779
28594
|
if (data && data.user && data.user.id) {
|
|
28780
28595
|
return (React__default.createElement(LOLUserContext.Provider, { value: {
|
|
28781
28596
|
user: data.user,
|
|
28782
|
-
selectedFirm
|
|
28783
|
-
changeFirm
|
|
28784
|
-
isInternal
|
|
28785
|
-
hasAnyPrivilege
|
|
28597
|
+
selectedFirm,
|
|
28598
|
+
changeFirm,
|
|
28599
|
+
isInternal,
|
|
28600
|
+
hasAnyPrivilege,
|
|
28786
28601
|
} }, props.children));
|
|
28787
28602
|
}
|
|
28788
28603
|
else {
|
|
@@ -28791,41 +28606,24 @@ function LOLUserContextProvider(props) {
|
|
|
28791
28606
|
}
|
|
28792
28607
|
}
|
|
28793
28608
|
function useGetUserInfo() {
|
|
28794
|
-
|
|
28795
|
-
|
|
28796
|
-
|
|
28797
|
-
|
|
28798
|
-
|
|
28799
|
-
|
|
28800
|
-
url = "/auth/api/userinfo";
|
|
28801
|
-
return [4 /*yield*/, fetch(url)];
|
|
28802
|
-
case 1:
|
|
28803
|
-
res = _a.sent();
|
|
28804
|
-
return [4 /*yield*/, checkForStandardErrors(res)];
|
|
28805
|
-
case 2:
|
|
28806
|
-
_a.sent();
|
|
28807
|
-
return [4 /*yield*/, res.json()];
|
|
28808
|
-
case 3: return [2 /*return*/, _a.sent()];
|
|
28809
|
-
}
|
|
28810
|
-
});
|
|
28811
|
-
}); });
|
|
28609
|
+
return useQuery(`useGetUserInfo`, async () => {
|
|
28610
|
+
const url = `/auth/api/userinfo`;
|
|
28611
|
+
const res = await fetch(url);
|
|
28612
|
+
await checkForStandardErrors(res);
|
|
28613
|
+
return await res.json();
|
|
28614
|
+
});
|
|
28812
28615
|
}
|
|
28813
28616
|
function reAuthUser() {
|
|
28814
|
-
|
|
28815
|
-
window.location.assign(
|
|
28617
|
+
const redirectPath = `${window.location.pathname}${window.location.search}${window.location.hash}`;
|
|
28618
|
+
window.location.assign(`/auth/login?redirectPath=${encodeURIComponent(redirectPath)}`);
|
|
28816
28619
|
}
|
|
28817
|
-
function checkForStandardErrors(res) {
|
|
28818
|
-
|
|
28819
|
-
|
|
28820
|
-
|
|
28821
|
-
reAuthUser();
|
|
28822
|
-
}
|
|
28823
|
-
return [2 /*return*/];
|
|
28824
|
-
});
|
|
28825
|
-
});
|
|
28620
|
+
async function checkForStandardErrors(res) {
|
|
28621
|
+
if (res.status !== 200) {
|
|
28622
|
+
reAuthUser();
|
|
28623
|
+
}
|
|
28826
28624
|
}
|
|
28827
|
-
|
|
28828
|
-
|
|
28625
|
+
const FIRM_KEY = 'firmId';
|
|
28626
|
+
const FIRM_NAME_KEY = 'firmName';
|
|
28829
28627
|
function getSelectedFirmIdCache() {
|
|
28830
28628
|
return window.localStorage.getItem(FIRM_KEY);
|
|
28831
28629
|
}
|
|
@@ -28840,21 +28638,21 @@ function setSelectedFirmCache(firmId, firmName) {
|
|
|
28840
28638
|
}
|
|
28841
28639
|
}
|
|
28842
28640
|
|
|
28843
|
-
|
|
28844
|
-
|
|
28845
|
-
|
|
28641
|
+
const ClearableLuiTextInput = (props) => {
|
|
28642
|
+
const [currentValue, setCurrentValue] = useState(props.value ? props.value : '');
|
|
28643
|
+
const clear = () => {
|
|
28846
28644
|
setCurrentValue('');
|
|
28847
28645
|
if (props.onValueChange) {
|
|
28848
28646
|
props.onValueChange('');
|
|
28849
28647
|
}
|
|
28850
28648
|
};
|
|
28851
|
-
|
|
28852
|
-
return (React__default.createElement(LuiTextInput,
|
|
28649
|
+
const cancelIcon = currentValue !== '' ? (React__default.createElement(LuiIcon, { alt: "clear", name: "ic_cancel_clear", size: "lg", className: 'LuiTextInput-iconPosition', spanProps: { onClick: clear } })) : undefined;
|
|
28650
|
+
return (React__default.createElement(LuiTextInput, { ...props, icon: cancelIcon, value: currentValue, onChange: (e) => {
|
|
28853
28651
|
setCurrentValue(e.target.value);
|
|
28854
28652
|
if (props.onValueChange) {
|
|
28855
28653
|
props.onValueChange(e.target.value);
|
|
28856
28654
|
}
|
|
28857
|
-
} }))
|
|
28655
|
+
} }));
|
|
28858
28656
|
};
|
|
28859
28657
|
|
|
28860
28658
|
/**
|
|
@@ -28863,42 +28661,42 @@ var ClearableLuiTextInput = function (props) {
|
|
|
28863
28661
|
* @param props
|
|
28864
28662
|
* @constructor
|
|
28865
28663
|
*/
|
|
28866
|
-
|
|
28867
|
-
|
|
28868
|
-
|
|
28664
|
+
const LuiFilterContainer = (props) => {
|
|
28665
|
+
const { renderFunction, filterFunction, showFilter = true, isFilterClearable = true, } = props;
|
|
28666
|
+
const [filter, setFilter] = useState('');
|
|
28869
28667
|
return (React__default.createElement("div", null,
|
|
28870
28668
|
showFilter && (React__default.createElement("div", { className: 'LuiFilterContainer-filter-container LuiDeprecatedForms' },
|
|
28871
28669
|
isFilterClearable && (React__default.createElement(ClearableLuiTextInput, { label: 'Filter', inputProps: {
|
|
28872
28670
|
placeholder: 'Type to filter',
|
|
28873
|
-
}, hideLabel: true, onValueChange:
|
|
28874
|
-
!isFilterClearable && (React__default.createElement("input", { type: "text", placeholder: "Type to filter", value: filter, onChange:
|
|
28671
|
+
}, hideLabel: true, onValueChange: (value) => setFilter(value) })),
|
|
28672
|
+
!isFilterClearable && (React__default.createElement("input", { type: "text", placeholder: "Type to filter", value: filter, onChange: (e) => setFilter(e.target.value) })))),
|
|
28875
28673
|
renderFunction(filterFunction(filter))));
|
|
28876
28674
|
};
|
|
28877
28675
|
|
|
28878
28676
|
function useLOLGlobalClientRefContext() {
|
|
28879
28677
|
return useContext(LOLGlobalClientRefContext);
|
|
28880
28678
|
}
|
|
28881
|
-
|
|
28679
|
+
const LOLGlobalClientRefContext = React__default.createContext({
|
|
28882
28680
|
clientRef: '',
|
|
28883
|
-
changeClientRef:
|
|
28681
|
+
changeClientRef: () => {
|
|
28884
28682
|
// no-op
|
|
28885
28683
|
},
|
|
28886
28684
|
});
|
|
28887
|
-
|
|
28888
|
-
|
|
28889
|
-
|
|
28890
|
-
|
|
28891
|
-
|
|
28892
|
-
|
|
28685
|
+
const LOLGlobalClientRefContextProvider = (props) => {
|
|
28686
|
+
const { useUserIdAsClientReference } = props;
|
|
28687
|
+
const { user, selectedFirm } = useLOLUserContext();
|
|
28688
|
+
const [clientRef, setClientRef] = useState('');
|
|
28689
|
+
const [lastSelectedFirmId, setLastSelectedFirmId] = useState(undefined);
|
|
28690
|
+
const changeClientRef = useCallback((clientRef) => {
|
|
28893
28691
|
setClientRef(clientRef);
|
|
28894
28692
|
setGlobalClientRefCache(clientRef);
|
|
28895
28693
|
}, []);
|
|
28896
|
-
useEffect(
|
|
28694
|
+
useEffect(() => {
|
|
28897
28695
|
if (!user) {
|
|
28898
28696
|
return;
|
|
28899
28697
|
}
|
|
28900
|
-
|
|
28901
|
-
|
|
28698
|
+
const cachedClientRef = getGlobalClientRefCache();
|
|
28699
|
+
let clientRef = '';
|
|
28902
28700
|
if (cachedClientRef === null && useUserIdAsClientReference) {
|
|
28903
28701
|
clientRef = user.id;
|
|
28904
28702
|
}
|
|
@@ -28907,9 +28705,9 @@ var LOLGlobalClientRefContextProvider = function (props) {
|
|
|
28907
28705
|
}
|
|
28908
28706
|
setClientRef(clientRef);
|
|
28909
28707
|
setGlobalClientRefCache(clientRef);
|
|
28910
|
-
setLastSelectedFirmId(selectedFirm
|
|
28708
|
+
setLastSelectedFirmId(selectedFirm?.id);
|
|
28911
28709
|
}, [user, selectedFirm, useUserIdAsClientReference]);
|
|
28912
|
-
useEffect(
|
|
28710
|
+
useEffect(() => {
|
|
28913
28711
|
if (!selectedFirm ||
|
|
28914
28712
|
!lastSelectedFirmId ||
|
|
28915
28713
|
selectedFirm.id === lastSelectedFirmId) {
|
|
@@ -28926,11 +28724,11 @@ var LOLGlobalClientRefContextProvider = function (props) {
|
|
|
28926
28724
|
useUserIdAsClientReference,
|
|
28927
28725
|
]);
|
|
28928
28726
|
return (React__default.createElement(LOLGlobalClientRefContext.Provider, { value: {
|
|
28929
|
-
clientRef
|
|
28930
|
-
changeClientRef
|
|
28727
|
+
clientRef,
|
|
28728
|
+
changeClientRef,
|
|
28931
28729
|
} }, props.children));
|
|
28932
28730
|
};
|
|
28933
|
-
|
|
28731
|
+
const GLOBAL_CLIENT_REFERENCE_KEY = 'globalClientReference';
|
|
28934
28732
|
function getGlobalClientRefCache() {
|
|
28935
28733
|
return window.sessionStorage.getItem(GLOBAL_CLIENT_REFERENCE_KEY);
|
|
28936
28734
|
}
|
|
@@ -28943,17 +28741,16 @@ function setGlobalClientRefCache(clientReference) {
|
|
|
28943
28741
|
}
|
|
28944
28742
|
}
|
|
28945
28743
|
|
|
28946
|
-
|
|
28947
|
-
|
|
28948
|
-
|
|
28949
|
-
|
|
28950
|
-
|
|
28951
|
-
var clientRefElement = showClientRef ? (React__default.createElement(React__default.Fragment, null,
|
|
28744
|
+
const LOLFirmSwitcherMenu = ({ showClientRef = false, ...restOfProps }) => {
|
|
28745
|
+
const { user, selectedFirm, changeFirm, isInternal } = useLOLUserContext();
|
|
28746
|
+
const { clientRef } = useLOLGlobalClientRefContext();
|
|
28747
|
+
const firms = user.firms;
|
|
28748
|
+
const clientRefElement = showClientRef ? (React__default.createElement(React__default.Fragment, null,
|
|
28952
28749
|
React__default.createElement("br", null),
|
|
28953
28750
|
React__default.createElement("span", null,
|
|
28954
28751
|
"Client Ref: ",
|
|
28955
28752
|
clientRef))) : null;
|
|
28956
|
-
|
|
28753
|
+
const label = isInternal() ? (React__default.createElement("div", { className: "LOLFirmSwitcherMenu-header" },
|
|
28957
28754
|
user.id,
|
|
28958
28755
|
clientRefElement)) : (React__default.createElement("div", { className: "LOLFirmSwitcherMenu-header" },
|
|
28959
28756
|
selectedFirm && (React__default.createElement(React__default.Fragment, null,
|
|
@@ -28963,97 +28760,69 @@ var LOLFirmSwitcherMenu = function (_a) {
|
|
|
28963
28760
|
"User ID: ",
|
|
28964
28761
|
user.id),
|
|
28965
28762
|
clientRefElement));
|
|
28966
|
-
|
|
28763
|
+
const dropdownMenuProps = {
|
|
28764
|
+
...restOfProps,
|
|
28765
|
+
label,
|
|
28766
|
+
};
|
|
28967
28767
|
if (firms.length < 2) {
|
|
28968
|
-
return React__default.createElement(LuiHeaderMenuItem,
|
|
28768
|
+
return React__default.createElement(LuiHeaderMenuItem, { ...dropdownMenuProps });
|
|
28969
28769
|
}
|
|
28970
|
-
return (React__default.createElement(LuiDropdownMenu,
|
|
28770
|
+
return (React__default.createElement(LuiDropdownMenu, { ...dropdownMenuProps },
|
|
28971
28771
|
React__default.createElement(LOLFirmSwitcherMenuContent, { firms: firms, selectedFirm: selectedFirm, changeFirm: changeFirm })));
|
|
28972
28772
|
};
|
|
28973
|
-
|
|
28974
|
-
|
|
28975
|
-
var showFilter = firms.length >= minimumFilterCount;
|
|
28773
|
+
const LOLFirmSwitcherMenuContent = ({ firms, selectedFirm, changeFirm, collapsible = false, minimumFilterCount = 5, }) => {
|
|
28774
|
+
const showFilter = firms.length >= minimumFilterCount;
|
|
28976
28775
|
return (React__default.createElement(LuiDrawerMenuSection, { title: "Switch account", collapsible: collapsible && showFilter },
|
|
28977
|
-
React__default.createElement(FirmSwitcher, { options: firms, selectedId: selectedFirm
|
|
28978
|
-
return [2 /*return*/, changeFirm(id)];
|
|
28979
|
-
}); }); }, showFilter: showFilter })));
|
|
28776
|
+
React__default.createElement(FirmSwitcher, { options: firms, selectedId: selectedFirm?.id, onSelect: async (id) => changeFirm(id), showFilter: showFilter })));
|
|
28980
28777
|
};
|
|
28981
|
-
|
|
28982
|
-
|
|
28983
|
-
return (React__default.createElement("div", { className: 'LOLFirmSwitcherMenu-option', onClick: function () { return onSelect(id); }, "aria-disabled": disabled, "data-testid": "firm-" + id },
|
|
28778
|
+
const FirmOption = ({ value: { id, name }, onSelect, selected, disabled, }) => {
|
|
28779
|
+
return (React__default.createElement("div", { className: 'LOLFirmSwitcherMenu-option', onClick: () => onSelect(id), "aria-disabled": disabled, "data-testid": `firm-${id}` },
|
|
28984
28780
|
React__default.createElement("span", null, name),
|
|
28985
28781
|
selected && React__default.createElement("i", { className: "material-icons-round" }, "check_circle")));
|
|
28986
28782
|
};
|
|
28987
|
-
|
|
28988
|
-
|
|
28989
|
-
|
|
28990
|
-
|
|
28991
|
-
|
|
28992
|
-
|
|
28993
|
-
|
|
28994
|
-
|
|
28995
|
-
|
|
28996
|
-
|
|
28997
|
-
|
|
28998
|
-
|
|
28999
|
-
setBusy(false);
|
|
29000
|
-
_a.label = 2;
|
|
29001
|
-
case 2: return [2 /*return*/];
|
|
29002
|
-
}
|
|
29003
|
-
});
|
|
29004
|
-
}); };
|
|
29005
|
-
var filterFunction = useCallback(function (filterString) {
|
|
29006
|
-
var upperCaseFilterString = filterString.trim().toUpperCase();
|
|
29007
|
-
return options.filter(function (firm) {
|
|
29008
|
-
return firm.name.toUpperCase().includes(upperCaseFilterString);
|
|
29009
|
-
});
|
|
28783
|
+
const FirmSwitcher = ({ options, selectedId, onSelect, showFilter = true, }) => {
|
|
28784
|
+
const [busy, setBusy] = useState(false);
|
|
28785
|
+
const onSelectInternal = async (optionId) => {
|
|
28786
|
+
if (!busy) {
|
|
28787
|
+
setBusy(true);
|
|
28788
|
+
await onSelect(optionId);
|
|
28789
|
+
setBusy(false);
|
|
28790
|
+
}
|
|
28791
|
+
};
|
|
28792
|
+
const filterFunction = useCallback((filterString) => {
|
|
28793
|
+
const upperCaseFilterString = filterString.trim().toUpperCase();
|
|
28794
|
+
return options.filter((firm) => firm.name.toUpperCase().includes(upperCaseFilterString));
|
|
29010
28795
|
}, [options]);
|
|
29011
|
-
|
|
29012
|
-
return (React__default.createElement(React__default.Fragment, null, filteredOptions.map(
|
|
28796
|
+
const renderFunction = (filteredOptions) => {
|
|
28797
|
+
return (React__default.createElement(React__default.Fragment, null, filteredOptions.map((option) => (React__default.createElement(FirmOption, { key: option.id, value: option, selected: option.id === selectedId, onSelect: onSelectInternal, disabled: busy })))));
|
|
29013
28798
|
};
|
|
29014
28799
|
return (React__default.createElement("div", { className: "LOLFirmSwitcherMenu" },
|
|
29015
28800
|
React__default.createElement(LuiFilterContainer, { showFilter: showFilter, filterFunction: filterFunction, renderFunction: renderFunction })));
|
|
29016
28801
|
};
|
|
29017
28802
|
|
|
29018
|
-
|
|
29019
|
-
|
|
29020
|
-
|
|
28803
|
+
const LOLLogoutLink = (props) => {
|
|
28804
|
+
const redirectPathString = props.redirectPath();
|
|
28805
|
+
const { user } = useLOLUserContext();
|
|
29021
28806
|
if (!user) {
|
|
29022
28807
|
return null;
|
|
29023
28808
|
}
|
|
29024
|
-
|
|
29025
|
-
|
|
29026
|
-
|
|
29027
|
-
|
|
29028
|
-
|
|
29029
|
-
|
|
29030
|
-
|
|
29031
|
-
|
|
29032
|
-
|
|
29033
|
-
|
|
29034
|
-
|
|
29035
|
-
case 2:
|
|
29036
|
-
if (_a) {
|
|
29037
|
-
return [2 /*return*/];
|
|
29038
|
-
}
|
|
29039
|
-
return [4 /*yield*/, fetch('/auth/api/logout')];
|
|
29040
|
-
case 3:
|
|
29041
|
-
res = _b.sent();
|
|
29042
|
-
if (res.status === 200) {
|
|
29043
|
-
window.location.assign("/auth/login?redirectPath=" + redirectPathString);
|
|
29044
|
-
}
|
|
29045
|
-
return [2 /*return*/];
|
|
29046
|
-
}
|
|
29047
|
-
});
|
|
29048
|
-
}); };
|
|
29049
|
-
return React__default.createElement(LuiDrawerMenuOption, { label: "Logout " + user.id, onClick: logout });
|
|
28809
|
+
const logout = async () => {
|
|
28810
|
+
if (props.callBackBeforeLogout &&
|
|
28811
|
+
(await props.callBackBeforeLogout()) === false) {
|
|
28812
|
+
return;
|
|
28813
|
+
}
|
|
28814
|
+
const res = await fetch('/auth/api/logout');
|
|
28815
|
+
if (res.status === 200) {
|
|
28816
|
+
window.location.assign(`/auth/login?redirectPath=${redirectPathString}`);
|
|
28817
|
+
}
|
|
28818
|
+
};
|
|
28819
|
+
return React__default.createElement(LuiDrawerMenuOption, { label: `Logout ${user.id}`, onClick: logout });
|
|
29050
28820
|
};
|
|
29051
28821
|
|
|
29052
|
-
|
|
29053
|
-
|
|
29054
|
-
|
|
29055
|
-
|
|
29056
|
-
var lastLoginISO = (_a = context === null || context === void 0 ? void 0 : context.user) === null || _a === void 0 ? void 0 : _a.lastLogin;
|
|
28822
|
+
const LOLUserLastLogin = () => {
|
|
28823
|
+
let lastLogin;
|
|
28824
|
+
const context = useLOLUserContext();
|
|
28825
|
+
const lastLoginISO = context?.user?.lastLogin;
|
|
29057
28826
|
lastLogin = lastLoginISO
|
|
29058
28827
|
? new Date(lastLoginISO).toLocaleString('en-NZ')
|
|
29059
28828
|
: null;
|
|
@@ -29067,11 +28836,11 @@ var LOLUserLastLogin = function () {
|
|
|
29067
28836
|
React__default.createElement("span", null, "Not you? Please, call us on 0800 665 463"))));
|
|
29068
28837
|
};
|
|
29069
28838
|
|
|
29070
|
-
|
|
29071
|
-
|
|
29072
|
-
|
|
29073
|
-
|
|
29074
|
-
useEffect(
|
|
28839
|
+
const LOLActiveFirmMessage = (props) => {
|
|
28840
|
+
const { selectedFirm, user } = useLOLUserContext();
|
|
28841
|
+
const [visible, setVisible] = useState(false);
|
|
28842
|
+
const hide = props.showFrom !== 'xl' ? { from: props.showFrom || 'sm' } : undefined;
|
|
28843
|
+
useEffect(() => {
|
|
29075
28844
|
setVisible(true);
|
|
29076
28845
|
}, [selectedFirm]);
|
|
29077
28846
|
if (!selectedFirm || !visible || user.firms.length < 2) {
|
|
@@ -29081,7 +28850,7 @@ var LOLActiveFirmMessage = function (props) {
|
|
|
29081
28850
|
React__default.createElement(LuiBannerContent, { level: 'info' },
|
|
29082
28851
|
"Active account is ",
|
|
29083
28852
|
selectedFirm.name,
|
|
29084
|
-
React__default.createElement("button", { "aria-label": "Close dialog", onClick:
|
|
28853
|
+
React__default.createElement("button", { "aria-label": "Close dialog", onClick: () => {
|
|
29085
28854
|
setVisible(false);
|
|
29086
28855
|
} },
|
|
29087
28856
|
React__default.createElement("i", { className: "material-icons-round" }, "close")))));
|
|
@@ -29089,20 +28858,17 @@ var LOLActiveFirmMessage = function (props) {
|
|
|
29089
28858
|
|
|
29090
28859
|
var ExternalIcon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzk4OTE4OSI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03eiIvPjwvc3ZnPg==';
|
|
29091
28860
|
|
|
29092
|
-
|
|
29093
|
-
|
|
29094
|
-
|
|
29095
|
-
|
|
29096
|
-
|
|
29097
|
-
|
|
29098
|
-
|
|
29099
|
-
|
|
29100
|
-
|
|
29101
|
-
|
|
29102
|
-
|
|
29103
|
-
return [2 /*return*/];
|
|
29104
|
-
});
|
|
29105
|
-
}); };
|
|
28861
|
+
const LOLAuthorisedLink = (props) => {
|
|
28862
|
+
const { hasAnyPrivilege } = useLOLUserContext();
|
|
28863
|
+
const { icon, activeIcon, active, label, path, openExternally, anyPrivileges, } = props;
|
|
28864
|
+
const onClickHandler = async () => {
|
|
28865
|
+
if (openExternally) {
|
|
28866
|
+
window.open(path, '_blank');
|
|
28867
|
+
}
|
|
28868
|
+
else {
|
|
28869
|
+
window.location.assign(path);
|
|
28870
|
+
}
|
|
28871
|
+
};
|
|
29106
28872
|
if (!hasAnyPrivilege(anyPrivileges)) {
|
|
29107
28873
|
return null;
|
|
29108
28874
|
}
|
|
@@ -29131,26 +28897,26 @@ var TitlesIconActive = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy
|
|
|
29131
28897
|
|
|
29132
28898
|
function createLink(pathname, label, target, activeIcon, icon, anyPrivileges) {
|
|
29133
28899
|
return {
|
|
29134
|
-
label
|
|
28900
|
+
label,
|
|
29135
28901
|
path: target,
|
|
29136
|
-
icon
|
|
29137
|
-
activeIcon
|
|
28902
|
+
icon,
|
|
28903
|
+
activeIcon,
|
|
29138
28904
|
active: pathname.startsWith(target),
|
|
29139
|
-
anyPrivileges
|
|
28905
|
+
anyPrivileges,
|
|
29140
28906
|
openExternally: true,
|
|
29141
28907
|
};
|
|
29142
28908
|
}
|
|
29143
|
-
|
|
29144
|
-
|
|
29145
|
-
|
|
29146
|
-
|
|
29147
|
-
|
|
29148
|
-
|
|
29149
|
-
|
|
28909
|
+
const SEARCH_LABEL = 'Search';
|
|
28910
|
+
const NOC_LABEL = 'Post registered NoC';
|
|
28911
|
+
const SURVEY_LABEL = 'Survey';
|
|
28912
|
+
const TITLES_LABEL = 'Titles';
|
|
28913
|
+
const LOLAppLauncherMenu = (props) => {
|
|
28914
|
+
const { user, isInternal } = useLOLUserContext();
|
|
28915
|
+
const { pathname, enableNOCLink = false, enableSurveyLink = false, enableTitlesLink = false, } = props;
|
|
29150
28916
|
if (!user) {
|
|
29151
28917
|
return null;
|
|
29152
28918
|
}
|
|
29153
|
-
|
|
28919
|
+
const links = [
|
|
29154
28920
|
createLink(pathname, SEARCH_LABEL, '/search', SearchIconActive, SearchIcon, isInternal() ? [] : ['prv_search_privilege', 'prv_spatial_view']),
|
|
29155
28921
|
];
|
|
29156
28922
|
if (!isInternal() && enableNOCLink) {
|
|
@@ -29194,13 +28960,13 @@ var LOLAppLauncherMenu = function (props) {
|
|
|
29194
28960
|
'prv_withdraw_dealing',
|
|
29195
28961
|
]));
|
|
29196
28962
|
}
|
|
29197
|
-
return (React__default.createElement(LuiDrawerMenuSection, { title: "Launch app" }, links.map(
|
|
28963
|
+
return (React__default.createElement(LuiDrawerMenuSection, { title: "Launch app" }, links.map((link) => (React__default.createElement(LOLAuthorisedLink, { key: link.path, ...link })))));
|
|
29198
28964
|
};
|
|
29199
28965
|
|
|
29200
|
-
|
|
29201
|
-
|
|
29202
|
-
|
|
29203
|
-
|
|
28966
|
+
const LOLDrawerMenuFirmSwitcher = (props) => {
|
|
28967
|
+
const { minimumFilterCount } = props;
|
|
28968
|
+
const { user, selectedFirm, changeFirm } = useLOLUserContext();
|
|
28969
|
+
const firms = user?.firms;
|
|
29204
28970
|
if (!firms || !selectedFirm) {
|
|
29205
28971
|
return null;
|
|
29206
28972
|
}
|
|
@@ -29210,18 +28976,18 @@ var LOLDrawerMenuFirmSwitcher = function (props) {
|
|
|
29210
28976
|
return (React__default.createElement(LOLFirmSwitcherMenuContent, { firms: firms, selectedFirm: selectedFirm, changeFirm: changeFirm, collapsible: true, minimumFilterCount: minimumFilterCount }));
|
|
29211
28977
|
};
|
|
29212
28978
|
|
|
29213
|
-
|
|
28979
|
+
const LOLDrawerMenu = (props) => {
|
|
29214
28980
|
return (React__default.createElement(LuiDrawerMenu, { hasStickyHeader: props.hasStickyHeader },
|
|
29215
28981
|
React__default.createElement("div", { className: "LOLDrawerMenu" },
|
|
29216
28982
|
React__default.createElement("div", { className: "LOLDrawerMenu-contents" }, props.children),
|
|
29217
28983
|
React__default.createElement("div", { className: "LOLDrawerMenu-footer" },
|
|
29218
28984
|
React__default.createElement(LOLUserLastLogin, null)))));
|
|
29219
28985
|
};
|
|
29220
|
-
|
|
29221
|
-
|
|
28986
|
+
const LOLCommonDrawerMenu = (props) => {
|
|
28987
|
+
const { appSpecificLinks, appSpecificSections, path, hasStickyHeader, showRequestsLink, ...restOfProps } = props;
|
|
29222
28988
|
return (React__default.createElement(LOLDrawerMenu, { hasStickyHeader: hasStickyHeader },
|
|
29223
28989
|
appSpecificSections,
|
|
29224
|
-
React__default.createElement(LOLAppLauncherMenu,
|
|
28990
|
+
React__default.createElement(LOLAppLauncherMenu, { pathname: path, ...restOfProps }),
|
|
29225
28991
|
React__default.createElement(LOLDrawerMenuFirmSwitcher, { minimumFilterCount: 5 }),
|
|
29226
28992
|
showRequestsLink && (React__default.createElement(React__default.Fragment, null,
|
|
29227
28993
|
React__default.createElement(LuiDrawerMenuDivider, null),
|
|
@@ -29232,24 +28998,24 @@ var LOLCommonDrawerMenu = function (props) {
|
|
|
29232
28998
|
React__default.createElement(LuiDrawerMenuDivider, null),
|
|
29233
28999
|
React__default.createElement(LOLCommonDrawerMenuAfterLinks, { path: path })));
|
|
29234
29000
|
};
|
|
29235
|
-
|
|
29236
|
-
|
|
29237
|
-
|
|
29238
|
-
|
|
29239
|
-
|
|
29001
|
+
const LOLCommonDrawerMenuAfterLinks = (props) => {
|
|
29002
|
+
const { isInternal } = useLOLUserContext();
|
|
29003
|
+
const { path } = props;
|
|
29004
|
+
const contextPath = path.substr(0, path.indexOf('/', 1));
|
|
29005
|
+
const gotoLink = (url) => {
|
|
29240
29006
|
window.location.assign(url);
|
|
29241
29007
|
};
|
|
29242
29008
|
return (React__default.createElement(React__default.Fragment, null,
|
|
29243
|
-
!isInternal() && (React__default.createElement(LuiDrawerMenuOption, { label: "Change password", onClick:
|
|
29244
|
-
gotoLink(
|
|
29009
|
+
!isInternal() && (React__default.createElement(LuiDrawerMenuOption, { label: "Change password", onClick: () => {
|
|
29010
|
+
gotoLink(`/manage/my-preferences?redirectPath=${encodeURIComponent(path)}`);
|
|
29245
29011
|
} })),
|
|
29246
|
-
React__default.createElement(LOLLogoutLink, { redirectPath:
|
|
29012
|
+
React__default.createElement(LOLLogoutLink, { redirectPath: () => contextPath })));
|
|
29247
29013
|
};
|
|
29248
|
-
|
|
29249
|
-
|
|
29014
|
+
const LOLCommonMenuRequestsLink = () => {
|
|
29015
|
+
const openRequestsApp = () => {
|
|
29250
29016
|
window.open('/requests', '_blank');
|
|
29251
29017
|
};
|
|
29252
|
-
return (React__default.createElement(LuiDrawerMenuOption, { label: 'Create request', onClick:
|
|
29018
|
+
return (React__default.createElement(LuiDrawerMenuOption, { label: 'Create request', onClick: () => {
|
|
29253
29019
|
openRequestsApp();
|
|
29254
29020
|
}, badge: React__default.createElement("img", { src: ExternalIcon, alt: "Link opens in a new tab", style: { width: '16px', height: '16px', marginTop: '4px' } }) }));
|
|
29255
29021
|
};
|
|
@@ -32783,27 +32549,26 @@ styleInject(css_248z$2);
|
|
|
32783
32549
|
var css_248z$1 = ".tippy-box{border:1px transparent}.tippy-box[data-placement^=top]>.tippy-arrow:after{border-top-color:inherit;border-width:8px 8px 0;bottom:-8px;left:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:inherit;border-width:0 8px 8px;top:-8px;left:0}.tippy-box[data-placement^=left]>.tippy-arrow:after{border-left-color:inherit;border-width:8px 0 8px 8px;right:-8px;top:0}.tippy-box[data-placement^=right]>.tippy-arrow:after{border-width:8px 8px 8px 0;left:-8px;top:0;border-right-color:inherit}.tippy-box[data-placement^=top]>.tippy-svg-arrow>svg:first-child:not(:last-child){top:17px}.tippy-box[data-placement^=bottom]>.tippy-svg-arrow>svg:first-child:not(:last-child){bottom:17px}.tippy-box[data-placement^=left]>.tippy-svg-arrow>svg:first-child:not(:last-child){left:12px}.tippy-box[data-placement^=right]>.tippy-svg-arrow>svg:first-child:not(:last-child){right:12px}.tippy-arrow{border-color:inherit}.tippy-arrow:after{content:\"\";z-index:-1;position:absolute;border-color:transparent;border-style:solid}";
|
|
32784
32550
|
styleInject(css_248z$1);
|
|
32785
32551
|
|
|
32786
|
-
|
|
32787
|
-
|
|
32788
|
-
|
|
32789
|
-
|
|
32790
|
-
|
|
32552
|
+
let id = 0;
|
|
32553
|
+
const getKey = () => id++;
|
|
32554
|
+
const LuiTooltip = (props) => {
|
|
32555
|
+
const { children, message, placement, trigger, animation = true } = props;
|
|
32556
|
+
const id = `LuiToolTip_${useMemo(getKey, [])}`;
|
|
32791
32557
|
if (typeof message !== 'string') {
|
|
32792
32558
|
throw new Error('LuiTooltip message must be a string!');
|
|
32793
32559
|
}
|
|
32794
|
-
useEffect(
|
|
32795
|
-
tippy(
|
|
32560
|
+
useEffect(() => {
|
|
32561
|
+
tippy(`#${id}`, {
|
|
32796
32562
|
content: message,
|
|
32797
32563
|
arrow: true,
|
|
32798
|
-
trigger
|
|
32564
|
+
trigger,
|
|
32799
32565
|
theme: 'LUI',
|
|
32800
|
-
placement
|
|
32566
|
+
placement,
|
|
32801
32567
|
offset: [0, 24],
|
|
32802
|
-
animation
|
|
32568
|
+
animation,
|
|
32803
32569
|
});
|
|
32804
|
-
return
|
|
32805
|
-
|
|
32806
|
-
(_b = (_a = document.getElementById(id)) === null || _a === void 0 ? void 0 : _a._tippy) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
32570
|
+
return () => {
|
|
32571
|
+
document.getElementById(id)?._tippy?.destroy();
|
|
32807
32572
|
};
|
|
32808
32573
|
}, [id, message, placement, trigger, animation]);
|
|
32809
32574
|
return React__default.createElement("span", { id: id }, children);
|
|
@@ -32822,45 +32587,44 @@ var LuiTooltip = function (props) {
|
|
|
32822
32587
|
```
|
|
32823
32588
|
*/
|
|
32824
32589
|
function useClickedOutsideElement(refElement, handleClickOutside) {
|
|
32825
|
-
React__default.useEffect(
|
|
32590
|
+
React__default.useEffect(() => {
|
|
32826
32591
|
function onOutsideClicked(event) {
|
|
32827
|
-
|
|
32828
|
-
if (!
|
|
32592
|
+
const element = refElement.current;
|
|
32593
|
+
if (!element?.contains(event.target)) {
|
|
32829
32594
|
handleClickOutside();
|
|
32830
32595
|
}
|
|
32831
32596
|
}
|
|
32832
32597
|
document.addEventListener('mousedown', onOutsideClicked);
|
|
32833
|
-
return
|
|
32598
|
+
return () => {
|
|
32834
32599
|
document.removeEventListener('mousedown', onOutsideClicked);
|
|
32835
32600
|
};
|
|
32836
32601
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32837
32602
|
}, []);
|
|
32838
32603
|
}
|
|
32839
32604
|
|
|
32840
|
-
|
|
32605
|
+
const LuiBadge = (props) => (React__default.createElement("p", { className: clsx('LuiBadge', props.size === 'sm' && 'LuiBadge--sm', props.size === 'lg' && 'LuiBadge--lg', props.backgroundFill && 'LuiBadge--fill', props.variation === 'warning' && 'LuiBadge--warning'), "aria-roledescription": props.ariaRoleDescription }, props.children));
|
|
32841
32606
|
|
|
32842
|
-
|
|
32607
|
+
const LuiSidePanelContext = React__default.createContext({ setProps: () => undefined });
|
|
32843
32608
|
/* eslint-disable react/prop-types */
|
|
32844
|
-
|
|
32845
|
-
|
|
32846
|
-
|
|
32847
|
-
|
|
32848
|
-
|
|
32849
|
-
return function () {
|
|
32609
|
+
const LuiSidePanel = ({ children, onClose, width, top }) => {
|
|
32610
|
+
const { setProps } = React__default.useContext(LuiSidePanelContext);
|
|
32611
|
+
React__default.useEffect(() => {
|
|
32612
|
+
setProps({ children, onClose, width, top });
|
|
32613
|
+
return () => {
|
|
32850
32614
|
setProps(undefined);
|
|
32851
32615
|
};
|
|
32852
32616
|
}, [setProps, children, onClose, width, top]);
|
|
32853
32617
|
return React__default.createElement(React__default.Fragment, null);
|
|
32854
32618
|
};
|
|
32855
|
-
|
|
32856
|
-
|
|
32619
|
+
const LuiSidePanelContainer = (props) => {
|
|
32620
|
+
const { children, onClose, width = '50%', top = 60 } = props ?? {};
|
|
32857
32621
|
return (React__default.createElement("section", { style: {
|
|
32858
32622
|
position: 'fixed',
|
|
32859
32623
|
right: 0,
|
|
32860
32624
|
bottom: 0,
|
|
32861
32625
|
top: top,
|
|
32862
32626
|
background: 'white',
|
|
32863
|
-
width: children ? width
|
|
32627
|
+
width: children ? width ?? '50%' : '0%',
|
|
32864
32628
|
transition: 'width 0.2s ease',
|
|
32865
32629
|
boxShadow: '-0.1em 0 0.4em rgba(0, 0, 0, 0.2)',
|
|
32866
32630
|
padding: 0,
|
|
@@ -32880,25 +32644,105 @@ var LuiSidePanelContainer = function (props) {
|
|
|
32880
32644
|
React__default.createElement(LuiIcon, { alt: "Close", name: "ic_clear", size: "lg", status: "interactive" }))),
|
|
32881
32645
|
children));
|
|
32882
32646
|
};
|
|
32883
|
-
|
|
32884
|
-
|
|
32885
|
-
|
|
32886
|
-
return (React__default.createElement(LuiSidePanelContext.Provider, { value: { setProps: setProps } },
|
|
32647
|
+
const LuiSidePanelProvider = ({ children }) => {
|
|
32648
|
+
const [props, setProps] = React__default.useState();
|
|
32649
|
+
return (React__default.createElement(LuiSidePanelContext.Provider, { value: { setProps } },
|
|
32887
32650
|
children,
|
|
32888
|
-
React__default.createElement(LuiSidePanelContainer,
|
|
32651
|
+
React__default.createElement(LuiSidePanelContainer, { ...props })));
|
|
32889
32652
|
};
|
|
32890
32653
|
|
|
32891
32654
|
var css_248z = ".lui-switch-checkbox {\n height: 0;\n width: 0;\n visibility: hidden;\n}\n\n.lui-switch-label {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n width: 40px;\n height: 20px;\n background: grey;\n border-radius: 40px;\n position: relative;\n transition: background-color 0.2s;\n}\n\n.lui-switch-label .lui-switch-button {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 18px;\n height: 16px;\n border-radius: 18px;\n transition: 0.2s;\n background: #fff;\n box-shadow: 0 0 2px 0 rgba(10, 10, 10, 0.29);\n}\n\n.lui-switch-checkbox:checked + .lui-switch-label .lui-switch-button {\n left: calc(100% - 2px);\n transform: translateX(-100%);\n}\n\n.lui-switch-label:active .lui-switch-button {\n width: 20px;\n}";
|
|
32892
32655
|
styleInject(css_248z);
|
|
32893
32656
|
|
|
32894
|
-
|
|
32895
|
-
|
|
32657
|
+
const LuiSwitchButton = (props) => {
|
|
32658
|
+
const generatedId = useGenerateOrDefaultId();
|
|
32896
32659
|
return (React__default.createElement(React__default.Fragment, null,
|
|
32897
|
-
React__default.createElement("input",
|
|
32898
|
-
React__default.createElement("label", { "data-testid":
|
|
32899
|
-
React__default.createElement("span", { className:
|
|
32660
|
+
React__default.createElement("input", { className: "lui-switch-checkbox", type: "checkbox", "data-testid": 'lui-switch-new', id: generatedId, ...props }),
|
|
32661
|
+
React__default.createElement("label", { "data-testid": `label`, style: { background: props.checked ? '#007198' : 'gray' }, className: "lui-switch-label", htmlFor: generatedId },
|
|
32662
|
+
React__default.createElement("span", { className: `lui-switch-button` }))));
|
|
32900
32663
|
};
|
|
32901
32664
|
|
|
32665
|
+
/******************************************************************************
|
|
32666
|
+
Copyright (c) Microsoft Corporation.
|
|
32667
|
+
|
|
32668
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
32669
|
+
purpose with or without fee is hereby granted.
|
|
32670
|
+
|
|
32671
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
32672
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
32673
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
32674
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
32675
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
32676
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
32677
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
32678
|
+
***************************************************************************** */
|
|
32679
|
+
/* global Reflect, Promise */
|
|
32680
|
+
|
|
32681
|
+
var extendStatics = function(d, b) {
|
|
32682
|
+
extendStatics = Object.setPrototypeOf ||
|
|
32683
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
32684
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
32685
|
+
return extendStatics(d, b);
|
|
32686
|
+
};
|
|
32687
|
+
|
|
32688
|
+
function __extends(d, b) {
|
|
32689
|
+
if (typeof b !== "function" && b !== null)
|
|
32690
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
32691
|
+
extendStatics(d, b);
|
|
32692
|
+
function __() { this.constructor = d; }
|
|
32693
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
32694
|
+
}
|
|
32695
|
+
|
|
32696
|
+
var __assign = function() {
|
|
32697
|
+
__assign = Object.assign || function __assign(t) {
|
|
32698
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
32699
|
+
s = arguments[i];
|
|
32700
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
32701
|
+
}
|
|
32702
|
+
return t;
|
|
32703
|
+
};
|
|
32704
|
+
return __assign.apply(this, arguments);
|
|
32705
|
+
};
|
|
32706
|
+
|
|
32707
|
+
function __rest(s, e) {
|
|
32708
|
+
var t = {};
|
|
32709
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
32710
|
+
t[p] = s[p];
|
|
32711
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
32712
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
32713
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32714
|
+
t[p[i]] = s[p[i]];
|
|
32715
|
+
}
|
|
32716
|
+
return t;
|
|
32717
|
+
}
|
|
32718
|
+
|
|
32719
|
+
function __read(o, n) {
|
|
32720
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
32721
|
+
if (!m) return o;
|
|
32722
|
+
var i = m.call(o), r, ar = [], e;
|
|
32723
|
+
try {
|
|
32724
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
32725
|
+
}
|
|
32726
|
+
catch (error) { e = { error: error }; }
|
|
32727
|
+
finally {
|
|
32728
|
+
try {
|
|
32729
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
32730
|
+
}
|
|
32731
|
+
finally { if (e) throw e.error; }
|
|
32732
|
+
}
|
|
32733
|
+
return ar;
|
|
32734
|
+
}
|
|
32735
|
+
|
|
32736
|
+
function __spreadArray(to, from, pack) {
|
|
32737
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
32738
|
+
if (ar || !(i in from)) {
|
|
32739
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
32740
|
+
ar[i] = from[i];
|
|
32741
|
+
}
|
|
32742
|
+
}
|
|
32743
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
32744
|
+
}
|
|
32745
|
+
|
|
32902
32746
|
var createDefinition = function (propNames) { return ({
|
|
32903
32747
|
isEnabled: function (props) { return propNames.some(function (name) { return !!props[name]; }); },
|
|
32904
32748
|
}); };
|
|
@@ -40456,11 +40300,11 @@ var AnimatePresence = function (_a) {
|
|
|
40456
40300
|
};
|
|
40457
40301
|
|
|
40458
40302
|
// import clsx from 'clsx';
|
|
40459
|
-
|
|
40460
|
-
|
|
40461
|
-
|
|
40462
|
-
|
|
40463
|
-
return (React__default.createElement(motion.div, { key: "content", initial: ['collapsed'], animate: "open", exit: "collapsed", variants: {
|
|
40303
|
+
const LuiAccordicard = (props) => {
|
|
40304
|
+
const { defaultToOpen = false, children, headerContent } = props;
|
|
40305
|
+
const [isOpen, setIsOpen] = useState(defaultToOpen);
|
|
40306
|
+
const AccordicardContent = () => {
|
|
40307
|
+
return (React__default.createElement(motion.div, { className: "LuiAccordicard-contentWrapper", key: "content", initial: ['collapsed'], animate: "open", exit: "collapsed", variants: {
|
|
40464
40308
|
open: {
|
|
40465
40309
|
opacity: 1,
|
|
40466
40310
|
height: 'auto',
|
|
@@ -40496,24 +40340,28 @@ var LuiAccordicard = function (props) {
|
|
|
40496
40340
|
} },
|
|
40497
40341
|
React__default.createElement("div", { className: clsx('LuiAccordicard-content', isOpen ? 'LuiAccordicard-content--isOpen' : null) }, isOpen ? children : React__default.createElement(React__default.Fragment, null))));
|
|
40498
40342
|
};
|
|
40499
|
-
return (React__default.createElement(motion.div, { initial: false, className: clsx('LuiAccordicard', props.className, isOpen ? 'LuiAccordicard--isOpen' : null) },
|
|
40343
|
+
return (React__default.createElement(motion.div, { initial: false, className: clsx('LuiAccordicard', props.className, isOpen ? 'LuiAccordicard--isOpen' : null, props.warning ? 'LuiAccordicard--warning' : null) },
|
|
40344
|
+
props.warning && (React__default.createElement("div", { className: "LuiAccordicard-sideBar" },
|
|
40345
|
+
React__default.createElement(LuiIcon, { className: "LuiAccordicard-warningIcon", alt: "Accordicard warning", name: 'ic_warning', size: 'md' }))),
|
|
40500
40346
|
React__default.createElement(motion.header, { layout: true, initial: false, className: "LuiAccordicard-header" },
|
|
40501
40347
|
React__default.createElement("div", { className: "LuiAccordicard-headerContent" }, headerContent)),
|
|
40502
40348
|
React__default.createElement(AnimatePresence, { initial: false }, isOpen && React__default.createElement(AccordicardContent, null)),
|
|
40503
|
-
React__default.createElement("button", { "aria-label": isOpen ? 'Expanded' : 'Closed', className: "LuiAccordicard-trigger", onClick:
|
|
40349
|
+
React__default.createElement("button", { "aria-label": isOpen ? 'Expanded' : 'Closed', className: "LuiAccordicard-trigger", onClick: () => setIsOpen(!isOpen) },
|
|
40504
40350
|
React__default.createElement(LuiIcon, { className: clsx('LuiAccordicard-chevron', isOpen ? 'LuiAccordicard-chevron--isOpen' : null), name: 'ic_expand_more', alt: "expand", size: "md" }))));
|
|
40505
40351
|
};
|
|
40506
40352
|
|
|
40507
|
-
|
|
40508
|
-
|
|
40509
|
-
|
|
40510
|
-
return (React__default.createElement("div", { className: clsx('LuiAccordicardStatic', isOpen ? 'LuiAccordicardStatic--isOpen' : null, props.className) },
|
|
40353
|
+
const LuiAccordicardStatic = (props) => {
|
|
40354
|
+
const { defaultToOpen = false, children, headerContent } = props;
|
|
40355
|
+
const [isOpen, setIsOpen] = useState(defaultToOpen);
|
|
40356
|
+
return (React__default.createElement("div", { className: clsx('LuiAccordicardStatic', isOpen ? 'LuiAccordicardStatic--isOpen' : null, props.warning ? 'LuiAccordicardStatic--warning' : null, props.className) },
|
|
40357
|
+
props.warning && (React__default.createElement("div", { className: "LuiAccordicardStatic-sideBar" },
|
|
40358
|
+
React__default.createElement(LuiIcon, { className: "LuiAccordicardStatic-warningIcon", alt: "Accordicard warning", name: 'ic_warning', size: 'md' }))),
|
|
40511
40359
|
React__default.createElement("div", { className: "LuiAccordicardStatic-header" },
|
|
40512
40360
|
React__default.createElement("div", { className: "LuiAccordicardStatic-headerContent" }, headerContent)),
|
|
40513
40361
|
React__default.createElement("div", { className: clsx('LuiAccordicardStatic-contentWrapper', isOpen ? 'LuiAccordicardStatic-contentWrapper--isOpen' : null) },
|
|
40514
40362
|
React__default.createElement("div", { className: clsx('LuiAccordicardStatic-content', isOpen ? 'LuiAccordicardStatic-content--isOpen' : null) }, isOpen ? children : React__default.createElement(React__default.Fragment, null))),
|
|
40515
|
-
React__default.createElement("button", { "aria-label": isOpen ? 'Expanded' : 'Closed', className: "LuiAccordicardStatic-trigger", onClick:
|
|
40516
|
-
React__default.createElement(LuiIcon, { className: clsx('LuiAccordicardStatic-chevron', isOpen ? 'LuiAccordicardStatic-chevron--isOpen' : null), name: 'ic_expand_more', alt: "expand", size: "md" }))));
|
|
40363
|
+
React__default.createElement("button", { "aria-label": isOpen ? 'Expanded' : 'Closed', className: "LuiAccordicardStatic-trigger", onClick: () => setIsOpen(!isOpen) },
|
|
40364
|
+
React__default.createElement(LuiIcon, { className: clsx('LuiAccordicardStatic-chevron', isOpen ? 'LuiAccordicardStatic-chevron--isOpen' : null), name: 'ic_expand_more', alt: "expand", title: "Expand and collapse panel", size: "md" }))));
|
|
40517
40365
|
};
|
|
40518
40366
|
|
|
40519
40367
|
export { FIRM_KEY, FIRM_NAME_KEY, GLOBAL_CLIENT_REFERENCE_KEY, LOLActiveFirmMessage, LOLAuthorisedLink, LOLCommonDrawerMenu, LOLCommonDrawerMenuAfterLinks, LOLDrawerMenu, LOLFirmSwitcherMenu, LOLGlobalClientRefContext, LOLGlobalClientRefContextProvider, LOLLogoutLink, LOLSearchBox, LOLUserContext, LOLUserContextProvider, LOLUserLastLogin, LuiAccordicard, LuiAccordicardStatic, LuiAlertModal, LuiAlertModalButtons, LuiBadge, LuiBanner, LuiBannerContent, LuiBearingFormikInput, LuiBearingInput, LuiButton, LuiButtonGroup, LuiCheckboxInput, LuiCloseableHeaderMenuContext, LuiCloseableHeaderMenuItem, LuiComboSelect, LuiControlledMenu, LuiDrawerMenu, LuiDrawerMenuDivider, LuiDrawerMenuOption, LuiDrawerMenuOptions, LuiDrawerMenuSection, LuiDropdownMenu, LuiErrorPage, LuiExpandableBanner, LuiFileInputBox, LuiFilterContainer, LuiFilterMenu, LuiFooter, LuiFormSectionHeader, LuiFormikCheckbox, LuiFormikForm, LuiFormikFormLabel, LuiFormikFormSubmitButton, LuiFormikRadioButton, LuiFormikRadioGroup, LuiFormikSelect, LuiFormikTextInput, LuiHeader, LuiHeaderMenuItem, LuiIcon, LuiLoadingSpinner, LuiLoadingSpinnerChristmas, LuiLoadingSpinnerEaster, LuiMenu, LuiMenuCloseButton, LuiMessagingContextProvider, LuiMiniSpinner, LuiModal, LuiRadioInput, LuiSearchBox, LuiSearchInput, LuiSelectDataMenu, LuiSelectInput, LuiSelectMenu, LuiSelectMenuItem, LuiSelectSubMenuItem, LuiShadow, LuiSidePanel, LuiSidePanelProvider, LuiStaticMessage, LuiStatusSpinner, LuiSwitchButton, LuiTab, LuiTabs, LuiTabsContext, LuiTabsGroup, LuiTabsPanel, LuiTabsPanelSwitch, LuiTextAreaInput, LuiTextInput, LuiToastMessage, LuiTooltip, LuiUpdatesSplashModal, getDefaultSearchMenuOptions, isChromatic, useClickedOutsideElement, useLOLGlobalClientRefContext, useLOLUserContext, useShowLUIMessage };
|