1 | import React__default, { useContext, useState, useEffect, useCallback, useRef, createRef, useMemo, useLayoutEffect, useImperativeHandle, createContext, memo, Fragment, createElement } from 'react';
|
2 | import tokens, { durationBase, durationSlow } from '@shopify/polaris-tokens';
|
3 | import { hsluvToHex, hexToHsluv } from 'hsluv';
|
4 | import isEqual from 'lodash/isEqual';
|
5 | import { clamp as clamp$1 } from '@shopify/javascript-utilities/math';
|
6 | import { __rest } from 'tslib';
|
7 | import { CaretDownMinor, HorizontalDotsMinor, TickSmallMinor, AlertMinor, CaretUpMinor, CircleCancelMinor, CancelSmallMinor, CircleTickMajorTwotone, CircleInformationMajorTwotone, CircleAlertMajorTwotone, CircleDisabledMajorTwotone, FlagMajorTwotone, ChevronLeftMinor, MinusMinor, ChevronRightMinor, ArrowLeftMinor, ArrowRightMinor, DragDropMajorMonotone, CircleAlertMajorMonotone, SearchMinor, ChevronUpMinor, ChevronDownMinor, QuestionMarkMajorTwotone, MobileCancelMajorMonotone, ExternalSmallMinor, ArrowUpDownMinor, CalendarMinor, EnableSelectionMinor, MobileHamburgerMajorMonotone } from '@shopify/polaris-icons';
|
8 | import { FOCUSABLE_SELECTOR, findFirstFocusableNode, focusFirstFocusableNode, focusLastFocusableNode } from '@shopify/javascript-utilities/focus';
|
9 | import debounce from 'lodash/debounce';
|
10 | import { addEventListener, removeEventListener } from '@shopify/javascript-utilities/events';
|
11 | import { closest, nodeContainsDescendant } from '@shopify/javascript-utilities/dom';
|
12 | import { getRectForNode, Rect } from '@shopify/javascript-utilities/geometry';
|
13 | import { createPortal } from 'react-dom';
|
14 | import { createUniqueIDFactory } from '@shopify/javascript-utilities/other';
|
15 | import { write, read } from '@shopify/javascript-utilities/fastdom';
|
16 | import createApp, { getShopOrigin, LifecycleHook } from '@shopify/app-bridge';
|
17 | import hoistStatics from 'hoist-non-react-statics';
|
18 | import { isSameDay, Months, Weekdays, getWeeksForMonth, isDateBefore, isDateAfter, dateIsSelected, dateIsInRange, getNewRange, getNextDisplayYear, getNextDisplayMonth, getPreviousDisplayYear, getPreviousDisplayMonth } from '@shopify/javascript-utilities/dates';
|
19 | export { Months } from '@shopify/javascript-utilities/dates';
|
20 | import { CSSTransition, TransitionGroup, Transition } from '@material-ui/react-transition-group';
|
21 | import { Redirect, ButtonGroup as ButtonGroup$1, Button as Button$1, Modal as Modal$2, Loading as Loading$2, TitleBar, ResourcePicker as ResourcePicker$2, Toast as Toast$2 } from '@shopify/app-bridge/actions';
|
22 |
|
23 | if (typeof window !== 'undefined') {
|
24 | window.Polaris = window.Polaris || {};
|
25 | window.Polaris.VERSION = '4.9.1';
|
26 | }
|
27 |
|
28 | var polarisVersion = '4.9.1';
|
29 |
|
30 | var ThemeContext = React__default.createContext(undefined);
|
31 |
|
32 | function _classCallCheck(instance, Constructor) {
|
33 | if (!(instance instanceof Constructor)) {
|
34 | throw new TypeError("Cannot call a class as a function");
|
35 | }
|
36 | }
|
37 |
|
38 | function _defineProperties(target, props) {
|
39 | for (var i = 0; i < props.length; i++) {
|
40 | var descriptor = props[i];
|
41 | descriptor.enumerable = descriptor.enumerable || false;
|
42 | descriptor.configurable = true;
|
43 | if ("value" in descriptor) descriptor.writable = true;
|
44 | Object.defineProperty(target, descriptor.key, descriptor);
|
45 | }
|
46 | }
|
47 |
|
48 | function _createClass(Constructor, protoProps, staticProps) {
|
49 | if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
50 | if (staticProps) _defineProperties(Constructor, staticProps);
|
51 | return Constructor;
|
52 | }
|
53 |
|
54 | function _inherits(subClass, superClass) {
|
55 | if (typeof superClass !== "function" && superClass !== null) {
|
56 | throw new TypeError("Super expression must either be null or a function");
|
57 | }
|
58 |
|
59 | subClass.prototype = Object.create(superClass && superClass.prototype, {
|
60 | constructor: {
|
61 | value: subClass,
|
62 | writable: true,
|
63 | configurable: true
|
64 | }
|
65 | });
|
66 | if (superClass) _setPrototypeOf(subClass, superClass);
|
67 | }
|
68 |
|
69 | function _getPrototypeOf(o) {
|
70 | _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
|
71 | return o.__proto__ || Object.getPrototypeOf(o);
|
72 | };
|
73 | return _getPrototypeOf(o);
|
74 | }
|
75 |
|
76 | function _setPrototypeOf(o, p) {
|
77 | _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
|
78 | o.__proto__ = p;
|
79 | return o;
|
80 | };
|
81 |
|
82 | return _setPrototypeOf(o, p);
|
83 | }
|
84 |
|
85 | function isNativeReflectConstruct() {
|
86 | if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
87 | if (Reflect.construct.sham) return false;
|
88 | if (typeof Proxy === "function") return true;
|
89 |
|
90 | try {
|
91 | Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
|
92 | return true;
|
93 | } catch (e) {
|
94 | return false;
|
95 | }
|
96 | }
|
97 |
|
98 | function _construct(Parent, args, Class) {
|
99 | if (isNativeReflectConstruct()) {
|
100 | _construct = Reflect.construct;
|
101 | } else {
|
102 | _construct = function _construct(Parent, args, Class) {
|
103 | var a = [null];
|
104 | a.push.apply(a, args);
|
105 | var Constructor = Function.bind.apply(Parent, a);
|
106 | var instance = new Constructor();
|
107 | if (Class) _setPrototypeOf(instance, Class.prototype);
|
108 | return instance;
|
109 | };
|
110 | }
|
111 |
|
112 | return _construct.apply(null, arguments);
|
113 | }
|
114 |
|
115 | function _isNativeFunction(fn) {
|
116 | return Function.toString.call(fn).indexOf("[native code]") !== -1;
|
117 | }
|
118 |
|
119 | function _wrapNativeSuper(Class) {
|
120 | var _cache = typeof Map === "function" ? new Map() : undefined;
|
121 |
|
122 | _wrapNativeSuper = function _wrapNativeSuper(Class) {
|
123 | if (Class === null || !_isNativeFunction(Class)) return Class;
|
124 |
|
125 | if (typeof Class !== "function") {
|
126 | throw new TypeError("Super expression must either be null or a function");
|
127 | }
|
128 |
|
129 | if (typeof _cache !== "undefined") {
|
130 | if (_cache.has(Class)) return _cache.get(Class);
|
131 |
|
132 | _cache.set(Class, Wrapper);
|
133 | }
|
134 |
|
135 | function Wrapper() {
|
136 | return _construct(Class, arguments, _getPrototypeOf(this).constructor);
|
137 | }
|
138 |
|
139 | Wrapper.prototype = Object.create(Class.prototype, {
|
140 | constructor: {
|
141 | value: Wrapper,
|
142 | enumerable: false,
|
143 | writable: true,
|
144 | configurable: true
|
145 | }
|
146 | });
|
147 | return _setPrototypeOf(Wrapper, Class);
|
148 | };
|
149 |
|
150 | return _wrapNativeSuper(Class);
|
151 | }
|
152 |
|
153 | function _assertThisInitialized(self) {
|
154 | if (self === void 0) {
|
155 | throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
156 | }
|
157 |
|
158 | return self;
|
159 | }
|
160 |
|
161 | function _possibleConstructorReturn(self, call) {
|
162 | if (call && (typeof call === "object" || typeof call === "function")) {
|
163 | return call;
|
164 | }
|
165 |
|
166 | return _assertThisInitialized(self);
|
167 | }
|
168 |
|
169 | function _slicedToArray(arr, i) {
|
170 | return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
|
171 | }
|
172 |
|
173 | function _toConsumableArray(arr) {
|
174 | return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
|
175 | }
|
176 |
|
177 | function _arrayWithoutHoles(arr) {
|
178 | if (Array.isArray(arr)) {
|
179 | for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
|
180 |
|
181 | return arr2;
|
182 | }
|
183 | }
|
184 |
|
185 | function _arrayWithHoles(arr) {
|
186 | if (Array.isArray(arr)) return arr;
|
187 | }
|
188 |
|
189 | function _iterableToArray(iter) {
|
190 | if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
|
191 | }
|
192 |
|
193 | function _iterableToArrayLimit(arr, i) {
|
194 | if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
|
195 | return;
|
196 | }
|
197 |
|
198 | var _arr = [];
|
199 | var _n = true;
|
200 | var _d = false;
|
201 | var _e = undefined;
|
202 |
|
203 | try {
|
204 | for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
|
205 | _arr.push(_s.value);
|
206 |
|
207 | if (i && _arr.length === i) break;
|
208 | }
|
209 | } catch (err) {
|
210 | _d = true;
|
211 | _e = err;
|
212 | } finally {
|
213 | try {
|
214 | if (!_n && _i["return"] != null) _i["return"]();
|
215 | } finally {
|
216 | if (_d) throw _e;
|
217 | }
|
218 | }
|
219 |
|
220 | return _arr;
|
221 | }
|
222 |
|
223 | function _nonIterableSpread() {
|
224 | throw new TypeError("Invalid attempt to spread non-iterable instance");
|
225 | }
|
226 |
|
227 | function _nonIterableRest() {
|
228 | throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
229 | }
|
230 |
|
231 | var MissingAppProviderError =
|
232 |
|
233 | function (_Error) {
|
234 | _inherits(MissingAppProviderError, _Error);
|
235 |
|
236 | function MissingAppProviderError() {
|
237 | var _this;
|
238 |
|
239 | var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
240 |
|
241 | _classCallCheck(this, MissingAppProviderError);
|
242 |
|
243 | _this = _possibleConstructorReturn(this, _getPrototypeOf(MissingAppProviderError).call(this, "".concat(message ? "".concat(message, " ") : message, "Your application must be wrapped in an <AppProvider> component. See https://polaris.shopify.com/components/structure/app-provider for implementation instructions.")));
|
244 | _this.name = 'MissingAppProviderError';
|
245 | return _this;
|
246 | }
|
247 |
|
248 | return MissingAppProviderError;
|
249 | }(_wrapNativeSuper(Error));
|
250 |
|
251 | function useTheme() {
|
252 | var theme = useContext(ThemeContext);
|
253 |
|
254 | if (!theme) {
|
255 | throw new MissingAppProviderError('No Theme was provided.');
|
256 | }
|
257 |
|
258 | return theme;
|
259 | }
|
260 |
|
261 |
|
262 | var UNSTABLE_Color;
|
263 |
|
264 | (function (UNSTABLE_Color) {
|
265 | UNSTABLE_Color["Surface"] = "#FAFAFA";
|
266 | UNSTABLE_Color["DarkSurface"] = "#111213";
|
267 | UNSTABLE_Color["OnSurface"] = "#111213";
|
268 | UNSTABLE_Color["Interactive"] = "#2E72D2";
|
269 | UNSTABLE_Color["Neutral"] = "#111213";
|
270 | UNSTABLE_Color["Primary"] = "#008060";
|
271 | UNSTABLE_Color["Critical"] = "#D82C0D";
|
272 | UNSTABLE_Color["Warning"] = "#FFC453";
|
273 | UNSTABLE_Color["Highlight"] = "#5BCDDA";
|
274 | UNSTABLE_Color["Success"] = "#008060";
|
275 | UNSTABLE_Color["Decorative"] = "#FDC7CE";
|
276 | })(UNSTABLE_Color || (UNSTABLE_Color = {}));
|
277 |
|
278 | var roleVariants = {
|
279 | surface: [{
|
280 | name: 'surface',
|
281 | description: 'While use directly in our components is discouraged, the base variant is unmodified from the original role input color.',
|
282 | light: {},
|
283 | dark: {}
|
284 | }, {
|
285 | name: 'surfaceBackground',
|
286 | description: 'For use in the background of our UIs as a background color, in components such as Page and Frame backgrounds.',
|
287 | light: {
|
288 | lightness: 98.3
|
289 | },
|
290 | dark: {
|
291 | lightness: 3.3
|
292 | }
|
293 | }, {
|
294 | name: 'surfaceForeground',
|
295 | description: 'For use in the foreground of our UIs as a background color, in components such as Card, Modal, and Popover.',
|
296 | light: {
|
297 | lightness: 100
|
298 | },
|
299 | dark: {
|
300 | lightness: 12.7
|
301 | }
|
302 | }, {
|
303 | name: 'surfaceForegroundSubdued',
|
304 | description: 'For use in the foreground of our UIs as a subdued background color, in components such as Card, Modal, and Popover.',
|
305 | light: {
|
306 | lightness: 98.3
|
307 | },
|
308 | dark: {
|
309 | lightness: 10
|
310 | }
|
311 | }, {
|
312 | name: 'surfaceHovered',
|
313 | description: 'For use as a surface color on interactive elements such as resource list items and action list items when in a hovered state.',
|
314 | light: {
|
315 | lightness: 96
|
316 | },
|
317 | dark: {
|
318 | lightness: 20
|
319 | }
|
320 | }, {
|
321 | name: 'surfacePressed',
|
322 | description: 'For use as a surface color on interactive elements such as resource list items and action list items when in a pressed state.',
|
323 | light: {
|
324 | lightness: 90
|
325 | },
|
326 | dark: {
|
327 | lightness: 27
|
328 | }
|
329 | }, {
|
330 | name: 'backdrop',
|
331 | description: 'For use as the background color of the backdrop component for navigation and modal. This color has an alpha of `0.5`.',
|
332 | light: {
|
333 | hue: 0,
|
334 | saturation: 0,
|
335 | lightness: 0,
|
336 | alpha: 0.5
|
337 | },
|
338 | dark: {
|
339 | hue: 0,
|
340 | saturation: 0,
|
341 | lightness: 0,
|
342 | alpha: 0.5
|
343 | }
|
344 | }, {
|
345 | name: 'shadowFromAmbientLight',
|
346 | description: 'For use in building shadows for popovers, cards, and modals. This color has an alpha of `0.05`.',
|
347 | light: {
|
348 | hue: 180,
|
349 | saturation: 5,
|
350 | lightness: 8,
|
351 | alpha: 0.05
|
352 | },
|
353 | dark: {
|
354 | hue: 180,
|
355 | saturation: 5,
|
356 | lightness: 8,
|
357 | alpha: 0.05
|
358 | }
|
359 | }, {
|
360 | name: 'shadowFromDirectLight',
|
361 | description: 'For use in building shadows for popovers, cards, and modals. This color has an alpha of `0.15`.',
|
362 | light: {
|
363 | hue: 0,
|
364 | saturation: 0,
|
365 | lightness: 0,
|
366 | alpha: 0.15
|
367 | },
|
368 | dark: {
|
369 | hue: 0,
|
370 | saturation: 0,
|
371 | lightness: 0,
|
372 | alpha: 0.15
|
373 | }
|
374 | }],
|
375 | onSurface: [{
|
376 | name: 'onSurface',
|
377 | description: 'While use directly in our components is discouraged, the base variant is unmodified from the original role input color.',
|
378 | light: {},
|
379 | dark: {}
|
380 | }, {
|
381 | name: 'borderOnSurface',
|
382 | description: 'For use as a border (border or interactive outline).',
|
383 | light: {
|
384 | lightness: 75
|
385 | },
|
386 | dark: {
|
387 | lightness: 35
|
388 | }
|
389 | }, {
|
390 | name: 'borderDisabledOnSurface',
|
391 | description: 'For use as a an interactive outline on disabled elements.',
|
392 | light: {
|
393 | lightness: 95
|
394 | },
|
395 | dark: {
|
396 | lightness: 70
|
397 | }
|
398 | }, {
|
399 | name: 'borderSubduedOnSurface',
|
400 | description: 'For use as a subdued border (border or interactive outline).',
|
401 | light: {
|
402 | lightness: 85
|
403 | },
|
404 | dark: {
|
405 | lightness: 32
|
406 | }
|
407 | }, {
|
408 | name: 'iconOnSurface',
|
409 | description: 'For use as the fill color of neutral icons.',
|
410 | light: {
|
411 | lightness: 40.1
|
412 | },
|
413 | dark: {
|
414 | lightness: 70.1
|
415 | }
|
416 | }, {
|
417 | name: 'iconDisabledOnSurface',
|
418 | description: 'For use as the fill color of disabled neutral icons.',
|
419 | light: {
|
420 | lightness: 76.9
|
421 | },
|
422 | dark: {
|
423 | lightness: 36.8
|
424 | }
|
425 | }, {
|
426 | name: 'iconSubduedOnSurface',
|
427 | description: 'For use as the fill color of subdued neutral icons.',
|
428 | light: {
|
429 | lightness: 59.8
|
430 | },
|
431 | dark: {
|
432 | lightness: 52.1
|
433 | }
|
434 | }, {
|
435 | name: 'textOnSurface',
|
436 | description: 'For use as a neutral text color.',
|
437 | light: {
|
438 | lightness: 13.1
|
439 | },
|
440 | dark: {
|
441 | lightness: 90.8
|
442 | }
|
443 | }, {
|
444 | name: 'textDisabledOnSurface',
|
445 | description: 'For use as a disabled neutral text color.',
|
446 | light: {
|
447 | lightness: 61.3
|
448 | },
|
449 | dark: {
|
450 | lightness: 48.2
|
451 | }
|
452 | }, {
|
453 | name: 'textSubduedOnSurface',
|
454 | description: 'For use as a subdued neutral text color.',
|
455 | light: {
|
456 | lightness: 47.4
|
457 | },
|
458 | dark: {
|
459 | lightness: 65.1
|
460 | }
|
461 | }],
|
462 | interactive: [{
|
463 | name: 'interactive',
|
464 | description: 'While use directly in our components is discouraged, the base variant is unmodified from the original role input color.',
|
465 | light: {},
|
466 | dark: {}
|
467 | }, {
|
468 | name: 'interactiveAction',
|
469 | description: 'Used for links and plain buttons.',
|
470 | light: {
|
471 | lightness: 48.6
|
472 | },
|
473 | dark: {
|
474 | lightness: 65,
|
475 | saturation: 100,
|
476 | hue: 247.6
|
477 | }
|
478 | }, {
|
479 | name: 'interactiveActionDisabled',
|
480 | description: 'Used for disabled links and plain buttons.',
|
481 | light: {
|
482 | lightness: 58
|
483 | },
|
484 | dark: {
|
485 | lightness: 42
|
486 | }
|
487 | }, {
|
488 | name: 'interactiveActionHovered',
|
489 | description: 'Used for hovered links and plain buttons.',
|
490 | light: {
|
491 | lightness: 37
|
492 | },
|
493 | dark: {
|
494 | lightness: 70,
|
495 | saturation: 100,
|
496 | hue: 247.6
|
497 | }
|
498 | }, {
|
499 | name: 'interactiveActionSubdued',
|
500 | description: 'Used for subdued links and plain buttons.',
|
501 | light: {
|
502 | lightness: 51
|
503 | },
|
504 | dark: {
|
505 | lightness: 49
|
506 | }
|
507 | }, {
|
508 | name: 'interactiveActionPressed',
|
509 | description: 'Used for pressed links and plain buttons.',
|
510 | light: {
|
511 | lightness: 31
|
512 | },
|
513 | dark: {
|
514 | lightness: 75,
|
515 | saturation: 100,
|
516 | hue: 247.6
|
517 | }
|
518 | }, {
|
519 | name: 'interactiveFocus',
|
520 | description: 'For use in the focus ring on interactive elements.',
|
521 | light: {
|
522 | lightness: 58
|
523 | },
|
524 | dark: {
|
525 | lightness: 42
|
526 | }
|
527 | }, {
|
528 | name: 'interactiveSelected',
|
529 | description: 'For use as a surface color in selected interactive elements, in components such as option list and resource list.',
|
530 | light: {
|
531 | lightness: 96
|
532 | },
|
533 | dark: {
|
534 | lightness: 4
|
535 | }
|
536 | }, {
|
537 | name: 'interactiveSelectedHovered',
|
538 | description: 'For use as a surface color in selected interactive elements that are hovered, in components such as option list and resource list.',
|
539 | light: {
|
540 | lightness: 89
|
541 | },
|
542 | dark: {
|
543 | lightness: 11
|
544 | }
|
545 | }, {
|
546 | name: 'interactiveSelectedPressed',
|
547 | description: 'For use as a surface color in selected interactive elements that are pressed, in components such as option list and resource list.',
|
548 | light: {
|
549 | lightness: 82
|
550 | },
|
551 | dark: {
|
552 | lightness: 18
|
553 | }
|
554 | }],
|
555 | neutral: [{
|
556 | name: 'neutral',
|
557 | description: 'While use directly in our components is discouraged, the base variant is unmodified from the original role input color.',
|
558 | light: {},
|
559 | dark: {}
|
560 | }, {
|
561 | name: 'neutralAction',
|
562 | description: 'Used for secondary buttons and tertiary buttons, as well as in form elements as a background color and pontentially other neutral surfaces.',
|
563 | light: {
|
564 | lightness: 93
|
565 | },
|
566 | dark: {
|
567 | lightness: 22
|
568 | }
|
569 | }, {
|
570 | name: 'neutralActionDisabled',
|
571 | description: 'Used as a disabled state for secondary buttons',
|
572 | light: {
|
573 | lightness: 94
|
574 | },
|
575 | dark: {
|
576 | lightness: 13
|
577 | }
|
578 | }, {
|
579 | name: 'neutralActionHovered',
|
580 | description: 'Used as a hovered state for secondary buttons',
|
581 | light: {
|
582 | lightness: 90
|
583 | },
|
584 | dark: {
|
585 | lightness: 37
|
586 | }
|
587 | }, {
|
588 | name: 'neutralActionPressed',
|
589 | description: 'Used as a pressed state for secondary buttons',
|
590 | light: {
|
591 | lightness: 87
|
592 | },
|
593 | dark: {
|
594 | lightness: 42
|
595 | }
|
596 | }],
|
597 | primary: [{
|
598 | name: 'primary',
|
599 | description: 'While use directly in our components is discouraged, the base variant is unmodified from the original role input color.',
|
600 | light: {},
|
601 | dark: {}
|
602 | }, {
|
603 | name: 'primaryAction',
|
604 | description: 'Used as the background color for primary actions, and as the fill color for icons and the text color in navigation and tabs to communicate interaction states.',
|
605 | light: {
|
606 | lightness: 47.3
|
607 | },
|
608 | dark: {
|
609 | lightness: 47.3
|
610 | }
|
611 | }, {
|
612 | name: 'primaryActionDisabled',
|
613 | description: 'Used as the background color for disabled primary actions, and as the fill color for icons and the text color in navigation and tabs to communicate interaction states.',
|
614 | light: {
|
615 | lightness: 32
|
616 | },
|
617 | dark: {
|
618 | lightness: 32
|
619 | }
|
620 | }, {
|
621 | name: 'primaryActionHovered',
|
622 | description: 'Used as the background color for hovered primary actions, and as the fill color for icons and the text color in navigation and tabs to communicate interaction states.',
|
623 | light: {
|
624 | lightness: 42.3
|
625 | },
|
626 | dark: {
|
627 | lightness: 55
|
628 | }
|
629 | }, {
|
630 | name: 'primaryActionPressed',
|
631 | description: 'Used as the background color for pressed primary actions, and as the fill color for icons and the text color in navigation and tabs to communicate interaction states.',
|
632 | light: {
|
633 | lightness: 37.3
|
634 | },
|
635 | dark: {
|
636 | lightness: 60
|
637 | }
|
638 | }, {
|
639 | name: 'iconOnPrimary',
|
640 | description: 'For use as a fill color for icons on primary actions. Not for use in icons on navigation and tabs.',
|
641 | light: {
|
642 | lightness: 98
|
643 | },
|
644 | dark: {
|
645 | lightness: 98
|
646 | }
|
647 | }, {
|
648 | name: 'textOnPrimary',
|
649 | description: 'For use as a text color on primary actions. Not for use in text on navigation and tabs.',
|
650 | light: {
|
651 | lightness: 100
|
652 | },
|
653 | dark: {
|
654 | lightness: 100
|
655 | }
|
656 | }, {
|
657 | name: 'primarySelected',
|
658 | description: 'Used as a surface color to indicate selected interactive states in navigation and tabs.',
|
659 | light: {
|
660 | lightness: 95,
|
661 | saturation: 30
|
662 | },
|
663 | dark: {
|
664 | lightness: 5,
|
665 | saturation: 30
|
666 | }
|
667 | }, {
|
668 | name: 'primarySelectedHovered',
|
669 | description: 'Used as a surface color to indicate selected interactive states that are hovered in navigation and tabs.',
|
670 | light: {
|
671 | lightness: 81,
|
672 | saturation: 22
|
673 | },
|
674 | dark: {
|
675 | lightness: 19,
|
676 | saturation: 22
|
677 | }
|
678 | }, {
|
679 | name: 'primarySelectedPressed',
|
680 | description: 'Used as a surface color to indicate selected interactive states that are pressed in navigation and tabs.',
|
681 | light: {
|
682 | lightness: 74,
|
683 | saturation: 22
|
684 | },
|
685 | dark: {
|
686 | lightness: 26,
|
687 | saturation: 22
|
688 | }
|
689 | }],
|
690 | critical: [{
|
691 | name: 'critical',
|
692 | description: 'While use directly in our components is discouraged, the base variant is unmodified from the original role input color.',
|
693 | light: {},
|
694 | dark: {}
|
695 | }, {
|
696 | name: 'criticalBorder',
|
697 | description: 'For use as a border on critical components such as banners, and as an outline on interactive elements in an error state.',
|
698 | light: {
|
699 | lightness: 50
|
700 | },
|
701 | dark: {
|
702 | lightness: 50
|
703 | }
|
704 | }, {
|
705 | name: 'criticalBorderDisabled',
|
706 | description: 'For use as a disabled border on critical components such as banners, and as an outline on interactive elements in an error state.',
|
707 | light: {
|
708 | lightness: 82
|
709 | },
|
710 | dark: {
|
711 | lightness: 28
|
712 | }
|
713 | }, {
|
714 | name: 'criticalIcon',
|
715 | description: 'For use as an icon fill color on top of critical elements.',
|
716 | light: {
|
717 | lightness: 52
|
718 | },
|
719 | dark: {
|
720 | lightness: 48
|
721 | }
|
722 | }, {
|
723 | name: 'criticalSurface',
|
724 | description: 'For use as a surface color on critical elements including badges.',
|
725 | light: {
|
726 | lightness: 98.6
|
727 | },
|
728 | dark: {
|
729 | lightness: 12
|
730 | }
|
731 | }, {
|
732 | name: 'criticalSurfaceSubdued',
|
733 | description: 'For use as a subdued surface color on critical elements including banners.',
|
734 | light: {
|
735 | lightness: 98
|
736 | },
|
737 | dark: {
|
738 | lightness: 12
|
739 | }
|
740 | }, {
|
741 | name: 'criticalSurfaceSubduedHovered',
|
742 | description: 'For use as a surface color on critical interactive elements including action list items in a hovered state.',
|
743 | light: {
|
744 | lightness: 96
|
745 | },
|
746 | dark: {
|
747 | lightness: 15,
|
748 | saturation: 60
|
749 | }
|
750 | }, {
|
751 | name: 'criticalSurfaceSubduedPressed',
|
752 | description: 'For use as a surface color on critical interactive elements including action list items in a pressed state.',
|
753 | light: {
|
754 | lightness: 88
|
755 | },
|
756 | dark: {
|
757 | lightness: 22
|
758 | }
|
759 | }, {
|
760 | name: 'criticalText',
|
761 | description: 'For use as a text color in inert critical elements such as exception list. Not for use as a text color on banners and badges.',
|
762 | light: {
|
763 | lightness: 47.3
|
764 | },
|
765 | dark: {
|
766 | lightness: 65,
|
767 | saturation: 70
|
768 | }
|
769 | }, {
|
770 | name: 'criticalAction',
|
771 | description: 'For use as the background color for destructive buttons, and as the background color for error toast messages.',
|
772 | light: {
|
773 | lightness: 47.5
|
774 | },
|
775 | dark: {
|
776 | lightness: 45
|
777 | }
|
778 | }, {
|
779 | name: 'criticalActionDisabled',
|
780 | description: 'For use as the background color for disabled destructive buttons, and as the background color for error toast messages.',
|
781 | light: {
|
782 | lightness: 59
|
783 | },
|
784 | dark: {
|
785 | lightness: 41
|
786 | }
|
787 | }, {
|
788 | name: 'criticalActionHovered',
|
789 | description: 'For use as the background color for hovered destructive buttons, and as the background color for error toast messages.',
|
790 | light: {
|
791 | lightness: 42.5
|
792 | },
|
793 | dark: {
|
794 | lightness: 50
|
795 | }
|
796 | }, {
|
797 | name: 'criticalActionPressed',
|
798 | description: 'For use as the background color for pressed destructive buttons, and as the background color for error toast messages.',
|
799 | light: {
|
800 | lightness: 37.5
|
801 | },
|
802 | dark: {
|
803 | lightness: 55
|
804 | }
|
805 | }, {
|
806 | name: 'iconOnCritical',
|
807 | description: 'For use as a fill color for icons on critical actions.',
|
808 | light: {
|
809 | lightness: 98
|
810 | },
|
811 | dark: {
|
812 | lightness: 98
|
813 | }
|
814 | }, {
|
815 | name: 'textOnCritical',
|
816 | description: 'For use as a text color on critical actions.',
|
817 | light: {
|
818 | lightness: 100
|
819 | },
|
820 | dark: {
|
821 | lightness: 100
|
822 | }
|
823 | }, {
|
824 | name: 'criticalLink',
|
825 | description: 'For use as a text color in destructive plain buttons, as well as a text color on destructive action list items. Not for use on critical banners and badges.',
|
826 | light: {
|
827 | lightness: 48.5
|
828 | },
|
829 | dark: {
|
830 | lightness: 65
|
831 | }
|
832 | }, {
|
833 | name: 'criticalLinkDisabled',
|
834 | description: 'For use as a text color in disabled destructive plain buttons, as well as a text color on destructive action list items. Not for use on critical banners and badges.',
|
835 | light: {
|
836 | lightness: 72
|
837 | },
|
838 | dark: {
|
839 | lightness: 78
|
840 | }
|
841 | }, {
|
842 | name: 'criticalLinkHovered',
|
843 | description: 'For use as a text color in hovered destructive plain buttons, as well as a text color on destructive action list items. Not for use on critical banners and badges.',
|
844 | light: {
|
845 | lightness: 45
|
846 | },
|
847 | dark: {
|
848 | lightness: 70
|
849 | }
|
850 | }, {
|
851 | name: 'criticalLinkPressed',
|
852 | description: 'For use as a text color in pressed destructive plain buttons, as well as a text color on destructive action list items. Not for use on critical banners and badges.',
|
853 | light: {
|
854 | lightness: 21
|
855 | },
|
856 | dark: {
|
857 | lightness: 75
|
858 | }
|
859 | }],
|
860 | warning: [{
|
861 | name: 'warning',
|
862 | description: 'While use directly in our components is discouraged, the base variant is unmodified from the original role input color.',
|
863 | light: {},
|
864 | dark: {}
|
865 | }, {
|
866 | name: 'warningBorder',
|
867 | description: 'For use as a border on warning components such as banners.',
|
868 | light: {
|
869 | lightness: 76.6
|
870 | },
|
871 | dark: {
|
872 | lightness: 50
|
873 | }
|
874 | }, {
|
875 | name: 'warningIcon',
|
876 | description: 'For use as an icon fill color on top of warning elements.',
|
877 | light: {
|
878 | lightness: 66
|
879 | },
|
880 | dark: {
|
881 | lightness: 34
|
882 | }
|
883 | }, {
|
884 | name: 'warningSurface',
|
885 | description: 'For use as a surface color on warning elements including badges.',
|
886 | light: {
|
887 | lightness: 84.5
|
888 | },
|
889 | dark: {
|
890 | lightness: 50
|
891 | }
|
892 | }, {
|
893 | name: 'warningSurfaceSubdued',
|
894 | description: 'For use as a subdued surface color on warning elements including banners.',
|
895 | light: {
|
896 | lightness: 96
|
897 | },
|
898 | dark: {
|
899 | lightness: 26,
|
900 | saturation: 71
|
901 | }
|
902 | }, {
|
903 | name: 'warningText',
|
904 | description: 'For use as a text color in inert critical elements such as exception list. Not for use as a text color on banners and badges.',
|
905 | light: {
|
906 | lightness: 47.4
|
907 | },
|
908 | dark: {
|
909 | lightness: 64.9
|
910 | }
|
911 | }],
|
912 | highlight: [{
|
913 | name: 'highlight',
|
914 | description: 'While use directly in our components is discouraged, the base variant is unmodified from the original role input color.',
|
915 | light: {},
|
916 | dark: {}
|
917 | }, {
|
918 | name: 'highlightBorder',
|
919 | description: 'For use as a border on informational components such as banners.',
|
920 | light: {
|
921 | lightness: 60
|
922 | },
|
923 | dark: {
|
924 | lightness: 60
|
925 | }
|
926 | }, {
|
927 | name: 'highlightIcon',
|
928 | description: 'For use as an icon fill color on top of informational elements.',
|
929 | light: {
|
930 | lightness: 58
|
931 | },
|
932 | dark: {
|
933 | lightness: 42
|
934 | }
|
935 | }, {
|
936 | name: 'highlightSurface',
|
937 | description: 'For use as a surface color on information elements including badges.',
|
938 | light: {
|
939 | lightness: 84.5,
|
940 | saturation: 60
|
941 | },
|
942 | dark: {
|
943 | lightness: 40,
|
944 | saturation: 100
|
945 | }
|
946 | }, {
|
947 | name: 'highlightSurfaceSubdued',
|
948 | description: 'For use as a surface color on information elements including banners.',
|
949 | light: {
|
950 | lightness: 98.6
|
951 | },
|
952 | dark: {
|
953 | lightness: 20
|
954 | }
|
955 | }, {
|
956 | name: 'highlightext',
|
957 | description: 'For use as a text color in inert informational elements. Not for use as a text color on banners and badges.',
|
958 | light: {
|
959 | lightness: 10
|
960 | },
|
961 | dark: {
|
962 | lightness: 90
|
963 | }
|
964 | }],
|
965 | success: [{
|
966 | name: 'success',
|
967 | description: 'While use directly in our components is discouraged, the base variant is unmodified from the original role input color.',
|
968 | light: {},
|
969 | dark: {}
|
970 | }, {
|
971 | name: 'successBorder',
|
972 | description: 'For use as a border on success components such as banners.',
|
973 | light: {
|
974 | lightness: 50
|
975 | },
|
976 | dark: {
|
977 | lightness: 50
|
978 | }
|
979 | }, {
|
980 | name: 'successIcon',
|
981 | description: 'For use as an icon fill color on top of success elements.',
|
982 | light: {
|
983 | lightness: 25
|
984 | },
|
985 | dark: {
|
986 | lightness: 35
|
987 | }
|
988 | }, {
|
989 | name: 'successSurface',
|
990 | description: 'For use as a surface color on success elements including badges.',
|
991 | light: {
|
992 | lightness: 84.5,
|
993 | saturation: 60
|
994 | },
|
995 | dark: {
|
996 | lightness: 35
|
997 | }
|
998 | }, {
|
999 | name: 'successSurfaceSubdued',
|
1000 | description: 'For use as a surface color on information elements including banners.',
|
1001 | light: {
|
1002 | lightness: 99,
|
1003 | saturation: 60
|
1004 | },
|
1005 | dark: {
|
1006 | lightness: 20,
|
1007 | saturation: 60
|
1008 | }
|
1009 | }, {
|
1010 | name: 'successText',
|
1011 | description: 'For use as a text color in inert success elements. Not for use as a text color on banners and badges.',
|
1012 | light: {
|
1013 | lightness: 47.3
|
1014 | },
|
1015 | dark: {
|
1016 | lightness: 65,
|
1017 | saturation: 70
|
1018 | }
|
1019 | }],
|
1020 | decorative: [{
|
1021 | name: 'decorativeOneSurface',
|
1022 | description: 'For use as a decorative surface color.',
|
1023 | light: {
|
1024 | hue: 56,
|
1025 | saturation: 100,
|
1026 | lightness: 84
|
1027 | },
|
1028 | dark: {
|
1029 | hue: 54,
|
1030 | saturation: 98,
|
1031 | lightness: 46
|
1032 | }
|
1033 | }, {
|
1034 | name: 'decorativeOneText',
|
1035 | description: 'For use as a decorative text color that is applied on a decorative surface.',
|
1036 | light: {
|
1037 | hue: 52,
|
1038 | saturation: 100,
|
1039 | lightness: 18
|
1040 | },
|
1041 | dark: {
|
1042 | lightness: 100
|
1043 | }
|
1044 | }, {
|
1045 | name: 'decorativeTwoSurface',
|
1046 | description: 'For use as a decorative surface color.',
|
1047 | light: {
|
1048 | hue: 30,
|
1049 | saturation: 100,
|
1050 | lightness: 84
|
1051 | },
|
1052 | dark: {
|
1053 | hue: 24,
|
1054 | saturation: 96,
|
1055 | lightness: 52
|
1056 | }
|
1057 | }, {
|
1058 | name: 'decorativeTwoText',
|
1059 | description: 'For use as a decorative text color that is applied on a decorative surface.',
|
1060 | light: {
|
1061 | hue: 362,
|
1062 | saturation: 80,
|
1063 | lightness: 14
|
1064 | },
|
1065 | dark: {
|
1066 | lightness: 100
|
1067 | }
|
1068 | }, {
|
1069 | name: 'decorativeThreeSurface',
|
1070 | description: 'For use as a decorative surface color.',
|
1071 | light: {
|
1072 | hue: 144,
|
1073 | saturation: 54,
|
1074 | lightness: 84
|
1075 | },
|
1076 | dark: {
|
1077 | hue: 154,
|
1078 | saturation: 100,
|
1079 | lightness: 46
|
1080 | }
|
1081 | }, {
|
1082 | name: 'decorativeThreeText',
|
1083 | description: 'For use as a decorative text color that is applied on a decorative surface.',
|
1084 | light: {
|
1085 | hue: 144,
|
1086 | saturation: 100,
|
1087 | lightness: 16
|
1088 | },
|
1089 | dark: {
|
1090 | lightness: 100
|
1091 | }
|
1092 | }, {
|
1093 | name: 'decorativeFourSurface',
|
1094 | description: 'For use as a decorative surface color.',
|
1095 | light: {
|
1096 | hue: 180,
|
1097 | saturation: 56,
|
1098 | lightness: 84
|
1099 | },
|
1100 | dark: {
|
1101 | hue: 188,
|
1102 | saturation: 95,
|
1103 | lightness: 47
|
1104 | }
|
1105 | }, {
|
1106 | name: 'decorativeFourText',
|
1107 | description: 'For use as a decorative text color that is applied on a decorative surface.',
|
1108 | light: {
|
1109 | hue: 190,
|
1110 | saturation: 100,
|
1111 | lightness: 16
|
1112 | },
|
1113 | dark: {
|
1114 | lightness: 100
|
1115 | }
|
1116 | }, {
|
1117 | name: 'decorativeFiveSurface',
|
1118 | description: 'For use as a decorative surface color.',
|
1119 | light: {},
|
1120 | dark: {
|
1121 | hue: 363,
|
1122 | saturation: 77,
|
1123 | lightness: 45
|
1124 | }
|
1125 | }, {
|
1126 | name: 'decorativeFiveText',
|
1127 | description: 'For use as a decorative text color that is applied on a decorative surface.',
|
1128 | light: {
|
1129 | hue: 363,
|
1130 | saturation: 78,
|
1131 | lightness: 16
|
1132 | },
|
1133 | dark: {
|
1134 | lightness: 100
|
1135 | }
|
1136 | }]
|
1137 | };
|
1138 |
|
1139 | function compose() {
|
1140 | for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {
|
1141 | fns[_key] = arguments[_key];
|
1142 | }
|
1143 |
|
1144 | return fns.reduce(function (func, group) {
|
1145 | return function () {
|
1146 | return func(group.apply(void 0, arguments));
|
1147 | };
|
1148 | });
|
1149 | }
|
1150 |
|
1151 | function rgbString(color) {
|
1152 | var red = color.red,
|
1153 | green = color.green,
|
1154 | blue = color.blue;
|
1155 |
|
1156 | if (Object.prototype.hasOwnProperty.call(color, 'alpha')) {
|
1157 | return "rgba(".concat(red, ", ").concat(green, ", ").concat(blue, ", ").concat(color.alpha, ")");
|
1158 | } else {
|
1159 | return "rgb(".concat(red, ", ").concat(green, ", ").concat(blue, ")");
|
1160 | }
|
1161 | }
|
1162 | var rgbaString = rgbString;
|
1163 | function rgbToHex(_ref) {
|
1164 | var red = _ref.red,
|
1165 | green = _ref.green,
|
1166 | blue = _ref.blue;
|
1167 | return "#".concat(componentToHex(red)).concat(componentToHex(green)).concat(componentToHex(blue));
|
1168 | }
|
1169 |
|
1170 | function componentToHex(component) {
|
1171 | var hex = component.toString(16);
|
1172 | return hex.length === 1 ? "0".concat(hex) : hex;
|
1173 | }
|
1174 |
|
1175 | function hsbToHex(color) {
|
1176 | return rgbToHex(hsbToRgb(color));
|
1177 | }
|
1178 |
|
1179 | function rgbFromHueAndChroma(hue, chroma) {
|
1180 | var huePrime = hue / 60;
|
1181 | var hueDelta = 1 - Math.abs(huePrime % 2 - 1);
|
1182 | var intermediateValue = chroma * hueDelta;
|
1183 | var red = 0;
|
1184 | var green = 0;
|
1185 | var blue = 0;
|
1186 |
|
1187 | if (huePrime >= 0 && huePrime <= 1) {
|
1188 | red = chroma;
|
1189 | green = intermediateValue;
|
1190 | blue = 0;
|
1191 | }
|
1192 |
|
1193 | if (huePrime >= 1 && huePrime <= 2) {
|
1194 | red = intermediateValue;
|
1195 | green = chroma;
|
1196 | blue = 0;
|
1197 | }
|
1198 |
|
1199 | if (huePrime >= 2 && huePrime <= 3) {
|
1200 | red = 0;
|
1201 | green = chroma;
|
1202 | blue = intermediateValue;
|
1203 | }
|
1204 |
|
1205 | if (huePrime >= 3 && huePrime <= 4) {
|
1206 | red = 0;
|
1207 | green = intermediateValue;
|
1208 | blue = chroma;
|
1209 | }
|
1210 |
|
1211 | if (huePrime >= 4 && huePrime <= 5) {
|
1212 | red = intermediateValue;
|
1213 | green = 0;
|
1214 | blue = chroma;
|
1215 | }
|
1216 |
|
1217 | if (huePrime >= 5 && huePrime <= 6) {
|
1218 | red = chroma;
|
1219 | green = 0;
|
1220 | blue = intermediateValue;
|
1221 | }
|
1222 |
|
1223 | return {
|
1224 | red,
|
1225 | green,
|
1226 | blue
|
1227 | };
|
1228 | }
|
1229 |
|
1230 | function hsbToRgb(color) {
|
1231 | var hue = color.hue,
|
1232 | saturation = color.saturation,
|
1233 | brightness = color.brightness,
|
1234 | _color$alpha = color.alpha,
|
1235 | alpha = _color$alpha === void 0 ? 1 : _color$alpha;
|
1236 | var chroma = brightness * saturation;
|
1237 |
|
1238 | var _rgbFromHueAndChroma = rgbFromHueAndChroma(hue, chroma),
|
1239 | red = _rgbFromHueAndChroma.red,
|
1240 | green = _rgbFromHueAndChroma.green,
|
1241 | blue = _rgbFromHueAndChroma.blue;
|
1242 |
|
1243 | var chromaBrightnessDelta = brightness - chroma;
|
1244 | red += chromaBrightnessDelta;
|
1245 | green += chromaBrightnessDelta;
|
1246 | blue += chromaBrightnessDelta;
|
1247 | return {
|
1248 | red: Math.round(red * 255),
|
1249 | green: Math.round(green * 255),
|
1250 | blue: Math.round(blue * 255),
|
1251 | alpha
|
1252 | };
|
1253 | }
|
1254 | function hslToRgb(color) {
|
1255 | var hue = color.hue,
|
1256 | saturation = color.saturation,
|
1257 | lightness = color.lightness,
|
1258 | _color$alpha2 = color.alpha,
|
1259 | alpha = _color$alpha2 === void 0 ? 1 : _color$alpha2;
|
1260 | var chroma = (1 - Math.abs(2 * (lightness / 100) - 1)) * (saturation / 100);
|
1261 |
|
1262 | var _rgbFromHueAndChroma2 = rgbFromHueAndChroma(hue, chroma),
|
1263 | red = _rgbFromHueAndChroma2.red,
|
1264 | green = _rgbFromHueAndChroma2.green,
|
1265 | blue = _rgbFromHueAndChroma2.blue;
|
1266 |
|
1267 | var lightnessVal = lightness / 100 - chroma / 2;
|
1268 | red += lightnessVal;
|
1269 | green += lightnessVal;
|
1270 | blue += lightnessVal;
|
1271 | return {
|
1272 | red: Math.round(red * 255),
|
1273 | green: Math.round(green * 255),
|
1274 | blue: Math.round(blue * 255),
|
1275 | alpha
|
1276 | };
|
1277 | }
|
1278 |
|
1279 | function rgbToHsbl(color) {
|
1280 | var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'b';
|
1281 | var r = color.red,
|
1282 | g = color.green,
|
1283 | b = color.blue,
|
1284 | _color$alpha3 = color.alpha,
|
1285 | alpha = _color$alpha3 === void 0 ? 1 : _color$alpha3;
|
1286 | var red = r / 255;
|
1287 | var green = g / 255;
|
1288 | var blue = b / 255;
|
1289 | var largestComponent = Math.max(red, green, blue);
|
1290 | var smallestComponent = Math.min(red, green, blue);
|
1291 | var delta = largestComponent - smallestComponent;
|
1292 | var lightness = (largestComponent + smallestComponent) / 2;
|
1293 | var saturation = 0;
|
1294 |
|
1295 | if (largestComponent === 0) {
|
1296 | saturation = 0;
|
1297 | } else if (type === 'b') {
|
1298 | saturation = delta / largestComponent;
|
1299 | } else if (type === 'l') {
|
1300 | var baseSaturation = lightness > 0.5 ? delta / (2 - largestComponent - smallestComponent) : delta / (largestComponent + smallestComponent);
|
1301 | saturation = isNaN(baseSaturation) ? 0 : baseSaturation;
|
1302 | }
|
1303 |
|
1304 | var huePercentage = 0;
|
1305 |
|
1306 | switch (largestComponent) {
|
1307 | case red:
|
1308 | huePercentage = (green - blue) / delta + (green < blue ? 6 : 0);
|
1309 | break;
|
1310 |
|
1311 | case green:
|
1312 | huePercentage = (blue - red) / delta + 2;
|
1313 | break;
|
1314 |
|
1315 | case blue:
|
1316 | huePercentage = (red - green) / delta + 4;
|
1317 | }
|
1318 |
|
1319 | var hue = Math.round(huePercentage / 6 * 360);
|
1320 | return {
|
1321 | hue: clamp$1(hue, 0, 360) || 0,
|
1322 | saturation: parseFloat(clamp$1(saturation, 0, 1).toFixed(2)),
|
1323 | brightness: parseFloat(clamp$1(largestComponent, 0, 1).toFixed(2)),
|
1324 | lightness: parseFloat(lightness.toFixed(2)),
|
1325 | alpha: parseFloat(alpha.toFixed(2))
|
1326 | };
|
1327 | }
|
1328 |
|
1329 | function rgbToHsb(color) {
|
1330 | var _rgbToHsbl = rgbToHsbl(color, 'b'),
|
1331 | hue = _rgbToHsbl.hue,
|
1332 | saturation = _rgbToHsbl.saturation,
|
1333 | brightness = _rgbToHsbl.brightness,
|
1334 | _rgbToHsbl$alpha = _rgbToHsbl.alpha,
|
1335 | alpha = _rgbToHsbl$alpha === void 0 ? 1 : _rgbToHsbl$alpha;
|
1336 |
|
1337 | return {
|
1338 | hue,
|
1339 | saturation,
|
1340 | brightness,
|
1341 | alpha
|
1342 | };
|
1343 | }
|
1344 | function rgbToHsl(color) {
|
1345 | var _rgbToHsbl2 = rgbToHsbl(color, 'l'),
|
1346 | hue = _rgbToHsbl2.hue,
|
1347 | rawSaturation = _rgbToHsbl2.saturation,
|
1348 | rawLightness = _rgbToHsbl2.lightness,
|
1349 | _rgbToHsbl2$alpha = _rgbToHsbl2.alpha,
|
1350 | alpha = _rgbToHsbl2$alpha === void 0 ? 1 : _rgbToHsbl2$alpha;
|
1351 |
|
1352 | var saturation = rawSaturation * 100;
|
1353 | var lightness = rawLightness * 100;
|
1354 | return {
|
1355 | hue,
|
1356 | saturation,
|
1357 | lightness,
|
1358 | alpha
|
1359 | };
|
1360 | }
|
1361 | function hexToRgb(color) {
|
1362 | if (color.length === 4) {
|
1363 | var repeatHex = function repeatHex(hex1, hex2) {
|
1364 | return color.slice(hex1, hex2).repeat(2);
|
1365 | };
|
1366 |
|
1367 | var _red = parseInt(repeatHex(1, 2), 16);
|
1368 |
|
1369 | var _green = parseInt(repeatHex(2, 3), 16);
|
1370 |
|
1371 | var _blue = parseInt(repeatHex(3, 4), 16);
|
1372 |
|
1373 | return {
|
1374 | red: _red,
|
1375 | green: _green,
|
1376 | blue: _blue
|
1377 | };
|
1378 | }
|
1379 |
|
1380 | var red = parseInt(color.slice(1, 3), 16);
|
1381 | var green = parseInt(color.slice(3, 5), 16);
|
1382 | var blue = parseInt(color.slice(5, 7), 16);
|
1383 | return {
|
1384 | red,
|
1385 | green,
|
1386 | blue
|
1387 | };
|
1388 | }
|
1389 | var ColorType;
|
1390 |
|
1391 | (function (ColorType) {
|
1392 | ColorType["Hex"] = "hex";
|
1393 | ColorType["Rgb"] = "rgb";
|
1394 | ColorType["Rgba"] = "rgba";
|
1395 | ColorType["Hsl"] = "hsl";
|
1396 | ColorType["Hsla"] = "hsla";
|
1397 | ColorType["Default"] = "default";
|
1398 | })(ColorType || (ColorType = {}));
|
1399 |
|
1400 | function getColorType(color) {
|
1401 | if (color.includes('#')) {
|
1402 | return ColorType.Hex;
|
1403 | } else if (color.includes('rgb')) {
|
1404 | return ColorType.Rgb;
|
1405 | } else if (color.includes('rgba')) {
|
1406 | return ColorType.Rgba;
|
1407 | } else if (color.includes('hsl')) {
|
1408 | return ColorType.Hsl;
|
1409 | } else if (color.includes('hsla')) {
|
1410 | return ColorType.Hsla;
|
1411 | } else {
|
1412 | if (process.env.NODE_ENV === 'development') {
|
1413 |
|
1414 | console.warn('Accepted colors formats are: hex, rgb, rgba, hsl and hsla');
|
1415 | }
|
1416 |
|
1417 | return ColorType.Default;
|
1418 | }
|
1419 | }
|
1420 |
|
1421 | function hslToString(hslColor) {
|
1422 | if (typeof hslColor === 'string') {
|
1423 | return hslColor;
|
1424 | }
|
1425 |
|
1426 | var _hslColor$alpha = hslColor.alpha,
|
1427 | alpha = _hslColor$alpha === void 0 ? 1 : _hslColor$alpha,
|
1428 | hue = hslColor.hue,
|
1429 | lightness = hslColor.lightness,
|
1430 | saturation = hslColor.saturation;
|
1431 | return "hsla(".concat(hue, ", ").concat(saturation, "%, ").concat(lightness, "%, ").concat(alpha, ")");
|
1432 | }
|
1433 |
|
1434 | function rgbToObject(color) {
|
1435 |
|
1436 | var colorMatch = color.match(/\(([^)]+)\)/);
|
1437 |
|
1438 | if (!colorMatch) {
|
1439 | return {
|
1440 | red: 0,
|
1441 | green: 0,
|
1442 | blue: 0,
|
1443 | alpha: 0
|
1444 | };
|
1445 | }
|
1446 |
|
1447 | var _colorMatch$1$split = colorMatch[1].split(','),
|
1448 | _colorMatch$1$split2 = _slicedToArray(_colorMatch$1$split, 4),
|
1449 | red = _colorMatch$1$split2[0],
|
1450 | green = _colorMatch$1$split2[1],
|
1451 | blue = _colorMatch$1$split2[2],
|
1452 | alpha = _colorMatch$1$split2[3];
|
1453 |
|
1454 | var objColor = {
|
1455 | red: parseInt(red, 10),
|
1456 | green: parseInt(green, 10),
|
1457 | blue: parseInt(blue, 10),
|
1458 | alpha: parseInt(alpha, 10) || 1
|
1459 | };
|
1460 | return objColor;
|
1461 | }
|
1462 |
|
1463 | var hexToHsla = compose(rgbToHsl, hexToRgb);
|
1464 | var rbgStringToHsla = compose(rgbToHsl, rgbToObject);
|
1465 |
|
1466 | function hslToObject(color) {
|
1467 |
|
1468 | var colorMatch = color.match(/\(([^)]+)\)/);
|
1469 |
|
1470 | if (!colorMatch) {
|
1471 | return {
|
1472 | hue: 0,
|
1473 | saturation: 0,
|
1474 | lightness: 0,
|
1475 | alpha: 0
|
1476 | };
|
1477 | }
|
1478 |
|
1479 | var _colorMatch$1$split3 = colorMatch[1].split(','),
|
1480 | _colorMatch$1$split4 = _slicedToArray(_colorMatch$1$split3, 4),
|
1481 | hue = _colorMatch$1$split4[0],
|
1482 | saturation = _colorMatch$1$split4[1],
|
1483 | lightness = _colorMatch$1$split4[2],
|
1484 | alpha = _colorMatch$1$split4[3];
|
1485 |
|
1486 | var objColor = {
|
1487 | hue: parseInt(hue, 10),
|
1488 | saturation: parseInt(saturation, 10),
|
1489 | lightness: parseInt(lightness, 10),
|
1490 | alpha: parseFloat(alpha) || 1
|
1491 | };
|
1492 | return objColor;
|
1493 | }
|
1494 |
|
1495 | function colorToHsla(color) {
|
1496 | var type = getColorType(color);
|
1497 |
|
1498 | switch (type) {
|
1499 | case ColorType.Hex:
|
1500 | return hexToHsla(color);
|
1501 |
|
1502 | case ColorType.Rgb:
|
1503 | case ColorType.Rgba:
|
1504 | return rbgStringToHsla(color);
|
1505 |
|
1506 | case ColorType.Hsla:
|
1507 | case ColorType.Hsl:
|
1508 | return hslToObject(color);
|
1509 |
|
1510 | case ColorType.Default:
|
1511 | default:
|
1512 | throw new Error('Accepted color formats are: hex, rgb, rgba, hsl and hsla');
|
1513 | }
|
1514 | }
|
1515 |
|
1516 |
|
1517 | function isLight(_ref) {
|
1518 | var red = _ref.red,
|
1519 | green = _ref.green,
|
1520 | blue = _ref.blue;
|
1521 | var contrast = (red * 299 + green * 587 + blue * 114) / 1000;
|
1522 | return contrast > 125;
|
1523 | }
|
1524 |
|
1525 | function normalizeName(name) {
|
1526 | return name.split(/(?=[A-Z])/).join('-').toLowerCase();
|
1527 | }
|
1528 | function constructColorName(baseName, property, suffix) {
|
1529 | var name = normalizeName(baseName);
|
1530 | var propertyName = property ? "-".concat(normalizeName(property)) : '';
|
1531 | var constructedSuffix = suffix ? "-".concat(suffix) : '';
|
1532 | return "--".concat(name).concat(propertyName).concat(constructedSuffix);
|
1533 | }
|
1534 |
|
1535 | function lightenColor(color) {
|
1536 | var lighten = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
1537 |
|
1538 | if (typeof color === 'string') {
|
1539 | return color;
|
1540 | }
|
1541 |
|
1542 | var lightness = color.lightness;
|
1543 | var nextLightness = lightness + lighten;
|
1544 | return Object.assign({}, color, {
|
1545 | lightness: clamp$1(nextLightness, 0, 100)
|
1546 | });
|
1547 | }
|
1548 | function saturateColor(color) {
|
1549 | var saturate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
1550 |
|
1551 | if (typeof color === 'string') {
|
1552 | return color;
|
1553 | }
|
1554 |
|
1555 | var saturation = color.saturation;
|
1556 | var nextSaturation = saturation + saturate;
|
1557 | return Object.assign({}, color, {
|
1558 | saturation: nextSaturation
|
1559 | });
|
1560 | }
|
1561 | function createLightColor(color, lightness, saturation) {
|
1562 | var lightenedColor = lightenColor(color, lightness);
|
1563 | var saturatedColor = saturateColor(lightenedColor, -saturation);
|
1564 | return saturatedColor;
|
1565 | }
|
1566 |
|
1567 | var needsVariantList = ['topBar'];
|
1568 |
|
1569 | var BorderRadius = {
|
1570 | borderRadiusBase: rem('4px'),
|
1571 | borderRadiusWide: rem('8px')
|
1572 | };
|
1573 | var Shadow = {
|
1574 | cardShadow: '0px 0px 5px var(--p-shadow-from-ambient-light), 0px 1px 2px var(--p-shadow-from-direct-light)',
|
1575 | popoverShadow: '-1px 0px 20px var(--p-shadow-from-ambient-light), 0px 1px 5px var(--p-shadow-from-direct-light)',
|
1576 | modalShadow: '0px 6px 32px var(--p-shadow-from-ambient-light), 0px 1px 6px var(--p-shadow-from-direct-light)'
|
1577 | };
|
1578 | var Overrides = {
|
1579 | overrideNone: 'none',
|
1580 | overrideTransparent: 'transparent',
|
1581 | overrideOne: '1',
|
1582 | overrideVisible: 'visible',
|
1583 | overrideZero: '0',
|
1584 | overrideLoadingZIndex: '514',
|
1585 | buttonFontWeight: '500',
|
1586 | nonNullContent: "''",
|
1587 | bannerDefaultBorder: buildBannerBorder('--p-border-on-surface'),
|
1588 | bannerSuccessBorder: buildBannerBorder('--p-success-border'),
|
1589 | bannerHighlightBorder: buildBannerBorder('--p-highlight-border'),
|
1590 | bannerWarningBorder: buildBannerBorder('--p-warning-border'),
|
1591 | bannerCriticalBorder: buildBannerBorder('--p-critical-border'),
|
1592 | badgeMixBlendMode: 'luminosity',
|
1593 | borderSubdued: "".concat(rem('1px'), " solid var(--p-border-subdued-on-surface)"),
|
1594 | textFieldSpinnerOffset: rem('2px'),
|
1595 | textFieldFocusRingOffset: rem('-4px'),
|
1596 | textFieldFocusRingBorderRadius: rem('7px'),
|
1597 | buttonGroupItemSpacing: rem('2px')
|
1598 | };
|
1599 | var Tokens = Object.assign({}, BorderRadius, Shadow, Overrides);
|
1600 |
|
1601 | function rem(px) {
|
1602 | var baseFontSize = 10;
|
1603 | return "".concat(parseInt(px, 10) / baseFontSize, "rem");
|
1604 | }
|
1605 |
|
1606 | function buildBannerBorder(cssVar) {
|
1607 | return "inset 0 ".concat(rem('2px'), " 0 0 var(").concat(cssVar, "), inset 0 0 0 ").concat(rem('2px'), " var(").concat(cssVar, ")");
|
1608 | }
|
1609 |
|
1610 | function buildCustomProperties(themeConfig, globalTheming) {
|
1611 | return globalTheming ? customPropertyTransformer(Object.assign({}, buildColors(themeConfig, roleVariants), Tokens)) : buildLegacyColors(themeConfig);
|
1612 | }
|
1613 | function buildThemeContext(themeConfig, cssCustomProperties) {
|
1614 | var logo = themeConfig.logo;
|
1615 | return {
|
1616 | logo,
|
1617 | UNSTABLE_cssCustomProperties: toString(cssCustomProperties)
|
1618 | };
|
1619 | }
|
1620 |
|
1621 | function toString(obj) {
|
1622 | if (obj) {
|
1623 | return Object.entries(obj).map(function (pair) {
|
1624 | return pair.join(':');
|
1625 | }).join(';');
|
1626 | } else {
|
1627 | return undefined;
|
1628 | }
|
1629 | }
|
1630 |
|
1631 | function hexToHsluvObj(hex) {
|
1632 | var _hexToHsluv = hexToHsluv(hex),
|
1633 | _hexToHsluv2 = _slicedToArray(_hexToHsluv, 3),
|
1634 | hue = _hexToHsluv2[0],
|
1635 | saturation = _hexToHsluv2[1],
|
1636 | lightness = _hexToHsluv2[2];
|
1637 |
|
1638 | return {
|
1639 | hue,
|
1640 | saturation,
|
1641 | lightness
|
1642 | };
|
1643 | }
|
1644 |
|
1645 | function buildColors(theme, roleVariants) {
|
1646 | var colors = Object.assign({
|
1647 | surface: UNSTABLE_Color.Surface,
|
1648 | onSurface: UNSTABLE_Color.OnSurface,
|
1649 | interactive: UNSTABLE_Color.Interactive,
|
1650 | neutral: UNSTABLE_Color.Neutral,
|
1651 | primary: UNSTABLE_Color.Primary,
|
1652 | critical: UNSTABLE_Color.Critical,
|
1653 | warning: UNSTABLE_Color.Warning,
|
1654 | highlight: UNSTABLE_Color.Highlight,
|
1655 | success: UNSTABLE_Color.Success,
|
1656 | decorative: UNSTABLE_Color.Decorative
|
1657 | }, theme.UNSTABLE_colors);
|
1658 | var lightSurface = isLight(hexToRgb(colors.surface));
|
1659 | return Object.entries(roleVariants).reduce(function (acc1, _ref) {
|
1660 | var _ref2 = _slicedToArray(_ref, 2),
|
1661 | role = _ref2[0],
|
1662 | variants = _ref2[1];
|
1663 |
|
1664 | var base = hexToHsluvObj(colors[role]);
|
1665 | return Object.assign({}, acc1, variants.reduce(function (acc2, _ref3) {
|
1666 | var name = _ref3.name,
|
1667 | light = _ref3.light,
|
1668 | dark = _ref3.dark;
|
1669 | var configs = {
|
1670 | default: lightSurface ? light : dark
|
1671 | };
|
1672 |
|
1673 | if (!isEqual(light, dark)) {
|
1674 | configs.Inverse = lightSurface ? dark : light;
|
1675 | configs.Light = light;
|
1676 | configs.Dark = dark;
|
1677 | }
|
1678 |
|
1679 | return Object.assign({}, acc2, Object.entries(configs).reduce(function (acc3, _ref4) {
|
1680 | var _ref5 = _slicedToArray(_ref4, 2),
|
1681 | variant = _ref5[0],
|
1682 | config = _ref5[1];
|
1683 |
|
1684 | var _config$hue = config.hue,
|
1685 | hue = _config$hue === void 0 ? base.hue : _config$hue,
|
1686 | _config$saturation = config.saturation,
|
1687 | saturation = _config$saturation === void 0 ? base.saturation : _config$saturation,
|
1688 | _config$lightness = config.lightness,
|
1689 | lightness = _config$lightness === void 0 ? base.lightness : _config$lightness,
|
1690 | _config$alpha = config.alpha,
|
1691 | alpha = _config$alpha === void 0 ? 1 : _config$alpha;
|
1692 | var displayName = variant === 'default' ? name : "".concat(name).concat(variant);
|
1693 | return Object.assign({}, acc3, {
|
1694 | [displayName]: hslToString(Object.assign({}, colorToHsla(hsluvToHex([hue, saturation, lightness])), {
|
1695 | alpha
|
1696 | }))
|
1697 | });
|
1698 | }, {}));
|
1699 | }, {}));
|
1700 | }, {});
|
1701 | }
|
1702 |
|
1703 | function customPropertyTransformer(properties) {
|
1704 | return Object.entries(properties).reduce(function (transformed, _ref6) {
|
1705 | var _ref7 = _slicedToArray(_ref6, 2),
|
1706 | key = _ref7[0],
|
1707 | value = _ref7[1];
|
1708 |
|
1709 | return Object.assign({}, transformed, {
|
1710 | [toCssCustomPropertySyntax(key)]: value
|
1711 | });
|
1712 | }, {});
|
1713 | }
|
1714 |
|
1715 | function toCssCustomPropertySyntax(camelCase) {
|
1716 | return "--p-".concat(camelCase.replace(/([A-Z0-9])/g, '-$1').toLowerCase());
|
1717 | }
|
1718 |
|
1719 | function buildLegacyColors(theme) {
|
1720 | var colorPairs;
|
1721 | var colors = theme && theme.colors && theme.colors.topBar ? theme.colors.topBar : {
|
1722 | background: '#00848e',
|
1723 | backgroundLighter: '#1d9ba4',
|
1724 | color: '#f9fafb'
|
1725 | };
|
1726 | var colorKey = 'topBar';
|
1727 | var colorKeys = Object.keys(colors);
|
1728 |
|
1729 | if (colorKeys.length > 1) {
|
1730 | colorPairs = colorKeys.map(function (key) {
|
1731 | return [constructColorName(colorKey, key), colors[key]];
|
1732 | });
|
1733 | } else {
|
1734 | colorPairs = parseColors([colorKey, colors]);
|
1735 | }
|
1736 |
|
1737 | return colorPairs.reduce(function (state, _ref8) {
|
1738 | var _ref9 = _slicedToArray(_ref8, 2),
|
1739 | key = _ref9[0],
|
1740 | value = _ref9[1];
|
1741 |
|
1742 | return Object.assign({}, state, {
|
1743 | [key]: value
|
1744 | });
|
1745 | }, {});
|
1746 | }
|
1747 |
|
1748 | function needsVariant(name) {
|
1749 | return needsVariantList.includes(name);
|
1750 | }
|
1751 | var lightenToString = compose(hslToString, createLightColor);
|
1752 | function setTextColor(name) {
|
1753 | var variant = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'dark';
|
1754 |
|
1755 | if (variant === 'light') {
|
1756 | return [name, tokens.colorInk];
|
1757 | }
|
1758 |
|
1759 | return [name, tokens.colorWhite];
|
1760 | }
|
1761 | function setTheme(color, baseName, key, variant) {
|
1762 | var colorPairs = [];
|
1763 |
|
1764 | switch (variant) {
|
1765 | case 'light':
|
1766 | colorPairs.push(setTextColor(constructColorName(baseName, null, 'color'), 'light'));
|
1767 | colorPairs.push([constructColorName(baseName, key, 'lighter'), lightenToString(color, 7, -10)]);
|
1768 | break;
|
1769 |
|
1770 | case 'dark':
|
1771 | colorPairs.push(setTextColor(constructColorName(baseName, null, 'color'), 'dark'));
|
1772 | colorPairs.push([constructColorName(baseName, key, 'lighter'), lightenToString(color, 15, 15)]);
|
1773 | break;
|
1774 |
|
1775 | default:
|
1776 | }
|
1777 |
|
1778 | return colorPairs;
|
1779 | }
|
1780 |
|
1781 | function parseColors(_ref10) {
|
1782 | var _ref11 = _slicedToArray(_ref10, 2),
|
1783 | baseName = _ref11[0],
|
1784 | colors = _ref11[1];
|
1785 |
|
1786 | var keys = Object.keys(colors);
|
1787 | var colorPairs = [];
|
1788 |
|
1789 | for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {
|
1790 | var key = _keys[_i];
|
1791 | colorPairs.push([constructColorName(baseName, key), colors[key]]);
|
1792 |
|
1793 | if (needsVariant(baseName)) {
|
1794 | var hslColor = colorToHsla(colors[key]);
|
1795 |
|
1796 | if (typeof hslColor === 'string') {
|
1797 | return colorPairs;
|
1798 | }
|
1799 |
|
1800 | var rgbColor = hslToRgb(hslColor);
|
1801 |
|
1802 | if (isLight(rgbColor)) {
|
1803 | colorPairs.push.apply(colorPairs, _toConsumableArray(setTheme(hslColor, baseName, key, 'light')));
|
1804 | } else {
|
1805 | colorPairs.push.apply(colorPairs, _toConsumableArray(setTheme(hslColor, baseName, key, 'dark')));
|
1806 | }
|
1807 | }
|
1808 | }
|
1809 |
|
1810 | return colorPairs;
|
1811 | }
|
1812 |
|
1813 | var Key;
|
1814 |
|
1815 | (function (Key) {
|
1816 | Key[Key["Backspace"] = 8] = "Backspace";
|
1817 | Key[Key["Tab"] = 9] = "Tab";
|
1818 | Key[Key["Enter"] = 13] = "Enter";
|
1819 | Key[Key["Shift"] = 16] = "Shift";
|
1820 | Key[Key["Ctrl"] = 17] = "Ctrl";
|
1821 | Key[Key["Alt"] = 18] = "Alt";
|
1822 | Key[Key["Pause"] = 19] = "Pause";
|
1823 | Key[Key["CapsLock"] = 20] = "CapsLock";
|
1824 | Key[Key["Escape"] = 27] = "Escape";
|
1825 | Key[Key["Space"] = 32] = "Space";
|
1826 | Key[Key["PageUp"] = 33] = "PageUp";
|
1827 | Key[Key["PageDown"] = 34] = "PageDown";
|
1828 | Key[Key["End"] = 35] = "End";
|
1829 | Key[Key["Home"] = 36] = "Home";
|
1830 | Key[Key["LeftArrow"] = 37] = "LeftArrow";
|
1831 | Key[Key["UpArrow"] = 38] = "UpArrow";
|
1832 | Key[Key["RightArrow"] = 39] = "RightArrow";
|
1833 | Key[Key["DownArrow"] = 40] = "DownArrow";
|
1834 | Key[Key["Insert"] = 45] = "Insert";
|
1835 | Key[Key["Delete"] = 46] = "Delete";
|
1836 | Key[Key["Key0"] = 48] = "Key0";
|
1837 | Key[Key["Key1"] = 49] = "Key1";
|
1838 | Key[Key["Key2"] = 50] = "Key2";
|
1839 | Key[Key["Key3"] = 51] = "Key3";
|
1840 | Key[Key["Key4"] = 52] = "Key4";
|
1841 | Key[Key["Key5"] = 53] = "Key5";
|
1842 | Key[Key["Key6"] = 54] = "Key6";
|
1843 | Key[Key["Key7"] = 55] = "Key7";
|
1844 | Key[Key["Key8"] = 56] = "Key8";
|
1845 | Key[Key["Key9"] = 57] = "Key9";
|
1846 | Key[Key["KeyA"] = 65] = "KeyA";
|
1847 | Key[Key["KeyB"] = 66] = "KeyB";
|
1848 | Key[Key["KeyC"] = 67] = "KeyC";
|
1849 | Key[Key["KeyD"] = 68] = "KeyD";
|
1850 | Key[Key["KeyE"] = 69] = "KeyE";
|
1851 | Key[Key["KeyF"] = 70] = "KeyF";
|
1852 | Key[Key["KeyG"] = 71] = "KeyG";
|
1853 | Key[Key["KeyH"] = 72] = "KeyH";
|
1854 | Key[Key["KeyI"] = 73] = "KeyI";
|
1855 | Key[Key["KeyJ"] = 74] = "KeyJ";
|
1856 | Key[Key["KeyK"] = 75] = "KeyK";
|
1857 | Key[Key["KeyL"] = 76] = "KeyL";
|
1858 | Key[Key["KeyM"] = 77] = "KeyM";
|
1859 | Key[Key["KeyN"] = 78] = "KeyN";
|
1860 | Key[Key["KeyO"] = 79] = "KeyO";
|
1861 | Key[Key["KeyP"] = 80] = "KeyP";
|
1862 | Key[Key["KeyQ"] = 81] = "KeyQ";
|
1863 | Key[Key["KeyR"] = 82] = "KeyR";
|
1864 | Key[Key["KeyS"] = 83] = "KeyS";
|
1865 | Key[Key["KeyT"] = 84] = "KeyT";
|
1866 | Key[Key["KeyU"] = 85] = "KeyU";
|
1867 | Key[Key["KeyV"] = 86] = "KeyV";
|
1868 | Key[Key["KeyW"] = 87] = "KeyW";
|
1869 | Key[Key["KeyX"] = 88] = "KeyX";
|
1870 | Key[Key["KeyY"] = 89] = "KeyY";
|
1871 | Key[Key["KeyZ"] = 90] = "KeyZ";
|
1872 | Key[Key["LeftMeta"] = 91] = "LeftMeta";
|
1873 | Key[Key["RightMeta"] = 92] = "RightMeta";
|
1874 | Key[Key["Select"] = 93] = "Select";
|
1875 | Key[Key["Numpad0"] = 96] = "Numpad0";
|
1876 | Key[Key["Numpad1"] = 97] = "Numpad1";
|
1877 | Key[Key["Numpad2"] = 98] = "Numpad2";
|
1878 | Key[Key["Numpad3"] = 99] = "Numpad3";
|
1879 | Key[Key["Numpad4"] = 100] = "Numpad4";
|
1880 | Key[Key["Numpad5"] = 101] = "Numpad5";
|
1881 | Key[Key["Numpad6"] = 102] = "Numpad6";
|
1882 | Key[Key["Numpad7"] = 103] = "Numpad7";
|
1883 | Key[Key["Numpad8"] = 104] = "Numpad8";
|
1884 | Key[Key["Numpad9"] = 105] = "Numpad9";
|
1885 | Key[Key["Multiply"] = 106] = "Multiply";
|
1886 | Key[Key["Add"] = 107] = "Add";
|
1887 | Key[Key["Subtract"] = 109] = "Subtract";
|
1888 | Key[Key["Decimal"] = 110] = "Decimal";
|
1889 | Key[Key["Divide"] = 111] = "Divide";
|
1890 | Key[Key["F1"] = 112] = "F1";
|
1891 | Key[Key["F2"] = 113] = "F2";
|
1892 | Key[Key["F3"] = 114] = "F3";
|
1893 | Key[Key["F4"] = 115] = "F4";
|
1894 | Key[Key["F5"] = 116] = "F5";
|
1895 | Key[Key["F6"] = 117] = "F6";
|
1896 | Key[Key["F7"] = 118] = "F7";
|
1897 | Key[Key["F8"] = 119] = "F8";
|
1898 | Key[Key["F9"] = 120] = "F9";
|
1899 | Key[Key["F10"] = 121] = "F10";
|
1900 | Key[Key["F11"] = 122] = "F11";
|
1901 | Key[Key["F12"] = 123] = "F12";
|
1902 | Key[Key["NumLock"] = 144] = "NumLock";
|
1903 | Key[Key["ScrollLock"] = 145] = "ScrollLock";
|
1904 | Key[Key["Semicolon"] = 186] = "Semicolon";
|
1905 | Key[Key["Equals"] = 187] = "Equals";
|
1906 | Key[Key["Comma"] = 188] = "Comma";
|
1907 | Key[Key["Dash"] = 189] = "Dash";
|
1908 | Key[Key["Period"] = 190] = "Period";
|
1909 | Key[Key["ForwardSlash"] = 191] = "ForwardSlash";
|
1910 | Key[Key["GraveAccent"] = 192] = "GraveAccent";
|
1911 | Key[Key["OpenBracket"] = 219] = "OpenBracket";
|
1912 | Key[Key["BackSlash"] = 220] = "BackSlash";
|
1913 | Key[Key["CloseBracket"] = 221] = "CloseBracket";
|
1914 | Key[Key["SingleQuote"] = 222] = "SingleQuote";
|
1915 | })(Key || (Key = {}));
|
1916 |
|
1917 | var TypeOf;
|
1918 |
|
1919 | (function (TypeOf) {
|
1920 | TypeOf["Undefined"] = "undefined";
|
1921 | TypeOf["Object"] = "object";
|
1922 | TypeOf["Boolean"] = "boolean";
|
1923 | TypeOf["Number"] = "number";
|
1924 | TypeOf["String"] = "string";
|
1925 | TypeOf["Symbol"] = "symbol";
|
1926 | TypeOf["Function"] = "function";
|
1927 | })(TypeOf || (TypeOf = {}));
|
1928 |
|
1929 | function classNames() {
|
1930 | for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {
|
1931 | classes[_key] = arguments[_key];
|
1932 | }
|
1933 |
|
1934 | return classes.filter(Boolean).join(' ');
|
1935 | }
|
1936 | function variationName(name, value) {
|
1937 | return "".concat(name).concat(value.charAt(0).toUpperCase()).concat(value.slice(1));
|
1938 | }
|
1939 |
|
1940 | var FeaturesContext = React__default.createContext(undefined);
|
1941 |
|
1942 | function useFeatures() {
|
1943 | var features = useContext(FeaturesContext);
|
1944 |
|
1945 | if (!features) {
|
1946 | throw new Error('No Features were provided.');
|
1947 | }
|
1948 |
|
1949 | return features;
|
1950 | }
|
1951 |
|
1952 | var I18nContext = React__default.createContext(undefined);
|
1953 |
|
1954 | function useI18n() {
|
1955 | var i18n = useContext(I18nContext);
|
1956 |
|
1957 | if (!i18n) {
|
1958 | throw new MissingAppProviderError('No i18n was provided.');
|
1959 | }
|
1960 |
|
1961 | return i18n;
|
1962 | }
|
1963 |
|
1964 | var OBJECT_NOTATION_MATCHER = /\[(.*?)\]|(\w+)/g;
|
1965 | function get(obj, keypath, defaultValue) {
|
1966 | if (obj == null) return undefined;
|
1967 | var keys = Array.isArray(keypath) ? keypath : getKeypath(keypath);
|
1968 | var acc = obj;
|
1969 |
|
1970 | for (var i = 0; i < keys.length; i++) {
|
1971 | var val = acc[keys[i]];
|
1972 | if (val === undefined) return defaultValue;
|
1973 | acc = val;
|
1974 | }
|
1975 |
|
1976 | return acc;
|
1977 | }
|
1978 |
|
1979 | function getKeypath(str) {
|
1980 | var path = [];
|
1981 | var result;
|
1982 |
|
1983 | while (result = OBJECT_NOTATION_MATCHER.exec(str)) {
|
1984 | var _result = result,
|
1985 | _result2 = _slicedToArray(_result, 3),
|
1986 | first = _result2[1],
|
1987 | second = _result2[2];
|
1988 |
|
1989 | path.push(first || second);
|
1990 | }
|
1991 |
|
1992 | return path;
|
1993 | }
|
1994 |
|
1995 | function merge() {
|
1996 | var final = {};
|
1997 |
|
1998 | for (var _len = arguments.length, objs = new Array(_len), _key = 0; _key < _len; _key++) {
|
1999 | objs[_key] = arguments[_key];
|
2000 | }
|
2001 |
|
2002 | for (var _i = 0, _objs = objs; _i < _objs.length; _i++) {
|
2003 | var obj = _objs[_i];
|
2004 | final = mergeRecursively(final, obj);
|
2005 | }
|
2006 |
|
2007 | return final;
|
2008 | }
|
2009 |
|
2010 | function mergeRecursively(inputObjA, objB) {
|
2011 | var objA = Array.isArray(inputObjA) ? _toConsumableArray(inputObjA) : Object.assign({}, inputObjA);
|
2012 |
|
2013 | for (var key in objB) {
|
2014 | if (!Object.prototype.hasOwnProperty.call(objB, key)) {
|
2015 | continue;
|
2016 | } else if (isMergeableValue(objB[key]) && isMergeableValue(objA[key])) {
|
2017 | objA[key] = mergeRecursively(objA[key], objB[key]);
|
2018 | } else {
|
2019 | objA[key] = objB[key];
|
2020 | }
|
2021 | }
|
2022 |
|
2023 | return objA;
|
2024 | }
|
2025 |
|
2026 | function isMergeableValue(value) {
|
2027 | return value !== null && typeof value === 'object';
|
2028 | }
|
2029 |
|
2030 | var REPLACE_REGEX = /{([^}]*)}/g;
|
2031 | var I18n =
|
2032 |
|
2033 | function () {
|
2034 | function I18n(translation) {
|
2035 | var _this = this;
|
2036 |
|
2037 | _classCallCheck(this, I18n);
|
2038 |
|
2039 | this.translation = translation;
|
2040 |
|
2041 | this.translate = function (id, replacements) {
|
2042 | return translate(id, _this.translation, replacements);
|
2043 | };
|
2044 |
|
2045 | this.setTranslation(translation);
|
2046 | }
|
2047 |
|
2048 | _createClass(I18n, [{
|
2049 | key: "setTranslation",
|
2050 | value: function setTranslation(translation) {
|
2051 | this.translation = Array.isArray(translation) ? merge.apply(void 0, _toConsumableArray(translation)) : translation;
|
2052 | }
|
2053 | }, {
|
2054 | key: "translationKeyExists",
|
2055 | value: function translationKeyExists(path) {
|
2056 | return Boolean(get(this.translation, path));
|
2057 | }
|
2058 | }]);
|
2059 |
|
2060 | return I18n;
|
2061 | }();
|
2062 | function translate(id, translations, replacements) {
|
2063 | var text = get(translations, id);
|
2064 |
|
2065 | if (!text) {
|
2066 | return '';
|
2067 | }
|
2068 |
|
2069 | if (replacements) {
|
2070 | return text.replace(REPLACE_REGEX, function (match) {
|
2071 | var replacement = match.substring(1, match.length - 1);
|
2072 |
|
2073 | if (!Object.prototype.hasOwnProperty.call(replacements, replacement)) {
|
2074 | throw new Error("No replacement found for key '".concat(replacement, "'. The following replacements were passed: ").concat(Object.keys(replacements).map(function (key) {
|
2075 | return "'".concat(key, "'");
|
2076 | }).join(', ')));
|
2077 | }
|
2078 |
|
2079 | return replacements[replacement];
|
2080 | });
|
2081 | }
|
2082 |
|
2083 | return text;
|
2084 | }
|
2085 |
|
2086 | var isServer = typeof window === 'undefined' || typeof document === 'undefined';
|
2087 |
|
2088 | function Image(_a) {
|
2089 | var sourceSet = _a.sourceSet,
|
2090 | source = _a.source,
|
2091 | crossOrigin = _a.crossOrigin,
|
2092 | rest = __rest(_a, ["sourceSet", "source", "crossOrigin"]);
|
2093 |
|
2094 | var finalSourceSet = sourceSet ? sourceSet.map(function (_ref) {
|
2095 | var subSource = _ref.source,
|
2096 | descriptor = _ref.descriptor;
|
2097 | return "".concat(subSource, " ").concat(descriptor);
|
2098 | }).join(',') : null;
|
2099 | return finalSourceSet ?
|
2100 | React__default.createElement("img", Object.assign({
|
2101 | src: source,
|
2102 | srcSet: finalSourceSet,
|
2103 | crossOrigin: crossOrigin
|
2104 | }, rest)) :
|
2105 | React__default.createElement("img", Object.assign({
|
2106 | src: source
|
2107 | }, rest, {
|
2108 | crossOrigin: crossOrigin
|
2109 | }));
|
2110 | }
|
2111 |
|
2112 | var styles = {
|
2113 | "Avatar": "Polaris-Avatar",
|
2114 | "hidden": "Polaris-Avatar--hidden",
|
2115 | "sizeSmall": "Polaris-Avatar--sizeSmall",
|
2116 | "sizeMedium": "Polaris-Avatar--sizeMedium",
|
2117 | "sizeLarge": "Polaris-Avatar--sizeLarge",
|
2118 | "styleOne": "Polaris-Avatar--styleOne",
|
2119 | "styleTwo": "Polaris-Avatar--styleTwo",
|
2120 | "styleThree": "Polaris-Avatar--styleThree",
|
2121 | "styleFour": "Polaris-Avatar--styleFour",
|
2122 | "styleFive": "Polaris-Avatar--styleFive",
|
2123 | "styleSix": "Polaris-Avatar--styleSix",
|
2124 | "hasImage": "Polaris-Avatar--hasImage",
|
2125 | "Image": "Polaris-Avatar__Image",
|
2126 | "Initials": "Polaris-Avatar__Initials",
|
2127 | "Svg": "Polaris-Avatar__Svg"
|
2128 | };
|
2129 |
|
2130 | var avatar1 = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSIjMjQ1YjQ4IiBkPSJNMCAwaDEwMHYxMDBIMHoiLz48cGF0aCBmaWxsPSIjMmRiMTY3IiBkPSJNNjkgMHY2NS42NWwtMi0uMDF2MTkuODVsMiAuMDJWMTAwSDBWMGg2OXoiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNNjcgNjUuNjR2MTkuODVsLTI1LjU3LS4xOUMzMiA4NS4yMiAyNS42IDgxLjQ2IDI1LjY4IDcyLjA2cy4yNS02Ljc0LjI1LTYuNzR6Ii8+PHBhdGggZmlsbD0iIzhkYzk1OCIgZD0iTTg2Ljk5IDU4SDY5VjBoMTAuOTNsNy4wNiA1OHoiLz48cGF0aCBmaWxsPSIjZWJlZGYxIiBkPSJNMjQuNTMgNDAuMjlhMTIuMjMgMTIuMjMgMCAwMTI0LjQ2IDAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZmlsbD0iIzhkYzk1OCIgZD0iTTU5LjYyIDU4QTEwLjY5IDEwLjY5IDAgMDE4MSA1OHoiLz48L3N2Zz4K';
|
2131 |
|
2132 | var avatar2 = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSIjMWUyNjVjIiBkPSJNLS4wMSAwaDEwMHYxMDBoLTEwMHoiLz48cGF0aCBmaWxsPSIjNWQ2Y2MxIiBkPSJNLS4wMSAwaDY5LjAydjEwMEgtLjAxeiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik02OC45MyA2NS44OGwtMjQuNDQtLjE5LS4wNSA2LjA5YzAgNS4yMiAzLjQ4IDkuNDcgOC42OSA5LjUybDE1LjguMTJ6Ii8+PHBhdGggZmlsbD0iI2ZmYzA0ZCIgZD0iTTY4LjkxIDExLjNsMTkuMTcgNDYuMjktMTkuMTctLjE2VjExLjN6Ii8+PHBhdGggZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZmZmIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIGQ9Ik0yMy4yNSAzNi40M2EzLjIyIDMuMjIgMCAxMDAgNi40NG0yMS4wMS02LjQ0YTMuMjIgMy4yMiAwIDAwMCA2LjQ0bS0xMy41NSAzLjc0YTMuMjIgMy4yMiAwIDEwMCA2LjQ0bTMuMjItMjUuNTFhMy4yMiAzLjIyIDAgMDAwIDYuNDQiLz48L3N2Zz4K';
|
2133 |
|
2134 | var avatar3 = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSIjNWQ2Y2MxIiBkPSJNLS4wMiAwaDEwMHYxMDBoLTEwMHoiLz48cGF0aCBmaWxsPSIjNmRjYWNlIiBkPSJNLjM5IDBoNjkuMDJ2MTAwSC4zOXoiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9IjUiIGQ9Ik0yNC4xOCAzMS4yMXYzLjQ3QTEwLjQzIDEwLjQzIDAgMDAzNC40IDQ1LjIxYTEwLjQzIDEwLjQzIDAgMDAxMC4yMi0xMC41M3YtMy40NyIvPjxwYXRoIGZpbGw9IiNlYmVkZjEiIGQ9Ik0yMC4xMSA0OS4wN2ExNi4yMiAxNi4yMiAwIDExMCAzMi40NCIgb3BhY2l0eT0iLjIiLz48cGF0aCBkPSJNNjkuNDQgMTguODNMOTAgNzFINjkuNDRWMTguODN6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTU3LjU5IDcxYTYgNiAwIDAxMTIgMHoiIGZpbGw9IiNmZmYiLz48L3N2Zz4K';
|
2135 |
|
2136 | var avatar4 = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSIjZmZlMGMzIiBkPSJNMC0uMDFoMTAwdjEwMEgweiIvPjxwYXRoIGZpbGw9IiM1ZDZjYzEiIGQ9Ik0wIDBoNjkuMDJ2MTAwSDB6Ii8+PHBhdGggZD0iTTY5LjAyIDBsMjQuMDMgNjEuNjlINjkuMDJWMHoiIGZpbGw9IiNmZjk2N2QiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9IjUiIGQ9Ik0zMC42OSAzMS45MXYtM2MwLTQuNzggMy40Ni04LjY1IDgtOC42NXM4IDMuODcgOCA4LjY1djMiLz48cGF0aCBmaWxsPSIjZWJlZGYxIiBkPSJNMTIuNzYgNTYuMDZhMTMuMzYgMTMuMzYgMCAxMTI2LjcyIDAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTgwIDYxLjQ2bC0yOS4zNC4yM3YtNy4zM2MwLTYuMjggNC4wNy0xMS4zNiAxMC4zNC0xMS40NGwxOS0uMTR6IiBmaWxsPSIjZmY5NjdkIi8+PC9zdmc+Cg==';
|
2137 |
|
2138 | var avatar5 = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSIjOGRjOTU4IiBkPSJNMCAwaDcwLjAydjEwMEgweiIvPjxwYXRoIGQ9Ik02OS45MiAwdjU2LjMyTDQ5IDY3bC0uMyAyNS4wN1YxMDBIMTAwVjB6IiBmaWxsPSIjMmRiMTY3Ii8+PHBhdGggZmlsbD0iIzI0NWI0OCIgZD0iTTU5LjI3IDU4LjI5YTUuMjIgNS4yMiAwIDAwLTkuNDMgNC40OCIvPjxwYXRoIGQ9Ik0yNy4xMiA5LjMzaDQ0LjUzdjIuMTlIMjcuMTJ6bS0xMi40MSA5LjQ5aDU2Ljk0djIuMTlIMTQuNzF6IiBmaWxsPSIjMmRiMTY3Ii8+PGNpcmNsZSBjeD0iMTkuNjYiIGN5PSI0NC44IiByPSIxMS4yMiIgZmlsbD0iI2ViZWRmMSIgb3BhY2l0eT0iLjIiLz48L3N2Zz4K';
|
2139 |
|
2140 | var avatar6 = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBkPSJNLS4wMi0uMDFoMTAwdjEwMGgtMTAweiIgZmlsbD0iI2ZmZTBjMyIvPjxwYXRoIGZpbGw9IiNmZjk2N2QiIGQ9Ik0wIDBoNjkuNDF2MTAwSDB6Ii8+PHBhdGggZD0iTTY5LjkyIDB2NDQuMzJMNTEuMzQgNTV2NDVIMTAwVjB6IiBmaWxsPSIjZmZlMGMzIi8+PHBhdGggZmlsbD0iIzMyY2FjNiIgZD0iTTM5LjMyIDc2YTExLjg1IDExLjg1IDAgMDAxMiAxMS42MlY3NiIvPjxwYXRoIGZpbGw9IiMwMDk3OTYiIGQ9Ik0zOS4zMiA3NmExMiAxMiAwIDAxMTItMTEuODJWNzYiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9IjUiIGQ9Ik00My43NCAxOS44M2ExMi44MiAxMi44MiAwIDExLTI1LjY0IDAiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9IjQiIGQ9Ik0yNy4zOSAzMS42bC0xLjU4IDUuOTZtOS4zNy01LjcybDIuNTUgNS40N200LjI2LTkuODVsMy41MyA0LjVtLTI1LjQzLTQuNWwtMy41MyA0LjUiLz48L3N2Zz4K';
|
2141 |
|
2142 | var avatar7 = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBkPSJNMCAwaDEwMHYxMDAuNDhIMHoiIGZpbGw9IiM4ZGM5NTgiLz48cGF0aCBmaWxsPSIjMmRiMTY3IiBkPSJNODMgNjh2MzJsLTE0LS4xNnYuMTZIMFYwaDY5djY4aDE0eiIvPjxwYXRoIGQ9Ik02OS4yOSA0MS42OUgyMC42NnMtLjA5LTMtLjE3IDcuMTUgNyAxOC41MSAxNy4zNSAxOC41OWwzMS40NS41N3oiIGZpbGw9IiM4ZGM5NTgiLz48cGF0aCBkPSJNNjguNyAxMi40bDExLjU0IDI5LjI5SDY4LjdWMTIuNHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNNjIuMjIgNDEuNjlhMy4zNCAzLjM0IDAgMTE2LjY5IDB6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0iIzI0NWI0OCIgZD0iTTQxLjQ1IDE4LjA2YTIuNTcgMi41NyAwIDAwLTUuMTQgME0zMy4zMyAyNGEyLjU3IDIuNTcgMCAxMC01LjE0IDBtMjAuMzYgMi41OGEyLjU3IDIuNTcgMCAxMC01LjE0IDAiLz48L3N2Zz4K';
|
2143 |
|
2144 | var avatar8 = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSIjZmZlZGI5IiBkPSJNMCAwaDEwMHYxMDBIMHoiLz48cGF0aCBkPSJNNjQuNjMgMTcuMzNhMTcgMTcgMCAwMTUgMjkuNzIgMTYuNzUgMTYuNzUgMCAwMS01IDIuNjIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2Utd2lkdGg9IjUiLz48cGF0aCBmaWxsPSIjZmZjMDRkIiBkPSJNMCAwaDY5LjAydjEwMEgweiIvPjxjaXJjbGUgY3g9IjQ1LjExIiBjeT0iMzMuNDkiIHI9IjE2Ljk4IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtMzcuMDIgNDUuMTI0IDMzLjQ5MykiLz48cGF0aCBmaWxsPSIjNWQ2Y2MxIiBkPSJNNjkuMDIgMzQuNDhsMTkuNDcgMzguNzQtMTkuNDcgMS41M1YzNC40OHoiLz48cGF0aCBkPSJNNjEuNiAzMy42N2ExMC4xNyAxMC4xNyAwIDAxMTUuNC4wOCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS13aWR0aD0iNSIvPjwvc3ZnPgo=';
|
2145 |
|
2146 | var avatar9 = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBkPSJNMCAwaDEwMHYxMDBIMHoiIGZpbGw9IiNmZmMwNGQiLz48cGF0aCBkPSJNMCAwaDY5LjQxdjEwMEgweiIgZmlsbD0iIzVkNmNjMSIvPjxwYXRoIGQ9Ik03MC4yMSA4MC44OGgtMTUuMWMtNC44MSAwLTUuNjgtNS44NC01LjY4LTUuODRoMjAuNzgiIGZpbGw9IiNmZmMwNGQiLz48cGF0aCBkPSJNODIgNjAuNDhsLTE0IC4yNVYwaDEwLjE3QzgwLjU5IDIwLjE0IDgyIDYwLjQ4IDgyIDYwLjQ4eiIgZmlsbD0iIzVkNmNjMSIvPjxwYXRoIGZpbGw9IiM0MTIzNmUiIGQ9Ik01Ny43MSA2MC40OGE1LjQ0IDUuNDQgMCAxMTEwLjg3IDAiLz48Y2lyY2xlIGN4PSIyNC43NyIgY3k9IjQwLjE5IiByPSIxMS4yMiIgZmlsbD0iI2ViZWRmMSIgb3BhY2l0eT0iLjIiLz48L3N2Zz4K';
|
2147 |
|
2148 |
|
2149 |
|
2150 | var avatars = Object.freeze({
|
2151 | avatarOne: avatar1,
|
2152 | avatarTwo: avatar2,
|
2153 | avatarThree: avatar3,
|
2154 | avatarFour: avatar4,
|
2155 | avatarFive: avatar5,
|
2156 | avatarSix: avatar6,
|
2157 | avatarSeven: avatar7,
|
2158 | avatarEight: avatar8,
|
2159 | avatarNine: avatar9
|
2160 | });
|
2161 |
|
2162 | var Status;
|
2163 |
|
2164 | (function (Status) {
|
2165 | Status["Pending"] = "PENDING";
|
2166 | Status["Loaded"] = "LOADED";
|
2167 | Status["Errored"] = "ERRORED";
|
2168 | })(Status || (Status = {}));
|
2169 |
|
2170 | var STYLE_CLASSES = ['one', 'two', 'three', 'four', 'five'];
|
2171 | var AVATAR_IMAGES = Object.keys(avatars).map(
|
2172 |
|
2173 | function (key) {
|
2174 | return avatars[key];
|
2175 | });
|
2176 | function Avatar(_ref) {
|
2177 | var name = _ref.name,
|
2178 | source = _ref.source,
|
2179 | initials = _ref.initials,
|
2180 | customer = _ref.customer,
|
2181 | _ref$size = _ref.size,
|
2182 | size = _ref$size === void 0 ? 'medium' : _ref$size,
|
2183 | accessibilityLabel = _ref.accessibilityLabel;
|
2184 | var i18n = useI18n();
|
2185 |
|
2186 | var _useFeatures = useFeatures(),
|
2187 | _useFeatures$unstable = _useFeatures.unstableGlobalTheming,
|
2188 | unstableGlobalTheming = _useFeatures$unstable === void 0 ? false : _useFeatures$unstable;
|
2189 |
|
2190 | function styleClass(name) {
|
2191 | var finalStyleClasses = unstableGlobalTheming ? STYLE_CLASSES : [].concat(STYLE_CLASSES, ['six']);
|
2192 | return name ? finalStyleClasses[name.charCodeAt(0) % finalStyleClasses.length] : finalStyleClasses[0];
|
2193 | }
|
2194 |
|
2195 | var _useState = useState(Status.Pending),
|
2196 | _useState2 = _slicedToArray(_useState, 2),
|
2197 | status = _useState2[0],
|
2198 | setStatus = _useState2[1];
|
2199 |
|
2200 |
|
2201 | useEffect(function () {
|
2202 | setStatus(Status.Pending);
|
2203 | }, [source]);
|
2204 | var handleError = useCallback(function () {
|
2205 | setStatus(Status.Errored);
|
2206 | }, []);
|
2207 | var handleLoad = useCallback(function () {
|
2208 | setStatus(Status.Loaded);
|
2209 | }, []);
|
2210 | var hasImage = (source || customer) && status !== Status.Errored;
|
2211 | var nameString = name || initials;
|
2212 | var finalSource;
|
2213 | var label;
|
2214 |
|
2215 | if (accessibilityLabel) {
|
2216 | label = accessibilityLabel;
|
2217 | } else if (name) {
|
2218 | label = name;
|
2219 | } else if (initials) {
|
2220 | var splitInitials = initials.split('').join(' ');
|
2221 | label = i18n.translate('Polaris.Avatar.labelWithInitials', {
|
2222 | initials: splitInitials
|
2223 | });
|
2224 | } else {
|
2225 | label = i18n.translate('Polaris.Avatar.label');
|
2226 | }
|
2227 |
|
2228 | if (source) {
|
2229 | finalSource = source;
|
2230 | } else if (customer) {
|
2231 | finalSource = customerPlaceholder(nameString);
|
2232 | }
|
2233 |
|
2234 | var className = classNames(styles.Avatar, styles[variationName('style', styleClass(nameString))], size && styles[variationName('size', size)], hasImage && status !== Status.Loaded && styles.hidden, hasImage && styles.hasImage);
|
2235 | var imageMarkUp = finalSource && !isServer && status !== Status.Errored ? React__default.createElement(Image, {
|
2236 | className: styles.Image,
|
2237 | source: finalSource,
|
2238 | alt: "",
|
2239 | role: "presentation",
|
2240 | onLoad: handleLoad,
|
2241 | onError: handleError
|
2242 | }) : null;
|
2243 |
|
2244 | var verticalOffset = '0.35em';
|
2245 | var initialsMarkup = initials && !hasImage ? React__default.createElement("span", {
|
2246 | className: styles.Initials
|
2247 | }, React__default.createElement("svg", {
|
2248 | className: styles.Svg,
|
2249 | viewBox: "0 0 48 48"
|
2250 | }, React__default.createElement("text", {
|
2251 | x: "50%",
|
2252 | y: "50%",
|
2253 | dy: verticalOffset,
|
2254 | fill: "currentColor",
|
2255 | fontSize: "26",
|
2256 | textAnchor: "middle"
|
2257 | }, initials))) : null;
|
2258 | return React__default.createElement("span", {
|
2259 | "aria-label": label,
|
2260 | role: "img",
|
2261 | className: className
|
2262 | }, initialsMarkup, imageMarkUp);
|
2263 | }
|
2264 |
|
2265 | function customerPlaceholder(name) {
|
2266 | return name ? AVATAR_IMAGES[name.charCodeAt(0) % AVATAR_IMAGES.length] : AVATAR_IMAGES[0];
|
2267 | }
|
2268 |
|
2269 | function isElementInViewport(element) {
|
2270 | var _element$getBoundingC = element.getBoundingClientRect(),
|
2271 | top = _element$getBoundingC.top,
|
2272 | left = _element$getBoundingC.left,
|
2273 | bottom = _element$getBoundingC.bottom,
|
2274 | right = _element$getBoundingC.right;
|
2275 |
|
2276 | return top >= 0 && right <= window.innerWidth && bottom <= window.innerHeight && left >= 0;
|
2277 | }
|
2278 |
|
2279 | function handleMouseUpByBlurring(_ref) {
|
2280 | var currentTarget = _ref.currentTarget;
|
2281 | currentTarget.blur();
|
2282 | }
|
2283 | function nextFocusableNode(node, filter) {
|
2284 | var allFocusableElements = _toConsumableArray(document.querySelectorAll(FOCUSABLE_SELECTOR));
|
2285 |
|
2286 | var sliceLocation = allFocusableElements.indexOf(node) + 1;
|
2287 | var focusableElementsAfterNode = allFocusableElements.slice(sliceLocation);
|
2288 | var _iteratorNormalCompletion = true;
|
2289 | var _didIteratorError = false;
|
2290 | var _iteratorError = undefined;
|
2291 |
|
2292 | try {
|
2293 | for (var _iterator = focusableElementsAfterNode[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
2294 | var focusableElement = _step.value;
|
2295 |
|
2296 | if (isElementInViewport(focusableElement) && (!filter || filter && filter(focusableElement))) {
|
2297 | return focusableElement;
|
2298 | }
|
2299 | }
|
2300 | } catch (err) {
|
2301 | _didIteratorError = true;
|
2302 | _iteratorError = err;
|
2303 | } finally {
|
2304 | try {
|
2305 | if (!_iteratorNormalCompletion && _iterator.return != null) {
|
2306 | _iterator.return();
|
2307 | }
|
2308 | } finally {
|
2309 | if (_didIteratorError) {
|
2310 | throw _iteratorError;
|
2311 | }
|
2312 | }
|
2313 | }
|
2314 |
|
2315 | return null;
|
2316 | }
|
2317 | function focusNextFocusableNode(node, filter) {
|
2318 | var nextFocusable = nextFocusableNode(node, filter);
|
2319 |
|
2320 | if (nextFocusable && nextFocusable instanceof HTMLElement) {
|
2321 | nextFocusable.focus();
|
2322 | return true;
|
2323 | }
|
2324 |
|
2325 | return false;
|
2326 | }
|
2327 |
|
2328 | var scrollable = {
|
2329 | props: {
|
2330 | 'data-polaris-scrollable': true
|
2331 | },
|
2332 | selector: '[data-polaris-scrollable]'
|
2333 | };
|
2334 | var overlay = {
|
2335 | props: {
|
2336 | 'data-polaris-overlay': true
|
2337 | },
|
2338 | selector: '[data-polaris-overlay]'
|
2339 | };
|
2340 | var layer = {
|
2341 | props: {
|
2342 | 'data-polaris-layer': true
|
2343 | },
|
2344 | selector: '[data-polaris-layer]'
|
2345 | };
|
2346 | var unstyled = {
|
2347 | props: {
|
2348 | 'data-polaris-unstyled': true
|
2349 | },
|
2350 | selector: '[data-polaris-unstyled]'
|
2351 | };
|
2352 | var dataPolarisTopBar = {
|
2353 | props: {
|
2354 | 'data-polaris-top-bar': true
|
2355 | },
|
2356 | selector: '[data-polaris-top-bar]'
|
2357 | };
|
2358 | var headerCell = {
|
2359 | props: {
|
2360 | 'data-polaris-header-cell': true
|
2361 | },
|
2362 | selector: '[data-polaris-header-cell]'
|
2363 | };
|
2364 | var portal = {
|
2365 | props: ['data-portal-id'],
|
2366 | selector: '[data-portal-id]'
|
2367 | };
|
2368 | var DATA_ATTRIBUTE = {
|
2369 | overlay,
|
2370 | layer
|
2371 | };
|
2372 |
|
2373 | var Duration;
|
2374 |
|
2375 | (function (Duration) {
|
2376 | Duration[Duration["Instant"] = 0] = "Instant";
|
2377 | Duration[Duration["Fast"] = 100] = "Fast";
|
2378 | Duration[Duration["Base"] = 200] = "Base";
|
2379 | Duration[Duration["Slow"] = 300] = "Slow";
|
2380 | Duration[Duration["Slower"] = 400] = "Slower";
|
2381 | Duration[Duration["Slowest"] = 500] = "Slowest";
|
2382 | })(Duration || (Duration = {}));
|
2383 |
|
2384 | var LinkContext = React__default.createContext(undefined);
|
2385 |
|
2386 | function useLink() {
|
2387 | return React__default.useContext(LinkContext);
|
2388 | }
|
2389 |
|
2390 |
|
2391 |
|
2392 |
|
2393 |
|
2394 | var UnstyledLink = React__default.memo(React__default.forwardRef(function UnstyledLink(props, _ref) {
|
2395 | var LinkComponent = useLink();
|
2396 |
|
2397 | if (LinkComponent) {
|
2398 | return React__default.createElement(LinkComponent, Object.assign({}, unstyled.props, props));
|
2399 | }
|
2400 |
|
2401 | var external = props.external,
|
2402 | url = props.url,
|
2403 | rest = __rest(props, ["external", "url"]);
|
2404 |
|
2405 | var target = external ? '_blank' : undefined;
|
2406 | var rel = external ? 'noopener noreferrer' : undefined;
|
2407 | return React__default.createElement("a", Object.assign({
|
2408 | target: target
|
2409 | }, rest, {
|
2410 | href: url,
|
2411 | rel: rel
|
2412 | }, unstyled.props));
|
2413 | }));
|
2414 |
|
2415 | var TelemetryContext = React__default.createContext(undefined);
|
2416 |
|
2417 | function noop() {}
|
2418 |
|
2419 | var defaultTelemetry = {
|
2420 | produce: noop
|
2421 | };
|
2422 | function useTelemetry() {
|
2423 | return React__default.useContext(TelemetryContext) || defaultTelemetry;
|
2424 | }
|
2425 |
|
2426 | var styles$1 = {
|
2427 | "Icon": "Polaris-Icon",
|
2428 | "hasBackdrop": "Polaris-Icon--hasBackdrop",
|
2429 | "isColored": "Polaris-Icon--isColored",
|
2430 | "colorWhite": "Polaris-Icon--colorWhite",
|
2431 | "colorBlack": "Polaris-Icon--colorBlack",
|
2432 | "colorSkyLighter": "Polaris-Icon--colorSkyLighter",
|
2433 | "colorSkyLight": "Polaris-Icon--colorSkyLight",
|
2434 | "colorSky": "Polaris-Icon--colorSky",
|
2435 | "colorSkyDark": "Polaris-Icon--colorSkyDark",
|
2436 | "colorInkLightest": "Polaris-Icon--colorInkLightest",
|
2437 | "colorInkLighter": "Polaris-Icon--colorInkLighter",
|
2438 | "colorInkLight": "Polaris-Icon--colorInkLight",
|
2439 | "colorInk": "Polaris-Icon--colorInk",
|
2440 | "colorBlueLighter": "Polaris-Icon--colorBlueLighter",
|
2441 | "colorBlueLight": "Polaris-Icon--colorBlueLight",
|
2442 | "colorBlue": "Polaris-Icon--colorBlue",
|
2443 | "colorBlueDark": "Polaris-Icon--colorBlueDark",
|
2444 | "colorBlueDarker": "Polaris-Icon--colorBlueDarker",
|
2445 | "colorIndigoLighter": "Polaris-Icon--colorIndigoLighter",
|
2446 | "colorIndigoLight": "Polaris-Icon--colorIndigoLight",
|
2447 | "colorIndigo": "Polaris-Icon--colorIndigo",
|
2448 | "colorIndigoDark": "Polaris-Icon--colorIndigoDark",
|
2449 | "colorIndigoDarker": "Polaris-Icon--colorIndigoDarker",
|
2450 | "colorTealLighter": "Polaris-Icon--colorTealLighter",
|
2451 | "colorTealLight": "Polaris-Icon--colorTealLight",
|
2452 | "colorTeal": "Polaris-Icon--colorTeal",
|
2453 | "colorTealDark": "Polaris-Icon--colorTealDark",
|
2454 | "colorTealDarker": "Polaris-Icon--colorTealDarker",
|
2455 | "colorGreenLighter": "Polaris-Icon--colorGreenLighter",
|
2456 | "colorGreen": "Polaris-Icon--colorGreen",
|
2457 | "colorGreenDark": "Polaris-Icon--colorGreenDark",
|
2458 | "colorYellowLighter": "Polaris-Icon--colorYellowLighter",
|
2459 | "colorYellow": "Polaris-Icon--colorYellow",
|
2460 | "colorYellowDark": "Polaris-Icon--colorYellowDark",
|
2461 | "colorOrange": "Polaris-Icon--colorOrange",
|
2462 | "colorOrangeDark": "Polaris-Icon--colorOrangeDark",
|
2463 | "colorRedLighter": "Polaris-Icon--colorRedLighter",
|
2464 | "colorRed": "Polaris-Icon--colorRed",
|
2465 | "colorRedDark": "Polaris-Icon--colorRedDark",
|
2466 | "colorPurple": "Polaris-Icon--colorPurple",
|
2467 | "Svg": "Polaris-Icon__Svg",
|
2468 | "Img": "Polaris-Icon__Img",
|
2469 | "Placeholder": "Polaris-Icon__Placeholder"
|
2470 | };
|
2471 |
|
2472 | var COLORS_WITH_BACKDROPS = ['teal', 'tealDark', 'greenDark', 'redDark', 'yellowDark', 'ink', 'inkLighter'];
|
2473 | function Icon(_ref) {
|
2474 | var source = _ref.source,
|
2475 | color = _ref.color,
|
2476 | backdrop = _ref.backdrop,
|
2477 | accessibilityLabel = _ref.accessibilityLabel;
|
2478 | var i18n = useI18n();
|
2479 | var telemetry = useTelemetry();
|
2480 | useEffect(function () {
|
2481 | telemetry.produce('polaris_icons_usage/1.0', {
|
2482 |
|
2483 | icon_source: parseSource(source)
|
2484 | });
|
2485 | }, [source, telemetry]);
|
2486 |
|
2487 | if (color && backdrop && !COLORS_WITH_BACKDROPS.includes(color)) {
|
2488 |
|
2489 | console.warn(i18n.translate('Polaris.Icon.backdropWarning', {
|
2490 | color,
|
2491 | colorsWithBackDrops: COLORS_WITH_BACKDROPS.join(', ')
|
2492 | }));
|
2493 | }
|
2494 |
|
2495 | var className = classNames(styles$1.Icon, color && styles$1[variationName('color', color)], color && color !== 'white' && styles$1.isColored, backdrop && styles$1.hasBackdrop);
|
2496 | var contentMarkup;
|
2497 |
|
2498 | if (typeof source === 'function') {
|
2499 | var SourceComponent = source;
|
2500 | contentMarkup = React__default.createElement(SourceComponent, {
|
2501 | className: styles$1.Svg,
|
2502 | focusable: "false",
|
2503 | "aria-hidden": "true"
|
2504 | });
|
2505 | } else if (source === 'placeholder') {
|
2506 | contentMarkup = React__default.createElement("div", {
|
2507 | className: styles$1.Placeholder
|
2508 | });
|
2509 | } else {
|
2510 | contentMarkup = React__default.createElement("img", {
|
2511 | className: styles$1.Img,
|
2512 | src: "data:image/svg+xml;utf8,".concat(source),
|
2513 | alt: "",
|
2514 | "aria-hidden": "true"
|
2515 | });
|
2516 | }
|
2517 |
|
2518 | return React__default.createElement("span", {
|
2519 | className: className,
|
2520 | "aria-label": accessibilityLabel
|
2521 | }, contentMarkup);
|
2522 | }
|
2523 |
|
2524 | function parseSource(source) {
|
2525 | if (typeof source === 'function') {
|
2526 | return source.name;
|
2527 | } else if (source === 'placeholder') {
|
2528 | return source;
|
2529 | }
|
2530 |
|
2531 | return 'custom icon string';
|
2532 | }
|
2533 |
|
2534 | var styles$2 = {
|
2535 | "VisuallyHidden": "Polaris-VisuallyHidden"
|
2536 | };
|
2537 |
|
2538 | function VisuallyHidden(_ref) {
|
2539 | var children = _ref.children;
|
2540 | return React__default.createElement("span", {
|
2541 | className: styles$2.VisuallyHidden
|
2542 | }, children);
|
2543 | }
|
2544 |
|
2545 |
|
2546 |
|
2547 |
|
2548 |
|
2549 |
|
2550 |
|
2551 |
|
2552 |
|
2553 |
|
2554 |
|
2555 |
|
2556 |
|
2557 |
|
2558 |
|
2559 |
|
2560 | function useIsAfterInitialMount() {
|
2561 | var _useState = useState(false),
|
2562 | _useState2 = _slicedToArray(_useState, 2),
|
2563 | isAfterInitialMount = _useState2[0],
|
2564 | setIsAfterInitialMount = _useState2[1];
|
2565 |
|
2566 | useEffect(function () {
|
2567 | setIsAfterInitialMount(true);
|
2568 | }, []);
|
2569 | return isAfterInitialMount;
|
2570 | }
|
2571 |
|
2572 | var styles$3 = {
|
2573 | "Spinner": "Polaris-Spinner",
|
2574 | "loading": "Polaris-Spinner--loading",
|
2575 | "sizeSmall": "Polaris-Spinner--sizeSmall",
|
2576 | "sizeLarge": "Polaris-Spinner--sizeLarge",
|
2577 | "colorWhite": "Polaris-Spinner--colorWhite",
|
2578 | "colorTeal": "Polaris-Spinner--colorTeal",
|
2579 | "colorInkLightest": "Polaris-Spinner--colorInkLightest"
|
2580 | };
|
2581 |
|
2582 | var spinnerLarge = 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNDQgNDQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1LjU0MiAxLjQ4N0EyMS41MDcgMjEuNTA3IDAgMDAuNSAyMmMwIDExLjg3NCA5LjYyNiAyMS41IDIxLjUgMjEuNSA5Ljg0NyAwIDE4LjM2NC02LjY3NSAyMC44MDktMTYuMDcyYTEuNSAxLjUgMCAwMC0yLjkwNC0uNzU2QzM3LjgwMyAzNC43NTUgMzAuNDczIDQwLjUgMjIgNDAuNSAxMS43ODMgNDAuNSAzLjUgMzIuMjE3IDMuNSAyMmMwLTguMTM3IDUuMy0xNS4yNDcgMTIuOTQyLTE3LjY1YTEuNSAxLjUgMCAxMC0uOS0yLjg2M3oiIGZpbGw9IiM5MTlFQUIiLz48L3N2Zz4K';
|
2583 |
|
2584 | var spinnerSmall = 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMjI5IDEuMTczYTkuMjUgOS4yNSAwIDEwMTEuNjU1IDExLjQxMiAxLjI1IDEuMjUgMCAxMC0yLjQtLjY5OCA2Ljc1IDYuNzUgMCAxMS04LjUwNi04LjMyOSAxLjI1IDEuMjUgMCAxMC0uNzUtMi4zODV6IiBmaWxsPSIjOTE5RUFCIi8+PC9zdmc+Cg==';
|
2585 |
|
2586 | var COLORS_FOR_LARGE_SPINNER = ['teal', 'inkLightest'];
|
2587 | function Spinner(_ref) {
|
2588 | var _ref$size = _ref.size,
|
2589 | size = _ref$size === void 0 ? 'large' : _ref$size,
|
2590 | _ref$color = _ref.color,
|
2591 | color = _ref$color === void 0 ? 'teal' : _ref$color,
|
2592 | accessibilityLabel = _ref.accessibilityLabel,
|
2593 | hasFocusableParent = _ref.hasFocusableParent;
|
2594 | var i18n = useI18n();
|
2595 | var isAfterInitialMount = useIsAfterInitialMount();
|
2596 |
|
2597 | if (size === 'large' && !COLORS_FOR_LARGE_SPINNER.includes(color)) {
|
2598 | if (process.env.NODE_ENV === 'development') {
|
2599 |
|
2600 | console.warn(i18n.translate('Polaris.Spinner.warningMessage', {
|
2601 | color,
|
2602 | size,
|
2603 | colors: COLORS_FOR_LARGE_SPINNER.join(', ')
|
2604 | }));
|
2605 | }
|
2606 |
|
2607 |
|
2608 | size = 'small';
|
2609 | }
|
2610 |
|
2611 | var className = classNames(styles$3.Spinner, color && styles$3[variationName('color', color)], size && styles$3[variationName('size', size)]);
|
2612 | var spinnerSVG = size === 'large' ? spinnerLarge : spinnerSmall;
|
2613 | var spanAttributes = Object.assign({}, !hasFocusableParent && {
|
2614 | role: 'status'
|
2615 | });
|
2616 | var accessibilityLabelMarkup = (isAfterInitialMount || !hasFocusableParent) && React__default.createElement(VisuallyHidden, null, accessibilityLabel);
|
2617 | return React__default.createElement(React__default.Fragment, null, React__default.createElement(Image, {
|
2618 | alt: "",
|
2619 | source: spinnerSVG,
|
2620 | className: className,
|
2621 | draggable: false
|
2622 | }), React__default.createElement("span", spanAttributes, accessibilityLabelMarkup));
|
2623 | }
|
2624 |
|
2625 | var styles$4 = {
|
2626 | "Button": "Polaris-Button",
|
2627 | "globalTheming": "Polaris-Button--globalTheming",
|
2628 | "disabled": "Polaris-Button--disabled",
|
2629 | "Content": "Polaris-Button__Content",
|
2630 | "textAlignLeft": "Polaris-Button--textAlignLeft",
|
2631 | "textAlignCenter": "Polaris-Button--textAlignCenter",
|
2632 | "textAlignRight": "Polaris-Button--textAlignRight",
|
2633 | "Icon": "Polaris-Button__Icon",
|
2634 | "Spinner": "Polaris-Button__Spinner",
|
2635 | "primary": "Polaris-Button--primary",
|
2636 | "pressed": "Polaris-Button--pressed",
|
2637 | "destructive": "Polaris-Button--destructive",
|
2638 | "outline": "Polaris-Button--outline",
|
2639 | "loading": "Polaris-Button--loading",
|
2640 | "plain": "Polaris-Button--plain",
|
2641 | "iconOnly": "Polaris-Button--iconOnly",
|
2642 | "fullWidth": "Polaris-Button--fullWidth",
|
2643 | "sizeSlim": "Polaris-Button--sizeSlim",
|
2644 | "sizeLarge": "Polaris-Button--sizeLarge",
|
2645 | "monochrome": "Polaris-Button--monochrome",
|
2646 | "Text": "Polaris-Button__Text",
|
2647 | "DisclosureIcon": "Polaris-Button__DisclosureIcon",
|
2648 | "DisclosureIconFacingUp": "Polaris-Button__DisclosureIconFacingUp"
|
2649 | };
|
2650 |
|
2651 | var DEFAULT_SIZE = 'medium';
|
2652 | function Button(_ref) {
|
2653 | var id = _ref.id,
|
2654 | url = _ref.url,
|
2655 | disabled = _ref.disabled,
|
2656 | loading = _ref.loading,
|
2657 | children = _ref.children,
|
2658 | accessibilityLabel = _ref.accessibilityLabel,
|
2659 | ariaControls = _ref.ariaControls,
|
2660 | ariaExpanded = _ref.ariaExpanded,
|
2661 | ariaPressed = _ref.ariaPressed,
|
2662 | onClick = _ref.onClick,
|
2663 | onFocus = _ref.onFocus,
|
2664 | onBlur = _ref.onBlur,
|
2665 | onKeyDown = _ref.onKeyDown,
|
2666 | onKeyPress = _ref.onKeyPress,
|
2667 | onKeyUp = _ref.onKeyUp,
|
2668 | onMouseEnter = _ref.onMouseEnter,
|
2669 | onTouchStart = _ref.onTouchStart,
|
2670 | external = _ref.external,
|
2671 | download = _ref.download,
|
2672 | icon = _ref.icon,
|
2673 | primary = _ref.primary,
|
2674 | outline = _ref.outline,
|
2675 | destructive = _ref.destructive,
|
2676 | disclosure = _ref.disclosure,
|
2677 | plain = _ref.plain,
|
2678 | monochrome = _ref.monochrome,
|
2679 | submit = _ref.submit,
|
2680 | _ref$size = _ref.size,
|
2681 | size = _ref$size === void 0 ? DEFAULT_SIZE : _ref$size,
|
2682 | textAlign = _ref.textAlign,
|
2683 | fullWidth = _ref.fullWidth,
|
2684 | pressed = _ref.pressed;
|
2685 |
|
2686 | var _useFeatures = useFeatures(),
|
2687 | _useFeatures$unstable = _useFeatures.unstableGlobalTheming,
|
2688 | unstableGlobalTheming = _useFeatures$unstable === void 0 ? false : _useFeatures$unstable;
|
2689 |
|
2690 | var hasGivenDeprecationWarning = useRef(false);
|
2691 |
|
2692 | if (ariaPressed && !hasGivenDeprecationWarning.current) {
|
2693 |
|
2694 | console.warn('Deprecation: The ariaPressed prop has been replaced with pressed');
|
2695 | hasGivenDeprecationWarning.current = true;
|
2696 | }
|
2697 |
|
2698 | var i18n = useI18n();
|
2699 | var isDisabled = disabled || loading;
|
2700 | var className = classNames(styles$4.Button, unstableGlobalTheming && styles$4.globalTheming, primary && styles$4.primary, outline && styles$4.outline, destructive && styles$4.destructive, isDisabled && styles$4.disabled, loading && styles$4.loading, plain && styles$4.plain, pressed && !disabled && !url && styles$4.pressed, monochrome && styles$4.monochrome, size && size !== DEFAULT_SIZE && styles$4[variationName('size', size)], textAlign && styles$4[variationName('textAlign', textAlign)], fullWidth && styles$4.fullWidth, icon && children == null && styles$4.iconOnly);
|
2701 | var disclosureIcon = React__default.createElement(Icon, {
|
2702 | source: loading ? 'placeholder' : CaretDownMinor
|
2703 | });
|
2704 | var disclosureIconMarkup = disclosure ? React__default.createElement(IconWrapper, null, React__default.createElement("div", {
|
2705 | className: classNames(styles$4.DisclosureIcon, disclosure === 'up' && styles$4.DisclosureIconFacingUp)
|
2706 | }, disclosureIcon)) : null;
|
2707 | var iconMarkup;
|
2708 |
|
2709 | if (icon) {
|
2710 | var iconInner = isIconSource(icon) ? React__default.createElement(Icon, {
|
2711 | source: loading ? 'placeholder' : icon
|
2712 | }) : icon;
|
2713 | iconMarkup = React__default.createElement(IconWrapper, null, iconInner);
|
2714 | }
|
2715 |
|
2716 | var childMarkup = children ? React__default.createElement("span", {
|
2717 | className: styles$4.Text
|
2718 | }, children) : null;
|
2719 | var spinnerColor = primary || destructive ? 'white' : 'inkLightest';
|
2720 | var spinnerSVGMarkup = loading ? React__default.createElement("span", {
|
2721 | className: styles$4.Spinner
|
2722 | }, React__default.createElement(Spinner, {
|
2723 | size: "small",
|
2724 | color: spinnerColor,
|
2725 | accessibilityLabel: i18n.translate('Polaris.Button.spinnerAccessibilityLabel')
|
2726 | })) : null;
|
2727 | var content = iconMarkup || disclosureIconMarkup ? React__default.createElement("span", {
|
2728 | className: styles$4.Content
|
2729 | }, spinnerSVGMarkup, iconMarkup, childMarkup, disclosureIconMarkup) : React__default.createElement("span", {
|
2730 | className: styles$4.Content
|
2731 | }, spinnerSVGMarkup, childMarkup);
|
2732 | var type = submit ? 'submit' : 'button';
|
2733 |
|
2734 | if (url) {
|
2735 | return isDisabled ?
|
2736 |
|
2737 |
|
2738 | React__default.createElement("a", {
|
2739 | id: id,
|
2740 | className: className,
|
2741 | "aria-label": accessibilityLabel
|
2742 | }, content) : React__default.createElement(UnstyledLink, {
|
2743 | id: id,
|
2744 | url: url,
|
2745 | external: external,
|
2746 | download: download,
|
2747 | onClick: onClick,
|
2748 | onFocus: onFocus,
|
2749 | onBlur: onBlur,
|
2750 | onMouseUp: handleMouseUpByBlurring,
|
2751 | onMouseEnter: onMouseEnter,
|
2752 | onTouchStart: onTouchStart,
|
2753 | className: className,
|
2754 | "aria-label": accessibilityLabel
|
2755 | }, content);
|
2756 | }
|
2757 |
|
2758 | var ariaPressedStatus = pressed !== undefined ? pressed : ariaPressed;
|
2759 | return React__default.createElement("button", {
|
2760 | id: id,
|
2761 | type: type,
|
2762 | onClick: onClick,
|
2763 | onFocus: onFocus,
|
2764 | onBlur: onBlur,
|
2765 | onKeyDown: onKeyDown,
|
2766 | onKeyUp: onKeyUp,
|
2767 | onKeyPress: onKeyPress,
|
2768 | onMouseUp: handleMouseUpByBlurring,
|
2769 | onMouseEnter: onMouseEnter,
|
2770 | onTouchStart: onTouchStart,
|
2771 | className: className,
|
2772 | disabled: isDisabled,
|
2773 | "aria-label": accessibilityLabel,
|
2774 | "aria-controls": ariaControls,
|
2775 | "aria-expanded": ariaExpanded,
|
2776 | "aria-pressed": ariaPressedStatus,
|
2777 | role: loading ? 'alert' : undefined,
|
2778 | "aria-busy": loading ? true : undefined
|
2779 | }, content);
|
2780 | }
|
2781 | function IconWrapper(_ref2) {
|
2782 | var children = _ref2.children;
|
2783 | return React__default.createElement("span", {
|
2784 | className: styles$4.Icon
|
2785 | }, children);
|
2786 | }
|
2787 |
|
2788 | function isIconSource(x) {
|
2789 | return typeof x === 'string' || typeof x === 'object' && x.body || typeof x === 'function';
|
2790 | }
|
2791 |
|
2792 | function buttonsFrom(actions) {
|
2793 | var overrides = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
2794 |
|
2795 | if (Array.isArray(actions)) {
|
2796 | return actions.map(function (action, index) {
|
2797 | return buttonFrom(action, overrides, index);
|
2798 | });
|
2799 | } else {
|
2800 | var action = actions;
|
2801 | return buttonFrom(action, overrides);
|
2802 | }
|
2803 | }
|
2804 | function buttonFrom(_a, overrides, key) {
|
2805 | var content = _a.content,
|
2806 | onAction = _a.onAction,
|
2807 | action = __rest(_a, ["content", "onAction"]);
|
2808 |
|
2809 | return React__default.createElement(Button, Object.assign({
|
2810 | key: key,
|
2811 | onClick: onAction
|
2812 | }, action, overrides), content);
|
2813 | }
|
2814 |
|
2815 | function useToggle(initialState) {
|
2816 | var _useState = useState(initialState),
|
2817 | _useState2 = _slicedToArray(_useState, 2),
|
2818 | state = _useState2[0],
|
2819 | setState = _useState2[1];
|
2820 |
|
2821 | var toggle = useCallback(function () {
|
2822 | return setState(function (state) {
|
2823 | return !state;
|
2824 | });
|
2825 | }, []);
|
2826 |
|
2827 |
|
2828 | return [state, toggle];
|
2829 | }
|
2830 | function useForcibleToggle(initialState) {
|
2831 | var _useState3 = useState(initialState),
|
2832 | _useState4 = _slicedToArray(_useState3, 2),
|
2833 | state = _useState4[0],
|
2834 | setState = _useState4[1];
|
2835 |
|
2836 | var toggles = {
|
2837 | toggle: useCallback(function () {
|
2838 | return setState(function (state) {
|
2839 | return !state;
|
2840 | });
|
2841 | }, []),
|
2842 | forceTrue: useCallback(function () {
|
2843 | return setState(true);
|
2844 | }, []),
|
2845 | forceFalse: useCallback(function () {
|
2846 | return setState(false);
|
2847 | }, [])
|
2848 | };
|
2849 |
|
2850 |
|
2851 | return [state, toggles];
|
2852 | }
|
2853 |
|
2854 | var WithinContentContext = React__default.createContext(false);
|
2855 |
|
2856 |
|
2857 |
|
2858 |
|
2859 | function wrapWithComponent(element, Component, props) {
|
2860 | if (element == null) {
|
2861 | return null;
|
2862 | }
|
2863 |
|
2864 | return isElementOfType(element, Component) ? element : React__default.createElement(Component, props, element);
|
2865 | }
|
2866 |
|
2867 |
|
2868 |
|
2869 | var isComponent = process.env.NODE_ENV === 'development' ? hotReloadComponentCheck : function (AComponent, AnotherComponent) {
|
2870 | return AComponent === AnotherComponent;
|
2871 | };
|
2872 |
|
2873 |
|
2874 | function isElementOfType(element, Component) {
|
2875 | if (element == null || !React__default.isValidElement(element) || typeof element.type === 'string') {
|
2876 | return false;
|
2877 | }
|
2878 |
|
2879 | var type = element.type;
|
2880 | var Components = Array.isArray(Component) ? Component : [Component];
|
2881 | return Components.some(function (AComponent) {
|
2882 | return typeof type !== 'string' && isComponent(AComponent, type);
|
2883 | });
|
2884 | }
|
2885 |
|
2886 |
|
2887 | function elementChildren(children) {
|
2888 | var predicate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
|
2889 | return true;
|
2890 | };
|
2891 | return React__default.Children.toArray(children).filter(function (child) {
|
2892 | return React__default.isValidElement(child) && predicate(child);
|
2893 | });
|
2894 | }
|
2895 |
|
2896 | function hotReloadComponentCheck(AComponent, AnotherComponent) {
|
2897 | var componentName = AComponent.name;
|
2898 | var anotherComponentName = AnotherComponent.displayName;
|
2899 | return AComponent === AnotherComponent || Boolean(componentName) && componentName === anotherComponentName;
|
2900 | }
|
2901 |
|
2902 | var styles$5 = {
|
2903 | "ButtonGroup": "Polaris-ButtonGroup",
|
2904 | "Item": "Polaris-ButtonGroup__Item",
|
2905 | "Item-plain": "Polaris-ButtonGroup__Item--plain",
|
2906 | "segmented": "Polaris-ButtonGroup--segmented",
|
2907 | "Item-focused": "Polaris-ButtonGroup__Item--focused",
|
2908 | "fullWidth": "Polaris-ButtonGroup--fullWidth"
|
2909 | };
|
2910 |
|
2911 | function Item(_ref) {
|
2912 | var button = _ref.button;
|
2913 |
|
2914 | var _useForcibleToggle = useForcibleToggle(false),
|
2915 | _useForcibleToggle2 = _slicedToArray(_useForcibleToggle, 2),
|
2916 | focused = _useForcibleToggle2[0],
|
2917 | _useForcibleToggle2$ = _useForcibleToggle2[1],
|
2918 | forceTrueFocused = _useForcibleToggle2$.forceTrue,
|
2919 | forceFalseFocused = _useForcibleToggle2$.forceFalse;
|
2920 |
|
2921 | var className = classNames(styles$5.Item, focused && styles$5['Item-focused'], button.props.plain && styles$5['Item-plain']);
|
2922 | return React__default.createElement("div", {
|
2923 | className: className,
|
2924 | onFocus: forceTrueFocused,
|
2925 | onBlur: forceFalseFocused
|
2926 | }, button);
|
2927 | }
|
2928 |
|
2929 | function ButtonGroup(_ref) {
|
2930 | var children = _ref.children,
|
2931 | segmented = _ref.segmented,
|
2932 | fullWidth = _ref.fullWidth,
|
2933 | connectedTop = _ref.connectedTop;
|
2934 | var className = classNames(styles$5.ButtonGroup, segmented && styles$5.segmented, fullWidth && styles$5.fullWidth);
|
2935 | var contents = elementChildren(children).map(function (child, index) {
|
2936 | return React__default.createElement(Item, {
|
2937 | button: child,
|
2938 | key: index
|
2939 | });
|
2940 | });
|
2941 | return React__default.createElement("div", {
|
2942 | className: className,
|
2943 | "data-buttongroup-segmented": segmented,
|
2944 | "data-buttongroup-connected-top": connectedTop,
|
2945 | "data-buttongroup-full-width": fullWidth
|
2946 | }, contents);
|
2947 | }
|
2948 |
|
2949 | var StickyManagerContext = React__default.createContext(undefined);
|
2950 |
|
2951 | function useStickyManager() {
|
2952 | var stickyManager = useContext(StickyManagerContext);
|
2953 |
|
2954 | if (!stickyManager) {
|
2955 | throw new MissingAppProviderError('No StickyManager was provided.');
|
2956 | }
|
2957 |
|
2958 | return stickyManager;
|
2959 | }
|
2960 |
|
2961 | var Breakpoints = {
|
2962 | navigationBarCollapsed: '768px',
|
2963 | stackedContent: '1043px'
|
2964 | };
|
2965 | var noWindowMatches = {
|
2966 | media: '',
|
2967 | addListener: noop$1,
|
2968 | removeListener: noop$1,
|
2969 | matches: false,
|
2970 | onchange: noop$1,
|
2971 | addEventListener: noop$1,
|
2972 | removeEventListener: noop$1,
|
2973 | dispatchEvent: function dispatchEvent(_) {
|
2974 | return true;
|
2975 | }
|
2976 | };
|
2977 |
|
2978 | function noop$1() {}
|
2979 |
|
2980 | function navigationBarCollapsed() {
|
2981 | return typeof window === 'undefined' ? noWindowMatches : window.matchMedia("(max-width: ".concat(Breakpoints.navigationBarCollapsed, ")"));
|
2982 | }
|
2983 | function stackedContent() {
|
2984 | return typeof window === 'undefined' ? noWindowMatches : window.matchMedia("(max-width: ".concat(Breakpoints.stackedContent, ")"));
|
2985 | }
|
2986 |
|
2987 | var StickyManager =
|
2988 |
|
2989 | function () {
|
2990 | function StickyManager(container) {
|
2991 | var _this = this;
|
2992 |
|
2993 | _classCallCheck(this, StickyManager);
|
2994 |
|
2995 | this.stickyItems = [];
|
2996 | this.stuckItems = [];
|
2997 | this.topBarOffset = 0;
|
2998 | this.handleResize = debounce(function () {
|
2999 | _this.manageStickyItems();
|
3000 | }, 40, {
|
3001 | leading: true,
|
3002 | trailing: true,
|
3003 | maxWait: 40
|
3004 | });
|
3005 | this.handleScroll = debounce(function () {
|
3006 | _this.manageStickyItems();
|
3007 | }, 40, {
|
3008 | leading: true,
|
3009 | trailing: true,
|
3010 | maxWait: 40
|
3011 | });
|
3012 |
|
3013 | if (container) {
|
3014 | this.setContainer(container);
|
3015 | }
|
3016 | }
|
3017 |
|
3018 | _createClass(StickyManager, [{
|
3019 | key: "registerStickyItem",
|
3020 | value: function registerStickyItem(stickyItem) {
|
3021 | this.stickyItems.push(stickyItem);
|
3022 | }
|
3023 | }, {
|
3024 | key: "unregisterStickyItem",
|
3025 | value: function unregisterStickyItem(nodeToRemove) {
|
3026 | var nodeIndex = this.stickyItems.findIndex(function (_ref) {
|
3027 | var stickyNode = _ref.stickyNode;
|
3028 | return nodeToRemove === stickyNode;
|
3029 | });
|
3030 | this.stickyItems.splice(nodeIndex, 1);
|
3031 | }
|
3032 | }, {
|
3033 | key: "setContainer",
|
3034 | value: function setContainer(el) {
|
3035 | this.container = el;
|
3036 |
|
3037 | if (isDocument(el)) {
|
3038 | this.setTopBarOffset();
|
3039 | }
|
3040 |
|
3041 | addEventListener(this.container, 'scroll', this.handleScroll);
|
3042 | addEventListener(window, 'resize', this.handleResize);
|
3043 | this.manageStickyItems();
|
3044 | }
|
3045 | }, {
|
3046 | key: "removeScrollListener",
|
3047 | value: function removeScrollListener() {
|
3048 | if (this.container) {
|
3049 | removeEventListener(this.container, 'scroll', this.handleScroll);
|
3050 | removeEventListener(window, 'resize', this.handleResize);
|
3051 | }
|
3052 | }
|
3053 | }, {
|
3054 | key: "manageStickyItems",
|
3055 | value: function manageStickyItems() {
|
3056 | var _this2 = this;
|
3057 |
|
3058 | if (this.stickyItems.length <= 0) {
|
3059 | return;
|
3060 | }
|
3061 |
|
3062 | var scrollTop = scrollTopFor(this.container);
|
3063 | var containerTop = getRectForNode(this.container).top + this.topBarOffset;
|
3064 | this.stickyItems.forEach(function (stickyItem) {
|
3065 | var handlePositioning = stickyItem.handlePositioning;
|
3066 |
|
3067 | var _this2$evaluateSticky = _this2.evaluateStickyItem(stickyItem, scrollTop, containerTop),
|
3068 | sticky = _this2$evaluateSticky.sticky,
|
3069 | top = _this2$evaluateSticky.top,
|
3070 | left = _this2$evaluateSticky.left,
|
3071 | width = _this2$evaluateSticky.width;
|
3072 |
|
3073 | _this2.updateStuckItems(stickyItem, sticky);
|
3074 |
|
3075 | handlePositioning(sticky, top, left, width);
|
3076 | });
|
3077 | }
|
3078 | }, {
|
3079 | key: "evaluateStickyItem",
|
3080 | value: function evaluateStickyItem(stickyItem, scrollTop, containerTop) {
|
3081 | var stickyNode = stickyItem.stickyNode,
|
3082 | placeHolderNode = stickyItem.placeHolderNode,
|
3083 | boundingElement = stickyItem.boundingElement,
|
3084 | offset = stickyItem.offset,
|
3085 | disableWhenStacked = stickyItem.disableWhenStacked;
|
3086 |
|
3087 | if (disableWhenStacked && stackedContent().matches) {
|
3088 | return {
|
3089 | sticky: false,
|
3090 | top: 0,
|
3091 | left: 0,
|
3092 | width: 'auto'
|
3093 | };
|
3094 | }
|
3095 |
|
3096 | var stickyOffset = offset ? this.getOffset(stickyNode) + parseInt(tokens.spacingLoose, 10) : this.getOffset(stickyNode);
|
3097 | var scrollPosition = scrollTop + stickyOffset;
|
3098 | var placeHolderNodeCurrentTop = placeHolderNode.getBoundingClientRect().top - containerTop + scrollTop;
|
3099 | var top = containerTop + stickyOffset;
|
3100 | var width = placeHolderNode.getBoundingClientRect().width;
|
3101 | var left = placeHolderNode.getBoundingClientRect().left;
|
3102 | var sticky;
|
3103 |
|
3104 | if (boundingElement == null) {
|
3105 | sticky = scrollPosition >= placeHolderNodeCurrentTop;
|
3106 | } else {
|
3107 | var stickyItemHeight = stickyNode.getBoundingClientRect().height;
|
3108 | var stickyItemBottomPosition = boundingElement.getBoundingClientRect().bottom - stickyItemHeight + scrollTop - containerTop;
|
3109 | sticky = scrollPosition >= placeHolderNodeCurrentTop && scrollPosition < stickyItemBottomPosition;
|
3110 | }
|
3111 |
|
3112 | return {
|
3113 | sticky,
|
3114 | top,
|
3115 | left,
|
3116 | width
|
3117 | };
|
3118 | }
|
3119 | }, {
|
3120 | key: "updateStuckItems",
|
3121 | value: function updateStuckItems(item, sticky) {
|
3122 | var stickyNode = item.stickyNode;
|
3123 |
|
3124 | if (sticky && !this.isNodeStuck(stickyNode)) {
|
3125 | this.addStuckItem(item);
|
3126 | } else if (!sticky && this.isNodeStuck(stickyNode)) {
|
3127 | this.removeStuckItem(item);
|
3128 | }
|
3129 | }
|
3130 | }, {
|
3131 | key: "addStuckItem",
|
3132 | value: function addStuckItem(stickyItem) {
|
3133 | this.stuckItems.push(stickyItem);
|
3134 | }
|
3135 | }, {
|
3136 | key: "removeStuckItem",
|
3137 | value: function removeStuckItem(stickyItem) {
|
3138 | var nodeToRemove = stickyItem.stickyNode;
|
3139 | var nodeIndex = this.stuckItems.findIndex(function (_ref2) {
|
3140 | var stickyNode = _ref2.stickyNode;
|
3141 | return nodeToRemove === stickyNode;
|
3142 | });
|
3143 | this.stuckItems.splice(nodeIndex, 1);
|
3144 | }
|
3145 | }, {
|
3146 | key: "getOffset",
|
3147 | value: function getOffset(node) {
|
3148 | if (this.stuckItems.length === 0) {
|
3149 | return 0;
|
3150 | }
|
3151 |
|
3152 | var offset = 0;
|
3153 | var count = 0;
|
3154 | var stuckNodesLength = this.stuckItems.length;
|
3155 | var nodeRect = getRectForNode(node);
|
3156 |
|
3157 | while (count < stuckNodesLength) {
|
3158 | var stuckNode = this.stuckItems[count].stickyNode;
|
3159 |
|
3160 | if (stuckNode !== node) {
|
3161 | var stuckNodeRect = getRectForNode(stuckNode);
|
3162 |
|
3163 | if (!horizontallyOverlaps(nodeRect, stuckNodeRect)) {
|
3164 | offset += getRectForNode(stuckNode).height;
|
3165 | }
|
3166 | } else {
|
3167 | break;
|
3168 | }
|
3169 |
|
3170 | count++;
|
3171 | }
|
3172 |
|
3173 | return offset;
|
3174 | }
|
3175 | }, {
|
3176 | key: "isNodeStuck",
|
3177 | value: function isNodeStuck(node) {
|
3178 | var nodeFound = this.stuckItems.findIndex(function (_ref3) {
|
3179 | var stickyNode = _ref3.stickyNode;
|
3180 | return node === stickyNode;
|
3181 | });
|
3182 | return nodeFound >= 0;
|
3183 | }
|
3184 | }, {
|
3185 | key: "setTopBarOffset",
|
3186 | value: function setTopBarOffset() {
|
3187 | var topbarElement = this.container.querySelector(":not(".concat(scrollable.selector, ") ").concat(dataPolarisTopBar.selector));
|
3188 | this.topBarOffset = topbarElement ? topbarElement.clientHeight : 0;
|
3189 | }
|
3190 | }]);
|
3191 |
|
3192 | return StickyManager;
|
3193 | }();
|
3194 |
|
3195 | function isDocument(node) {
|
3196 | return node === document;
|
3197 | }
|
3198 |
|
3199 | function scrollTopFor(container) {
|
3200 | return isDocument(container) ? document.body.scrollTop || document.documentElement.scrollTop : container.scrollTop;
|
3201 | }
|
3202 |
|
3203 | function horizontallyOverlaps(rect1, rect2) {
|
3204 | var rect1Left = rect1.left;
|
3205 | var rect1Right = rect1.left + rect1.width;
|
3206 | var rect2Left = rect2.left;
|
3207 | var rect2Right = rect2.left + rect2.width;
|
3208 | return rect2Right < rect1Left || rect1Right < rect2Left;
|
3209 | }
|
3210 |
|
3211 | var UniqueIdFactoryContext = React__default.createContext(undefined);
|
3212 |
|
3213 |
|
3214 |
|
3215 |
|
3216 |
|
3217 |
|
3218 |
|
3219 |
|
3220 |
|
3221 |
|
3222 | function useUniqueId() {
|
3223 | var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
3224 | var overrideId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
3225 | var idFactory = useContext(UniqueIdFactoryContext);
|
3226 |
|
3227 |
|
3228 |
|
3229 | var uniqueIdRef = useRef(null);
|
3230 |
|
3231 | if (!idFactory) {
|
3232 | throw new MissingAppProviderError('No UniqueIdFactory was provided.');
|
3233 | }
|
3234 |
|
3235 |
|
3236 |
|
3237 | if (overrideId) {
|
3238 | return overrideId;
|
3239 | }
|
3240 |
|
3241 |
|
3242 | if (!uniqueIdRef.current) {
|
3243 | uniqueIdRef.current = idFactory.nextId(prefix);
|
3244 | }
|
3245 |
|
3246 | return uniqueIdRef.current;
|
3247 | }
|
3248 |
|
3249 | var UniqueIdFactory =
|
3250 |
|
3251 | function () {
|
3252 | function UniqueIdFactory(idGeneratorFactory) {
|
3253 | _classCallCheck(this, UniqueIdFactory);
|
3254 |
|
3255 | this.idGenerators = {};
|
3256 | this.idGeneratorFactory = idGeneratorFactory;
|
3257 | }
|
3258 |
|
3259 | _createClass(UniqueIdFactory, [{
|
3260 | key: "nextId",
|
3261 | value: function nextId(prefix) {
|
3262 | if (!this.idGenerators[prefix]) {
|
3263 | this.idGenerators[prefix] = this.idGeneratorFactory(prefix);
|
3264 | }
|
3265 |
|
3266 | return this.idGenerators[prefix]();
|
3267 | }
|
3268 | }]);
|
3269 |
|
3270 | return UniqueIdFactory;
|
3271 | }();
|
3272 | function globalIdGeneratorFactory() {
|
3273 | var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
3274 | var index = 1;
|
3275 | return function () {
|
3276 | return "Polaris".concat(prefix).concat(index++);
|
3277 | };
|
3278 | }
|
3279 |
|
3280 | var ScrollableContext = React__default.createContext(undefined);
|
3281 |
|
3282 | function ScrollTo() {
|
3283 | var anchorNode = useRef(null);
|
3284 | var scrollToPosition = useContext(ScrollableContext);
|
3285 | useEffect(function () {
|
3286 | if (!scrollToPosition || !anchorNode.current) {
|
3287 | return;
|
3288 | }
|
3289 |
|
3290 | scrollToPosition(anchorNode.current.offsetTop);
|
3291 | }, [scrollToPosition]);
|
3292 | var id = useUniqueId("ScrollTo");
|
3293 |
|
3294 | return React__default.createElement("a", {
|
3295 | id: id,
|
3296 | ref: anchorNode
|
3297 | });
|
3298 | }
|
3299 |
|
3300 | var styles$6 = {
|
3301 | "Scrollable": "Polaris-Scrollable",
|
3302 | "horizontal": "Polaris-Scrollable--horizontal",
|
3303 | "vertical": "Polaris-Scrollable--vertical",
|
3304 | "hasTopShadow": "Polaris-Scrollable--hasTopShadow",
|
3305 | "hasBottomShadow": "Polaris-Scrollable--hasBottomShadow"
|
3306 | };
|
3307 |
|
3308 | var MAX_SCROLL_DISTANCE = 100;
|
3309 | var DELTA_THRESHOLD = 0.2;
|
3310 | var DELTA_PERCENTAGE = 0.2;
|
3311 | var EVENTS_TO_LOCK = ['scroll', 'touchmove', 'wheel'];
|
3312 | var PREFERS_REDUCED_MOTION = prefersReducedMotion();
|
3313 | var Scrollable =
|
3314 |
|
3315 | function (_React$Component) {
|
3316 | _inherits(Scrollable, _React$Component);
|
3317 |
|
3318 | function Scrollable() {
|
3319 | var _this;
|
3320 |
|
3321 | _classCallCheck(this, Scrollable);
|
3322 |
|
3323 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Scrollable).apply(this, arguments));
|
3324 | _this.state = {
|
3325 | topShadow: false,
|
3326 | bottomShadow: false,
|
3327 | scrollPosition: 0
|
3328 | };
|
3329 | _this.stickyManager = new StickyManager();
|
3330 | _this.handleResize = debounce(function () {
|
3331 | _this.handleScroll();
|
3332 | }, 50, {
|
3333 | trailing: true
|
3334 | });
|
3335 |
|
3336 | _this.setScrollArea = function (scrollArea) {
|
3337 | _this.scrollArea = scrollArea;
|
3338 | };
|
3339 |
|
3340 | _this.handleScroll = function () {
|
3341 | var _assertThisInitialize = _assertThisInitialized(_this),
|
3342 | scrollArea = _assertThisInitialize.scrollArea;
|
3343 |
|
3344 | var _this$props = _this.props,
|
3345 | shadow = _this$props.shadow,
|
3346 | onScrolledToBottom = _this$props.onScrolledToBottom;
|
3347 |
|
3348 | if (scrollArea == null) {
|
3349 | return;
|
3350 | }
|
3351 |
|
3352 | var scrollTop = scrollArea.scrollTop,
|
3353 | clientHeight = scrollArea.clientHeight,
|
3354 | scrollHeight = scrollArea.scrollHeight;
|
3355 | var shouldBottomShadow = Boolean(shadow && !(scrollTop + clientHeight >= scrollHeight));
|
3356 | var shouldTopShadow = Boolean(shadow && scrollTop > 0);
|
3357 | var canScroll = scrollHeight > clientHeight;
|
3358 | var hasScrolledToBottom = scrollHeight - scrollTop === clientHeight;
|
3359 |
|
3360 | if (canScroll && hasScrolledToBottom && onScrolledToBottom) {
|
3361 | onScrolledToBottom();
|
3362 | }
|
3363 |
|
3364 | _this.setState({
|
3365 | topShadow: shouldTopShadow,
|
3366 | bottomShadow: shouldBottomShadow,
|
3367 | scrollPosition: scrollTop
|
3368 | });
|
3369 | };
|
3370 |
|
3371 | _this.scrollHint = function () {
|
3372 | var _assertThisInitialize2 = _assertThisInitialized(_this),
|
3373 | scrollArea = _assertThisInitialize2.scrollArea;
|
3374 |
|
3375 | if (scrollArea == null) {
|
3376 | return;
|
3377 | }
|
3378 |
|
3379 | var clientHeight = scrollArea.clientHeight,
|
3380 | scrollHeight = scrollArea.scrollHeight;
|
3381 |
|
3382 | if (PREFERS_REDUCED_MOTION || _this.state.scrollPosition > 0 || scrollHeight <= clientHeight) {
|
3383 | return;
|
3384 | }
|
3385 |
|
3386 | var scrollDistance = scrollHeight - clientHeight;
|
3387 |
|
3388 | _this.toggleLock();
|
3389 |
|
3390 | _this.setState({
|
3391 | scrollPosition: scrollDistance > MAX_SCROLL_DISTANCE ? MAX_SCROLL_DISTANCE : scrollDistance
|
3392 | }, function () {
|
3393 | window.requestAnimationFrame(_this.scrollStep);
|
3394 | });
|
3395 | };
|
3396 |
|
3397 | _this.scrollStep = function () {
|
3398 | _this.setState(function (_ref) {
|
3399 | var scrollPosition = _ref.scrollPosition;
|
3400 | var delta = scrollPosition * DELTA_PERCENTAGE;
|
3401 | return {
|
3402 | scrollPosition: delta < DELTA_THRESHOLD ? 0 : scrollPosition - delta
|
3403 | };
|
3404 | }, function () {
|
3405 | if (_this.state.scrollPosition > 0) {
|
3406 | window.requestAnimationFrame(_this.scrollStep);
|
3407 | } else {
|
3408 | _this.toggleLock(false);
|
3409 | }
|
3410 | });
|
3411 | };
|
3412 |
|
3413 | _this.scrollToPosition = function (scrollY) {
|
3414 | _this.setState({
|
3415 | scrollPosition: scrollY
|
3416 | });
|
3417 | };
|
3418 |
|
3419 | return _this;
|
3420 | }
|
3421 |
|
3422 | _createClass(Scrollable, [{
|
3423 | key: "componentDidMount",
|
3424 | value: function componentDidMount() {
|
3425 | var _this2 = this;
|
3426 |
|
3427 | if (this.scrollArea == null) {
|
3428 | return;
|
3429 | }
|
3430 |
|
3431 | this.stickyManager.setContainer(this.scrollArea);
|
3432 | addEventListener(this.scrollArea, 'scroll', function () {
|
3433 | window.requestAnimationFrame(_this2.handleScroll);
|
3434 | });
|
3435 | addEventListener(window, 'resize', this.handleResize);
|
3436 | window.requestAnimationFrame(function () {
|
3437 | _this2.handleScroll();
|
3438 |
|
3439 | if (_this2.props.hint) {
|
3440 | _this2.scrollHint();
|
3441 | }
|
3442 | });
|
3443 | }
|
3444 | }, {
|
3445 | key: "componentWillUnmount",
|
3446 | value: function componentWillUnmount() {
|
3447 | if (this.scrollArea == null) {
|
3448 | return;
|
3449 | }
|
3450 |
|
3451 | removeEventListener(this.scrollArea, 'scroll', this.handleScroll);
|
3452 | removeEventListener(window, 'resize', this.handleResize);
|
3453 | this.stickyManager.removeScrollListener();
|
3454 | }
|
3455 | }, {
|
3456 | key: "componentDidUpdate",
|
3457 | value: function componentDidUpdate() {
|
3458 | var scrollPosition = this.state.scrollPosition;
|
3459 |
|
3460 | if (scrollPosition && this.scrollArea && scrollPosition > 0) {
|
3461 | this.scrollArea.scrollTop = scrollPosition;
|
3462 | }
|
3463 | }
|
3464 | }, {
|
3465 | key: "render",
|
3466 | value: function render() {
|
3467 | var _this$state = this.state,
|
3468 | topShadow = _this$state.topShadow,
|
3469 | bottomShadow = _this$state.bottomShadow;
|
3470 |
|
3471 | var _a = this.props,
|
3472 | children = _a.children,
|
3473 | className = _a.className,
|
3474 | horizontal = _a.horizontal,
|
3475 | _a$vertical = _a.vertical,
|
3476 | vertical = _a$vertical === void 0 ? true : _a$vertical,
|
3477 | shadow = _a.shadow,
|
3478 | hint = _a.hint,
|
3479 | onScrolledToBottom = _a.onScrolledToBottom,
|
3480 | rest = __rest(_a, ["children", "className", "horizontal", "vertical", "shadow", "hint", "onScrolledToBottom"]);
|
3481 |
|
3482 | var finalClassName = classNames(className, styles$6.Scrollable, vertical && styles$6.vertical, horizontal && styles$6.horizontal, topShadow && styles$6.hasTopShadow, bottomShadow && styles$6.hasBottomShadow);
|
3483 | return React__default.createElement(ScrollableContext.Provider, {
|
3484 | value: this.scrollToPosition
|
3485 | }, React__default.createElement(StickyManagerContext.Provider, {
|
3486 | value: this.stickyManager
|
3487 | }, React__default.createElement("div", Object.assign({
|
3488 | className: finalClassName
|
3489 | }, scrollable.props, rest, {
|
3490 | ref: this.setScrollArea
|
3491 | }), children)));
|
3492 | }
|
3493 | }, {
|
3494 | key: "toggleLock",
|
3495 | value: function toggleLock() {
|
3496 | var shouldLock = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
3497 | var scrollArea = this.scrollArea;
|
3498 |
|
3499 | if (scrollArea == null) {
|
3500 | return;
|
3501 | }
|
3502 |
|
3503 | EVENTS_TO_LOCK.forEach(function (eventName) {
|
3504 | if (shouldLock) {
|
3505 | addEventListener(scrollArea, eventName, prevent);
|
3506 | } else {
|
3507 | removeEventListener(scrollArea, eventName, prevent);
|
3508 | }
|
3509 | });
|
3510 | }
|
3511 | }], [{
|
3512 | key: "forNode",
|
3513 | value: function forNode(node) {
|
3514 | return closest(node, scrollable.selector) || document;
|
3515 | }
|
3516 | }]);
|
3517 |
|
3518 | return Scrollable;
|
3519 | }(React__default.Component);
|
3520 | Scrollable.ScrollTo = ScrollTo;
|
3521 |
|
3522 | function prevent(evt) {
|
3523 | evt.preventDefault();
|
3524 | }
|
3525 |
|
3526 | function prefersReducedMotion() {
|
3527 | try {
|
3528 | return window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
3529 | } catch (err) {
|
3530 | return false;
|
3531 | }
|
3532 | }
|
3533 |
|
3534 | var styles$7 = {
|
3535 | "Badge": "Polaris-Badge",
|
3536 | "Pip": "Polaris-Badge__Pip",
|
3537 | "sizeSmall": "Polaris-Badge--sizeSmall",
|
3538 | "statusSuccess": "Polaris-Badge--statusSuccess",
|
3539 | "Content": "Polaris-Badge__Content",
|
3540 | "statusInfo": "Polaris-Badge--statusInfo",
|
3541 | "statusAttention": "Polaris-Badge--statusAttention",
|
3542 | "statusWarning": "Polaris-Badge--statusWarning",
|
3543 | "statusNew": "Polaris-Badge--statusNew",
|
3544 | "progressIncomplete": "Polaris-Badge--progressIncomplete",
|
3545 | "progressPartiallyComplete": "Polaris-Badge--progressPartiallyComplete",
|
3546 | "progressComplete": "Polaris-Badge--progressComplete"
|
3547 | };
|
3548 |
|
3549 | var PROGRESS_LABELS = {
|
3550 | incomplete: 'incomplete',
|
3551 | partiallyComplete: 'partiallyComplete',
|
3552 | complete: 'complete'
|
3553 | };
|
3554 | var STATUS_LABELS = {
|
3555 | info: 'info',
|
3556 | success: 'success',
|
3557 | warning: 'warning',
|
3558 | attention: 'attention',
|
3559 | new: 'new'
|
3560 | };
|
3561 | var DEFAULT_SIZE$1 = 'medium';
|
3562 | function Badge(_ref) {
|
3563 | var children = _ref.children,
|
3564 | status = _ref.status,
|
3565 | progress = _ref.progress,
|
3566 | _ref$size = _ref.size,
|
3567 | size = _ref$size === void 0 ? DEFAULT_SIZE$1 : _ref$size;
|
3568 | var i18n = useI18n();
|
3569 | var className = classNames(styles$7.Badge, status && styles$7[variationName('status', status)], progress && styles$7[variationName('progress', progress)], size && size !== DEFAULT_SIZE$1 && styles$7[variationName('size', size)]);
|
3570 | var progressMarkup;
|
3571 |
|
3572 | switch (progress) {
|
3573 | case PROGRESS_LABELS.incomplete:
|
3574 | progressMarkup = i18n.translate('Polaris.Badge.PROGRESS_LABELS.incomplete');
|
3575 | break;
|
3576 |
|
3577 | case PROGRESS_LABELS.partiallyComplete:
|
3578 | progressMarkup = i18n.translate('Polaris.Badge.PROGRESS_LABELS.partiallyComplete');
|
3579 | break;
|
3580 |
|
3581 | case PROGRESS_LABELS.complete:
|
3582 | progressMarkup = i18n.translate('Polaris.Badge.PROGRESS_LABELS.complete');
|
3583 | break;
|
3584 | }
|
3585 |
|
3586 | var pipMarkup = progress ? React__default.createElement("span", {
|
3587 | className: styles$7.Pip
|
3588 | }, React__default.createElement(VisuallyHidden, null, progressMarkup)) : null;
|
3589 | var statusMarkup;
|
3590 |
|
3591 | switch (status) {
|
3592 | case STATUS_LABELS.info:
|
3593 | statusMarkup = i18n.translate('Polaris.Badge.STATUS_LABELS.info');
|
3594 | break;
|
3595 |
|
3596 | case STATUS_LABELS.success:
|
3597 | statusMarkup = i18n.translate('Polaris.Badge.STATUS_LABELS.success');
|
3598 | break;
|
3599 |
|
3600 | case STATUS_LABELS.warning:
|
3601 | statusMarkup = i18n.translate('Polaris.Badge.STATUS_LABELS.warning');
|
3602 | break;
|
3603 |
|
3604 | case STATUS_LABELS.attention:
|
3605 | statusMarkup = i18n.translate('Polaris.Badge.STATUS_LABELS.attention');
|
3606 | break;
|
3607 |
|
3608 | case STATUS_LABELS.new:
|
3609 | statusMarkup = i18n.translate('Polaris.Badge.STATUS_LABELS.new');
|
3610 | break;
|
3611 | }
|
3612 |
|
3613 | var statusLabelMarkup = status ? React__default.createElement(VisuallyHidden, null, statusMarkup) : null;
|
3614 | return React__default.createElement("span", {
|
3615 | className: className
|
3616 | }, statusLabelMarkup, pipMarkup, React__default.createElement("span", {
|
3617 | className: styles$7.Content
|
3618 | }, children));
|
3619 | }
|
3620 |
|
3621 | var styles$8 = {
|
3622 | "variationPositive": "Polaris-TextStyle--variationPositive",
|
3623 | "variationNegative": "Polaris-TextStyle--variationNegative",
|
3624 | "variationCode": "Polaris-TextStyle--variationCode",
|
3625 | "variationStrong": "Polaris-TextStyle--variationStrong",
|
3626 | "variationSubdued": "Polaris-TextStyle--variationSubdued"
|
3627 | };
|
3628 |
|
3629 | var VariationValue;
|
3630 |
|
3631 | (function (VariationValue) {
|
3632 | VariationValue["Positive"] = "positive";
|
3633 | VariationValue["Negative"] = "negative";
|
3634 | VariationValue["Strong"] = "strong";
|
3635 | VariationValue["Subdued"] = "subdued";
|
3636 | VariationValue["Code"] = "code";
|
3637 | })(VariationValue || (VariationValue = {}));
|
3638 |
|
3639 | function TextStyle(_ref) {
|
3640 | var variation = _ref.variation,
|
3641 | children = _ref.children;
|
3642 | var className = classNames(variation && styles$8[variationName('variation', variation)], variation === VariationValue.Code && styles$8.code);
|
3643 | var Element = variationElement(variation);
|
3644 | return React__default.createElement(Element, {
|
3645 | className: className
|
3646 | }, children);
|
3647 | }
|
3648 |
|
3649 | function variationElement(variation) {
|
3650 | return variation === VariationValue.Code ? 'code' : 'span';
|
3651 | }
|
3652 |
|
3653 | var styles$9 = {
|
3654 | "ActionList": "Polaris-ActionList",
|
3655 | "globalTheming": "Polaris-ActionList--globalTheming",
|
3656 | "Section-withoutTitle": "Polaris-ActionList__Section--withoutTitle",
|
3657 | "Actions": "Polaris-ActionList__Actions",
|
3658 | "Section": "Polaris-ActionList__Section",
|
3659 | "Title": "Polaris-ActionList__Title",
|
3660 | "Item": "Polaris-ActionList__Item",
|
3661 | "active": "Polaris-ActionList--active",
|
3662 | "destructive": "Polaris-ActionList--destructive",
|
3663 | "disabled": "Polaris-ActionList--disabled",
|
3664 | "Image": "Polaris-ActionList__Image",
|
3665 | "Content": "Polaris-ActionList__Content",
|
3666 | "Text": "Polaris-ActionList__Text",
|
3667 | "BadgeWrapper": "Polaris-ActionList__BadgeWrapper"
|
3668 | };
|
3669 |
|
3670 | function Item$1(_ref) {
|
3671 | var id = _ref.id,
|
3672 | badge = _ref.badge,
|
3673 | content = _ref.content,
|
3674 | accessibilityLabel = _ref.accessibilityLabel,
|
3675 | helpText = _ref.helpText,
|
3676 | url = _ref.url,
|
3677 | onAction = _ref.onAction,
|
3678 | icon = _ref.icon,
|
3679 | image = _ref.image,
|
3680 | disabled = _ref.disabled,
|
3681 | external = _ref.external,
|
3682 | destructive = _ref.destructive,
|
3683 | ellipsis = _ref.ellipsis,
|
3684 | active = _ref.active,
|
3685 | role = _ref.role;
|
3686 |
|
3687 | var _useFeatures = useFeatures(),
|
3688 | _useFeatures$unstable = _useFeatures.unstableGlobalTheming,
|
3689 | unstableGlobalTheming = _useFeatures$unstable === void 0 ? false : _useFeatures$unstable;
|
3690 |
|
3691 | var className = classNames(styles$9.Item, disabled && styles$9.disabled, destructive && styles$9.destructive, active && styles$9.active, unstableGlobalTheming && styles$9.globalTheming);
|
3692 | var imageElement = null;
|
3693 |
|
3694 | if (icon) {
|
3695 | imageElement = React__default.createElement("div", {
|
3696 | className: styles$9.Image
|
3697 | }, React__default.createElement(Icon, {
|
3698 | source: icon
|
3699 | }));
|
3700 | } else if (image) {
|
3701 | imageElement = React__default.createElement("div", {
|
3702 | role: "presentation",
|
3703 | className: styles$9.Image,
|
3704 | style: {
|
3705 | backgroundImage: "url(".concat(image)
|
3706 | }
|
3707 | });
|
3708 | }
|
3709 |
|
3710 | var contentText = ellipsis && content ? "".concat(content, "\u2026") : content;
|
3711 | var contentMarkup = helpText ? React__default.createElement("div", null, React__default.createElement("div", null, contentText), React__default.createElement(TextStyle, {
|
3712 | variation: "subdued"
|
3713 | }, helpText)) : contentText;
|
3714 | var badgeMarkup = badge && React__default.createElement("span", {
|
3715 | className: styles$9.BadgeWrapper
|
3716 | }, React__default.createElement(Badge, {
|
3717 | status: badge.status
|
3718 | }, badge.content));
|
3719 | var textMarkup = imageElement ? React__default.createElement("div", {
|
3720 | className: styles$9.Text
|
3721 | }, contentMarkup) : contentMarkup;
|
3722 | var contentElement = React__default.createElement("div", {
|
3723 | className: styles$9.Content
|
3724 | }, imageElement, textMarkup, badgeMarkup);
|
3725 | var scrollMarkup = active ? React__default.createElement(Scrollable.ScrollTo, null) : null;
|
3726 | var control = url ? React__default.createElement(UnstyledLink, {
|
3727 | id: id,
|
3728 | url: url,
|
3729 | className: className,
|
3730 | external: external,
|
3731 | "aria-label": accessibilityLabel,
|
3732 | onClick: onAction
|
3733 | }, contentElement) : React__default.createElement("button", {
|
3734 | id: id,
|
3735 | type: "button",
|
3736 | className: className,
|
3737 | disabled: disabled,
|
3738 | "aria-label": accessibilityLabel,
|
3739 | onClick: onAction
|
3740 | }, contentElement);
|
3741 | return React__default.createElement("li", {
|
3742 | role: role,
|
3743 | "aria-selected": active
|
3744 | }, scrollMarkup, control);
|
3745 | }
|
3746 |
|
3747 | function Section(_ref) {
|
3748 | var section = _ref.section,
|
3749 | hasMultipleSections = _ref.hasMultipleSections,
|
3750 | actionRole = _ref.actionRole,
|
3751 | onActionAnyItem = _ref.onActionAnyItem;
|
3752 |
|
3753 | var handleAction = function handleAction(itemOnAction) {
|
3754 | return function () {
|
3755 | if (itemOnAction) {
|
3756 | itemOnAction();
|
3757 | }
|
3758 |
|
3759 | if (onActionAnyItem) {
|
3760 | onActionAnyItem();
|
3761 | }
|
3762 | };
|
3763 | };
|
3764 |
|
3765 | var actionMarkup = section.items.map(function (_a, index) {
|
3766 | var content = _a.content,
|
3767 | helpText = _a.helpText,
|
3768 | onAction = _a.onAction,
|
3769 | item = __rest(_a, ["content", "helpText", "onAction"]);
|
3770 |
|
3771 | return React__default.createElement(Item$1, Object.assign({
|
3772 | key: "".concat(content, "-").concat(index),
|
3773 | content: content,
|
3774 | helpText: helpText,
|
3775 | role: actionRole,
|
3776 | onAction: handleAction(onAction)
|
3777 | }, item));
|
3778 | });
|
3779 | var className = section.title ? undefined : styles$9['Section-withoutTitle'];
|
3780 | var titleMarkup = section.title ? React__default.createElement("p", {
|
3781 | className: styles$9.Title
|
3782 | }, section.title) : null;
|
3783 | var sectionRole = actionRole === 'option' ? 'presentation' : undefined;
|
3784 | var sectionMarkup = React__default.createElement("div", {
|
3785 | className: className
|
3786 | }, titleMarkup, React__default.createElement("ul", {
|
3787 | className: styles$9.Actions,
|
3788 | role: sectionRole
|
3789 | }, actionMarkup));
|
3790 | return hasMultipleSections ? React__default.createElement("li", {
|
3791 | className: styles$9.Section
|
3792 | }, sectionMarkup) : sectionMarkup;
|
3793 | }
|
3794 |
|
3795 | function ActionList(_ref) {
|
3796 | var items = _ref.items,
|
3797 | _ref$sections = _ref.sections,
|
3798 | sections = _ref$sections === void 0 ? [] : _ref$sections,
|
3799 | actionRole = _ref.actionRole,
|
3800 | onActionAnyItem = _ref.onActionAnyItem;
|
3801 | var finalSections = [];
|
3802 |
|
3803 | if (items) {
|
3804 | finalSections = [{
|
3805 | items
|
3806 | }].concat(_toConsumableArray(sections));
|
3807 | } else if (sections) {
|
3808 | finalSections = sections;
|
3809 | }
|
3810 |
|
3811 | var _useFeatures = useFeatures(),
|
3812 | _useFeatures$unstable = _useFeatures.unstableGlobalTheming,
|
3813 | unstableGlobalTheming = _useFeatures$unstable === void 0 ? false : _useFeatures$unstable;
|
3814 |
|
3815 | var className = classNames(styles$9.ActionList, unstableGlobalTheming && styles$9.globalTheming);
|
3816 | var hasMultipleSections = finalSections.length > 1;
|
3817 |
|
3818 |
|
3819 | var Element = hasMultipleSections ? 'ul' : 'div';
|
3820 | var sectionMarkup = finalSections.map(function (section, index) {
|
3821 | return section.items.length > 0 ? React__default.createElement(Section, {
|
3822 | key: section.title || index,
|
3823 | section: section,
|
3824 | hasMultipleSections: hasMultipleSections,
|
3825 | actionRole: actionRole,
|
3826 | onActionAnyItem: onActionAnyItem
|
3827 | }) : null;
|
3828 | });
|
3829 | return React__default.createElement(Element, {
|
3830 | className: className
|
3831 | }, sectionMarkup);
|
3832 | }
|
3833 |
|
3834 | var getUniqueID = createUniqueIDFactory('portal-');
|
3835 | var Portal =
|
3836 |
|
3837 | function (_React$PureComponent) {
|
3838 | _inherits(Portal, _React$PureComponent);
|
3839 |
|
3840 | function Portal() {
|
3841 | var _this;
|
3842 |
|
3843 | _classCallCheck(this, Portal);
|
3844 |
|
3845 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Portal).apply(this, arguments));
|
3846 | _this.state = {
|
3847 | isMounted: false
|
3848 | };
|
3849 | _this.portalId = _this.props.idPrefix !== '' ? "".concat(_this.props.idPrefix, "-").concat(getUniqueID()) : getUniqueID();
|
3850 | return _this;
|
3851 | }
|
3852 |
|
3853 | _createClass(Portal, [{
|
3854 | key: "componentDidMount",
|
3855 | value: function componentDidMount() {
|
3856 | this.portalNode = document.createElement('div');
|
3857 | this.portalNode.setAttribute(portal.props[0], this.portalId);
|
3858 |
|
3859 | if (this.context != null) {
|
3860 | var UNSTABLE_cssCustomProperties = this.context.UNSTABLE_cssCustomProperties;
|
3861 |
|
3862 | if (UNSTABLE_cssCustomProperties != null) {
|
3863 | this.portalNode.setAttribute('style', UNSTABLE_cssCustomProperties);
|
3864 | } else {
|
3865 | this.portalNode.removeAttribute('style');
|
3866 | }
|
3867 | }
|
3868 |
|
3869 | document.body.appendChild(this.portalNode);
|
3870 | this.setState({
|
3871 | isMounted: true
|
3872 | });
|
3873 | }
|
3874 | }, {
|
3875 | key: "componentDidUpdate",
|
3876 | value: function componentDidUpdate(_, prevState) {
|
3877 | var _this$props$onPortalC = this.props.onPortalCreated,
|
3878 | onPortalCreated = _this$props$onPortalC === void 0 ? noop$2 : _this$props$onPortalC;
|
3879 |
|
3880 | if (this.context != null) {
|
3881 | var UNSTABLE_cssCustomProperties = this.context.UNSTABLE_cssCustomProperties;
|
3882 |
|
3883 | if (UNSTABLE_cssCustomProperties != null) {
|
3884 | this.portalNode.setAttribute('style', UNSTABLE_cssCustomProperties);
|
3885 | } else {
|
3886 | this.portalNode.removeAttribute('style');
|
3887 | }
|
3888 | }
|
3889 |
|
3890 | if (!prevState.isMounted && this.state.isMounted) {
|
3891 | onPortalCreated();
|
3892 | }
|
3893 | }
|
3894 | }, {
|
3895 | key: "componentWillUnmount",
|
3896 | value: function componentWillUnmount() {
|
3897 | document.body.removeChild(this.portalNode);
|
3898 | }
|
3899 | }, {
|
3900 | key: "render",
|
3901 | value: function render() {
|
3902 | return this.state.isMounted ? createPortal(this.props.children, this.portalNode) : null;
|
3903 | }
|
3904 | }]);
|
3905 |
|
3906 | return Portal;
|
3907 | }(React__default.PureComponent);
|
3908 | Portal.defaultProps = {
|
3909 | idPrefix: ''
|
3910 | };
|
3911 | Portal.contextType = ThemeContext;
|
3912 |
|
3913 | function noop$2() {}
|
3914 |
|
3915 | var styles$a = {
|
3916 | "Popover": "Polaris-Popover",
|
3917 | "PopoverOverlay": "Polaris-Popover__PopoverOverlay",
|
3918 | "PopoverOverlay-entering": "Polaris-Popover__PopoverOverlay--entering",
|
3919 | "PopoverOverlay-open": "Polaris-Popover__PopoverOverlay--open",
|
3920 | "PopoverOverlay-exiting": "Polaris-Popover__PopoverOverlay--exiting",
|
3921 | "measuring": "Polaris-Popover--measuring",
|
3922 | "fullWidth": "Polaris-Popover--fullWidth",
|
3923 | "Content": "Polaris-Popover__Content",
|
3924 | "positionedAbove": "Polaris-Popover--positionedAbove",
|
3925 | "Wrapper": "Polaris-Popover__Wrapper",
|
3926 | "Content-fullHeight": "Polaris-Popover__Content--fullHeight",
|
3927 | "Content-fluidContent": "Polaris-Popover__Content--fluidContent",
|
3928 | "Pane": "Polaris-Popover__Pane",
|
3929 | "Pane-fixed": "Polaris-Popover__Pane--fixed",
|
3930 | "Section": "Polaris-Popover__Section",
|
3931 | "FocusTracker": "Polaris-Popover__FocusTracker"
|
3932 | };
|
3933 |
|
3934 | function Section$1(_ref) {
|
3935 | var children = _ref.children;
|
3936 | return React__default.createElement("div", {
|
3937 | className: styles$a.Section
|
3938 | }, children);
|
3939 | }
|
3940 |
|
3941 | function Pane(_ref) {
|
3942 | var fixed = _ref.fixed,
|
3943 | sectioned = _ref.sectioned,
|
3944 | children = _ref.children,
|
3945 | onScrolledToBottom = _ref.onScrolledToBottom;
|
3946 | var className = classNames(styles$a.Pane, fixed && styles$a['Pane-fixed']);
|
3947 | var content = sectioned ? wrapWithComponent(children, Section$1, {}) : children;
|
3948 | return fixed ? React__default.createElement("div", {
|
3949 | className: className
|
3950 | }, content) : React__default.createElement(Scrollable, {
|
3951 | hint: true,
|
3952 | shadow: true,
|
3953 | className: className,
|
3954 | onScrolledToBottom: onScrolledToBottom
|
3955 | }, content);
|
3956 | }
|
3957 |
|
3958 | var EventListener =
|
3959 |
|
3960 | function (_React$PureComponent) {
|
3961 | _inherits(EventListener, _React$PureComponent);
|
3962 |
|
3963 | function EventListener() {
|
3964 | _classCallCheck(this, EventListener);
|
3965 |
|
3966 | return _possibleConstructorReturn(this, _getPrototypeOf(EventListener).apply(this, arguments));
|
3967 | }
|
3968 |
|
3969 | _createClass(EventListener, [{
|
3970 | key: "componentDidMount",
|
3971 | value: function componentDidMount() {
|
3972 | this.attachListener();
|
3973 | }
|
3974 | }, {
|
3975 | key: "componentDidUpdate",
|
3976 | value: function componentDidUpdate(_a) {
|
3977 | var passive = _a.passive,
|
3978 | detachProps = __rest(_a, ["passive"]);
|
3979 |
|
3980 | this.detachListener(detachProps);
|
3981 | this.attachListener();
|
3982 | }
|
3983 | }, {
|
3984 | key: "componentWillUnmount",
|
3985 | value: function componentWillUnmount() {
|
3986 | this.detachListener();
|
3987 | }
|
3988 | }, {
|
3989 | key: "render",
|
3990 | value: function render() {
|
3991 | return null;
|
3992 | }
|
3993 | }, {
|
3994 | key: "attachListener",
|
3995 | value: function attachListener() {
|
3996 | var _this$props = this.props,
|
3997 | event = _this$props.event,
|
3998 | handler = _this$props.handler,
|
3999 | capture = _this$props.capture,
|
4000 | passive = _this$props.passive;
|
4001 | addEventListener(window, event, handler, {
|
4002 | capture,
|
4003 | passive
|
4004 | });
|
4005 | }
|
4006 | }, {
|
4007 | key: "detachListener",
|
4008 | value: function detachListener(prevProps) {
|
4009 | var _ref = prevProps || this.props,
|
4010 | event = _ref.event,
|
4011 | handler = _ref.handler,
|
4012 | capture = _ref.capture;
|
4013 |
|
4014 | removeEventListener(window, event, handler, capture);
|
4015 | }
|
4016 | }]);
|
4017 |
|
4018 | return EventListener;
|
4019 | }(React__default.PureComponent);
|
4020 |
|
4021 | var KeypressListener =
|
4022 |
|
4023 | function (_React$Component) {
|
4024 | _inherits(KeypressListener, _React$Component);
|
4025 |
|
4026 | function KeypressListener() {
|
4027 | var _this;
|
4028 |
|
4029 | _classCallCheck(this, KeypressListener);
|
4030 |
|
4031 | _this = _possibleConstructorReturn(this, _getPrototypeOf(KeypressListener).apply(this, arguments));
|
4032 |
|
4033 | _this.handleKeyEvent = function (event) {
|
4034 | var _this$props = _this.props,
|
4035 | keyCode = _this$props.keyCode,
|
4036 | handler = _this$props.handler;
|
4037 |
|
4038 | if (event.keyCode === keyCode) {
|
4039 | handler(event);
|
4040 | }
|
4041 | };
|
4042 |
|
4043 | return _this;
|
4044 | }
|
4045 |
|
4046 | _createClass(KeypressListener, [{
|
4047 | key: "componentDidMount",
|
4048 | value: function componentDidMount() {
|
4049 | addEventListener(document, 'keyup', this.handleKeyEvent);
|
4050 | }
|
4051 | }, {
|
4052 | key: "componentWillUnmount",
|
4053 | value: function componentWillUnmount() {
|
4054 | removeEventListener(document, 'keyup', this.handleKeyEvent);
|
4055 | }
|
4056 | }, {
|
4057 | key: "render",
|
4058 | value: function render() {
|
4059 | return null;
|
4060 | }
|
4061 | }]);
|
4062 |
|
4063 | return KeypressListener;
|
4064 | }(React__default.Component);
|
4065 |
|
4066 | function calculateVerticalPosition(activatorRect, overlayRect, overlayMargins, scrollableContainerRect, containerRect, preferredPosition, fixed) {
|
4067 | var activatorTop = activatorRect.top;
|
4068 | var activatorBottom = activatorTop + activatorRect.height;
|
4069 | var spaceAbove = activatorRect.top;
|
4070 | var spaceBelow = containerRect.height - activatorRect.top - activatorRect.height;
|
4071 | var desiredHeight = overlayRect.height;
|
4072 | var verticalMargins = overlayMargins.activator + overlayMargins.container;
|
4073 | var minimumSpaceToScroll = overlayMargins.container;
|
4074 | var distanceToTopScroll = activatorRect.top - Math.max(scrollableContainerRect.top, 0);
|
4075 | var distanceToBottomScroll = containerRect.top + Math.min(containerRect.height, scrollableContainerRect.top + scrollableContainerRect.height) - (activatorRect.top + activatorRect.height);
|
4076 | var enoughSpaceFromTopScroll = distanceToTopScroll >= minimumSpaceToScroll;
|
4077 | var enoughSpaceFromBottomScroll = distanceToBottomScroll >= minimumSpaceToScroll;
|
4078 | var heightIfBelow = Math.min(spaceBelow, desiredHeight);
|
4079 | var heightIfAbove = Math.min(spaceAbove, desiredHeight);
|
4080 | var containerRectTop = fixed ? 0 : containerRect.top;
|
4081 | var positionIfAbove = {
|
4082 | height: heightIfAbove - verticalMargins,
|
4083 | top: activatorTop + containerRectTop - heightIfAbove,
|
4084 | positioning: 'above'
|
4085 | };
|
4086 | var positionIfBelow = {
|
4087 | height: heightIfBelow - verticalMargins,
|
4088 | top: activatorBottom + containerRectTop,
|
4089 | positioning: 'below'
|
4090 | };
|
4091 |
|
4092 | if (preferredPosition === 'above') {
|
4093 | return (enoughSpaceFromTopScroll || distanceToTopScroll >= distanceToBottomScroll && !enoughSpaceFromBottomScroll) && (spaceAbove > desiredHeight || spaceAbove > spaceBelow) ? positionIfAbove : positionIfBelow;
|
4094 | }
|
4095 |
|
4096 | if (preferredPosition === 'below') {
|
4097 | return (enoughSpaceFromBottomScroll || distanceToBottomScroll >= distanceToTopScroll && !enoughSpaceFromTopScroll) && (spaceBelow > desiredHeight || spaceBelow > spaceAbove) ? positionIfBelow : positionIfAbove;
|
4098 | }
|
4099 |
|
4100 | if (enoughSpaceFromTopScroll && enoughSpaceFromBottomScroll) {
|
4101 | return spaceAbove > spaceBelow ? positionIfAbove : positionIfBelow;
|
4102 | }
|
4103 |
|
4104 | return distanceToTopScroll > minimumSpaceToScroll ? positionIfAbove : positionIfBelow;
|
4105 | }
|
4106 | function calculateHorizontalPosition(activatorRect, overlayRect, containerRect, overlayMargins, preferredAlignment) {
|
4107 | var maximum = containerRect.width - overlayRect.width;
|
4108 |
|
4109 | if (preferredAlignment === 'left') {
|
4110 | return Math.min(maximum, Math.max(0, activatorRect.left - overlayMargins.horizontal));
|
4111 | } else if (preferredAlignment === 'right') {
|
4112 | var activatorRight = activatorRect.left + activatorRect.width;
|
4113 | return Math.min(maximum, Math.max(0, activatorRight - overlayRect.width + overlayMargins.horizontal));
|
4114 | }
|
4115 |
|
4116 | return Math.min(maximum, Math.max(0, activatorRect.center.x - overlayRect.width / 2));
|
4117 | }
|
4118 | function rectIsOutsideOfRect(inner, outer) {
|
4119 | var center = inner.center;
|
4120 | return center.y < outer.top || center.y > outer.top + outer.height;
|
4121 | }
|
4122 |
|
4123 | var styles$b = {
|
4124 | "PositionedOverlay": "Polaris-PositionedOverlay",
|
4125 | "fixed": "Polaris-PositionedOverlay--fixed",
|
4126 | "calculating": "Polaris-PositionedOverlay--calculating"
|
4127 | };
|
4128 |
|
4129 | var OBSERVER_CONFIG = {
|
4130 | childList: true,
|
4131 | subtree: true
|
4132 | };
|
4133 | var PositionedOverlay =
|
4134 |
|
4135 | function (_React$PureComponent) {
|
4136 | _inherits(PositionedOverlay, _React$PureComponent);
|
4137 |
|
4138 | function PositionedOverlay(props) {
|
4139 | var _this;
|
4140 |
|
4141 | _classCallCheck(this, PositionedOverlay);
|
4142 |
|
4143 | _this = _possibleConstructorReturn(this, _getPrototypeOf(PositionedOverlay).call(this, props));
|
4144 | _this.state = {
|
4145 | measuring: true,
|
4146 | activatorRect: getRectForNode(_this.props.activator),
|
4147 | left: 0,
|
4148 | top: 0,
|
4149 | height: 0,
|
4150 | width: null,
|
4151 | positioning: 'below',
|
4152 | zIndex: null,
|
4153 | outsideScrollableContainer: false,
|
4154 | lockPosition: false
|
4155 | };
|
4156 | _this.overlay = null;
|
4157 | _this.scrollableContainer = null;
|
4158 |
|
4159 | _this.overlayDetails = function () {
|
4160 | var _this$state = _this.state,
|
4161 | measuring = _this$state.measuring,
|
4162 | left = _this$state.left,
|
4163 | positioning = _this$state.positioning,
|
4164 | height = _this$state.height,
|
4165 | activatorRect = _this$state.activatorRect;
|
4166 | return {
|
4167 | measuring,
|
4168 | left,
|
4169 | desiredHeight: height,
|
4170 | positioning,
|
4171 | activatorRect
|
4172 | };
|
4173 | };
|
4174 |
|
4175 | _this.setOverlay = function (node) {
|
4176 | _this.overlay = node;
|
4177 | };
|
4178 |
|
4179 | _this.handleMeasurement = function () {
|
4180 | var _this$state2 = _this.state,
|
4181 | lockPosition = _this$state2.lockPosition,
|
4182 | top = _this$state2.top;
|
4183 |
|
4184 | _this.observer.disconnect();
|
4185 |
|
4186 | _this.setState(function (_ref) {
|
4187 | var left = _ref.left,
|
4188 | top = _ref.top;
|
4189 | return {
|
4190 | left,
|
4191 | top,
|
4192 | height: 0,
|
4193 | positioning: 'below',
|
4194 | measuring: true
|
4195 | };
|
4196 | }, function () {
|
4197 | if (_this.overlay == null || _this.scrollableContainer == null) {
|
4198 | return;
|
4199 | }
|
4200 |
|
4201 | var _this$props = _this.props,
|
4202 | activator = _this$props.activator,
|
4203 | _this$props$preferred = _this$props.preferredPosition,
|
4204 | preferredPosition = _this$props$preferred === void 0 ? 'below' : _this$props$preferred,
|
4205 | _this$props$preferred2 = _this$props.preferredAlignment,
|
4206 | preferredAlignment = _this$props$preferred2 === void 0 ? 'center' : _this$props$preferred2,
|
4207 | onScrollOut = _this$props.onScrollOut,
|
4208 | fullWidth = _this$props.fullWidth,
|
4209 | fixed = _this$props.fixed;
|
4210 | var textFieldActivator = activator.querySelector('input');
|
4211 | var activatorRect = textFieldActivator != null ? getRectForNode(textFieldActivator) : getRectForNode(activator);
|
4212 | var currentOverlayRect = getRectForNode(_this.overlay);
|
4213 | var scrollableElement = isDocument$1(_this.scrollableContainer) ? document.body : _this.scrollableContainer;
|
4214 | var scrollableContainerRect = getRectForNode(scrollableElement);
|
4215 | var overlayRect = fullWidth ? Object.assign({}, currentOverlayRect, {
|
4216 | width: activatorRect.width
|
4217 | }) : currentOverlayRect;
|
4218 |
|
4219 | if (scrollableElement === document.body) {
|
4220 | scrollableContainerRect.height = document.body.scrollHeight;
|
4221 | }
|
4222 |
|
4223 | var overlayMargins = _this.overlay.firstElementChild ? getMarginsForNode(_this.overlay.firstElementChild) : {
|
4224 | activator: 0,
|
4225 | container: 0,
|
4226 | horizontal: 0
|
4227 | };
|
4228 | var containerRect = windowRect();
|
4229 | var zIndexForLayer = getZIndexForLayerFromNode(activator);
|
4230 | var zIndex = zIndexForLayer == null ? zIndexForLayer : zIndexForLayer + 1;
|
4231 | var verticalPosition = calculateVerticalPosition(activatorRect, overlayRect, overlayMargins, scrollableContainerRect, containerRect, preferredPosition, fixed);
|
4232 | var horizontalPosition = calculateHorizontalPosition(activatorRect, overlayRect, containerRect, overlayMargins, preferredAlignment);
|
4233 |
|
4234 | _this.setState({
|
4235 | measuring: false,
|
4236 | activatorRect: getRectForNode(activator),
|
4237 | left: horizontalPosition,
|
4238 | top: lockPosition ? top : verticalPosition.top,
|
4239 | lockPosition: Boolean(fixed),
|
4240 | height: verticalPosition.height || 0,
|
4241 | width: fullWidth ? overlayRect.width : null,
|
4242 | positioning: verticalPosition.positioning,
|
4243 | outsideScrollableContainer: onScrollOut != null && rectIsOutsideOfRect(activatorRect, intersectionWithViewport(scrollableContainerRect)),
|
4244 | zIndex
|
4245 | }, function () {
|
4246 | if (!_this.overlay) return;
|
4247 |
|
4248 | _this.observer.observe(_this.overlay, OBSERVER_CONFIG);
|
4249 | });
|
4250 | });
|
4251 | };
|
4252 |
|
4253 | _this.observer = new MutationObserver(_this.handleMeasurement);
|
4254 | return _this;
|
4255 | }
|
4256 |
|
4257 | _createClass(PositionedOverlay, [{
|
4258 | key: "componentDidMount",
|
4259 | value: function componentDidMount() {
|
4260 | this.scrollableContainer = Scrollable.forNode(this.props.activator);
|
4261 |
|
4262 | if (this.scrollableContainer && !this.props.fixed) {
|
4263 | this.scrollableContainer.addEventListener('scroll', this.handleMeasurement);
|
4264 | }
|
4265 |
|
4266 | this.handleMeasurement();
|
4267 | }
|
4268 | }, {
|
4269 | key: "componentWillUnmount",
|
4270 | value: function componentWillUnmount() {
|
4271 | if (this.scrollableContainer && !this.props.fixed) {
|
4272 | this.scrollableContainer.removeEventListener('scroll', this.handleMeasurement);
|
4273 | }
|
4274 | }
|
4275 | }, {
|
4276 | key: "componentDidUpdate",
|
4277 | value: function componentDidUpdate() {
|
4278 | var _this$state3 = this.state,
|
4279 | outsideScrollableContainer = _this$state3.outsideScrollableContainer,
|
4280 | top = _this$state3.top;
|
4281 | var _this$props2 = this.props,
|
4282 | onScrollOut = _this$props2.onScrollOut,
|
4283 | active = _this$props2.active;
|
4284 |
|
4285 | if (active && onScrollOut != null && top !== 0 && outsideScrollableContainer) {
|
4286 | onScrollOut();
|
4287 | }
|
4288 | }
|
4289 | }, {
|
4290 | key: "render",
|
4291 | value: function render() {
|
4292 | var _this$state4 = this.state,
|
4293 | left = _this$state4.left,
|
4294 | top = _this$state4.top,
|
4295 | zIndex = _this$state4.zIndex,
|
4296 | width = _this$state4.width;
|
4297 | var _this$props3 = this.props,
|
4298 | render = _this$props3.render,
|
4299 | fixed = _this$props3.fixed,
|
4300 | propClassNames = _this$props3.classNames;
|
4301 | var style = {
|
4302 | top: top == null || isNaN(top) ? undefined : top,
|
4303 | left: left == null || isNaN(left) ? undefined : left,
|
4304 | width: width == null || isNaN(width) ? undefined : width,
|
4305 | zIndex: zIndex == null || isNaN(zIndex) ? undefined : zIndex
|
4306 | };
|
4307 | var className = classNames(styles$b.PositionedOverlay, fixed && styles$b.fixed, propClassNames);
|
4308 | return React__default.createElement("div", {
|
4309 | className: className,
|
4310 | style: style,
|
4311 | ref: this.setOverlay
|
4312 | }, React__default.createElement(EventListener, {
|
4313 | event: "resize",
|
4314 | handler: this.handleMeasurement
|
4315 | }), render(this.overlayDetails()));
|
4316 | }
|
4317 | }]);
|
4318 |
|
4319 | return PositionedOverlay;
|
4320 | }(React__default.PureComponent);
|
4321 | function intersectionWithViewport(rect) {
|
4322 | var viewport = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : windowRect();
|
4323 | var top = Math.max(rect.top, 0);
|
4324 | var left = Math.max(rect.left, 0);
|
4325 | var bottom = Math.min(rect.top + rect.height, viewport.height);
|
4326 | var right = Math.min(rect.left + rect.width, viewport.width);
|
4327 | return new Rect({
|
4328 | top,
|
4329 | left,
|
4330 | height: bottom - top,
|
4331 | width: right - left
|
4332 | });
|
4333 | }
|
4334 |
|
4335 | function getMarginsForNode(node) {
|
4336 | var nodeStyles = window.getComputedStyle(node);
|
4337 | return {
|
4338 | activator: parseFloat(nodeStyles.marginTop || ''),
|
4339 | container: parseFloat(nodeStyles.marginBottom || ''),
|
4340 | horizontal: parseFloat(nodeStyles.marginLeft || '')
|
4341 | };
|
4342 | }
|
4343 |
|
4344 | function getZIndexForLayerFromNode(node) {
|
4345 | var layerNode = closest(node, layer.selector) || document.body;
|
4346 | var zIndex = layerNode === document.body ? 'auto' : parseInt(window.getComputedStyle(layerNode).zIndex || '0', 10);
|
4347 | return zIndex === 'auto' || isNaN(zIndex) ? null : zIndex;
|
4348 | }
|
4349 |
|
4350 | function windowRect() {
|
4351 | return new Rect({
|
4352 | top: window.scrollY,
|
4353 | left: window.scrollX,
|
4354 | height: window.innerHeight,
|
4355 | width: window.innerWidth
|
4356 | });
|
4357 | }
|
4358 |
|
4359 | function isDocument$1(node) {
|
4360 | return node === document;
|
4361 | }
|
4362 |
|
4363 | var CloseSource;
|
4364 |
|
4365 | (function (CloseSource) {
|
4366 | CloseSource[CloseSource["Click"] = 0] = "Click";
|
4367 | CloseSource[CloseSource["EscapeKeypress"] = 1] = "EscapeKeypress";
|
4368 | CloseSource[CloseSource["FocusOut"] = 2] = "FocusOut";
|
4369 | CloseSource[CloseSource["ScrollOut"] = 3] = "ScrollOut";
|
4370 | })(CloseSource || (CloseSource = {}));
|
4371 |
|
4372 | var TransitionStatus;
|
4373 |
|
4374 | (function (TransitionStatus) {
|
4375 | TransitionStatus["Entering"] = "entering";
|
4376 | TransitionStatus["Entered"] = "entered";
|
4377 | TransitionStatus["Exiting"] = "exiting";
|
4378 | TransitionStatus["Exited"] = "exited";
|
4379 | })(TransitionStatus || (TransitionStatus = {}));
|
4380 |
|
4381 | var PopoverOverlay =
|
4382 |
|
4383 | function (_React$PureComponent) {
|
4384 | _inherits(PopoverOverlay, _React$PureComponent);
|
4385 |
|
4386 | function PopoverOverlay() {
|
4387 | var _this;
|
4388 |
|
4389 | _classCallCheck(this, PopoverOverlay);
|
4390 |
|
4391 | _this = _possibleConstructorReturn(this, _getPrototypeOf(PopoverOverlay).apply(this, arguments));
|
4392 | _this.state = {
|
4393 | transitionStatus: _this.props.active ? TransitionStatus.Entering : TransitionStatus.Exited
|
4394 | };
|
4395 | _this.contentNode = createRef();
|
4396 |
|
4397 | _this.renderPopover = function (overlayDetails) {
|
4398 | var measuring = overlayDetails.measuring,
|
4399 | desiredHeight = overlayDetails.desiredHeight,
|
4400 | positioning = overlayDetails.positioning;
|
4401 | var _this$props = _this.props,
|
4402 | id = _this$props.id,
|
4403 | children = _this$props.children,
|
4404 | sectioned = _this$props.sectioned,
|
4405 | fullWidth = _this$props.fullWidth,
|
4406 | fullHeight = _this$props.fullHeight,
|
4407 | fluidContent = _this$props.fluidContent;
|
4408 | var className = classNames(styles$a.Popover, positioning === 'above' && styles$a.positionedAbove, fullWidth && styles$a.fullWidth, measuring && styles$a.measuring);
|
4409 | var contentStyles = measuring ? undefined : {
|
4410 | height: desiredHeight
|
4411 | };
|
4412 | var contentClassNames = classNames(styles$a.Content, fullHeight && styles$a['Content-fullHeight'], fluidContent && styles$a['Content-fluidContent']);
|
4413 | var content = React__default.createElement("div", {
|
4414 | id: id,
|
4415 | tabIndex: -1,
|
4416 | className: contentClassNames,
|
4417 | style: contentStyles,
|
4418 | ref: _this.contentNode
|
4419 | }, renderPopoverContent(children, {
|
4420 | sectioned
|
4421 | }));
|
4422 | return React__default.createElement("div", Object.assign({
|
4423 | className: className
|
4424 | }, overlay.props), React__default.createElement(EventListener, {
|
4425 | event: "click",
|
4426 | handler: _this.handleClick
|
4427 | }), React__default.createElement(EventListener, {
|
4428 | event: "touchstart",
|
4429 | handler: _this.handleClick
|
4430 | }), React__default.createElement(KeypressListener, {
|
4431 | keyCode: Key.Escape,
|
4432 | handler: _this.handleEscape
|
4433 | }), React__default.createElement("div", {
|
4434 | className: styles$a.FocusTracker
|
4435 | ,
|
4436 | tabIndex: 0,
|
4437 | onFocus: _this.handleFocusFirstItem
|
4438 | }), React__default.createElement("div", {
|
4439 | className: styles$a.Wrapper
|
4440 | }, content), React__default.createElement("div", {
|
4441 | className: styles$a.FocusTracker
|
4442 | ,
|
4443 | tabIndex: 0,
|
4444 | onFocus: _this.handleFocusLastItem
|
4445 | }));
|
4446 | };
|
4447 |
|
4448 | _this.handleClick = function (event) {
|
4449 | var target = event.target;
|
4450 |
|
4451 | var _assertThisInitialize = _assertThisInitialized(_this),
|
4452 | contentNode = _assertThisInitialize.contentNode,
|
4453 | _assertThisInitialize2 = _assertThisInitialize.props,
|
4454 | activator = _assertThisInitialize2.activator,
|
4455 | onClose = _assertThisInitialize2.onClose;
|
4456 |
|
4457 | var isDescendant = contentNode.current != null && nodeContainsDescendant(contentNode.current, target);
|
4458 | var isActivatorDescendant = nodeContainsDescendant(activator, target);
|
4459 |
|
4460 | if (isDescendant || isActivatorDescendant || _this.state.transitionStatus !== TransitionStatus.Entered) {
|
4461 | return;
|
4462 | }
|
4463 |
|
4464 | onClose(CloseSource.Click);
|
4465 | };
|
4466 |
|
4467 | _this.handleScrollOut = function () {
|
4468 | _this.props.onClose(CloseSource.ScrollOut);
|
4469 | };
|
4470 |
|
4471 | _this.handleEscape = function () {
|
4472 | _this.props.onClose(CloseSource.EscapeKeypress);
|
4473 | };
|
4474 |
|
4475 | _this.handleFocusFirstItem = function () {
|
4476 | _this.props.onClose(CloseSource.FocusOut);
|
4477 | };
|
4478 |
|
4479 | _this.handleFocusLastItem = function () {
|
4480 | _this.props.onClose(CloseSource.FocusOut);
|
4481 | };
|
4482 |
|
4483 | return _this;
|
4484 | }
|
4485 |
|
4486 | _createClass(PopoverOverlay, [{
|
4487 | key: "changeTransitionStatus",
|
4488 | value: function changeTransitionStatus(transitionStatus, cb) {
|
4489 | this.setState({
|
4490 | transitionStatus
|
4491 | }, cb);
|
4492 |
|
4493 | this.contentNode.current && this.contentNode.current.getBoundingClientRect();
|
4494 | }
|
4495 | }, {
|
4496 | key: "componentDidMount",
|
4497 | value: function componentDidMount() {
|
4498 | if (this.props.active) {
|
4499 | this.focusContent();
|
4500 | this.changeTransitionStatus(TransitionStatus.Entered);
|
4501 | }
|
4502 | }
|
4503 | }, {
|
4504 | key: "componentDidUpdate",
|
4505 | value: function componentDidUpdate(oldProps) {
|
4506 | var _this2 = this;
|
4507 |
|
4508 | if (this.props.active && !oldProps.active) {
|
4509 | this.focusContent();
|
4510 | this.changeTransitionStatus(TransitionStatus.Entering, function () {
|
4511 | _this2.clearTransitionTimeout();
|
4512 |
|
4513 | _this2.enteringTimer = window.setTimeout(function () {
|
4514 | _this2.setState({
|
4515 | transitionStatus: TransitionStatus.Entered
|
4516 | });
|
4517 | }, durationBase);
|
4518 | });
|
4519 | }
|
4520 |
|
4521 | if (!this.props.active && oldProps.active) {
|
4522 | this.changeTransitionStatus(TransitionStatus.Exiting, function () {
|
4523 | _this2.clearTransitionTimeout();
|
4524 |
|
4525 | _this2.exitingTimer = window.setTimeout(function () {
|
4526 | _this2.setState({
|
4527 | transitionStatus: TransitionStatus.Exited
|
4528 | });
|
4529 | }, durationBase);
|
4530 | });
|
4531 | }
|
4532 | }
|
4533 | }, {
|
4534 | key: "componentWillUnmount",
|
4535 | value: function componentWillUnmount() {
|
4536 | this.clearTransitionTimeout();
|
4537 | }
|
4538 | }, {
|
4539 | key: "render",
|
4540 | value: function render() {
|
4541 | var _this$props2 = this.props,
|
4542 | active = _this$props2.active,
|
4543 | activator = _this$props2.activator,
|
4544 | fullWidth = _this$props2.fullWidth,
|
4545 | _this$props2$preferre = _this$props2.preferredPosition,
|
4546 | preferredPosition = _this$props2$preferre === void 0 ? 'below' : _this$props2$preferre,
|
4547 | _this$props2$preferre2 = _this$props2.preferredAlignment,
|
4548 | preferredAlignment = _this$props2$preferre2 === void 0 ? 'center' : _this$props2$preferre2,
|
4549 | fixed = _this$props2.fixed;
|
4550 | var transitionStatus = this.state.transitionStatus;
|
4551 | if (transitionStatus === TransitionStatus.Exited && !active) return null;
|
4552 | var className = classNames(styles$a.PopoverOverlay, transitionStatus === TransitionStatus.Entering && styles$a['PopoverOverlay-entering'], transitionStatus === TransitionStatus.Entered && styles$a['PopoverOverlay-open'], transitionStatus === TransitionStatus.Exiting && styles$a['PopoverOverlay-exiting']);
|
4553 | return React__default.createElement(PositionedOverlay, {
|
4554 | fullWidth: fullWidth,
|
4555 | active: active,
|
4556 | activator: activator,
|
4557 | preferredPosition: preferredPosition,
|
4558 | preferredAlignment: preferredAlignment,
|
4559 | render: this.renderPopover.bind(this),
|
4560 | fixed: fixed,
|
4561 | onScrollOut: this.handleScrollOut,
|
4562 | classNames: className
|
4563 | });
|
4564 | }
|
4565 | }, {
|
4566 | key: "clearTransitionTimeout",
|
4567 | value: function clearTransitionTimeout() {
|
4568 | if (this.enteringTimer) {
|
4569 | window.clearTimeout(this.enteringTimer);
|
4570 | }
|
4571 |
|
4572 | if (this.exitingTimer) {
|
4573 | window.clearTimeout(this.exitingTimer);
|
4574 | }
|
4575 | }
|
4576 | }, {
|
4577 | key: "focusContent",
|
4578 | value: function focusContent() {
|
4579 | var _this3 = this;
|
4580 |
|
4581 | if (this.props.preventAutofocus) {
|
4582 | return;
|
4583 | }
|
4584 |
|
4585 | if (this.contentNode == null) {
|
4586 | return;
|
4587 | }
|
4588 |
|
4589 | write(function () {
|
4590 | if (_this3.contentNode.current == null) {
|
4591 | return;
|
4592 | }
|
4593 |
|
4594 | _this3.contentNode.current.focus({
|
4595 | preventScroll: process.env.NODE_ENV === 'development'
|
4596 | });
|
4597 | });
|
4598 | }
|
4599 | }]);
|
4600 |
|
4601 | return PopoverOverlay;
|
4602 | }(React__default.PureComponent);
|
4603 |
|
4604 | function renderPopoverContent(children, props) {
|
4605 | var childrenArray = React__default.Children.toArray(children);
|
4606 |
|
4607 | if (isElementOfType(childrenArray[0], Pane)) {
|
4608 | return childrenArray;
|
4609 | }
|
4610 |
|
4611 | return wrapWithComponent(childrenArray, Pane, props);
|
4612 | }
|
4613 |
|
4614 | function setActivatorAttributes(activator, _ref) {
|
4615 | var id = _ref.id,
|
4616 | active = _ref.active,
|
4617 | ariaHaspopup = _ref.ariaHaspopup;
|
4618 | activator.tabIndex = activator.tabIndex || 0;
|
4619 | activator.setAttribute('aria-controls', id);
|
4620 | activator.setAttribute('aria-owns', id);
|
4621 | activator.setAttribute('aria-expanded', String(active));
|
4622 |
|
4623 | if (ariaHaspopup != null) {
|
4624 | activator.setAttribute('aria-haspopup', String(ariaHaspopup));
|
4625 | }
|
4626 | }
|
4627 |
|
4628 |
|
4629 |
|
4630 |
|
4631 |
|
4632 | var Popover = function Popover(_a) {
|
4633 | var _a$activatorWrapper = _a.activatorWrapper,
|
4634 | activatorWrapper = _a$activatorWrapper === void 0 ? 'div' : _a$activatorWrapper,
|
4635 | children = _a.children,
|
4636 | onClose = _a.onClose,
|
4637 | activator = _a.activator,
|
4638 | active = _a.active,
|
4639 | fixed = _a.fixed,
|
4640 | ariaHaspopup = _a.ariaHaspopup,
|
4641 | rest = __rest(_a, ["activatorWrapper", "children", "onClose", "activator", "active", "fixed", "ariaHaspopup"]);
|
4642 |
|
4643 | var _useState = useState(),
|
4644 | _useState2 = _slicedToArray(_useState, 2),
|
4645 | activatorNode = _useState2[0],
|
4646 | setActivatorNode = _useState2[1];
|
4647 |
|
4648 | var activatorContainer = useRef(null);
|
4649 | var WrapperComponent = activatorWrapper;
|
4650 | var id = useUniqueId('popover');
|
4651 | var setAccessibilityAttributes = useCallback(function () {
|
4652 | if (activatorContainer.current == null) {
|
4653 | return;
|
4654 | }
|
4655 |
|
4656 | var firstFocusable = findFirstFocusableNode(activatorContainer.current);
|
4657 | var focusableActivator = firstFocusable || activatorContainer.current;
|
4658 | setActivatorAttributes(focusableActivator, {
|
4659 | id,
|
4660 | active,
|
4661 | ariaHaspopup
|
4662 | });
|
4663 | }, [active, ariaHaspopup, id]);
|
4664 |
|
4665 | var handleClose = function handleClose(source) {
|
4666 | onClose(source);
|
4667 |
|
4668 | if (activatorContainer.current == null) {
|
4669 | return;
|
4670 | }
|
4671 |
|
4672 | if ((source === CloseSource.FocusOut || source === CloseSource.EscapeKeypress) && activatorNode) {
|
4673 | var focusableActivator = findFirstFocusableNode(activatorNode) || findFirstFocusableNode(activatorContainer.current) || activatorContainer.current;
|
4674 |
|
4675 | if (!focusNextFocusableNode(focusableActivator, isInPortal)) {
|
4676 | focusableActivator.focus();
|
4677 | }
|
4678 | }
|
4679 | };
|
4680 |
|
4681 | useEffect(function () {
|
4682 | if (!activatorNode && activatorContainer.current) {
|
4683 | setActivatorNode(activatorContainer.current.firstElementChild);
|
4684 | } else if (activatorNode && activatorContainer.current && !activatorContainer.current.contains(activatorNode)) {
|
4685 | setActivatorNode(activatorContainer.current.firstElementChild);
|
4686 | }
|
4687 |
|
4688 | setAccessibilityAttributes();
|
4689 | }, [activatorNode, setAccessibilityAttributes]);
|
4690 | useEffect(function () {
|
4691 | if (activatorNode && activatorContainer.current) {
|
4692 | setActivatorNode(activatorContainer.current.firstElementChild);
|
4693 | }
|
4694 |
|
4695 | setAccessibilityAttributes();
|
4696 | }, [activatorNode, setAccessibilityAttributes]);
|
4697 | var portal = activatorNode ? React__default.createElement(Portal, {
|
4698 | idPrefix: "popover"
|
4699 | }, React__default.createElement(PopoverOverlay, Object.assign({
|
4700 | id: id,
|
4701 | activator: activatorNode,
|
4702 | onClose: handleClose,
|
4703 | active: active,
|
4704 | fixed: fixed
|
4705 | }, rest), children)) : null;
|
4706 | return React__default.createElement(WrapperComponent, {
|
4707 | ref: activatorContainer
|
4708 | }, React__default.Children.only(activator), portal);
|
4709 | };
|
4710 |
|
4711 | function isInPortal(element) {
|
4712 | var parentElement = element.parentElement;
|
4713 |
|
4714 | while (parentElement) {
|
4715 | if (parentElement.matches(portal.selector)) return false;
|
4716 | parentElement = parentElement.parentElement;
|
4717 | }
|
4718 |
|
4719 | return true;
|
4720 | }
|
4721 |
|
4722 | Popover.Pane = Pane;
|
4723 | Popover.Section = Section$1;
|
4724 |
|
4725 | var styles$c = {
|
4726 | "Stack": "Polaris-Stack",
|
4727 | "Item": "Polaris-Stack__Item",
|
4728 | "noWrap": "Polaris-Stack--noWrap",
|
4729 | "spacingNone": "Polaris-Stack--spacingNone",
|
4730 | "spacingExtraTight": "Polaris-Stack--spacingExtraTight",
|
4731 | "spacingTight": "Polaris-Stack--spacingTight",
|
4732 | "spacingLoose": "Polaris-Stack--spacingLoose",
|
4733 | "spacingExtraLoose": "Polaris-Stack--spacingExtraLoose",
|
4734 | "distributionLeading": "Polaris-Stack--distributionLeading",
|
4735 | "distributionTrailing": "Polaris-Stack--distributionTrailing",
|
4736 | "distributionCenter": "Polaris-Stack--distributionCenter",
|
4737 | "distributionEqualSpacing": "Polaris-Stack--distributionEqualSpacing",
|
4738 | "distributionFill": "Polaris-Stack--distributionFill",
|
4739 | "distributionFillEvenly": "Polaris-Stack--distributionFillEvenly",
|
4740 | "alignmentLeading": "Polaris-Stack--alignmentLeading",
|
4741 | "alignmentTrailing": "Polaris-Stack--alignmentTrailing",
|
4742 | "alignmentCenter": "Polaris-Stack--alignmentCenter",
|
4743 | "alignmentFill": "Polaris-Stack--alignmentFill",
|
4744 | "alignmentBaseline": "Polaris-Stack--alignmentBaseline",
|
4745 | "vertical": "Polaris-Stack--vertical",
|
4746 | "Item-fill": "Polaris-Stack__Item--fill"
|
4747 | };
|
4748 |
|
4749 | function Item$2(_ref) {
|
4750 | var children = _ref.children,
|
4751 | fill = _ref.fill;
|
4752 | var className = classNames(styles$c.Item, fill && styles$c['Item-fill']);
|
4753 | return React__default.createElement("div", {
|
4754 | className: className
|
4755 | }, children);
|
4756 | }
|
4757 |
|
4758 | var Stack =
|
4759 |
|
4760 | function (_React$PureComponent) {
|
4761 | _inherits(Stack, _React$PureComponent);
|
4762 |
|
4763 | function Stack() {
|
4764 | _classCallCheck(this, Stack);
|
4765 |
|
4766 | return _possibleConstructorReturn(this, _getPrototypeOf(Stack).apply(this, arguments));
|
4767 | }
|
4768 |
|
4769 | _createClass(Stack, [{
|
4770 | key: "render",
|
4771 | value: function render() {
|
4772 | var _this$props = this.props,
|
4773 | children = _this$props.children,
|
4774 | vertical = _this$props.vertical,
|
4775 | spacing = _this$props.spacing,
|
4776 | distribution = _this$props.distribution,
|
4777 | alignment = _this$props.alignment,
|
4778 | wrap = _this$props.wrap;
|
4779 | var className = classNames(styles$c.Stack, vertical && styles$c.vertical, spacing && styles$c[variationName('spacing', spacing)], distribution && styles$c[variationName('distribution', distribution)], alignment && styles$c[variationName('alignment', alignment)], wrap === false && styles$c.noWrap);
|
4780 | var itemMarkup = elementChildren(children).map(function (child, index) {
|
4781 | var props = {
|
4782 | key: index
|
4783 | };
|
4784 | return wrapWithComponent(child, Item$2, props);
|
4785 | });
|
4786 | return React__default.createElement("div", {
|
4787 | className: className
|
4788 | }, itemMarkup);
|
4789 | }
|
4790 | }]);
|
4791 |
|
4792 | return Stack;
|
4793 | }(React__default.PureComponent);
|
4794 | Stack.Item = Item$2;
|
4795 |
|
4796 | var styles$d = {
|
4797 | "Heading": "Polaris-Heading"
|
4798 | };
|
4799 |
|
4800 | function Heading(_ref) {
|
4801 | var _ref$element = _ref.element,
|
4802 | Element = _ref$element === void 0 ? 'h2' : _ref$element,
|
4803 | children = _ref.children;
|
4804 | return React__default.createElement(Element, {
|
4805 | className: styles$d.Heading
|
4806 | }, children);
|
4807 | }
|
4808 |
|
4809 | var styles$e = {
|
4810 | "Card": "Polaris-Card",
|
4811 | "subdued": "Polaris-Card--subdued",
|
4812 | "Header": "Polaris-Card__Header",
|
4813 | "Section": "Polaris-Card__Section",
|
4814 | "Section-fullWidth": "Polaris-Card__Section--fullWidth",
|
4815 | "Section-subdued": "Polaris-Card__Section--subdued",
|
4816 | "SectionHeader": "Polaris-Card__SectionHeader",
|
4817 | "Subsection": "Polaris-Card__Subsection",
|
4818 | "Footer": "Polaris-Card__Footer",
|
4819 | "LeftJustified": "Polaris-Card__LeftJustified"
|
4820 | };
|
4821 |
|
4822 | function Header(_ref) {
|
4823 | var children = _ref.children,
|
4824 | title = _ref.title,
|
4825 | actions = _ref.actions;
|
4826 | var actionMarkup = actions ? React__default.createElement(ButtonGroup, null, buttonsFrom(actions, {
|
4827 | plain: true
|
4828 | })) : null;
|
4829 | var titleMarkup = React__default.isValidElement(title) ? title : React__default.createElement(Heading, null, title);
|
4830 | var headingMarkup = actionMarkup || children ? React__default.createElement(Stack, {
|
4831 | alignment: "baseline"
|
4832 | }, React__default.createElement(Stack.Item, {
|
4833 | fill: true
|
4834 | }, titleMarkup), actionMarkup, children) : titleMarkup;
|
4835 | return React__default.createElement("div", {
|
4836 | className: styles$e.Header
|
4837 | }, headingMarkup);
|
4838 | }
|
4839 |
|
4840 | var styles$f = {
|
4841 | "Subheading": "Polaris-Subheading"
|
4842 | };
|
4843 |
|
4844 | function Subheading(_ref) {
|
4845 | var _ref$element = _ref.element,
|
4846 | Element = _ref$element === void 0 ? 'h3' : _ref$element,
|
4847 | children = _ref.children;
|
4848 | var ariaLabel = typeof children === 'string' ? children : undefined;
|
4849 | return React__default.createElement(Element, {
|
4850 | "aria-label": ariaLabel,
|
4851 | className: styles$f.Subheading
|
4852 | }, children);
|
4853 | }
|
4854 |
|
4855 | function Section$2(_ref) {
|
4856 | var children = _ref.children,
|
4857 | title = _ref.title,
|
4858 | subdued = _ref.subdued,
|
4859 | fullWidth = _ref.fullWidth,
|
4860 | actions = _ref.actions;
|
4861 | var className = classNames(styles$e.Section, subdued && styles$e['Section-subdued'], fullWidth && styles$e['Section-fullWidth']);
|
4862 | var actionMarkup = actions ? React__default.createElement(ButtonGroup, null, buttonsFrom(actions, {
|
4863 | plain: true
|
4864 | })) : null;
|
4865 | var titleMarkup = typeof title === 'string' ? React__default.createElement(Subheading, null, title) : title;
|
4866 | var titleAreaMarkup = titleMarkup || actionMarkup ? React__default.createElement("div", {
|
4867 | className: styles$e.SectionHeader
|
4868 | }, actionMarkup ? React__default.createElement(Stack, {
|
4869 | alignment: "baseline"
|
4870 | }, React__default.createElement(Stack.Item, {
|
4871 | fill: true
|
4872 | }, titleMarkup), actionMarkup) : titleMarkup) : null;
|
4873 | return React__default.createElement("div", {
|
4874 | className: className
|
4875 | }, titleAreaMarkup, children);
|
4876 | }
|
4877 |
|
4878 | function Subsection(_ref) {
|
4879 | var children = _ref.children;
|
4880 | return React__default.createElement("div", {
|
4881 | className: styles$e.Subsection
|
4882 | }, children);
|
4883 | }
|
4884 |
|
4885 |
|
4886 |
|
4887 |
|
4888 |
|
4889 | var Card = function Card(_ref) {
|
4890 | var children = _ref.children,
|
4891 | title = _ref.title,
|
4892 | subdued = _ref.subdued,
|
4893 | sectioned = _ref.sectioned,
|
4894 | actions = _ref.actions,
|
4895 | primaryFooterAction = _ref.primaryFooterAction,
|
4896 | secondaryFooterActions = _ref.secondaryFooterActions,
|
4897 | secondaryFooterActionsDisclosureText = _ref.secondaryFooterActionsDisclosureText,
|
4898 | _ref$footerActionAlig = _ref.footerActionAlignment,
|
4899 | footerActionAlignment = _ref$footerActionAlig === void 0 ? 'right' : _ref$footerActionAlig;
|
4900 | var i18n = useI18n();
|
4901 |
|
4902 | var _useToggle = useToggle(false),
|
4903 | _useToggle2 = _slicedToArray(_useToggle, 2),
|
4904 | secondaryActionsPopoverOpen = _useToggle2[0],
|
4905 | toggleSecondaryActionsPopoverOpen = _useToggle2[1];
|
4906 |
|
4907 | var className = classNames(styles$e.Card, subdued && styles$e.subdued);
|
4908 | var headerMarkup = title || actions ? React__default.createElement(Header, {
|
4909 | actions: actions,
|
4910 | title: title
|
4911 | }) : null;
|
4912 | var content = sectioned ? React__default.createElement(Section$2, null, children) : children;
|
4913 | var primaryFooterActionMarkup = primaryFooterAction ? buttonFrom(primaryFooterAction, {
|
4914 | primary: true
|
4915 | }) : null;
|
4916 | var secondaryFooterActionsMarkup = null;
|
4917 |
|
4918 | if (secondaryFooterActions && secondaryFooterActions.length) {
|
4919 | if (secondaryFooterActions.length === 1) {
|
4920 | secondaryFooterActionsMarkup = buttonFrom(secondaryFooterActions[0]);
|
4921 | } else {
|
4922 | secondaryFooterActionsMarkup = React__default.createElement(React__default.Fragment, null, React__default.createElement(Popover, {
|
4923 | active: secondaryActionsPopoverOpen,
|
4924 | activator: React__default.createElement(Button, {
|
4925 | disclosure: true,
|
4926 | onClick: toggleSecondaryActionsPopoverOpen
|
4927 | }, secondaryFooterActionsDisclosureText || i18n.translate('Polaris.Common.more')),
|
4928 | onClose: toggleSecondaryActionsPopoverOpen
|
4929 | }, React__default.createElement(ActionList, {
|
4930 | items: secondaryFooterActions
|
4931 | })));
|
4932 | }
|
4933 | }
|
4934 |
|
4935 | var footerMarkup = primaryFooterActionMarkup || secondaryFooterActionsMarkup ? React__default.createElement("div", {
|
4936 | className: classNames(styles$e.Footer, footerActionAlignment === 'left' && styles$e.LeftJustified)
|
4937 | }, footerActionAlignment === 'right' ? React__default.createElement(ButtonGroup, null, secondaryFooterActionsMarkup, primaryFooterActionMarkup) : React__default.createElement(ButtonGroup, null, primaryFooterActionMarkup, secondaryFooterActionsMarkup)) : null;
|
4938 | return React__default.createElement(WithinContentContext.Provider, {
|
4939 | value: true
|
4940 | }, React__default.createElement("div", {
|
4941 | className: className
|
4942 | }, headerMarkup, content, footerMarkup));
|
4943 | };
|
4944 | Card.Header = Header;
|
4945 | Card.Section = Section$2;
|
4946 | Card.Subsection = Subsection;
|
4947 |
|
4948 | var styles$g = {
|
4949 | "SettingAction": "Polaris-SettingAction",
|
4950 | "Setting": "Polaris-SettingAction__Setting",
|
4951 | "Action": "Polaris-SettingAction__Action"
|
4952 | };
|
4953 |
|
4954 | function SettingAction(_ref) {
|
4955 | var action = _ref.action,
|
4956 | children = _ref.children;
|
4957 | return React__default.createElement("div", {
|
4958 | className: styles$g.SettingAction
|
4959 | }, React__default.createElement("div", {
|
4960 | className: styles$g.Setting
|
4961 | }, children), React__default.createElement("div", {
|
4962 | className: styles$g.Action
|
4963 | }, action));
|
4964 | }
|
4965 |
|
4966 | var styles$h = {
|
4967 | "TermsOfService": "Polaris-AccountConnection__TermsOfService",
|
4968 | "Content": "Polaris-AccountConnection__Content"
|
4969 | };
|
4970 |
|
4971 | function AccountConnection(_ref) {
|
4972 | var _ref$connected = _ref.connected,
|
4973 | connected = _ref$connected === void 0 ? false : _ref$connected,
|
4974 | action = _ref.action,
|
4975 | avatarUrl = _ref.avatarUrl,
|
4976 | _ref$accountName = _ref.accountName,
|
4977 | accountName = _ref$accountName === void 0 ? '' : _ref$accountName,
|
4978 | title = _ref.title,
|
4979 | details = _ref.details,
|
4980 | termsOfService = _ref.termsOfService;
|
4981 | var initials = accountName ? accountName.split(/\s+/).map(function (name) {
|
4982 | return name[0];
|
4983 | }).join('') : undefined;
|
4984 | var avatarMarkup = connected ? React__default.createElement(Avatar, {
|
4985 | accessibilityLabel: "",
|
4986 | name: accountName,
|
4987 | initials: initials,
|
4988 | source: avatarUrl
|
4989 | }) : null;
|
4990 | var titleMarkup = null;
|
4991 |
|
4992 | if (title) {
|
4993 | titleMarkup = React__default.createElement("div", null, title);
|
4994 | } else if (accountName) {
|
4995 | titleMarkup = React__default.createElement("div", null, accountName);
|
4996 | }
|
4997 |
|
4998 | var detailsMarkup = details ? React__default.createElement("div", null, React__default.createElement(TextStyle, {
|
4999 | variation: "subdued"
|
5000 | }, details)) : null;
|
5001 | var termsOfServiceMarkup = termsOfService ? React__default.createElement("div", {
|
5002 | className: styles$h.TermsOfService
|
5003 | }, termsOfService) : null;
|
5004 | var actionElement = action ? buttonFrom(action, {
|
5005 | primary: !connected
|
5006 | }) : null;
|
5007 | return React__default.createElement(Card, {
|
5008 | sectioned: true
|
5009 | }, React__default.createElement(SettingAction, {
|
5010 | action: actionElement
|
5011 | }, React__default.createElement(Stack, null, avatarMarkup, React__default.createElement(Stack.Item, {
|
5012 | fill: true
|
5013 | }, React__default.createElement("div", {
|
5014 | className: styles$h.Content
|
5015 | }, titleMarkup, detailsMarkup)))), termsOfServiceMarkup);
|
5016 | }
|
5017 |
|
5018 | var styles$i = {
|
5019 | "MenuAction": "Polaris-ActionMenu-MenuAction",
|
5020 | "IconWrapper": "Polaris-ActionMenu-MenuAction__IconWrapper",
|
5021 | "disabled": "Polaris-ActionMenu-MenuAction--disabled",
|
5022 | "ContentWrapper": "Polaris-ActionMenu-MenuAction__ContentWrapper"
|
5023 | };
|
5024 |
|
5025 | function MenuAction(_ref) {
|
5026 | var content = _ref.content,
|
5027 | accessibilityLabel = _ref.accessibilityLabel,
|
5028 | url = _ref.url,
|
5029 | external = _ref.external,
|
5030 | icon = _ref.icon,
|
5031 | disclosure = _ref.disclosure,
|
5032 | disabled = _ref.disabled,
|
5033 | onAction = _ref.onAction;
|
5034 | var iconMarkup = icon && React__default.createElement("span", {
|
5035 | className: styles$i.IconWrapper
|
5036 | }, React__default.createElement(Icon, {
|
5037 | source: icon
|
5038 | }));
|
5039 | var disclosureIconMarkup = disclosure && React__default.createElement("span", {
|
5040 | className: styles$i.IconWrapper
|
5041 | }, React__default.createElement(Icon, {
|
5042 | source: CaretDownMinor
|
5043 | }));
|
5044 | var contentMarkup = iconMarkup || disclosureIconMarkup ? React__default.createElement("span", {
|
5045 | className: styles$i.ContentWrapper
|
5046 | }, iconMarkup, React__default.createElement("span", {
|
5047 | className: styles$i.Content
|
5048 | }, content), disclosureIconMarkup) : content;
|
5049 | var menuActionClassNames = classNames(styles$i.MenuAction, disabled && styles$i.disabled);
|
5050 |
|
5051 | if (url) {
|
5052 | return React__default.createElement(UnstyledLink, {
|
5053 | className: menuActionClassNames,
|
5054 | url: url,
|
5055 | external: external,
|
5056 | "aria-label": accessibilityLabel,
|
5057 | onMouseUp: handleMouseUpByBlurring
|
5058 | }, contentMarkup);
|
5059 | }
|
5060 |
|
5061 | return React__default.createElement("button", {
|
5062 | type: "button",
|
5063 | className: menuActionClassNames,
|
5064 | disabled: disabled,
|
5065 | "aria-label": accessibilityLabel,
|
5066 | onClick: onAction,
|
5067 | onMouseUp: handleMouseUpByBlurring
|
5068 | }, contentMarkup);
|
5069 | }
|
5070 |
|
5071 | var styles$j = {
|
5072 | "Details": "Polaris-ActionMenu-MenuGroup__Details"
|
5073 | };
|
5074 |
|
5075 | var MenuGroup =
|
5076 |
|
5077 | function (_React$Component) {
|
5078 | _inherits(MenuGroup, _React$Component);
|
5079 |
|
5080 | function MenuGroup() {
|
5081 | var _this;
|
5082 |
|
5083 | _classCallCheck(this, MenuGroup);
|
5084 |
|
5085 | _this = _possibleConstructorReturn(this, _getPrototypeOf(MenuGroup).apply(this, arguments));
|
5086 |
|
5087 | _this.handleClose = function () {
|
5088 | var _this$props = _this.props,
|
5089 | title = _this$props.title,
|
5090 | onClose = _this$props.onClose;
|
5091 | onClose(title);
|
5092 | };
|
5093 |
|
5094 | _this.handleOpen = function () {
|
5095 | var _this$props2 = _this.props,
|
5096 | title = _this$props2.title,
|
5097 | onOpen = _this$props2.onOpen;
|
5098 | onOpen(title);
|
5099 | };
|
5100 |
|
5101 | return _this;
|
5102 | }
|
5103 |
|
5104 | _createClass(MenuGroup, [{
|
5105 | key: "render",
|
5106 | value: function render() {
|
5107 | var _this$props3 = this.props,
|
5108 | accessibilityLabel = _this$props3.accessibilityLabel,
|
5109 | active = _this$props3.active,
|
5110 | actions = _this$props3.actions,
|
5111 | details = _this$props3.details,
|
5112 | title = _this$props3.title,
|
5113 | icon = _this$props3.icon;
|
5114 |
|
5115 | if (!actions.length) {
|
5116 | return null;
|
5117 | }
|
5118 |
|
5119 | var popoverActivator = React__default.createElement(MenuAction, {
|
5120 | disclosure: true,
|
5121 | content: title,
|
5122 | icon: icon,
|
5123 | accessibilityLabel: accessibilityLabel,
|
5124 | onAction: this.handleOpen
|
5125 | });
|
5126 | return React__default.createElement(Popover, {
|
5127 | active: Boolean(active),
|
5128 | activator: popoverActivator,
|
5129 | preferredAlignment: "left",
|
5130 | onClose: this.handleClose
|
5131 | }, React__default.createElement(ActionList, {
|
5132 | items: actions,
|
5133 | onActionAnyItem: this.handleClose
|
5134 | }), details && React__default.createElement("div", {
|
5135 | className: styles$j.Details
|
5136 | }, details));
|
5137 | }
|
5138 | }]);
|
5139 |
|
5140 | return MenuGroup;
|
5141 | }(React__default.Component);
|
5142 |
|
5143 | var styles$k = {
|
5144 | "RollupActivator": "Polaris-ActionMenu-RollupActions__RollupActivator"
|
5145 | };
|
5146 |
|
5147 | function RollupActions(_ref) {
|
5148 | var _ref$items = _ref.items,
|
5149 | items = _ref$items === void 0 ? [] : _ref$items,
|
5150 | _ref$sections = _ref.sections,
|
5151 | sections = _ref$sections === void 0 ? [] : _ref$sections;
|
5152 | var i18n = useI18n();
|
5153 |
|
5154 | var _useToggle = useToggle(false),
|
5155 | _useToggle2 = _slicedToArray(_useToggle, 2),
|
5156 | rollupOpen = _useToggle2[0],
|
5157 | toggleRollupOpen = _useToggle2[1];
|
5158 |
|
5159 | if (items.length === 0 && sections.length === 0) {
|
5160 | return null;
|
5161 | }
|
5162 |
|
5163 | var activatorMarkup = React__default.createElement("div", {
|
5164 | className: styles$k.RollupActivator
|
5165 | }, React__default.createElement(Button, {
|
5166 | plain: true,
|
5167 | icon: HorizontalDotsMinor,
|
5168 | accessibilityLabel: i18n.translate('Polaris.ActionMenu.RollupActions.rollupButton'),
|
5169 | onClick: toggleRollupOpen
|
5170 | }));
|
5171 | return React__default.createElement(Popover, {
|
5172 | active: rollupOpen,
|
5173 | activator: activatorMarkup,
|
5174 | preferredAlignment: "right",
|
5175 | onClose: toggleRollupOpen
|
5176 | }, React__default.createElement(ActionList, {
|
5177 | items: items,
|
5178 | sections: sections,
|
5179 | onActionAnyItem: toggleRollupOpen
|
5180 | }));
|
5181 | }
|
5182 |
|
5183 | var styles$l = {
|
5184 | "ActionMenu": "Polaris-ActionMenu",
|
5185 | "rollup": "Polaris-ActionMenu--rollup",
|
5186 | "ActionsLayout": "Polaris-ActionMenu__ActionsLayout"
|
5187 | };
|
5188 |
|
5189 | var ActionMenu =
|
5190 |
|
5191 | function (_React$PureComponent) {
|
5192 | _inherits(ActionMenu, _React$PureComponent);
|
5193 |
|
5194 | function ActionMenu() {
|
5195 | var _this;
|
5196 |
|
5197 | _classCallCheck(this, ActionMenu);
|
5198 |
|
5199 | _this = _possibleConstructorReturn(this, _getPrototypeOf(ActionMenu).apply(this, arguments));
|
5200 | _this.state = {
|
5201 | activeMenuGroup: undefined
|
5202 | };
|
5203 |
|
5204 | _this.renderActions = function () {
|
5205 | var _this$props = _this.props,
|
5206 | _this$props$actions = _this$props.actions,
|
5207 | actions = _this$props$actions === void 0 ? [] : _this$props$actions,
|
5208 | _this$props$groups = _this$props.groups,
|
5209 | groups = _this$props$groups === void 0 ? [] : _this$props$groups;
|
5210 | var activeMenuGroup = _this.state.activeMenuGroup;
|
5211 | var actionsMarkup = actions.length > 0 ? actions.map(function (_a, index) {
|
5212 | var content = _a.content,
|
5213 | action = __rest(_a, ["content"]);
|
5214 |
|
5215 | return React__default.createElement(MenuAction, Object.assign({
|
5216 | key: "MenuAction-".concat(content || index),
|
5217 | content: content
|
5218 | }, action));
|
5219 | }) : null;
|
5220 | var groupsMarkup = hasGroupsWithActions(groups) ? groups.map(function (_a, index) {
|
5221 | var title = _a.title,
|
5222 | rest = __rest(_a, ["title"]);
|
5223 |
|
5224 | return React__default.createElement(MenuGroup, Object.assign({
|
5225 | key: "MenuGroup-".concat(title || index),
|
5226 | title: title,
|
5227 | active: title === activeMenuGroup
|
5228 | }, rest, {
|
5229 | onOpen: _this.handleMenuGroupToggle,
|
5230 | onClose: _this.handleMenuGroupClose
|
5231 | }));
|
5232 | }) : null;
|
5233 | return actionsMarkup || groupsMarkup ? React__default.createElement("div", {
|
5234 | className: styles$l.ActionsLayout
|
5235 | }, actionsMarkup, groupsMarkup) : null;
|
5236 | };
|
5237 |
|
5238 | _this.handleMenuGroupToggle = function (group) {
|
5239 | _this.setState(function (_ref) {
|
5240 | var activeMenuGroup = _ref.activeMenuGroup;
|
5241 | return {
|
5242 | activeMenuGroup: activeMenuGroup ? undefined : group
|
5243 | };
|
5244 | });
|
5245 | };
|
5246 |
|
5247 | _this.handleMenuGroupClose = function () {
|
5248 | _this.setState({
|
5249 | activeMenuGroup: undefined
|
5250 | });
|
5251 | };
|
5252 |
|
5253 | return _this;
|
5254 | }
|
5255 |
|
5256 | _createClass(ActionMenu, [{
|
5257 | key: "render",
|
5258 | value: function render() {
|
5259 | var _this$props2 = this.props,
|
5260 | _this$props2$actions = _this$props2.actions,
|
5261 | actions = _this$props2$actions === void 0 ? [] : _this$props2$actions,
|
5262 | _this$props2$groups = _this$props2.groups,
|
5263 | groups = _this$props2$groups === void 0 ? [] : _this$props2$groups,
|
5264 | rollup = _this$props2.rollup;
|
5265 |
|
5266 | if (actions.length === 0 && groups.length === 0) {
|
5267 | return null;
|
5268 | }
|
5269 |
|
5270 | var actionMenuClassNames = classNames(styles$l.ActionMenu, rollup && styles$l.rollup);
|
5271 | var rollupSections = groups.map(function (group) {
|
5272 | return convertGroupToSection(group);
|
5273 | });
|
5274 | return React__default.createElement("div", {
|
5275 | className: actionMenuClassNames
|
5276 | }, rollup ? React__default.createElement(RollupActions, {
|
5277 | items: actions,
|
5278 | sections: rollupSections
|
5279 | }) : this.renderActions());
|
5280 | }
|
5281 | }]);
|
5282 |
|
5283 | return ActionMenu;
|
5284 | }(React__default.PureComponent);
|
5285 | function hasGroupsWithActions() {
|
5286 | var groups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
5287 | return groups.length === 0 ? false : groups.some(function (group) {
|
5288 | return group.actions.length > 0;
|
5289 | });
|
5290 | }
|
5291 | function convertGroupToSection(_ref2) {
|
5292 | var title = _ref2.title,
|
5293 | actions = _ref2.actions;
|
5294 | return {
|
5295 | title,
|
5296 | items: actions
|
5297 | };
|
5298 | }
|
5299 |
|
5300 | function ThemeProvider(_ref) {
|
5301 | var themeConfig = _ref.theme,
|
5302 | children = _ref.children;
|
5303 |
|
5304 | var _useFeatures = useFeatures(),
|
5305 | _useFeatures$unstable = _useFeatures.unstableGlobalTheming,
|
5306 | unstableGlobalTheming = _useFeatures$unstable === void 0 ? false : _useFeatures$unstable;
|
5307 |
|
5308 | var customProperties = useMemo(function () {
|
5309 | return buildCustomProperties(themeConfig, unstableGlobalTheming);
|
5310 | }, [unstableGlobalTheming, themeConfig]);
|
5311 | var theme = useMemo(function () {
|
5312 | return buildThemeContext(themeConfig, unstableGlobalTheming ? customProperties : undefined);
|
5313 | }, [customProperties, themeConfig, unstableGlobalTheming]);
|
5314 |
|
5315 |
|
5316 | var backgroundColor = customProperties['--p-surface-background'] || null;
|
5317 | var color = customProperties['--p-text-on-surface'] || null;
|
5318 | useEffect(function () {
|
5319 | document.body.style.backgroundColor = backgroundColor;
|
5320 | document.body.style.color = color;
|
5321 | }, [backgroundColor, color]);
|
5322 | return React__default.createElement(ThemeContext.Provider, {
|
5323 | value: theme
|
5324 | }, React__default.createElement("div", {
|
5325 | style: customProperties
|
5326 | }, children));
|
5327 | }
|
5328 |
|
5329 | var MediaQueryContext = React__default.createContext(undefined);
|
5330 |
|
5331 | function useMediaQuery() {
|
5332 | var mediaQuery = useContext(MediaQueryContext);
|
5333 |
|
5334 | if (!mediaQuery) {
|
5335 | throw new Error('No mediaQuery was provided. Your application must be wrapped in an <AppProvider> component. See https://polaris.shopify.com/components/structure/app-provider for implementation instructions.');
|
5336 | }
|
5337 |
|
5338 | return mediaQuery;
|
5339 | }
|
5340 |
|
5341 | var MediaQueryProvider = function MediaQueryProvider(_ref) {
|
5342 | var children = _ref.children;
|
5343 |
|
5344 | var _useState = useState(navigationBarCollapsed().matches),
|
5345 | _useState2 = _slicedToArray(_useState, 2),
|
5346 | isNavigationCollapsed = _useState2[0],
|
5347 | setIsNavigationCollapsed = _useState2[1];
|
5348 |
|
5349 | var handleResize = useCallback(debounce(function () {
|
5350 | if (isNavigationCollapsed !== navigationBarCollapsed().matches) {
|
5351 | setIsNavigationCollapsed(!isNavigationCollapsed);
|
5352 | }
|
5353 | }, 40, {
|
5354 | trailing: true,
|
5355 | leading: true,
|
5356 | maxWait: 40
|
5357 | }), [isNavigationCollapsed]);
|
5358 | useEffect(function () {
|
5359 | setIsNavigationCollapsed(navigationBarCollapsed().matches);
|
5360 | }, []);
|
5361 | return React__default.createElement(MediaQueryContext.Provider, {
|
5362 | value: {
|
5363 | isNavigationCollapsed
|
5364 | }
|
5365 | }, React__default.createElement(EventListener, {
|
5366 | event: "resize",
|
5367 | handler: handleResize
|
5368 | }), children);
|
5369 | };
|
5370 |
|
5371 | var ScrollLockManagerContext = React__default.createContext(undefined);
|
5372 |
|
5373 | function useScrollLockManager() {
|
5374 | var scrollLockManager = useContext(ScrollLockManagerContext);
|
5375 |
|
5376 | if (!scrollLockManager) {
|
5377 | throw new MissingAppProviderError('No ScrollLockManager was provided.');
|
5378 | }
|
5379 |
|
5380 | return scrollLockManager;
|
5381 | }
|
5382 |
|
5383 | var SCROLL_LOCKING_ATTRIBUTE = 'data-lock-scrolling';
|
5384 | var SCROLL_LOCKING_WRAPPER_ATTRIBUTE = 'data-lock-scrolling-wrapper';
|
5385 | var scrollPosition = 0;
|
5386 | var ScrollLockManager =
|
5387 |
|
5388 | function () {
|
5389 | function ScrollLockManager() {
|
5390 | _classCallCheck(this, ScrollLockManager);
|
5391 |
|
5392 | this.scrollLocks = 0;
|
5393 | this.locked = false;
|
5394 | }
|
5395 |
|
5396 | _createClass(ScrollLockManager, [{
|
5397 | key: "registerScrollLock",
|
5398 | value: function registerScrollLock() {
|
5399 | this.scrollLocks += 1;
|
5400 | this.handleScrollLocking();
|
5401 | }
|
5402 | }, {
|
5403 | key: "unregisterScrollLock",
|
5404 | value: function unregisterScrollLock() {
|
5405 | this.scrollLocks -= 1;
|
5406 | this.handleScrollLocking();
|
5407 | }
|
5408 | }, {
|
5409 | key: "handleScrollLocking",
|
5410 | value: function handleScrollLocking() {
|
5411 | if (isServer) return;
|
5412 | var scrollLocks = this.scrollLocks;
|
5413 | var _document = document,
|
5414 | body = _document.body;
|
5415 | var wrapper = body.firstElementChild;
|
5416 |
|
5417 | if (scrollLocks === 0) {
|
5418 | body.removeAttribute(SCROLL_LOCKING_ATTRIBUTE);
|
5419 |
|
5420 | if (wrapper) {
|
5421 | wrapper.removeAttribute(SCROLL_LOCKING_WRAPPER_ATTRIBUTE);
|
5422 | }
|
5423 |
|
5424 | window.scroll(0, scrollPosition);
|
5425 | this.locked = false;
|
5426 | } else if (scrollLocks > 0 && !this.locked) {
|
5427 | scrollPosition = window.pageYOffset;
|
5428 | body.setAttribute(SCROLL_LOCKING_ATTRIBUTE, '');
|
5429 |
|
5430 | if (wrapper) {
|
5431 | wrapper.setAttribute(SCROLL_LOCKING_WRAPPER_ATTRIBUTE, '');
|
5432 | wrapper.scrollTop = scrollPosition;
|
5433 | }
|
5434 |
|
5435 | this.locked = true;
|
5436 | }
|
5437 | }
|
5438 | }, {
|
5439 | key: "resetScrollPosition",
|
5440 | value: function resetScrollPosition() {
|
5441 | scrollPosition = 0;
|
5442 | }
|
5443 | }]);
|
5444 |
|
5445 | return ScrollLockManager;
|
5446 | }();
|
5447 |
|
5448 | var AppBridgeContext = React__default.createContext(undefined);
|
5449 |
|
5450 | function useAppBridge() {
|
5451 | return useContext(AppBridgeContext);
|
5452 | }
|
5453 |
|
5454 | function createAppBridge(_ref) {
|
5455 | var apiKey = _ref.apiKey,
|
5456 | shopOrigin = _ref.shopOrigin,
|
5457 | forceRedirect = _ref.forceRedirect;
|
5458 | var appBridge = apiKey ? createApp({
|
5459 | apiKey,
|
5460 | shopOrigin: shopOrigin || getShopOrigin(),
|
5461 | forceRedirect
|
5462 | }) : undefined;
|
5463 |
|
5464 | if (appBridge !== undefined) {
|
5465 |
|
5466 | console.warn('Deprecation: Using `apiKey` and `shopOrigin` on `AppProvider` to initialize the Shopify App Bridge is deprecated. Support for this will be removed in v5.0. Use `Provider` from `@shopify/app-bridge-react` instead: https://help.shopify.com/en/api/embedded-apps/app-bridge/react-components/provider');
|
5467 | }
|
5468 |
|
5469 | if (appBridge && appBridge.hooks) {
|
5470 | appBridge.hooks.set(LifecycleHook.DispatchAction, setClientInterfaceHook);
|
5471 | }
|
5472 |
|
5473 | return appBridge;
|
5474 | }
|
5475 | var setClientInterfaceHook = function setClientInterfaceHook(next) {
|
5476 | return function (action) {
|
5477 | action.clientInterface = {
|
5478 | name: '@shopify/polaris',
|
5479 | version: polarisVersion
|
5480 | };
|
5481 | return next(action);
|
5482 | };
|
5483 | };
|
5484 |
|
5485 | var AppProvider =
|
5486 |
|
5487 | function (_React$Component) {
|
5488 | _inherits(AppProvider, _React$Component);
|
5489 |
|
5490 | function AppProvider(props) {
|
5491 | var _this;
|
5492 |
|
5493 | _classCallCheck(this, AppProvider);
|
5494 |
|
5495 | _this = _possibleConstructorReturn(this, _getPrototypeOf(AppProvider).call(this, props));
|
5496 | _this.stickyManager = new StickyManager();
|
5497 | _this.scrollLockManager = new ScrollLockManager();
|
5498 | _this.uniqueIdFactory = new UniqueIdFactory(globalIdGeneratorFactory);
|
5499 | var _this$props = _this.props,
|
5500 | i18n = _this$props.i18n,
|
5501 | apiKey = _this$props.apiKey,
|
5502 | shopOrigin = _this$props.shopOrigin,
|
5503 | forceRedirect = _this$props.forceRedirect,
|
5504 | linkComponent = _this$props.linkComponent;
|
5505 |
|
5506 | _this.state = {
|
5507 | link: linkComponent,
|
5508 | intl: new I18n(i18n),
|
5509 | appBridge: createAppBridge({
|
5510 | shopOrigin,
|
5511 | apiKey,
|
5512 | forceRedirect
|
5513 | })
|
5514 | };
|
5515 | return _this;
|
5516 | }
|
5517 |
|
5518 | _createClass(AppProvider, [{
|
5519 | key: "componentDidMount",
|
5520 | value: function componentDidMount() {
|
5521 | if (document != null) {
|
5522 | this.stickyManager.setContainer(document);
|
5523 | }
|
5524 | }
|
5525 | }, {
|
5526 | key: "componentDidUpdate",
|
5527 | value: function componentDidUpdate(_ref) {
|
5528 | var prevI18n = _ref.i18n,
|
5529 | prevLinkComponent = _ref.linkComponent,
|
5530 | prevApiKey = _ref.apiKey,
|
5531 | prevShopOrigin = _ref.shopOrigin,
|
5532 | prevForceRedirect = _ref.forceRedirect;
|
5533 | var _this$props2 = this.props,
|
5534 | i18n = _this$props2.i18n,
|
5535 | linkComponent = _this$props2.linkComponent,
|
5536 | apiKey = _this$props2.apiKey,
|
5537 | shopOrigin = _this$props2.shopOrigin,
|
5538 | forceRedirect = _this$props2.forceRedirect;
|
5539 |
|
5540 | if (i18n === prevI18n && linkComponent === prevLinkComponent && apiKey === prevApiKey && shopOrigin === prevShopOrigin && forceRedirect === prevForceRedirect) {
|
5541 | return;
|
5542 | }
|
5543 |
|
5544 |
|
5545 | this.setState({
|
5546 | link: linkComponent,
|
5547 | intl: new I18n(i18n),
|
5548 | appBridge: createAppBridge({
|
5549 | shopOrigin,
|
5550 | apiKey,
|
5551 | forceRedirect
|
5552 | })
|
5553 | });
|
5554 | }
|
5555 | }, {
|
5556 | key: "render",
|
5557 | value: function render() {
|
5558 | var _this$props3 = this.props,
|
5559 | _this$props3$theme = _this$props3.theme,
|
5560 | theme = _this$props3$theme === void 0 ? {} : _this$props3$theme,
|
5561 | _this$props3$features = _this$props3.features,
|
5562 | features = _this$props3$features === void 0 ? {} : _this$props3$features,
|
5563 | UNSTABLE_telemetry = _this$props3.UNSTABLE_telemetry,
|
5564 | children = _this$props3.children;
|
5565 | var _this$state = this.state,
|
5566 | intl = _this$state.intl,
|
5567 | appBridge = _this$state.appBridge,
|
5568 | link = _this$state.link;
|
5569 | return React__default.createElement(FeaturesContext.Provider, {
|
5570 | value: features
|
5571 | }, React__default.createElement(I18nContext.Provider, {
|
5572 | value: intl
|
5573 | }, React__default.createElement(ScrollLockManagerContext.Provider, {
|
5574 | value: this.scrollLockManager
|
5575 | }, React__default.createElement(StickyManagerContext.Provider, {
|
5576 | value: this.stickyManager
|
5577 | }, React__default.createElement(UniqueIdFactoryContext.Provider, {
|
5578 | value: this.uniqueIdFactory
|
5579 | }, React__default.createElement(AppBridgeContext.Provider, {
|
5580 | value: appBridge
|
5581 | }, React__default.createElement(LinkContext.Provider, {
|
5582 | value: link
|
5583 | }, React__default.createElement(ThemeProvider, {
|
5584 | theme: theme
|
5585 | }, React__default.createElement(TelemetryContext.Provider, {
|
5586 | value: UNSTABLE_telemetry
|
5587 | }, React__default.createElement(MediaQueryProvider, null, children))))))))));
|
5588 | }
|
5589 | }]);
|
5590 |
|
5591 | return AppProvider;
|
5592 | }(React__default.Component);
|
5593 |
|
5594 | function arraysAreEqual(firstArray, secondArray, comparator) {
|
5595 | if (firstArray.length !== secondArray.length) {
|
5596 | return false;
|
5597 | }
|
5598 |
|
5599 | return firstArray.every(function (firstItem, index) {
|
5600 | var secondItem = secondArray[index];
|
5601 |
|
5602 | if (comparator != null) {
|
5603 | return comparator(firstItem, secondItem);
|
5604 | }
|
5605 |
|
5606 | return firstItem === secondItem;
|
5607 | });
|
5608 | }
|
5609 |
|
5610 |
|
5611 |
|
5612 |
|
5613 |
|
5614 |
|
5615 |
|
5616 |
|
5617 |
|
5618 |
|
5619 |
|
5620 |
|
5621 |
|
5622 |
|
5623 |
|
5624 | function useDeepCompareRef(dependencies) {
|
5625 | var comparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isEqual;
|
5626 | var dependencyList = useRef(dependencies);
|
5627 |
|
5628 | if (!comparator(dependencyList.current, dependencies)) {
|
5629 | dependencyList.current = dependencies;
|
5630 | }
|
5631 |
|
5632 | return dependencyList.current;
|
5633 | }
|
5634 |
|
5635 |
|
5636 |
|
5637 |
|
5638 |
|
5639 |
|
5640 |
|
5641 |
|
5642 |
|
5643 |
|
5644 |
|
5645 |
|
5646 |
|
5647 |
|
5648 |
|
5649 |
|
5650 |
|
5651 |
|
5652 |
|
5653 |
|
5654 |
|
5655 |
|
5656 | function useDeepEffect(callback, dependencies, customCompare) {
|
5657 | useEffect(callback, useDeepCompareRef(dependencies, customCompare));
|
5658 | }
|
5659 |
|
5660 | var styles$m = {
|
5661 | "Checkbox": "Polaris-OptionList-Checkbox",
|
5662 | "Input": "Polaris-OptionList-Checkbox__Input",
|
5663 | "Backdrop": "Polaris-OptionList-Checkbox__Backdrop",
|
5664 | "Icon": "Polaris-OptionList-Checkbox__Icon",
|
5665 | "active": "Polaris-OptionList-Checkbox--active"
|
5666 | };
|
5667 |
|
5668 | function Checkbox(_ref) {
|
5669 | var idProp = _ref.id,
|
5670 | _ref$checked = _ref.checked,
|
5671 | checked = _ref$checked === void 0 ? false : _ref$checked,
|
5672 | disabled = _ref.disabled,
|
5673 | active = _ref.active,
|
5674 | onChange = _ref.onChange,
|
5675 | name = _ref.name,
|
5676 | value = _ref.value,
|
5677 | role = _ref.role;
|
5678 | var id = useUniqueId('Checkbox', idProp);
|
5679 | var className = classNames(styles$m.Checkbox, active && styles$m.active);
|
5680 | return React__default.createElement("div", {
|
5681 | className: className
|
5682 | }, React__default.createElement("input", {
|
5683 | id: id,
|
5684 | name: name,
|
5685 | value: value,
|
5686 | type: "checkbox",
|
5687 | checked: checked,
|
5688 | disabled: disabled,
|
5689 | className: styles$m.Input,
|
5690 | "aria-checked": checked,
|
5691 | onChange: onChange,
|
5692 | role: role
|
5693 | }), React__default.createElement("div", {
|
5694 | className: styles$m.Backdrop
|
5695 | }), React__default.createElement("div", {
|
5696 | className: styles$m.Icon
|
5697 | }, React__default.createElement(Icon, {
|
5698 | source: TickSmallMinor
|
5699 | })));
|
5700 | }
|
5701 |
|
5702 | var styles$n = {
|
5703 | "Option": "Polaris-OptionList-Option",
|
5704 | "SingleSelectOption": "Polaris-OptionList-Option__SingleSelectOption",
|
5705 | "disabled": "Polaris-OptionList-Option--disabled",
|
5706 | "Media": "Polaris-OptionList-Option__Media",
|
5707 | "Label": "Polaris-OptionList-Option__Label",
|
5708 | "Checkbox": "Polaris-OptionList-Option__Checkbox",
|
5709 | "focused": "Polaris-OptionList-Option--focused",
|
5710 | "select": "Polaris-OptionList-Option--select",
|
5711 | "active": "Polaris-OptionList-Option--active"
|
5712 | };
|
5713 |
|
5714 | var Option =
|
5715 |
|
5716 | function (_React$Component) {
|
5717 | _inherits(Option, _React$Component);
|
5718 |
|
5719 | function Option() {
|
5720 | var _this;
|
5721 |
|
5722 | _classCallCheck(this, Option);
|
5723 |
|
5724 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Option).apply(this, arguments));
|
5725 | _this.state = {
|
5726 | focused: false
|
5727 | };
|
5728 |
|
5729 | _this.handleClick = function () {
|
5730 | var _this$props = _this.props,
|
5731 | onClick = _this$props.onClick,
|
5732 | section = _this$props.section,
|
5733 | index = _this$props.index,
|
5734 | disabled = _this$props.disabled;
|
5735 |
|
5736 | if (disabled) {
|
5737 | return;
|
5738 | }
|
5739 |
|
5740 | onClick(section, index);
|
5741 | };
|
5742 |
|
5743 | _this.toggleFocus = function () {
|
5744 | _this.setState(function (prevState) {
|
5745 | return {
|
5746 | focused: !prevState.focused
|
5747 | };
|
5748 | });
|
5749 | };
|
5750 |
|
5751 | return _this;
|
5752 | }
|
5753 |
|
5754 | _createClass(Option, [{
|
5755 | key: "render",
|
5756 | value: function render() {
|
5757 | var _this$props2 = this.props,
|
5758 | label = _this$props2.label,
|
5759 | value = _this$props2.value,
|
5760 | id = _this$props2.id,
|
5761 | select = _this$props2.select,
|
5762 | active = _this$props2.active,
|
5763 | allowMultiple = _this$props2.allowMultiple,
|
5764 | disabled = _this$props2.disabled,
|
5765 | role = _this$props2.role,
|
5766 | media = _this$props2.media;
|
5767 | var focused = this.state.focused;
|
5768 | var mediaMarkup = media ? React__default.createElement("div", {
|
5769 | className: styles$n.Media
|
5770 | }, media) : null;
|
5771 | var singleSelectClassName = classNames(styles$n.SingleSelectOption, focused && styles$n.focused, disabled && styles$n.disabled, select && styles$n.select, active && styles$n.active);
|
5772 | var multiSelectClassName = classNames(styles$n.Label, active && styles$n.active);
|
5773 | var checkBoxRole = role === 'option' ? 'presentation' : undefined;
|
5774 | var optionMarkup = allowMultiple ? React__default.createElement("label", {
|
5775 | htmlFor: id,
|
5776 | className: multiSelectClassName
|
5777 | }, React__default.createElement("div", {
|
5778 | className: styles$n.Checkbox
|
5779 | }, React__default.createElement(Checkbox, {
|
5780 | id: id,
|
5781 | value: value,
|
5782 | checked: select,
|
5783 | active: active,
|
5784 | disabled: disabled,
|
5785 | onChange: this.handleClick,
|
5786 | role: checkBoxRole
|
5787 | })), mediaMarkup, label) : React__default.createElement("button", {
|
5788 | id: id,
|
5789 | type: "button",
|
5790 | className: singleSelectClassName,
|
5791 | onClick: this.handleClick,
|
5792 | disabled: disabled,
|
5793 | onFocus: this.toggleFocus,
|
5794 | onBlur: this.toggleFocus
|
5795 | }, mediaMarkup, label);
|
5796 | var scrollMarkup = active ? React__default.createElement(Scrollable.ScrollTo, null) : null;
|
5797 | return React__default.createElement("li", {
|
5798 | key: id,
|
5799 | className: styles$n.Option,
|
5800 | tabIndex: -1,
|
5801 | "aria-selected": active,
|
5802 | role: role
|
5803 | }, scrollMarkup, optionMarkup);
|
5804 | }
|
5805 | }]);
|
5806 |
|
5807 | return Option;
|
5808 | }(React__default.Component);
|
5809 |
|
5810 | var styles$o = {
|
5811 | "OptionList": "Polaris-OptionList",
|
5812 | "Options": "Polaris-OptionList__Options",
|
5813 | "Title": "Polaris-OptionList__Title"
|
5814 | };
|
5815 |
|
5816 | function OptionList(_ref) {
|
5817 | var options = _ref.options,
|
5818 | sections = _ref.sections,
|
5819 | title = _ref.title,
|
5820 | selected = _ref.selected,
|
5821 | allowMultiple = _ref.allowMultiple,
|
5822 | role = _ref.role,
|
5823 | optionRole = _ref.optionRole,
|
5824 | onChange = _ref.onChange,
|
5825 | idProp = _ref.id;
|
5826 |
|
5827 | var _useState = useState(createNormalizedOptions(options, sections, title)),
|
5828 | _useState2 = _slicedToArray(_useState, 2),
|
5829 | normalizedOptions = _useState2[0],
|
5830 | setNormalizedOptions = _useState2[1];
|
5831 |
|
5832 | var id = useUniqueId('OptionList', idProp);
|
5833 | useDeepEffect(function () {
|
5834 | setNormalizedOptions(createNormalizedOptions(options || [], sections || [], title));
|
5835 | }, [options, sections, title], optionArraysAreEqual);
|
5836 | var handleClick = useCallback(function (sectionIndex, optionIndex) {
|
5837 | var selectedValue = normalizedOptions[sectionIndex].options[optionIndex].value;
|
5838 | var foundIndex = selected.indexOf(selectedValue);
|
5839 |
|
5840 | if (allowMultiple) {
|
5841 | var newSelection = foundIndex === -1 ? [selectedValue].concat(_toConsumableArray(selected)) : [].concat(_toConsumableArray(selected.slice(0, foundIndex)), _toConsumableArray(selected.slice(foundIndex + 1, selected.length)));
|
5842 | onChange(newSelection);
|
5843 | return;
|
5844 | }
|
5845 |
|
5846 | onChange([selectedValue]);
|
5847 | }, [normalizedOptions, selected, allowMultiple, onChange]);
|
5848 | var optionsExist = normalizedOptions.length > 0;
|
5849 | var optionsMarkup = optionsExist ? normalizedOptions.map(function (_ref2, sectionIndex) {
|
5850 | var title = _ref2.title,
|
5851 | options = _ref2.options;
|
5852 | var titleMarkup = title ? React__default.createElement("p", {
|
5853 | className: styles$o.Title,
|
5854 | role: role
|
5855 | }, title) : null;
|
5856 | var optionsMarkup = options && options.map(function (option, optionIndex) {
|
5857 | var isSelected = selected.includes(option.value);
|
5858 | var optionId = option.id || "".concat(id, "-").concat(sectionIndex, "-").concat(optionIndex);
|
5859 | return React__default.createElement(Option, Object.assign({}, option, {
|
5860 | key: optionId,
|
5861 | id: optionId,
|
5862 | section: sectionIndex,
|
5863 | index: optionIndex,
|
5864 | onClick: handleClick,
|
5865 | select: isSelected,
|
5866 | allowMultiple: allowMultiple,
|
5867 | role: optionRole
|
5868 | }));
|
5869 | });
|
5870 | return React__default.createElement("li", {
|
5871 | key: title || "noTitle-".concat(sectionIndex)
|
5872 | }, titleMarkup, React__default.createElement("ul", {
|
5873 | className: styles$o.Options,
|
5874 | id: "".concat(id, "-").concat(sectionIndex),
|
5875 | role: role,
|
5876 | "aria-multiselectable": allowMultiple
|
5877 | }, optionsMarkup));
|
5878 | }) : null;
|
5879 | return React__default.createElement("ul", {
|
5880 | className: styles$o.OptionList,
|
5881 | role: role
|
5882 | }, optionsMarkup);
|
5883 | }
|
5884 |
|
5885 | function createNormalizedOptions(options, sections, title) {
|
5886 | if (options == null) {
|
5887 | var section = {
|
5888 | options: [],
|
5889 | title
|
5890 | };
|
5891 | return sections == null ? [] : [section].concat(_toConsumableArray(sections));
|
5892 | }
|
5893 |
|
5894 | if (sections == null) {
|
5895 | return [{
|
5896 | title,
|
5897 | options
|
5898 | }];
|
5899 | }
|
5900 |
|
5901 | return [{
|
5902 | title,
|
5903 | options
|
5904 | }].concat(_toConsumableArray(sections));
|
5905 | }
|
5906 |
|
5907 | function isSection(arr) {
|
5908 | return typeof arr[0] === 'object' && Object.prototype.hasOwnProperty.call(arr[0], 'options');
|
5909 | }
|
5910 |
|
5911 | function optionArraysAreEqual(firstArray, secondArray) {
|
5912 | if (isSection(firstArray) && isSection(secondArray)) {
|
5913 | return arraysAreEqual(firstArray, secondArray, testSectionsPropEquality);
|
5914 | }
|
5915 |
|
5916 | return arraysAreEqual(firstArray, secondArray);
|
5917 | }
|
5918 |
|
5919 | function testSectionsPropEquality(previousSection, currentSection) {
|
5920 | var previousOptions = previousSection.options;
|
5921 | var currentOptions = currentSection.options;
|
5922 | var optionsAreEqual = arraysAreEqual(previousOptions, currentOptions);
|
5923 | var titlesAreEqual = previousSection.title === currentSection.title;
|
5924 | return optionsAreEqual && titlesAreEqual;
|
5925 | }
|
5926 |
|
5927 | var ComboBoxContext = React__default.createContext({});
|
5928 |
|
5929 | var styles$p = {
|
5930 | "EmptyState": "Polaris-Autocomplete-ComboBox__EmptyState"
|
5931 | };
|
5932 |
|
5933 | var getUniqueId = createUniqueIDFactory('ComboBox');
|
5934 | var ComboBox =
|
5935 |
|
5936 | function (_React$PureComponent) {
|
5937 | _inherits(ComboBox, _React$PureComponent);
|
5938 |
|
5939 | function ComboBox() {
|
5940 | var _this;
|
5941 |
|
5942 | _classCallCheck(this, ComboBox);
|
5943 |
|
5944 | _this = _possibleConstructorReturn(this, _getPrototypeOf(ComboBox).apply(this, arguments));
|
5945 | _this.state = {
|
5946 | comboBoxId: _this.getComboBoxId(),
|
5947 | selectedOption: undefined,
|
5948 | selectedIndex: -1,
|
5949 | selectedOptions: _this.props.selected,
|
5950 | navigableOptions: [],
|
5951 | popoverActive: false,
|
5952 | popoverWasActive: false
|
5953 | };
|
5954 |
|
5955 | _this.handleDownArrow = function () {
|
5956 | _this.selectNextOption();
|
5957 |
|
5958 | _this.handlePopoverOpen;
|
5959 | };
|
5960 |
|
5961 | _this.handleUpArrow = function () {
|
5962 | _this.selectPreviousOption();
|
5963 |
|
5964 | _this.handlePopoverOpen;
|
5965 | };
|
5966 |
|
5967 | _this.handleEnter = function (event) {
|
5968 | if (event.keyCode !== Key.Enter) {
|
5969 | return;
|
5970 | }
|
5971 |
|
5972 | var selectedOption = _this.state.selectedOption;
|
5973 |
|
5974 | if (_this.state.popoverActive && selectedOption) {
|
5975 | if (isOption(selectedOption)) {
|
5976 | event.preventDefault();
|
5977 |
|
5978 | _this.handleSelection(selectedOption.value);
|
5979 | } else {
|
5980 | selectedOption.onAction && selectedOption.onAction();
|
5981 | }
|
5982 | }
|
5983 |
|
5984 | _this.handlePopoverOpen;
|
5985 | };
|
5986 |
|
5987 | _this.handleFocus = function () {
|
5988 | _this.setState({
|
5989 | popoverActive: true,
|
5990 | popoverWasActive: true
|
5991 | });
|
5992 | };
|
5993 |
|
5994 | _this.handleBlur = function () {
|
5995 | _this.setState({
|
5996 | popoverActive: false,
|
5997 | popoverWasActive: false
|
5998 | }, function () {
|
5999 | _this.resetVisuallySelectedOptions();
|
6000 | });
|
6001 | };
|
6002 |
|
6003 | _this.handleClick = function () {
|
6004 | !_this.state.popoverActive && _this.setState({
|
6005 | popoverActive: true
|
6006 | });
|
6007 | };
|
6008 |
|
6009 | _this.handleSelection = function (newSelected) {
|
6010 | var _this$props = _this.props,
|
6011 | selected = _this$props.selected,
|
6012 | allowMultiple = _this$props.allowMultiple;
|
6013 | var newlySelectedOptions = selected;
|
6014 |
|
6015 | if (selected.includes(newSelected)) {
|
6016 | newlySelectedOptions.splice(newlySelectedOptions.indexOf(newSelected), 1);
|
6017 | } else if (allowMultiple) {
|
6018 | newlySelectedOptions.push(newSelected);
|
6019 | } else {
|
6020 | newlySelectedOptions = [newSelected];
|
6021 | }
|
6022 |
|
6023 | _this.selectOptions(newlySelectedOptions);
|
6024 | };
|
6025 |
|
6026 | _this.selectOptions = function (selected) {
|
6027 | var _this$props2 = _this.props,
|
6028 | onSelect = _this$props2.onSelect,
|
6029 | allowMultiple = _this$props2.allowMultiple;
|
6030 | selected && onSelect(selected);
|
6031 |
|
6032 | if (!allowMultiple) {
|
6033 | _this.resetVisuallySelectedOptions();
|
6034 |
|
6035 | _this.setState({
|
6036 | popoverActive: false,
|
6037 | popoverWasActive: false
|
6038 | });
|
6039 | }
|
6040 | };
|
6041 |
|
6042 | _this.updateIndexOfSelectedOption = function (newOptions) {
|
6043 | var _this$state = _this.state,
|
6044 | selectedIndex = _this$state.selectedIndex,
|
6045 | selectedOption = _this$state.selectedOption;
|
6046 |
|
6047 | if (selectedOption && newOptions.includes(selectedOption)) {
|
6048 | _this.selectOptionAtIndex(newOptions.indexOf(selectedOption));
|
6049 | } else if (selectedIndex > newOptions.length - 1) {
|
6050 | _this.resetVisuallySelectedOptions();
|
6051 | } else {
|
6052 | _this.selectOptionAtIndex(selectedIndex);
|
6053 | }
|
6054 | };
|
6055 |
|
6056 | _this.resetVisuallySelectedOptions = function () {
|
6057 | var navigableOptions = _this.state.navigableOptions;
|
6058 |
|
6059 | _this.setState({
|
6060 | selectedOption: undefined,
|
6061 | selectedIndex: -1
|
6062 | });
|
6063 |
|
6064 | navigableOptions && navigableOptions.forEach(function (option) {
|
6065 | option.active = false;
|
6066 | });
|
6067 | };
|
6068 |
|
6069 | _this.handlePopoverClose = function () {
|
6070 | _this.setState({
|
6071 | popoverActive: false,
|
6072 | popoverWasActive: false
|
6073 | });
|
6074 | };
|
6075 |
|
6076 | _this.handlePopoverOpen = function () {
|
6077 | var _this$state2 = _this.state,
|
6078 | popoverActive = _this$state2.popoverActive,
|
6079 | navigableOptions = _this$state2.navigableOptions;
|
6080 | !popoverActive && navigableOptions && navigableOptions.length > 0 && _this.setState({
|
6081 | popoverActive: true,
|
6082 | popoverWasActive: true
|
6083 | });
|
6084 | };
|
6085 |
|
6086 | _this.selectNextOption = function () {
|
6087 | var _this$state3 = _this.state,
|
6088 | selectedIndex = _this$state3.selectedIndex,
|
6089 | navigableOptions = _this$state3.navigableOptions;
|
6090 |
|
6091 | if (!navigableOptions || navigableOptions.length === 0) {
|
6092 | return;
|
6093 | }
|
6094 |
|
6095 | var newIndex = selectedIndex;
|
6096 |
|
6097 | if (selectedIndex + 1 >= navigableOptions.length) {
|
6098 | newIndex = 0;
|
6099 | } else {
|
6100 | newIndex++;
|
6101 | }
|
6102 |
|
6103 | _this.selectOptionAtIndex(newIndex);
|
6104 | };
|
6105 |
|
6106 | _this.selectPreviousOption = function () {
|
6107 | var _this$state4 = _this.state,
|
6108 | selectedIndex = _this$state4.selectedIndex,
|
6109 | navigableOptions = _this$state4.navigableOptions;
|
6110 |
|
6111 | if (!navigableOptions || navigableOptions.length === 0) {
|
6112 | return;
|
6113 | }
|
6114 |
|
6115 | var newIndex = selectedIndex;
|
6116 |
|
6117 | if (selectedIndex <= 0) {
|
6118 | newIndex = navigableOptions.length - 1;
|
6119 | } else {
|
6120 | newIndex--;
|
6121 | }
|
6122 |
|
6123 | _this.selectOptionAtIndex(newIndex);
|
6124 | };
|
6125 |
|
6126 | _this.selectOptionAtIndex = function (newOptionIndex) {
|
6127 | _this.setState(function (prevState) {
|
6128 | if (!prevState.navigableOptions || prevState.navigableOptions.length === 0) {
|
6129 | return prevState;
|
6130 | }
|
6131 |
|
6132 | var newSelectedOption = prevState.navigableOptions[newOptionIndex];
|
6133 |
|
6134 | _this.visuallyUpdateSelectedOption(newSelectedOption, prevState.selectedOption);
|
6135 |
|
6136 | return Object.assign({}, prevState, {
|
6137 | selectedOption: newSelectedOption,
|
6138 | selectedIndex: newOptionIndex
|
6139 | });
|
6140 | });
|
6141 | };
|
6142 |
|
6143 | _this.visuallyUpdateSelectedOption = function (newOption, oldOption) {
|
6144 | if (oldOption) {
|
6145 | oldOption.active = false;
|
6146 | }
|
6147 |
|
6148 | if (newOption) {
|
6149 | newOption.active = true;
|
6150 | }
|
6151 | };
|
6152 |
|
6153 | return _this;
|
6154 | }
|
6155 |
|
6156 | _createClass(ComboBox, [{
|
6157 | key: "componentDidMount",
|
6158 | value: function componentDidMount() {
|
6159 | var _this$props3 = this.props,
|
6160 | options = _this$props3.options,
|
6161 | actionsBefore = _this$props3.actionsBefore,
|
6162 | actionsAfter = _this$props3.actionsAfter;
|
6163 | var comboBoxId = this.getComboBoxId();
|
6164 | var navigableOptions = [];
|
6165 |
|
6166 | if (actionsBefore) {
|
6167 | navigableOptions = navigableOptions.concat(actionsBefore);
|
6168 | }
|
6169 |
|
6170 | if (options) {
|
6171 | navigableOptions = navigableOptions.concat(options);
|
6172 | }
|
6173 |
|
6174 | if (actionsAfter) {
|
6175 | navigableOptions = navigableOptions.concat(actionsAfter);
|
6176 | }
|
6177 |
|
6178 | navigableOptions = assignOptionIds(navigableOptions, comboBoxId);
|
6179 | this.setState({
|
6180 | navigableOptions
|
6181 | });
|
6182 | }
|
6183 | }, {
|
6184 | key: "componentDidUpdate",
|
6185 | value: function componentDidUpdate(_, prevState) {
|
6186 | var _this$props4 = this.props,
|
6187 | contentBefore = _this$props4.contentBefore,
|
6188 | contentAfter = _this$props4.contentAfter,
|
6189 | emptyState = _this$props4.emptyState;
|
6190 | var _this$state5 = this.state,
|
6191 | navigableOptions = _this$state5.navigableOptions,
|
6192 | popoverWasActive = _this$state5.popoverWasActive;
|
6193 | var optionsChanged = navigableOptions && prevState.navigableOptions && !optionsAreEqual(navigableOptions, prevState.navigableOptions);
|
6194 |
|
6195 | if (optionsChanged) {
|
6196 | this.updateIndexOfSelectedOption(navigableOptions);
|
6197 | }
|
6198 |
|
6199 | if (navigableOptions && navigableOptions.length === 0 && !contentBefore && !contentAfter && !emptyState) {
|
6200 |
|
6201 | this.setState({
|
6202 | popoverActive: false
|
6203 | });
|
6204 | } else if (popoverWasActive && navigableOptions && navigableOptions.length !== 0) {
|
6205 |
|
6206 | this.setState({
|
6207 | popoverActive: true
|
6208 | });
|
6209 | }
|
6210 | }
|
6211 | }, {
|
6212 | key: "getComboBoxId",
|
6213 | value: function getComboBoxId() {
|
6214 | if (this.state && this.state.comboBoxId) {
|
6215 | return this.state.comboBoxId;
|
6216 | }
|
6217 |
|
6218 | return this.props.id || getUniqueId();
|
6219 | }
|
6220 | }, {
|
6221 | key: "render",
|
6222 | value: function render() {
|
6223 | var _this$props5 = this.props,
|
6224 | options = _this$props5.options,
|
6225 | textField = _this$props5.textField,
|
6226 | listTitle = _this$props5.listTitle,
|
6227 | allowMultiple = _this$props5.allowMultiple,
|
6228 | preferredPosition = _this$props5.preferredPosition,
|
6229 | actionsBefore = _this$props5.actionsBefore,
|
6230 | actionsAfter = _this$props5.actionsAfter,
|
6231 | contentBefore = _this$props5.contentBefore,
|
6232 | contentAfter = _this$props5.contentAfter,
|
6233 | onEndReached = _this$props5.onEndReached,
|
6234 | emptyState = _this$props5.emptyState;
|
6235 | var _this$state6 = this.state,
|
6236 | comboBoxId = _this$state6.comboBoxId,
|
6237 | navigableOptions = _this$state6.navigableOptions,
|
6238 | selectedOptions = _this$state6.selectedOptions;
|
6239 | var actionsBeforeMarkup = actionsBefore && actionsBefore.length > 0 && React__default.createElement(ActionList, {
|
6240 | actionRole: "option",
|
6241 | items: actionsBefore
|
6242 | });
|
6243 | var actionsAfterMarkup = actionsAfter && actionsAfter.length > 0 && React__default.createElement(ActionList, {
|
6244 | actionRole: "option",
|
6245 | items: actionsAfter
|
6246 | });
|
6247 | var optionsMarkup = options.length > 0 && React__default.createElement(OptionList, {
|
6248 | role: "presentation",
|
6249 | optionRole: "option",
|
6250 | options: filterForOptions(navigableOptions),
|
6251 | onChange: this.selectOptions,
|
6252 | selected: selectedOptions,
|
6253 | title: listTitle,
|
6254 | allowMultiple: allowMultiple
|
6255 | });
|
6256 | var emptyStateMarkup = !actionsAfter && !actionsBefore && !contentAfter && !contentBefore && options.length === 0 && emptyState && React__default.createElement("div", {
|
6257 | className: styles$p.EmptyState
|
6258 | }, emptyState);
|
6259 | var context = {
|
6260 | comboBoxId,
|
6261 | selectedOptionId: this.selectedOptionId
|
6262 | };
|
6263 | return React__default.createElement(ComboBoxContext.Provider, {
|
6264 | value: context
|
6265 | }, React__default.createElement("div", {
|
6266 | onClick: this.handleClick,
|
6267 | role: "combobox",
|
6268 | "aria-expanded": this.state.popoverActive,
|
6269 | "aria-owns": this.state.comboBoxId,
|
6270 | "aria-controls": this.state.comboBoxId,
|
6271 | "aria-haspopup": true,
|
6272 | onFocus: this.handleFocus,
|
6273 | onBlur: this.handleBlur,
|
6274 | tabIndex: 0
|
6275 | }, React__default.createElement(KeypressListener, {
|
6276 | keyCode: Key.DownArrow,
|
6277 | handler: this.handleDownArrow
|
6278 | }), React__default.createElement(KeypressListener, {
|
6279 | keyCode: Key.UpArrow,
|
6280 | handler: this.handleUpArrow
|
6281 | }), React__default.createElement(EventListener, {
|
6282 | event: "keydown",
|
6283 | handler: this.handleEnter
|
6284 | }), React__default.createElement(KeypressListener, {
|
6285 | keyCode: Key.Escape,
|
6286 | handler: this.handlePopoverClose
|
6287 | }), React__default.createElement(Popover, {
|
6288 | activator: textField,
|
6289 | active: this.state.popoverActive,
|
6290 | onClose: this.handlePopoverClose,
|
6291 | preferredPosition: preferredPosition,
|
6292 | fullWidth: true,
|
6293 | preventAutofocus: true
|
6294 | }, React__default.createElement(Popover.Pane, {
|
6295 | onScrolledToBottom: onEndReached
|
6296 | }, React__default.createElement("div", {
|
6297 | id: this.state.comboBoxId,
|
6298 | role: "listbox",
|
6299 | "aria-multiselectable": allowMultiple
|
6300 | }, contentBefore, actionsBeforeMarkup, optionsMarkup, actionsAfterMarkup, contentAfter, emptyStateMarkup)))));
|
6301 | }
|
6302 | }, {
|
6303 | key: "selectedOptionId",
|
6304 | get: function get() {
|
6305 | var _this$state7 = this.state,
|
6306 | selectedOption = _this$state7.selectedOption,
|
6307 | selectedIndex = _this$state7.selectedIndex,
|
6308 | comboBoxId = _this$state7.comboBoxId;
|
6309 | return selectedOption ? "".concat(comboBoxId, "-").concat(selectedIndex) : undefined;
|
6310 | }
|
6311 | }], [{
|
6312 | key: "getDerivedStateFromProps",
|
6313 | value: function getDerivedStateFromProps(_ref, _ref2) {
|
6314 | var nextOptions = _ref.options,
|
6315 | nextSelected = _ref.selected,
|
6316 | nextActionsBefore = _ref.actionsBefore,
|
6317 | nextActionsAfter = _ref.actionsAfter;
|
6318 | var navigableOptions = _ref2.navigableOptions,
|
6319 | selectedOptions = _ref2.selectedOptions,
|
6320 | comboBoxId = _ref2.comboBoxId;
|
6321 | var optionsChanged = filterForOptions(navigableOptions) && nextOptions && !optionsAreEqual(navigableOptions, nextOptions);
|
6322 | var newNavigableOptions = [];
|
6323 |
|
6324 | if (nextActionsBefore) {
|
6325 | newNavigableOptions = newNavigableOptions.concat(nextActionsBefore);
|
6326 | }
|
6327 |
|
6328 | if (optionsChanged || nextActionsBefore) {
|
6329 | newNavigableOptions = newNavigableOptions.concat(nextOptions);
|
6330 | }
|
6331 |
|
6332 | if (nextActionsAfter) {
|
6333 | newNavigableOptions = newNavigableOptions.concat(nextActionsAfter);
|
6334 | }
|
6335 |
|
6336 | newNavigableOptions = assignOptionIds(newNavigableOptions, comboBoxId);
|
6337 |
|
6338 | if (optionsChanged && selectedOptions !== nextSelected) {
|
6339 | return {
|
6340 | navigableOptions: newNavigableOptions,
|
6341 | selectedOptions: nextSelected
|
6342 | };
|
6343 | } else if (optionsChanged) {
|
6344 | return {
|
6345 | navigableOptions: newNavigableOptions
|
6346 | };
|
6347 | } else if (selectedOptions !== nextSelected) {
|
6348 | return {
|
6349 | selectedOptions: nextSelected
|
6350 | };
|
6351 | }
|
6352 |
|
6353 | return null;
|
6354 | }
|
6355 | }]);
|
6356 |
|
6357 | return ComboBox;
|
6358 | }(React__default.PureComponent);
|
6359 |
|
6360 | function assignOptionIds(options, comboBoxId) {
|
6361 | options.map(function (option, optionIndex) {
|
6362 | option.id = "".concat(comboBoxId, "-").concat(optionIndex);
|
6363 | });
|
6364 | return options;
|
6365 | }
|
6366 |
|
6367 | function optionsAreEqual(firstOptions, secondOptions) {
|
6368 | if (firstOptions.length !== secondOptions.length) {
|
6369 | return false;
|
6370 | }
|
6371 |
|
6372 | return firstOptions.every(function (firstItem, index) {
|
6373 | var secondItem = secondOptions[index];
|
6374 |
|
6375 | if (isOption(firstItem)) {
|
6376 | if (isOption(secondItem)) {
|
6377 | return firstItem.value === secondItem.value;
|
6378 | }
|
6379 |
|
6380 | return false;
|
6381 | } else {
|
6382 | if (!isOption(secondItem)) {
|
6383 | return firstItem.content === secondItem.content;
|
6384 | }
|
6385 |
|
6386 | return false;
|
6387 | }
|
6388 | });
|
6389 | }
|
6390 |
|
6391 | function isOption(navigableOption) {
|
6392 | return navigableOption.value !== undefined;
|
6393 | }
|
6394 |
|
6395 | function filterForOptions(mixedArray) {
|
6396 | return mixedArray.filter(function (item) {
|
6397 | return isOption(item);
|
6398 | });
|
6399 | }
|
6400 |
|
6401 | var styles$q = {
|
6402 | "Label": "Polaris-Label",
|
6403 | "hidden": "Polaris-Label--hidden",
|
6404 | "Text": "Polaris-Label__Text"
|
6405 | };
|
6406 |
|
6407 | function labelID(id) {
|
6408 | return "".concat(id, "Label");
|
6409 | }
|
6410 | function Label(_ref) {
|
6411 | var children = _ref.children,
|
6412 | id = _ref.id,
|
6413 | hidden = _ref.hidden;
|
6414 | var className = classNames(styles$q.Label, hidden && styles$q.hidden);
|
6415 | return React__default.createElement("div", {
|
6416 | className: className
|
6417 | }, React__default.createElement("label", {
|
6418 | id: labelID(id),
|
6419 | htmlFor: id,
|
6420 | className: styles$q.Text
|
6421 | }, children));
|
6422 | }
|
6423 |
|
6424 | var styles$r = {
|
6425 | "InlineError": "Polaris-InlineError",
|
6426 | "Icon": "Polaris-InlineError__Icon"
|
6427 | };
|
6428 |
|
6429 | function InlineError(_ref) {
|
6430 | var message = _ref.message,
|
6431 | fieldID = _ref.fieldID;
|
6432 |
|
6433 | if (!message) {
|
6434 | return null;
|
6435 | }
|
6436 |
|
6437 | return React__default.createElement("div", {
|
6438 | id: errorTextID(fieldID),
|
6439 | className: styles$r.InlineError
|
6440 | }, React__default.createElement("div", {
|
6441 | className: styles$r.Icon
|
6442 | }, React__default.createElement(Icon, {
|
6443 | source: AlertMinor
|
6444 | })), message);
|
6445 | }
|
6446 | function errorTextID(id) {
|
6447 | return "".concat(id, "Error");
|
6448 | }
|
6449 |
|
6450 | var styles$s = {
|
6451 | "hidden": "Polaris-Labelled--hidden",
|
6452 | "LabelWrapper": "Polaris-Labelled__LabelWrapper",
|
6453 | "HelpText": "Polaris-Labelled__HelpText",
|
6454 | "Error": "Polaris-Labelled__Error",
|
6455 | "Action": "Polaris-Labelled__Action"
|
6456 | };
|
6457 |
|
6458 | function Labelled(_a) {
|
6459 | var id = _a.id,
|
6460 | label = _a.label,
|
6461 | error = _a.error,
|
6462 | action = _a.action,
|
6463 | helpText = _a.helpText,
|
6464 | children = _a.children,
|
6465 | labelHidden = _a.labelHidden,
|
6466 | rest = __rest(_a, ["id", "label", "error", "action", "helpText", "children", "labelHidden"]);
|
6467 |
|
6468 | var className = classNames(labelHidden && styles$s.hidden);
|
6469 | var actionMarkup = action ? React__default.createElement("div", {
|
6470 | className: styles$s.Action
|
6471 | }, buttonFrom(action, {
|
6472 | plain: true
|
6473 | })) : null;
|
6474 | var helpTextMarkup = helpText ? React__default.createElement("div", {
|
6475 | className: styles$s.HelpText,
|
6476 | id: helpTextID(id)
|
6477 | }, helpText) : null;
|
6478 | var errorMarkup = error && typeof error !== 'boolean' && React__default.createElement("div", {
|
6479 | className: styles$s.Error
|
6480 | }, React__default.createElement(InlineError, {
|
6481 | message: error,
|
6482 | fieldID: id
|
6483 | }));
|
6484 | var labelMarkup = label ? React__default.createElement("div", {
|
6485 | className: styles$s.LabelWrapper
|
6486 | }, React__default.createElement(Label, Object.assign({
|
6487 | id: id
|
6488 | }, rest, {
|
6489 | hidden: false
|
6490 | }), label), actionMarkup) : null;
|
6491 | return React__default.createElement("div", {
|
6492 | className: className
|
6493 | }, labelMarkup, children, errorMarkup, helpTextMarkup);
|
6494 | }
|
6495 | function helpTextID(id) {
|
6496 | return "".concat(id, "HelpText");
|
6497 | }
|
6498 |
|
6499 | var styles$t = {
|
6500 | "Connected": "Polaris-Connected",
|
6501 | "Item": "Polaris-Connected__Item",
|
6502 | "Item-primary": "Polaris-Connected__Item--primary",
|
6503 | "Item-connection": "Polaris-Connected__Item--connection",
|
6504 | "Item-focused": "Polaris-Connected__Item--focused"
|
6505 | };
|
6506 |
|
6507 | var ItemPosition;
|
6508 |
|
6509 | (function (ItemPosition) {
|
6510 | ItemPosition[ItemPosition["Left"] = 0] = "Left";
|
6511 | ItemPosition[ItemPosition["Primary"] = 1] = "Primary";
|
6512 | ItemPosition[ItemPosition["Right"] = 2] = "Right";
|
6513 | })(ItemPosition || (ItemPosition = {}));
|
6514 |
|
6515 | var Item$3 =
|
6516 |
|
6517 | function (_React$PureComponent) {
|
6518 | _inherits(Item, _React$PureComponent);
|
6519 |
|
6520 | function Item() {
|
6521 | var _this;
|
6522 |
|
6523 | _classCallCheck(this, Item);
|
6524 |
|
6525 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Item).apply(this, arguments));
|
6526 | _this.state = {
|
6527 | focused: false
|
6528 | };
|
6529 |
|
6530 | _this.handleBlur = function () {
|
6531 | _this.setState({
|
6532 | focused: false
|
6533 | });
|
6534 | };
|
6535 |
|
6536 | _this.handleFocus = function () {
|
6537 | _this.setState({
|
6538 | focused: true
|
6539 | });
|
6540 | };
|
6541 |
|
6542 | return _this;
|
6543 | }
|
6544 |
|
6545 | _createClass(Item, [{
|
6546 | key: "render",
|
6547 | value: function render() {
|
6548 | var focused = this.state.focused;
|
6549 | var _this$props = this.props,
|
6550 | children = _this$props.children,
|
6551 | position = _this$props.position;
|
6552 | var className = classNames(styles$t.Item, focused && styles$t['Item-focused'], position === ItemPosition.Primary ? styles$t['Item-primary'] : styles$t['Item-connection']);
|
6553 | return React__default.createElement("div", {
|
6554 | onBlur: this.handleBlur,
|
6555 | onFocus: this.handleFocus,
|
6556 | className: className
|
6557 | }, children);
|
6558 | }
|
6559 | }]);
|
6560 |
|
6561 | return Item;
|
6562 | }(React__default.PureComponent);
|
6563 |
|
6564 | function Connected(_ref) {
|
6565 | var children = _ref.children,
|
6566 | left = _ref.left,
|
6567 | right = _ref.right;
|
6568 | var leftConnectionMarkup = left ? React__default.createElement(Item$3, {
|
6569 | position: ItemPosition.Left
|
6570 | }, left) : null;
|
6571 | var rightConnectionMarkup = right ? React__default.createElement(Item$3, {
|
6572 | position: ItemPosition.Right
|
6573 | }, right) : null;
|
6574 | return React__default.createElement("div", {
|
6575 | className: styles$t.Connected
|
6576 | }, leftConnectionMarkup, React__default.createElement(Item$3, {
|
6577 | position: ItemPosition.Primary
|
6578 | }, children), rightConnectionMarkup);
|
6579 | }
|
6580 |
|
6581 | var styles$u = {
|
6582 | "TextField": "Polaris-TextField",
|
6583 | "multiline": "Polaris-TextField--multiline",
|
6584 | "Input": "Polaris-TextField__Input",
|
6585 | "hasValue": "Polaris-TextField--hasValue",
|
6586 | "focus": "Polaris-TextField--focus",
|
6587 | "Backdrop": "Polaris-TextField__Backdrop",
|
6588 | "error": "Polaris-TextField--error",
|
6589 | "readOnly": "Polaris-TextField--readOnly",
|
6590 | "disabled": "Polaris-TextField--disabled",
|
6591 | "Prefix": "Polaris-TextField__Prefix",
|
6592 | "Input-hasClearButton": "Polaris-TextField__Input--hasClearButton",
|
6593 | "Input-suffixed": "Polaris-TextField__Input--suffixed",
|
6594 | "Input-alignRight": "Polaris-TextField__Input--alignRight",
|
6595 | "Input-alignLeft": "Polaris-TextField__Input--alignLeft",
|
6596 | "Input-alignCenter": "Polaris-TextField__Input--alignCenter",
|
6597 | "Suffix": "Polaris-TextField__Suffix",
|
6598 | "CharacterCount": "Polaris-TextField__CharacterCount",
|
6599 | "AlignFieldBottom": "Polaris-TextField__AlignFieldBottom",
|
6600 | "ClearButton": "Polaris-TextField__ClearButton",
|
6601 | "Spinner": "Polaris-TextField__Spinner",
|
6602 | "SpinnerIcon": "Polaris-TextField__SpinnerIcon",
|
6603 | "Resizer": "Polaris-TextField__Resizer",
|
6604 | "DummyInput": "Polaris-TextField__DummyInput",
|
6605 | "Segment": "Polaris-TextField__Segment",
|
6606 | "globalTheming": "Polaris-TextField--globalTheming"
|
6607 | };
|
6608 |
|
6609 | function Resizer(_ref) {
|
6610 | var contents = _ref.contents,
|
6611 | _ref$currentHeight = _ref.currentHeight,
|
6612 | currentHeightProp = _ref$currentHeight === void 0 ? null : _ref$currentHeight,
|
6613 | minimumLines = _ref.minimumLines,
|
6614 | onHeightChange = _ref.onHeightChange;
|
6615 | var contentNode = useRef(null);
|
6616 | var minimumLinesNode = useRef(null);
|
6617 | var animationFrame = useRef();
|
6618 | var currentHeight = useRef(currentHeightProp);
|
6619 |
|
6620 | if (currentHeightProp !== currentHeight.current) {
|
6621 | currentHeight.current = currentHeightProp;
|
6622 | }
|
6623 |
|
6624 | useEffect(function () {
|
6625 | return function () {
|
6626 | if (animationFrame.current) {
|
6627 | cancelAnimationFrame(animationFrame.current);
|
6628 | }
|
6629 | };
|
6630 | }, []);
|
6631 | var minimumLinesMarkup = minimumLines ? React__default.createElement("div", {
|
6632 | ref: minimumLinesNode,
|
6633 | className: styles$u.DummyInput,
|
6634 | dangerouslySetInnerHTML: {
|
6635 | __html: getContentsForMinimumLines(minimumLines)
|
6636 | }
|
6637 | }) : null;
|
6638 | var handleHeightCheck = useCallback(function () {
|
6639 | if (animationFrame.current) {
|
6640 | cancelAnimationFrame(animationFrame.current);
|
6641 | }
|
6642 |
|
6643 | animationFrame.current = requestAnimationFrame(function () {
|
6644 | if (!contentNode.current || !minimumLinesNode.current) {
|
6645 | return;
|
6646 | }
|
6647 |
|
6648 | var newHeight = Math.max(contentNode.current.offsetHeight, minimumLinesNode.current.offsetHeight);
|
6649 |
|
6650 | if (newHeight !== currentHeight.current) {
|
6651 | onHeightChange(newHeight);
|
6652 | }
|
6653 | });
|
6654 | }, [onHeightChange]);
|
6655 | useLayoutEffect(function () {
|
6656 | handleHeightCheck();
|
6657 | });
|
6658 | return React__default.createElement("div", {
|
6659 | "aria-hidden": true,
|
6660 | className: styles$u.Resizer
|
6661 | }, React__default.createElement(EventListener, {
|
6662 | event: "resize",
|
6663 | handler: handleHeightCheck
|
6664 | }), React__default.createElement("div", {
|
6665 | ref: contentNode,
|
6666 | className: styles$u.DummyInput,
|
6667 | dangerouslySetInnerHTML: {
|
6668 | __html: getFinalContents(contents)
|
6669 | }
|
6670 | }), minimumLinesMarkup);
|
6671 | }
|
6672 | var ENTITIES_TO_REPLACE = {
|
6673 | '&': '&',
|
6674 | '<': '<',
|
6675 | '>': '>',
|
6676 | '\n': '<br>',
|
6677 | '\r': ''
|
6678 | };
|
6679 | var REPLACE_REGEX$1 = new RegExp("[".concat(Object.keys(ENTITIES_TO_REPLACE).join(), "]"), 'g');
|
6680 |
|
6681 | function replaceEntity(entity) {
|
6682 | return ENTITIES_TO_REPLACE[entity];
|
6683 | }
|
6684 |
|
6685 | function getContentsForMinimumLines(minimumLines) {
|
6686 | var content = '';
|
6687 |
|
6688 | for (var line = 0; line < minimumLines; line++) {
|
6689 | content += '<br>';
|
6690 | }
|
6691 |
|
6692 | return content;
|
6693 | }
|
6694 |
|
6695 | function getFinalContents(contents) {
|
6696 | return contents ? "".concat(contents.replace(REPLACE_REGEX$1, replaceEntity), "<br>") : '<br>';
|
6697 | }
|
6698 |
|
6699 | function Spinner$1(_ref) {
|
6700 | var onChange = _ref.onChange,
|
6701 | onClick = _ref.onClick,
|
6702 | onMouseDown = _ref.onMouseDown,
|
6703 | onMouseUp = _ref.onMouseUp;
|
6704 |
|
6705 | function handleStep(step) {
|
6706 | return function () {
|
6707 | return onChange(step);
|
6708 | };
|
6709 | }
|
6710 |
|
6711 | function handleMouseDown(onChange) {
|
6712 | return function (event) {
|
6713 | if (event.button !== 0) return;
|
6714 | onMouseDown(onChange);
|
6715 | };
|
6716 | }
|
6717 |
|
6718 | return React__default.createElement("div", {
|
6719 | className: styles$u.Spinner,
|
6720 | onClick: onClick,
|
6721 | "aria-hidden": true
|
6722 | }, React__default.createElement("div", {
|
6723 | role: "button",
|
6724 | className: styles$u.Segment,
|
6725 | tabIndex: -1,
|
6726 | onClick: handleStep(1),
|
6727 | onMouseDown: handleMouseDown(handleStep(1)),
|
6728 | onMouseUp: onMouseUp
|
6729 | }, React__default.createElement("div", {
|
6730 | className: styles$u.SpinnerIcon
|
6731 | }, React__default.createElement(Icon, {
|
6732 | source: CaretUpMinor
|
6733 | }))), React__default.createElement("div", {
|
6734 | role: "button",
|
6735 | className: styles$u.Segment,
|
6736 | tabIndex: -1,
|
6737 | onClick: handleStep(-1),
|
6738 | onMouseDown: handleMouseDown(handleStep(-1)),
|
6739 | onMouseUp: onMouseUp
|
6740 | }, React__default.createElement("div", {
|
6741 | className: styles$u.SpinnerIcon
|
6742 | }, React__default.createElement(Icon, {
|
6743 | source: CaretDownMinor
|
6744 | }))));
|
6745 | }
|
6746 |
|
6747 | function TextField(_ref) {
|
6748 | var prefix = _ref.prefix,
|
6749 | suffix = _ref.suffix,
|
6750 | placeholder = _ref.placeholder,
|
6751 | value = _ref.value,
|
6752 | helpText = _ref.helpText,
|
6753 | label = _ref.label,
|
6754 | labelAction = _ref.labelAction,
|
6755 | labelHidden = _ref.labelHidden,
|
6756 | disabled = _ref.disabled,
|
6757 | clearButton = _ref.clearButton,
|
6758 | readOnly = _ref.readOnly,
|
6759 | autoFocus = _ref.autoFocus,
|
6760 | focused = _ref.focused,
|
6761 | multiline = _ref.multiline,
|
6762 | error = _ref.error,
|
6763 | connectedRight = _ref.connectedRight,
|
6764 | connectedLeft = _ref.connectedLeft,
|
6765 | type = _ref.type,
|
6766 | name = _ref.name,
|
6767 | idProp = _ref.id,
|
6768 | role = _ref.role,
|
6769 | _ref$step = _ref.step,
|
6770 | step = _ref$step === void 0 ? 1 : _ref$step,
|
6771 | autoComplete = _ref.autoComplete,
|
6772 | _ref$max = _ref.max,
|
6773 | max = _ref$max === void 0 ? Infinity : _ref$max,
|
6774 | maxLength = _ref.maxLength,
|
6775 | _ref$min = _ref.min,
|
6776 | min = _ref$min === void 0 ? -Infinity : _ref$min,
|
6777 | minLength = _ref.minLength,
|
6778 | pattern = _ref.pattern,
|
6779 | spellCheck = _ref.spellCheck,
|
6780 | ariaOwns = _ref.ariaOwns,
|
6781 | ariaControls = _ref.ariaControls,
|
6782 | ariaActiveDescendant = _ref.ariaActiveDescendant,
|
6783 | ariaAutocomplete = _ref.ariaAutocomplete,
|
6784 | showCharacterCount = _ref.showCharacterCount,
|
6785 | align = _ref.align,
|
6786 | onClearButtonClick = _ref.onClearButtonClick,
|
6787 | onChange = _ref.onChange,
|
6788 | onFocus = _ref.onFocus,
|
6789 | onBlur = _ref.onBlur;
|
6790 | var i18n = useI18n();
|
6791 |
|
6792 | var _useState = useState(null),
|
6793 | _useState2 = _slicedToArray(_useState, 2),
|
6794 | height = _useState2[0],
|
6795 | setHeight = _useState2[1];
|
6796 |
|
6797 | var _useState3 = useState(Boolean(focused)),
|
6798 | _useState4 = _slicedToArray(_useState3, 2),
|
6799 | focus = _useState4[0],
|
6800 | setFocus = _useState4[1];
|
6801 |
|
6802 | var isAfterInitial = useIsAfterInitialMount();
|
6803 | var id = useUniqueId('TextField', idProp);
|
6804 | var inputRef = useRef(null);
|
6805 | var prefixRef = useRef(null);
|
6806 | var suffixRef = useRef(null);
|
6807 | var buttonPressTimer = useRef();
|
6808 | useEffect(function () {
|
6809 | var input = inputRef.current;
|
6810 | if (!input || focused === undefined) return;
|
6811 | focused ? input.focus() : input.blur();
|
6812 | }, [focused]);
|
6813 | var normalizedValue = value != null ? value : '';
|
6814 |
|
6815 | var _useFeatures = useFeatures(),
|
6816 | _useFeatures$unstable = _useFeatures.unstableGlobalTheming,
|
6817 | unstableGlobalTheming = _useFeatures$unstable === void 0 ? false : _useFeatures$unstable;
|
6818 |
|
6819 | var className = classNames(styles$u.TextField, Boolean(normalizedValue) && styles$u.hasValue, disabled && styles$u.disabled, readOnly && styles$u.readOnly, error && styles$u.error, multiline && styles$u.multiline, focus && styles$u.focus, unstableGlobalTheming && styles$u.globalTheming);
|
6820 | var inputType = type === 'currency' ? 'text' : type;
|
6821 | var prefixMarkup = prefix ? React__default.createElement("div", {
|
6822 | className: styles$u.Prefix,
|
6823 | id: "".concat(id, "Prefix"),
|
6824 | ref: prefixRef
|
6825 | }, prefix) : null;
|
6826 | var suffixMarkup = suffix ? React__default.createElement("div", {
|
6827 | className: styles$u.Suffix,
|
6828 | id: "".concat(id, "Suffix"),
|
6829 | ref: suffixRef
|
6830 | }, suffix) : null;
|
6831 | var characterCount = normalizedValue.length;
|
6832 | var characterCountLabel = i18n.translate(maxLength ? 'Polaris.TextField.characterCountWithMaxLength' : 'Polaris.TextField.characterCount', {
|
6833 | count: characterCount,
|
6834 | limit: maxLength
|
6835 | });
|
6836 | var characterCountClassName = classNames(styles$u.CharacterCount, multiline && styles$u.AlignFieldBottom);
|
6837 | var characterCountText = !maxLength ? characterCount : "".concat(characterCount, "/").concat(maxLength);
|
6838 | var characterCountMarkup = showCharacterCount ? React__default.createElement("div", {
|
6839 | id: "".concat(id, "CharacterCounter"),
|
6840 | className: characterCountClassName,
|
6841 | "aria-label": characterCountLabel,
|
6842 | "aria-live": focus ? 'polite' : 'off',
|
6843 | "aria-atomic": "true"
|
6844 | }, characterCountText) : null;
|
6845 | var clearButtonMarkup = clearButton && normalizedValue !== '' ? React__default.createElement("button", {
|
6846 | type: "button",
|
6847 | className: styles$u.ClearButton,
|
6848 | onClick: handleClearButtonPress,
|
6849 | disabled: disabled
|
6850 | }, React__default.createElement(VisuallyHidden, null, i18n.translate('Polaris.Common.clear')), React__default.createElement(Icon, {
|
6851 | source: CircleCancelMinor,
|
6852 | color: "inkLightest"
|
6853 | })) : null;
|
6854 | var handleNumberChange = useCallback(function (steps) {
|
6855 | if (onChange == null) {
|
6856 | return;
|
6857 | }
|
6858 |
|
6859 |
|
6860 | var dpl = function dpl(num) {
|
6861 | return (num.toString().split('.')[1] || []).length;
|
6862 | };
|
6863 |
|
6864 | var numericValue = value ? parseFloat(value) : 0;
|
6865 |
|
6866 | if (isNaN(numericValue)) {
|
6867 | return;
|
6868 | }
|
6869 |
|
6870 |
|
6871 |
|
6872 | var decimalPlaces = Math.max(dpl(numericValue), dpl(step));
|
6873 | var newValue = Math.min(Number(max), Math.max(numericValue + steps * step, Number(min)));
|
6874 | onChange(String(newValue.toFixed(decimalPlaces)), id);
|
6875 | }, [id, max, min, onChange, step, value]);
|
6876 | var handleButtonRelease = useCallback(function () {
|
6877 | clearTimeout(buttonPressTimer.current);
|
6878 | }, []);
|
6879 | var handleButtonPress = useCallback(function (onChange) {
|
6880 | var minInterval = 50;
|
6881 | var decrementBy = 10;
|
6882 | var interval = 200;
|
6883 |
|
6884 | var onChangeInterval = function onChangeInterval() {
|
6885 | if (interval > minInterval) interval -= decrementBy;
|
6886 | onChange();
|
6887 | buttonPressTimer.current = window.setTimeout(onChangeInterval, interval);
|
6888 | };
|
6889 |
|
6890 | buttonPressTimer.current = window.setTimeout(onChangeInterval, interval);
|
6891 | addEventListener(document, 'mouseup', handleButtonRelease, {
|
6892 | once: true
|
6893 | });
|
6894 | }, [handleButtonRelease]);
|
6895 | var spinnerMarkup = type === 'number' && !disabled && !readOnly ? React__default.createElement(Spinner$1, {
|
6896 | onChange: handleNumberChange,
|
6897 | onMouseDown: handleButtonPress,
|
6898 | onMouseUp: handleButtonRelease
|
6899 | }) : null;
|
6900 | var style = multiline && height ? {
|
6901 | height
|
6902 | } : null;
|
6903 | var handleExpandingResize = useCallback(function (height) {
|
6904 | setHeight(height);
|
6905 | }, []);
|
6906 | var resizer = multiline && isAfterInitial ? React__default.createElement(Resizer, {
|
6907 | contents: normalizedValue || placeholder,
|
6908 | currentHeight: height,
|
6909 | minimumLines: typeof multiline === 'number' ? multiline : 1,
|
6910 | onHeightChange: handleExpandingResize
|
6911 | }) : null;
|
6912 | var describedBy = [];
|
6913 |
|
6914 | if (error) {
|
6915 | describedBy.push("".concat(id, "Error"));
|
6916 | }
|
6917 |
|
6918 | if (helpText) {
|
6919 | describedBy.push(helpTextID(id));
|
6920 | }
|
6921 |
|
6922 | if (showCharacterCount) {
|
6923 | describedBy.push("".concat(id, "CharacterCounter"));
|
6924 | }
|
6925 |
|
6926 | var labelledBy = [];
|
6927 |
|
6928 | if (prefix) {
|
6929 | labelledBy.push("".concat(id, "Prefix"));
|
6930 | }
|
6931 |
|
6932 | if (suffix) {
|
6933 | labelledBy.push("".concat(id, "Suffix"));
|
6934 | }
|
6935 |
|
6936 | labelledBy.unshift(labelID(id));
|
6937 | var inputClassName = classNames(styles$u.Input, align && styles$u[variationName('Input-align', align)], suffix && styles$u['Input-suffixed'], clearButton && styles$u['Input-hasClearButton']);
|
6938 | var input = React__default.createElement(multiline ? 'textarea' : 'input', {
|
6939 | name,
|
6940 | id,
|
6941 | disabled,
|
6942 | readOnly,
|
6943 | role,
|
6944 | autoFocus,
|
6945 | value: normalizedValue,
|
6946 | placeholder,
|
6947 | onFocus,
|
6948 | onBlur,
|
6949 | onKeyPress: handleKeyPress,
|
6950 | style,
|
6951 | autoComplete: normalizeAutoComplete(autoComplete),
|
6952 | className: inputClassName,
|
6953 | onChange: handleChange,
|
6954 | ref: inputRef,
|
6955 | min,
|
6956 | max,
|
6957 | step,
|
6958 | minLength,
|
6959 | maxLength,
|
6960 | spellCheck,
|
6961 | pattern,
|
6962 | type: inputType,
|
6963 | 'aria-describedby': describedBy.length ? describedBy.join(' ') : undefined,
|
6964 | 'aria-labelledby': labelledBy.join(' '),
|
6965 | 'aria-invalid': Boolean(error),
|
6966 | 'aria-owns': ariaOwns,
|
6967 | 'aria-activedescendant': ariaActiveDescendant,
|
6968 | 'aria-autocomplete': ariaAutocomplete,
|
6969 | 'aria-controls': ariaControls,
|
6970 | 'aria-multiline': normalizeAriaMultiline(multiline)
|
6971 | });
|
6972 | return React__default.createElement(Labelled, {
|
6973 | label: label,
|
6974 | id: id,
|
6975 | error: error,
|
6976 | action: labelAction,
|
6977 | labelHidden: labelHidden,
|
6978 | helpText: helpText
|
6979 | }, React__default.createElement(Connected, {
|
6980 | left: connectedLeft,
|
6981 | right: connectedRight
|
6982 | }, React__default.createElement("div", {
|
6983 | className: className,
|
6984 | onFocus: handleFocus,
|
6985 | onBlur: handleBlur,
|
6986 | onClick: handleClick
|
6987 | }, prefixMarkup, input, suffixMarkup, characterCountMarkup, clearButtonMarkup, spinnerMarkup, React__default.createElement("div", {
|
6988 | className: styles$u.Backdrop
|
6989 | }), resizer)));
|
6990 |
|
6991 | function handleClearButtonPress() {
|
6992 | onClearButtonClick && onClearButtonClick(id);
|
6993 | }
|
6994 |
|
6995 | function handleKeyPress(event) {
|
6996 | var key = event.key,
|
6997 | which = event.which;
|
6998 | var numbersSpec = /[\d.eE+-]$/;
|
6999 |
|
7000 | if (type !== 'number' || which === Key.Enter || numbersSpec.test(key)) {
|
7001 | return;
|
7002 | }
|
7003 |
|
7004 | event.preventDefault();
|
7005 | }
|
7006 |
|
7007 | function containsAffix(target) {
|
7008 | return target instanceof HTMLElement && (prefixRef.current && prefixRef.current.contains(target) || suffixRef.current && suffixRef.current.contains(target));
|
7009 | }
|
7010 |
|
7011 | function handleChange(event) {
|
7012 | onChange && onChange(event.currentTarget.value, id);
|
7013 | }
|
7014 |
|
7015 | function handleFocus(_ref2) {
|
7016 | var target = _ref2.target;
|
7017 |
|
7018 | if (containsAffix(target)) {
|
7019 | return;
|
7020 | }
|
7021 |
|
7022 | setFocus(true);
|
7023 | }
|
7024 |
|
7025 | function handleBlur() {
|
7026 | setFocus(false);
|
7027 | }
|
7028 |
|
7029 | function handleClick(_ref3) {
|
7030 | var target = _ref3.target;
|
7031 |
|
7032 | if (containsAffix(target)) {
|
7033 | return;
|
7034 | }
|
7035 |
|
7036 | inputRef.current && inputRef.current.focus();
|
7037 | }
|
7038 | }
|
7039 |
|
7040 | function normalizeAutoComplete(autoComplete) {
|
7041 | if (autoComplete == null) {
|
7042 | return autoComplete;
|
7043 | } else if (autoComplete === true) {
|
7044 | return 'on';
|
7045 | } else if (autoComplete === false) {
|
7046 | return 'off';
|
7047 | } else {
|
7048 | return autoComplete;
|
7049 | }
|
7050 | }
|
7051 |
|
7052 | function normalizeAriaMultiline(multiline) {
|
7053 | switch (typeof multiline) {
|
7054 | case 'undefined':
|
7055 | return false;
|
7056 |
|
7057 | case 'boolean':
|
7058 | return multiline;
|
7059 |
|
7060 | case 'number':
|
7061 | return Boolean(multiline > 0);
|
7062 | }
|
7063 | }
|
7064 |
|
7065 | function TextField$1(props) {
|
7066 | return React__default.createElement(ComboBoxContext.Consumer, null, function (_ref) {
|
7067 | var selectedOptionId = _ref.selectedOptionId,
|
7068 | comboBoxId = _ref.comboBoxId;
|
7069 | return React__default.createElement(TextField, Object.assign({}, props, {
|
7070 | autoComplete: false,
|
7071 | ariaAutocomplete: "list",
|
7072 | ariaActiveDescendant: selectedOptionId,
|
7073 | ariaControls: comboBoxId
|
7074 | }));
|
7075 | });
|
7076 | }
|
7077 |
|
7078 | var styles$v = {
|
7079 | "Loading": "Polaris-Autocomplete__Loading"
|
7080 | };
|
7081 |
|
7082 |
|
7083 |
|
7084 |
|
7085 |
|
7086 | var Autocomplete = function Autocomplete(_ref) {
|
7087 | var id = _ref.id,
|
7088 | options = _ref.options,
|
7089 | selected = _ref.selected,
|
7090 | textField = _ref.textField,
|
7091 | preferredPosition = _ref.preferredPosition,
|
7092 | listTitle = _ref.listTitle,
|
7093 | allowMultiple = _ref.allowMultiple,
|
7094 | loading = _ref.loading,
|
7095 | actionBefore = _ref.actionBefore,
|
7096 | willLoadMoreResults = _ref.willLoadMoreResults,
|
7097 | emptyState = _ref.emptyState,
|
7098 | onSelect = _ref.onSelect,
|
7099 | onLoadMoreResults = _ref.onLoadMoreResults;
|
7100 | var i18n = useI18n();
|
7101 | var spinnerMarkup = loading ? React__default.createElement("div", {
|
7102 | className: styles$v.Loading
|
7103 | }, React__default.createElement(Spinner, {
|
7104 | size: "small",
|
7105 | accessibilityLabel: i18n.translate('Polaris.Autocomplete.spinnerAccessibilityLabel')
|
7106 | })) : null;
|
7107 | var conditionalOptions = loading && !willLoadMoreResults ? [] : options;
|
7108 | var conditionalAction = actionBefore && actionBefore !== [] ? [actionBefore] : undefined;
|
7109 | return React__default.createElement(ComboBox, {
|
7110 | id: id,
|
7111 | options: conditionalOptions,
|
7112 | selected: selected,
|
7113 | textField: textField,
|
7114 | preferredPosition: preferredPosition,
|
7115 | listTitle: listTitle,
|
7116 | allowMultiple: allowMultiple,
|
7117 | contentAfter: spinnerMarkup,
|
7118 | actionsBefore: conditionalAction,
|
7119 | onSelect: onSelect,
|
7120 | onEndReached: onLoadMoreResults,
|
7121 | emptyState: emptyState
|
7122 | });
|
7123 | };
|
7124 | Autocomplete.ComboBox = ComboBox;
|
7125 | Autocomplete.TextField = TextField$1;
|
7126 |
|
7127 |
|
7128 |
|
7129 | function ScrollLock(_) {
|
7130 | var scrollLockManager = useScrollLockManager();
|
7131 | useEffect(function () {
|
7132 | scrollLockManager.registerScrollLock();
|
7133 | return function () {
|
7134 | scrollLockManager.unregisterScrollLock();
|
7135 | };
|
7136 | }, [scrollLockManager]);
|
7137 | return null;
|
7138 | }
|
7139 |
|
7140 | var styles$w = {
|
7141 | "Backdrop": "Polaris-Backdrop",
|
7142 | "fade-in": "Polaris-Backdrop__fade--in",
|
7143 | "transparent": "Polaris-Backdrop--transparent",
|
7144 | "belowNavigation": "Polaris-Backdrop--belowNavigation"
|
7145 | };
|
7146 |
|
7147 | function Backdrop(props) {
|
7148 | var onClick = props.onClick,
|
7149 | onTouchStart = props.onTouchStart,
|
7150 | belowNavigation = props.belowNavigation,
|
7151 | transparent = props.transparent;
|
7152 | var className = classNames(styles$w.Backdrop, belowNavigation && styles$w.belowNavigation, transparent && styles$w.transparent);
|
7153 | return React__default.createElement(React__default.Fragment, null, React__default.createElement(ScrollLock, null), React__default.createElement("div", {
|
7154 | className: className,
|
7155 | onClick: onClick,
|
7156 | onTouchStart: onTouchStart
|
7157 | }));
|
7158 | }
|
7159 |
|
7160 | var BannerContext = React__default.createContext(false);
|
7161 |
|
7162 | var styles$x = {
|
7163 | "Banner": "Polaris-Banner",
|
7164 | "withinContentContainer": "Polaris-Banner--withinContentContainer",
|
7165 | "statusSuccess": "Polaris-Banner--statusSuccess",
|
7166 | "statusInfo": "Polaris-Banner--statusInfo",
|
7167 | "statusWarning": "Polaris-Banner--statusWarning",
|
7168 | "statusCritical": "Polaris-Banner--statusCritical",
|
7169 | "Ribbon": "Polaris-Banner__Ribbon",
|
7170 | "Actions": "Polaris-Banner__Actions",
|
7171 | "Dismiss": "Polaris-Banner__Dismiss",
|
7172 | "withinPage": "Polaris-Banner--withinPage",
|
7173 | "hasDismiss": "Polaris-Banner--hasDismiss",
|
7174 | "Heading": "Polaris-Banner__Heading",
|
7175 | "Content": "Polaris-Banner__Content",
|
7176 | "PrimaryAction": "Polaris-Banner__PrimaryAction",
|
7177 | "SecondaryAction": "Polaris-Banner__SecondaryAction",
|
7178 | "Text": "Polaris-Banner__Text"
|
7179 | };
|
7180 |
|
7181 | var Banner =
|
7182 |
|
7183 | function (_React$PureComponent) {
|
7184 | _inherits(Banner, _React$PureComponent);
|
7185 |
|
7186 | function Banner() {
|
7187 | var _this;
|
7188 |
|
7189 | _classCallCheck(this, Banner);
|
7190 |
|
7191 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Banner).apply(this, arguments));
|
7192 | _this.wrapper = React__default.createRef();
|
7193 | return _this;
|
7194 | }
|
7195 |
|
7196 | _createClass(Banner, [{
|
7197 | key: "focus",
|
7198 | value: function focus() {
|
7199 | this.wrapper.current && this.wrapper.current.focus();
|
7200 | }
|
7201 | }, {
|
7202 | key: "render",
|
7203 | value: function render() {
|
7204 | var _this2 = this;
|
7205 |
|
7206 | return React__default.createElement(BannerContext.Provider, {
|
7207 | value: true
|
7208 | }, React__default.createElement(WithinContentContext.Consumer, null, function (withinContentContainer) {
|
7209 | var _this2$props = _this2.props,
|
7210 | icon = _this2$props.icon,
|
7211 | action = _this2$props.action,
|
7212 | secondaryAction = _this2$props.secondaryAction,
|
7213 | title = _this2$props.title,
|
7214 | children = _this2$props.children,
|
7215 | status = _this2$props.status,
|
7216 | onDismiss = _this2$props.onDismiss,
|
7217 | stopAnnouncements = _this2$props.stopAnnouncements;
|
7218 | var color;
|
7219 | var defaultIcon;
|
7220 | var ariaRoleType = 'status';
|
7221 |
|
7222 | switch (status) {
|
7223 | case 'success':
|
7224 | color = 'greenDark';
|
7225 | defaultIcon = CircleTickMajorTwotone;
|
7226 | break;
|
7227 |
|
7228 | case 'info':
|
7229 | color = 'tealDark';
|
7230 | defaultIcon = CircleInformationMajorTwotone;
|
7231 | break;
|
7232 |
|
7233 | case 'warning':
|
7234 | color = 'yellowDark';
|
7235 | defaultIcon = CircleAlertMajorTwotone;
|
7236 | ariaRoleType = 'alert';
|
7237 | break;
|
7238 |
|
7239 | case 'critical':
|
7240 | color = 'redDark';
|
7241 | defaultIcon = CircleDisabledMajorTwotone;
|
7242 | ariaRoleType = 'alert';
|
7243 | break;
|
7244 |
|
7245 | default:
|
7246 | color = 'inkLighter';
|
7247 | defaultIcon = FlagMajorTwotone;
|
7248 | }
|
7249 |
|
7250 | var className = classNames(styles$x.Banner, status && styles$x[variationName('status', status)], onDismiss && styles$x.hasDismiss, withinContentContainer ? styles$x.withinContentContainer : styles$x.withinPage);
|
7251 | var id = uniqueID();
|
7252 | var iconName = icon || defaultIcon;
|
7253 | var headingMarkup = null;
|
7254 | var headingID;
|
7255 |
|
7256 | if (title) {
|
7257 | headingID = "".concat(id, "Heading");
|
7258 | headingMarkup = React__default.createElement("div", {
|
7259 | className: styles$x.Heading,
|
7260 | id: headingID
|
7261 | }, React__default.createElement(Heading, {
|
7262 | element: "p"
|
7263 | }, title));
|
7264 | }
|
7265 |
|
7266 | var buttonSizeValue = withinContentContainer ? 'slim' : undefined;
|
7267 | var secondaryActionMarkup = secondaryAction ? secondaryActionFrom(secondaryAction) : null;
|
7268 | var actionMarkup = action ? React__default.createElement("div", {
|
7269 | className: styles$x.Actions
|
7270 | }, React__default.createElement(ButtonGroup, null, React__default.createElement("div", {
|
7271 | className: styles$x.PrimaryAction
|
7272 | }, buttonFrom(action, {
|
7273 | outline: true,
|
7274 | size: buttonSizeValue
|
7275 | })), secondaryActionMarkup)) : null;
|
7276 | var contentMarkup = null;
|
7277 | var contentID;
|
7278 |
|
7279 | if (children || actionMarkup) {
|
7280 | contentID = "".concat(id, "Content");
|
7281 | contentMarkup = React__default.createElement("div", {
|
7282 | className: styles$x.Content,
|
7283 | id: contentID
|
7284 | }, children, actionMarkup);
|
7285 | }
|
7286 |
|
7287 | var dismissButton = onDismiss ? React__default.createElement("div", {
|
7288 | className: styles$x.Dismiss
|
7289 | }, React__default.createElement(Button, {
|
7290 | plain: true,
|
7291 | icon: CancelSmallMinor,
|
7292 | onClick: onDismiss,
|
7293 | accessibilityLabel: "Dismiss notification"
|
7294 | })) : null;
|
7295 | return React__default.createElement("div", {
|
7296 | className: className
|
7297 | ,
|
7298 | tabIndex: 0,
|
7299 | ref: _this2.wrapper,
|
7300 | role: ariaRoleType,
|
7301 | "aria-live": stopAnnouncements ? 'off' : 'polite',
|
7302 | onMouseUp: handleMouseUp,
|
7303 | "aria-labelledby": headingID,
|
7304 | "aria-describedby": contentID
|
7305 | }, dismissButton, React__default.createElement("div", {
|
7306 | className: styles$x.Ribbon
|
7307 | }, React__default.createElement(Icon, {
|
7308 | source: iconName,
|
7309 | color: color,
|
7310 | backdrop: true
|
7311 | })), React__default.createElement("div", null, headingMarkup, contentMarkup));
|
7312 | }));
|
7313 | }
|
7314 | }]);
|
7315 |
|
7316 | return Banner;
|
7317 | }(React__default.PureComponent);
|
7318 | var index = 1;
|
7319 |
|
7320 | function uniqueID() {
|
7321 | return "Banner".concat(index++);
|
7322 | }
|
7323 |
|
7324 | function handleMouseUp(_ref) {
|
7325 | var currentTarget = _ref.currentTarget;
|
7326 | currentTarget.blur();
|
7327 | }
|
7328 |
|
7329 | function secondaryActionFrom(action) {
|
7330 | if (action.url) {
|
7331 | return React__default.createElement(UnstyledLink, {
|
7332 | className: styles$x.SecondaryAction,
|
7333 | url: action.url,
|
7334 | external: action.external
|
7335 | }, React__default.createElement("span", {
|
7336 | className: styles$x.Text
|
7337 | }, action.content));
|
7338 | }
|
7339 |
|
7340 | return React__default.createElement("button", {
|
7341 | className: styles$x.SecondaryAction,
|
7342 | onClick: action.onAction
|
7343 | }, React__default.createElement("span", {
|
7344 | className: styles$x.Text
|
7345 | }, action.content));
|
7346 | }
|
7347 |
|
7348 | var styles$y = {
|
7349 | "Breadcrumb": "Polaris-Breadcrumbs__Breadcrumb",
|
7350 | "Icon": "Polaris-Breadcrumbs__Icon",
|
7351 | "ContentWrapper": "Polaris-Breadcrumbs__ContentWrapper",
|
7352 | "Content": "Polaris-Breadcrumbs__Content"
|
7353 | };
|
7354 |
|
7355 | var Breadcrumbs =
|
7356 |
|
7357 | function (_React$PureComponent) {
|
7358 | _inherits(Breadcrumbs, _React$PureComponent);
|
7359 |
|
7360 | function Breadcrumbs() {
|
7361 | _classCallCheck(this, Breadcrumbs);
|
7362 |
|
7363 | return _possibleConstructorReturn(this, _getPrototypeOf(Breadcrumbs).apply(this, arguments));
|
7364 | }
|
7365 |
|
7366 | _createClass(Breadcrumbs, [{
|
7367 | key: "render",
|
7368 | value: function render() {
|
7369 | var breadcrumbs = this.props.breadcrumbs;
|
7370 | var breadcrumb = breadcrumbs[breadcrumbs.length - 1];
|
7371 |
|
7372 | if (breadcrumb == null) {
|
7373 | return null;
|
7374 | }
|
7375 |
|
7376 | var content = breadcrumb.content;
|
7377 | var contentMarkup = React__default.createElement("span", {
|
7378 | className: styles$y.ContentWrapper
|
7379 | }, React__default.createElement("span", {
|
7380 | className: styles$y.Icon
|
7381 | }, React__default.createElement(Icon, {
|
7382 | source: ChevronLeftMinor
|
7383 | })), React__default.createElement("span", {
|
7384 | className: styles$y.Content
|
7385 | }, content));
|
7386 | var breadcrumbMarkup = 'url' in breadcrumb ? React__default.createElement(UnstyledLink, {
|
7387 | key: content,
|
7388 | url: breadcrumb.url,
|
7389 | className: styles$y.Breadcrumb,
|
7390 | onMouseUp: handleMouseUpByBlurring,
|
7391 | "aria-label": breadcrumb.accessibilityLabel
|
7392 | }, contentMarkup) : React__default.createElement("button", {
|
7393 | key: content,
|
7394 | className: styles$y.Breadcrumb,
|
7395 | onClick: breadcrumb.onAction,
|
7396 | onMouseUp: handleMouseUpByBlurring,
|
7397 | type: "button",
|
7398 | "aria-label": breadcrumb.accessibilityLabel
|
7399 | }, contentMarkup);
|
7400 | return React__default.createElement("nav", {
|
7401 | role: "navigation"
|
7402 | }, breadcrumbMarkup);
|
7403 | }
|
7404 | }]);
|
7405 |
|
7406 | return Breadcrumbs;
|
7407 | }(React__default.PureComponent);
|
7408 |
|
7409 | var styles$z = {
|
7410 | "TextContainer": "Polaris-TextContainer",
|
7411 | "spacingTight": "Polaris-TextContainer--spacingTight",
|
7412 | "spacingLoose": "Polaris-TextContainer--spacingLoose"
|
7413 | };
|
7414 |
|
7415 | function TextContainer(_ref) {
|
7416 | var spacing = _ref.spacing,
|
7417 | children = _ref.children;
|
7418 | var className = classNames(styles$z.TextContainer, spacing && styles$z[variationName('spacing', spacing)]);
|
7419 | return React__default.createElement("div", {
|
7420 | className: className
|
7421 | }, children);
|
7422 | }
|
7423 |
|
7424 | var styles$A = {
|
7425 | "CalloutCard": "Polaris-CalloutCard",
|
7426 | "Image": "Polaris-CalloutCard__Image",
|
7427 | "DismissImage": "Polaris-CalloutCard__DismissImage",
|
7428 | "Content": "Polaris-CalloutCard__Content",
|
7429 | "Title": "Polaris-CalloutCard__Title",
|
7430 | "Buttons": "Polaris-CalloutCard__Buttons",
|
7431 | "Container": "Polaris-CalloutCard__Container",
|
7432 | "Dismiss": "Polaris-CalloutCard__Dismiss"
|
7433 | };
|
7434 |
|
7435 | function CalloutCard(_ref) {
|
7436 | var title = _ref.title,
|
7437 | children = _ref.children,
|
7438 | illustration = _ref.illustration,
|
7439 | primaryAction = _ref.primaryAction,
|
7440 | secondaryAction = _ref.secondaryAction,
|
7441 | onDismiss = _ref.onDismiss;
|
7442 | var primaryActionMarkup = buttonFrom(primaryAction);
|
7443 | var secondaryActionMarkup = secondaryAction ? buttonFrom(secondaryAction, {
|
7444 | plain: true
|
7445 | }) : null;
|
7446 | var buttonMarkup = secondaryActionMarkup ? React__default.createElement(ButtonGroup, null, primaryActionMarkup, secondaryActionMarkup) : primaryActionMarkup;
|
7447 | var dismissButton = onDismiss ? React__default.createElement("div", {
|
7448 | className: styles$A.Dismiss
|
7449 | }, React__default.createElement(Button, {
|
7450 | plain: true,
|
7451 | icon: CancelSmallMinor,
|
7452 | onClick: onDismiss,
|
7453 | accessibilityLabel: "Dismiss card"
|
7454 | })) : null;
|
7455 | var imageClassName = classNames(styles$A.Image, onDismiss && styles$A.DismissImage);
|
7456 | return React__default.createElement(Card, null, React__default.createElement("div", {
|
7457 | className: styles$A.Container
|
7458 | }, dismissButton, React__default.createElement(Card.Section, null, React__default.createElement("div", {
|
7459 | className: styles$A.CalloutCard
|
7460 | }, React__default.createElement("div", {
|
7461 | className: styles$A.Content
|
7462 | }, React__default.createElement("div", {
|
7463 | className: styles$A.Title
|
7464 | }, React__default.createElement(Heading, null, title)), React__default.createElement(TextContainer, null, children), React__default.createElement("div", {
|
7465 | className: styles$A.Buttons
|
7466 | }, buttonMarkup)), React__default.createElement(Image, {
|
7467 | alt: "",
|
7468 | className: imageClassName,
|
7469 | source: illustration
|
7470 | })))));
|
7471 | }
|
7472 |
|
7473 | var styles$B = {
|
7474 | "Caption": "Polaris-Caption"
|
7475 | };
|
7476 |
|
7477 | function Caption(_ref) {
|
7478 | var children = _ref.children;
|
7479 | return React__default.createElement("p", {
|
7480 | className: styles$B.Caption
|
7481 | }, children);
|
7482 | }
|
7483 |
|
7484 | var styles$C = {
|
7485 | "Choice": "Polaris-Choice",
|
7486 | "labelHidden": "Polaris-Choice--labelHidden",
|
7487 | "Label": "Polaris-Choice__Label",
|
7488 | "Control": "Polaris-Choice__Control",
|
7489 | "disabled": "Polaris-Choice--disabled",
|
7490 | "Descriptions": "Polaris-Choice__Descriptions",
|
7491 | "HelpText": "Polaris-Choice__HelpText"
|
7492 | };
|
7493 |
|
7494 | function Choice(_ref) {
|
7495 | var id = _ref.id,
|
7496 | label = _ref.label,
|
7497 | disabled = _ref.disabled,
|
7498 | error = _ref.error,
|
7499 | children = _ref.children,
|
7500 | labelHidden = _ref.labelHidden,
|
7501 | helpText = _ref.helpText,
|
7502 | onClick = _ref.onClick;
|
7503 | var className = classNames(styles$C.Choice, labelHidden && styles$C.labelHidden, disabled && styles$C.disabled);
|
7504 | var labelMarkup = React__default.createElement("label", {
|
7505 | className: className,
|
7506 | htmlFor: id,
|
7507 | onClick: onClick
|
7508 | }, React__default.createElement("span", {
|
7509 | className: styles$C.Control
|
7510 | }, children), React__default.createElement("span", {
|
7511 | className: styles$C.Label
|
7512 | }, label));
|
7513 | var helpTextMarkup = helpText ? React__default.createElement("div", {
|
7514 | className: styles$C.HelpText,
|
7515 | id: helpTextID$1(id)
|
7516 | }, helpText) : null;
|
7517 | var errorMarkup = error && typeof error !== 'boolean' && React__default.createElement("div", {
|
7518 | className: styles$C.Error
|
7519 | }, React__default.createElement(InlineError, {
|
7520 | message: error,
|
7521 | fieldID: id
|
7522 | }));
|
7523 | var descriptionMarkup = helpTextMarkup || errorMarkup ? React__default.createElement("div", {
|
7524 | className: styles$C.Descriptions
|
7525 | }, errorMarkup, helpTextMarkup) : null;
|
7526 | return descriptionMarkup ? React__default.createElement("div", null, labelMarkup, descriptionMarkup) : labelMarkup;
|
7527 | }
|
7528 | function helpTextID$1(id) {
|
7529 | return "".concat(id, "HelpText");
|
7530 | }
|
7531 |
|
7532 | var styles$D = {
|
7533 | "Checkbox": "Polaris-Checkbox",
|
7534 | "error": "Polaris-Checkbox--error",
|
7535 | "Input": "Polaris-Checkbox__Input",
|
7536 | "Backdrop": "Polaris-Checkbox__Backdrop",
|
7537 | "Input-indeterminate": "Polaris-Checkbox__Input--indeterminate",
|
7538 | "Icon": "Polaris-Checkbox__Icon"
|
7539 | };
|
7540 |
|
7541 | var Checkbox$1 = React__default.forwardRef(function Checkbox(_ref, ref) {
|
7542 | var ariaDescribedByProp = _ref.ariaDescribedBy,
|
7543 | label = _ref.label,
|
7544 | labelHidden = _ref.labelHidden,
|
7545 | _ref$checked = _ref.checked,
|
7546 | checked = _ref$checked === void 0 ? false : _ref$checked,
|
7547 | helpText = _ref.helpText,
|
7548 | disabled = _ref.disabled,
|
7549 | idProp = _ref.id,
|
7550 | name = _ref.name,
|
7551 | value = _ref.value,
|
7552 | error = _ref.error,
|
7553 | onChange = _ref.onChange,
|
7554 | onFocus = _ref.onFocus,
|
7555 | onBlur = _ref.onBlur;
|
7556 | var inputNode = useRef(null);
|
7557 | var id = useUniqueId('Checkbox', idProp);
|
7558 | useImperativeHandle(ref, function () {
|
7559 | return {
|
7560 | focus: function focus() {
|
7561 | if (inputNode.current) {
|
7562 | inputNode.current.focus();
|
7563 | }
|
7564 | }
|
7565 | };
|
7566 | });
|
7567 |
|
7568 | var handleInput = function handleInput() {
|
7569 | if (onChange == null || inputNode.current == null || disabled) {
|
7570 | return;
|
7571 | }
|
7572 |
|
7573 | onChange(!inputNode.current.checked, id);
|
7574 | inputNode.current.focus();
|
7575 | };
|
7576 |
|
7577 | var handleKeyUp = function handleKeyUp(event) {
|
7578 | var keyCode = event.keyCode;
|
7579 | if (keyCode !== Key.Space) return;
|
7580 | handleInput();
|
7581 | };
|
7582 |
|
7583 | var describedBy = [];
|
7584 |
|
7585 | if (error && typeof error !== 'boolean') {
|
7586 | describedBy.push(errorTextID(id));
|
7587 | }
|
7588 |
|
7589 | if (helpText) {
|
7590 | describedBy.push(helpTextID$1(id));
|
7591 | }
|
7592 |
|
7593 | if (ariaDescribedByProp) {
|
7594 | describedBy.push(ariaDescribedByProp);
|
7595 | }
|
7596 |
|
7597 | var ariaDescribedBy = describedBy.length ? describedBy.join(' ') : undefined;
|
7598 | var wrapperClassName = classNames(styles$D.Checkbox, error && styles$D.error);
|
7599 | var isIndeterminate = checked === 'indeterminate';
|
7600 | var isChecked = !isIndeterminate && Boolean(checked);
|
7601 | var indeterminateAttributes = isIndeterminate ? {
|
7602 | indeterminate: 'true',
|
7603 | 'aria-checked': 'mixed'
|
7604 | } : {
|
7605 | 'aria-checked': isChecked
|
7606 | };
|
7607 | var iconSource = isIndeterminate ? MinusMinor : TickSmallMinor;
|
7608 | var inputClassName = classNames(styles$D.Input, isIndeterminate && styles$D['Input-indeterminate']);
|
7609 | return (
|
7610 |
|
7611 | React__default.createElement(Choice, {
|
7612 | id: id,
|
7613 | label: label,
|
7614 | labelHidden: labelHidden,
|
7615 | helpText: helpText,
|
7616 | error: error,
|
7617 | disabled: disabled,
|
7618 | onClick: handleInput
|
7619 | }, React__default.createElement("span", {
|
7620 | className: wrapperClassName
|
7621 | }, React__default.createElement("input", Object.assign({
|
7622 | onKeyUp: handleKeyUp,
|
7623 | ref: inputNode,
|
7624 | id: id,
|
7625 | name: name,
|
7626 | value: value,
|
7627 | type: "checkbox",
|
7628 | checked: isChecked,
|
7629 | disabled: disabled,
|
7630 | className: inputClassName,
|
7631 | onFocus: onFocus,
|
7632 | onBlur: onBlur,
|
7633 | onClick: stopPropagation,
|
7634 | onChange: noop$3,
|
7635 | "aria-invalid": error != null,
|
7636 | "aria-describedby": ariaDescribedBy,
|
7637 | role: "checkbox"
|
7638 | }, indeterminateAttributes)), React__default.createElement("span", {
|
7639 | className: styles$D.Backdrop
|
7640 | }), React__default.createElement("span", {
|
7641 | className: styles$D.Icon
|
7642 | }, React__default.createElement(Icon, {
|
7643 | source: iconSource
|
7644 | }))))
|
7645 |
|
7646 |
|
7647 | );
|
7648 | });
|
7649 |
|
7650 | function noop$3() {}
|
7651 |
|
7652 | function stopPropagation(event) {
|
7653 | event.stopPropagation();
|
7654 | }
|
7655 |
|
7656 | var styles$E = {
|
7657 | "RadioButton": "Polaris-RadioButton",
|
7658 | "Input": "Polaris-RadioButton__Input",
|
7659 | "Backdrop": "Polaris-RadioButton__Backdrop",
|
7660 | "Icon": "Polaris-RadioButton__Icon"
|
7661 | };
|
7662 |
|
7663 | function RadioButton(_ref) {
|
7664 | var ariaDescribedByProp = _ref.ariaDescribedBy,
|
7665 | label = _ref.label,
|
7666 | labelHidden = _ref.labelHidden,
|
7667 | helpText = _ref.helpText,
|
7668 | checked = _ref.checked,
|
7669 | disabled = _ref.disabled,
|
7670 | onChange = _ref.onChange,
|
7671 | onFocus = _ref.onFocus,
|
7672 | onBlur = _ref.onBlur,
|
7673 | idProp = _ref.id,
|
7674 | nameProp = _ref.name,
|
7675 | value = _ref.value;
|
7676 | var id = useUniqueId('RadioButton', idProp);
|
7677 | var name = nameProp || id;
|
7678 |
|
7679 | function handleChange(_ref2) {
|
7680 | var currentTarget = _ref2.currentTarget;
|
7681 | onChange && onChange(currentTarget.checked, id);
|
7682 | }
|
7683 |
|
7684 | var describedBy = [];
|
7685 |
|
7686 | if (helpText) {
|
7687 | describedBy.push(helpTextID$1(id));
|
7688 | }
|
7689 |
|
7690 | if (ariaDescribedByProp) {
|
7691 | describedBy.push(ariaDescribedByProp);
|
7692 | }
|
7693 |
|
7694 | var ariaDescribedBy = describedBy.length ? describedBy.join(' ') : undefined;
|
7695 | return React__default.createElement(Choice, {
|
7696 | label: label,
|
7697 | labelHidden: labelHidden,
|
7698 | disabled: disabled,
|
7699 | id: id,
|
7700 | helpText: helpText
|
7701 | }, React__default.createElement("span", {
|
7702 | className: styles$E.RadioButton
|
7703 | }, React__default.createElement("input", {
|
7704 | id: id,
|
7705 | name: name,
|
7706 | value: value,
|
7707 | type: "radio",
|
7708 | checked: checked,
|
7709 | disabled: disabled,
|
7710 | className: styles$E.Input,
|
7711 | onChange: handleChange,
|
7712 | onFocus: onFocus,
|
7713 | onBlur: onBlur,
|
7714 | "aria-describedby": ariaDescribedBy
|
7715 | }), React__default.createElement("span", {
|
7716 | className: styles$E.Backdrop
|
7717 | }), React__default.createElement("span", {
|
7718 | className: styles$E.Icon
|
7719 | })));
|
7720 | }
|
7721 |
|
7722 | var styles$F = {
|
7723 | "ChoiceList": "Polaris-ChoiceList",
|
7724 | "titleHidden": "Polaris-ChoiceList--titleHidden",
|
7725 | "Title": "Polaris-ChoiceList__Title",
|
7726 | "Choices": "Polaris-ChoiceList__Choices",
|
7727 | "ChoiceChildren": "Polaris-ChoiceList__ChoiceChildren",
|
7728 | "ChoiceError": "Polaris-ChoiceList__ChoiceError"
|
7729 | };
|
7730 |
|
7731 | function ChoiceList(_ref) {
|
7732 | var title = _ref.title,
|
7733 | titleHidden = _ref.titleHidden,
|
7734 | allowMultiple = _ref.allowMultiple,
|
7735 | choices = _ref.choices,
|
7736 | selected = _ref.selected,
|
7737 | _ref$onChange = _ref.onChange,
|
7738 | onChange = _ref$onChange === void 0 ? noop$4 : _ref$onChange,
|
7739 | error = _ref.error,
|
7740 | _ref$disabled = _ref.disabled,
|
7741 | disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
7742 | nameProp = _ref.name;
|
7743 |
|
7744 |
|
7745 | var ControlComponent = allowMultiple ? Checkbox$1 : RadioButton;
|
7746 | var name = useUniqueId('ChoiceList', nameProp);
|
7747 | var finalName = allowMultiple ? "".concat(name, "[]") : name;
|
7748 | var className = classNames(styles$F.ChoiceList, titleHidden && styles$F.titleHidden);
|
7749 | var titleMarkup = title ? React__default.createElement("legend", {
|
7750 | className: styles$F.Title
|
7751 | }, title) : null;
|
7752 | var choicesMarkup = choices.map(function (choice) {
|
7753 | var value = choice.value,
|
7754 | label = choice.label,
|
7755 | helpText = choice.helpText,
|
7756 | choiceDisabled = choice.disabled,
|
7757 | describedByError = choice.describedByError;
|
7758 |
|
7759 | function handleChange(checked) {
|
7760 | onChange(updateSelectedChoices(choice, checked, selected, allowMultiple), name);
|
7761 | }
|
7762 |
|
7763 | var isSelected = choiceIsSelected(choice, selected);
|
7764 | var renderedChildren = choice.renderChildren ? choice.renderChildren(isSelected) : null;
|
7765 | var children = renderedChildren ? React__default.createElement("div", {
|
7766 | className: styles$F.ChoiceChildren
|
7767 | }, renderedChildren) : null;
|
7768 | return React__default.createElement("li", {
|
7769 | key: value
|
7770 | }, React__default.createElement(ControlComponent, {
|
7771 | name: finalName,
|
7772 | value: value,
|
7773 | label: label,
|
7774 | disabled: choiceDisabled || disabled,
|
7775 | checked: choiceIsSelected(choice, selected),
|
7776 | helpText: helpText,
|
7777 | onChange: handleChange,
|
7778 | ariaDescribedBy: error && describedByError ? errorTextID(finalName) : null
|
7779 | }), children);
|
7780 | });
|
7781 | var errorMarkup = error && React__default.createElement("div", {
|
7782 | className: styles$F.ChoiceError
|
7783 | }, React__default.createElement(InlineError, {
|
7784 | message: error,
|
7785 | fieldID: finalName
|
7786 | }));
|
7787 | return React__default.createElement("fieldset", {
|
7788 | className: className,
|
7789 | id: finalName,
|
7790 | "aria-invalid": error != null
|
7791 | }, titleMarkup, React__default.createElement("ul", {
|
7792 | className: styles$F.Choices
|
7793 | }, choicesMarkup), errorMarkup);
|
7794 | }
|
7795 |
|
7796 | function noop$4() {}
|
7797 |
|
7798 | function choiceIsSelected(_ref2, selected) {
|
7799 | var value = _ref2.value;
|
7800 | return selected.includes(value);
|
7801 | }
|
7802 |
|
7803 | function updateSelectedChoices(_ref3, checked, selected) {
|
7804 | var value = _ref3.value;
|
7805 | var allowMultiple = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
7806 |
|
7807 | if (checked) {
|
7808 | return allowMultiple ? [].concat(_toConsumableArray(selected), [value]) : [value];
|
7809 | }
|
7810 |
|
7811 | return selected.filter(function (selectedChoice) {
|
7812 | return selectedChoice !== value;
|
7813 | });
|
7814 | }
|
7815 |
|
7816 | var styles$G = {
|
7817 | "Collapsible": "Polaris-Collapsible",
|
7818 | "animating": "Polaris-Collapsible--animating",
|
7819 | "open": "Polaris-Collapsible--open",
|
7820 | "fullyOpen": "Polaris-Collapsible--fullyOpen"
|
7821 | };
|
7822 |
|
7823 | var ParentCollapsibleExpandingContext = createContext(false);
|
7824 |
|
7825 | var Collapsible =
|
7826 |
|
7827 | function (_React$Component) {
|
7828 | _inherits(Collapsible, _React$Component);
|
7829 |
|
7830 | function Collapsible() {
|
7831 | var _this;
|
7832 |
|
7833 | _classCallCheck(this, Collapsible);
|
7834 |
|
7835 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Collapsible).apply(this, arguments));
|
7836 | _this.state = {
|
7837 | height: null,
|
7838 | animationState: 'idle',
|
7839 |
|
7840 | open: _this.props.open
|
7841 | };
|
7842 | _this.node = createRef();
|
7843 | _this.heightNode = createRef();
|
7844 |
|
7845 | _this.handleTransitionEnd = function (event) {
|
7846 | var target = event.target;
|
7847 |
|
7848 | if (target === _this.node.current) {
|
7849 | _this.setState({
|
7850 | animationState: 'idle',
|
7851 | height: null
|
7852 | });
|
7853 | }
|
7854 | };
|
7855 |
|
7856 | return _this;
|
7857 | }
|
7858 |
|
7859 | _createClass(Collapsible, [{
|
7860 | key: "componentDidUpdate",
|
7861 | value: function componentDidUpdate(_ref) {
|
7862 | var _this2 = this;
|
7863 |
|
7864 | var wasOpen = _ref.open;
|
7865 | var animationState = this.state.animationState;
|
7866 | var parentCollapsibleExpanding = this.context;
|
7867 |
|
7868 | if (parentCollapsibleExpanding && animationState !== 'idle') {
|
7869 |
|
7870 | this.setState({
|
7871 | animationState: 'idle'
|
7872 | });
|
7873 | return;
|
7874 | }
|
7875 |
|
7876 | read(function () {
|
7877 | var heightNode = _this2.heightNode.current;
|
7878 |
|
7879 | switch (animationState) {
|
7880 | case 'idle':
|
7881 | break;
|
7882 |
|
7883 | case 'measuring':
|
7884 | _this2.setState({
|
7885 | animationState: wasOpen ? 'closingStart' : 'openingStart',
|
7886 | height: wasOpen && heightNode ? heightNode.scrollHeight : 0
|
7887 | });
|
7888 |
|
7889 | break;
|
7890 |
|
7891 | case 'closingStart':
|
7892 | _this2.setState({
|
7893 | animationState: 'closing',
|
7894 | height: 0
|
7895 | });
|
7896 |
|
7897 | break;
|
7898 |
|
7899 | case 'openingStart':
|
7900 | _this2.setState({
|
7901 | animationState: 'opening',
|
7902 | height: heightNode ? heightNode.scrollHeight : 0
|
7903 | });
|
7904 |
|
7905 | }
|
7906 | });
|
7907 | }
|
7908 | }, {
|
7909 | key: "render",
|
7910 | value: function render() {
|
7911 | var _this$props = this.props,
|
7912 | id = _this$props.id,
|
7913 | open = _this$props.open,
|
7914 | children = _this$props.children;
|
7915 | var _this$state = this.state,
|
7916 | animationState = _this$state.animationState,
|
7917 | height = _this$state.height;
|
7918 | var parentCollapsibleExpanding = this.context;
|
7919 | var animating = animationState !== 'idle';
|
7920 | var wrapperClassName = classNames(styles$G.Collapsible, open && styles$G.open, animating && styles$G.animating, !animating && open && styles$G.fullyOpen);
|
7921 | var displayHeight = collapsibleHeight(open, animationState, height);
|
7922 | var content = animating || open ? children : null;
|
7923 | return React__default.createElement(ParentCollapsibleExpandingContext.Provider, {
|
7924 | value: parentCollapsibleExpanding || open && animationState !== 'idle'
|
7925 | }, React__default.createElement("div", {
|
7926 | id: id,
|
7927 | "aria-hidden": !open,
|
7928 | style: {
|
7929 | maxHeight: displayHeight
|
7930 | },
|
7931 | className: wrapperClassName,
|
7932 | ref: this.node,
|
7933 | onTransitionEnd: this.handleTransitionEnd
|
7934 | }, React__default.createElement("div", {
|
7935 | ref: this.heightNode
|
7936 | }, content)));
|
7937 | }
|
7938 | }], [{
|
7939 | key: "getDerivedStateFromProps",
|
7940 | value: function getDerivedStateFromProps(_ref2, _ref3) {
|
7941 | var willOpen = _ref2.open;
|
7942 | var open = _ref3.open,
|
7943 | prevAnimationState = _ref3.animationState;
|
7944 | var nextAnimationState = prevAnimationState;
|
7945 |
|
7946 | if (open !== willOpen) {
|
7947 | nextAnimationState = 'measuring';
|
7948 | }
|
7949 |
|
7950 | return {
|
7951 | animationState: nextAnimationState,
|
7952 | open: willOpen
|
7953 | };
|
7954 | }
|
7955 | }]);
|
7956 |
|
7957 | return Collapsible;
|
7958 | }(React__default.Component);
|
7959 |
|
7960 | Collapsible.contextType = ParentCollapsibleExpandingContext;
|
7961 |
|
7962 | function collapsibleHeight(open, animationState, height) {
|
7963 | if (animationState === 'idle' && open) {
|
7964 | return open ? 'none' : undefined;
|
7965 | }
|
7966 |
|
7967 | if (animationState === 'measuring') {
|
7968 | return open ? undefined : 'none';
|
7969 | }
|
7970 |
|
7971 | return "".concat(height || 0, "px");
|
7972 | }
|
7973 |
|
7974 | var styles$H = {
|
7975 | "ColorPicker": "Polaris-ColorPicker",
|
7976 | "MainColor": "Polaris-ColorPicker__MainColor",
|
7977 | "Dragger": "Polaris-ColorPicker__Dragger",
|
7978 | "ColorLayer": "Polaris-ColorPicker__ColorLayer",
|
7979 | "HuePicker": "Polaris-ColorPicker__HuePicker",
|
7980 | "AlphaPicker": "Polaris-ColorPicker__AlphaPicker",
|
7981 | "Slidable": "Polaris-ColorPicker__Slidable"
|
7982 | };
|
7983 |
|
7984 | var isDragging = false;
|
7985 |
|
7986 |
|
7987 |
|
7988 |
|
7989 |
|
7990 | if (!isServer) {
|
7991 | window.addEventListener('touchmove', function (event) {
|
7992 | if (!isDragging) {
|
7993 | return;
|
7994 | }
|
7995 |
|
7996 | event.preventDefault();
|
7997 | }, {
|
7998 | passive: false
|
7999 | });
|
8000 | }
|
8001 |
|
8002 | var Slidable =
|
8003 |
|
8004 | function (_React$PureComponent) {
|
8005 | _inherits(Slidable, _React$PureComponent);
|
8006 |
|
8007 | function Slidable() {
|
8008 | var _this;
|
8009 |
|
8010 | _classCallCheck(this, Slidable);
|
8011 |
|
8012 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Slidable).apply(this, arguments));
|
8013 | _this.state = {
|
8014 | dragging: false
|
8015 | };
|
8016 | _this.node = null;
|
8017 | _this.draggerNode = null;
|
8018 |
|
8019 | _this.setDraggerNode = function (node) {
|
8020 | _this.draggerNode = node;
|
8021 | };
|
8022 |
|
8023 | _this.setNode = function (node) {
|
8024 | _this.node = node;
|
8025 | };
|
8026 |
|
8027 | _this.startDrag = function (event) {
|
8028 | if (event.type === 'mousedown') {
|
8029 | var mouseEvent = event;
|
8030 |
|
8031 | _this.handleDraggerMove(mouseEvent.clientX, mouseEvent.clientY);
|
8032 | }
|
8033 |
|
8034 | isDragging = true;
|
8035 |
|
8036 | _this.setState({
|
8037 | dragging: true
|
8038 | });
|
8039 | };
|
8040 |
|
8041 | _this.handleDragEnd = function () {
|
8042 | isDragging = false;
|
8043 |
|
8044 | _this.setState({
|
8045 | dragging: false
|
8046 | });
|
8047 | };
|
8048 |
|
8049 | _this.handleMove = function (event) {
|
8050 | event.stopImmediatePropagation();
|
8051 | event.stopPropagation();
|
8052 |
|
8053 | if (event.cancelable) {
|
8054 | event.preventDefault();
|
8055 | }
|
8056 |
|
8057 | if (event.type === 'mousemove') {
|
8058 | var mouseEvent = event;
|
8059 |
|
8060 | _this.handleDraggerMove(mouseEvent.clientX, mouseEvent.clientY);
|
8061 |
|
8062 | return;
|
8063 | }
|
8064 |
|
8065 | var touchEvent = event;
|
8066 |
|
8067 | _this.handleDraggerMove(touchEvent.touches[0].clientX, touchEvent.touches[0].clientY);
|
8068 | };
|
8069 |
|
8070 | _this.handleDraggerMove = function (x, y) {
|
8071 | if (_this.node == null) {
|
8072 | return;
|
8073 | }
|
8074 |
|
8075 | var onChange = _this.props.onChange;
|
8076 |
|
8077 | var rect = _this.node.getBoundingClientRect();
|
8078 |
|
8079 | var offsetX = x - rect.left;
|
8080 | var offsetY = y - rect.top;
|
8081 | onChange({
|
8082 | x: offsetX,
|
8083 | y: offsetY
|
8084 | });
|
8085 | };
|
8086 |
|
8087 | return _this;
|
8088 | }
|
8089 |
|
8090 | _createClass(Slidable, [{
|
8091 | key: "componentDidMount",
|
8092 | value: function componentDidMount() {
|
8093 | var onDraggerHeight = this.props.onDraggerHeight;
|
8094 |
|
8095 | if (onDraggerHeight == null) {
|
8096 | return;
|
8097 | }
|
8098 |
|
8099 | var draggerNode = this.draggerNode;
|
8100 |
|
8101 | if (draggerNode == null) {
|
8102 | return;
|
8103 | }
|
8104 |
|
8105 | onDraggerHeight(draggerNode.clientWidth);
|
8106 |
|
8107 | if (process.env.NODE_ENV === 'development') {
|
8108 | setTimeout(function () {
|
8109 | onDraggerHeight(draggerNode.clientWidth);
|
8110 | }, 0);
|
8111 | }
|
8112 | }
|
8113 | }, {
|
8114 | key: "render",
|
8115 | value: function render() {
|
8116 | var dragging = this.state.dragging;
|
8117 | var _this$props = this.props,
|
8118 | _this$props$draggerX = _this$props.draggerX,
|
8119 | draggerX = _this$props$draggerX === void 0 ? 0 : _this$props$draggerX,
|
8120 | _this$props$draggerY = _this$props.draggerY,
|
8121 | draggerY = _this$props$draggerY === void 0 ? 0 : _this$props$draggerY;
|
8122 | var draggerPositioning = {
|
8123 | transform: "translate3d(".concat(draggerX, "px, ").concat(draggerY, "px, 0)")
|
8124 | };
|
8125 | var moveListener = dragging ? React__default.createElement(EventListener, {
|
8126 | event: "mousemove",
|
8127 | handler: this.handleMove,
|
8128 | passive: false
|
8129 | }) : null;
|
8130 | var touchMoveListener = dragging ? React__default.createElement(EventListener, {
|
8131 | event: "touchmove",
|
8132 | handler: this.handleMove,
|
8133 | passive: false
|
8134 | }) : null;
|
8135 | var endDragListener = dragging ? React__default.createElement(EventListener, {
|
8136 | event: "mouseup",
|
8137 | handler: this.handleDragEnd
|
8138 | }) : null;
|
8139 | var touchEndListener = dragging ? React__default.createElement(EventListener, {
|
8140 | event: "touchend",
|
8141 | handler: this.handleDragEnd
|
8142 | }) : null;
|
8143 | var touchCancelListener = dragging ? React__default.createElement(EventListener, {
|
8144 | event: "touchcancel",
|
8145 | handler: this.handleDragEnd
|
8146 | }) : null;
|
8147 | return React__default.createElement("div", {
|
8148 | ref: this.setNode,
|
8149 | className: styles$H.Slidable,
|
8150 | onMouseDown: this.startDrag,
|
8151 | onTouchStart: this.startDrag
|
8152 | }, endDragListener, moveListener, touchMoveListener, touchEndListener, touchCancelListener, React__default.createElement("div", {
|
8153 | style: draggerPositioning,
|
8154 | className: styles$H.Dragger,
|
8155 | ref: this.setDraggerNode
|
8156 | }));
|
8157 | }
|
8158 | }]);
|
8159 |
|
8160 | return Slidable;
|
8161 | }(React__default.PureComponent);
|
8162 |
|
8163 | var VERTICAL_PADDING = 13;
|
8164 | function calculateDraggerY(alpha, sliderHeight, draggerHeight) {
|
8165 | var offset = offsetForAlpha(alpha, sliderHeight, draggerHeight);
|
8166 | return clamp$1(offset, 0, sliderHeight);
|
8167 | }
|
8168 | function alphaForDraggerY(y, sliderHeight) {
|
8169 | var offsetY = clamp$1(y, 0, sliderHeight);
|
8170 | return alphaForOffset(offsetY, sliderHeight);
|
8171 | }
|
8172 | function alphaForOffset(offset, sliderHeight) {
|
8173 | var selectionHeight = offset - VERTICAL_PADDING;
|
8174 | var slidableArea = sliderHeight - VERTICAL_PADDING * 2;
|
8175 | return clamp$1(1 - selectionHeight / slidableArea, 0, 1);
|
8176 | }
|
8177 |
|
8178 | function offsetForAlpha(alpha, sliderHeight, draggerHeight) {
|
8179 | var slidableArea = sliderHeight - (draggerHeight + VERTICAL_PADDING);
|
8180 | return clamp$1((1 - alpha) * slidableArea + VERTICAL_PADDING, 0, sliderHeight - draggerHeight);
|
8181 | }
|
8182 |
|
8183 | var AlphaPicker =
|
8184 |
|
8185 | function (_React$PureComponent) {
|
8186 | _inherits(AlphaPicker, _React$PureComponent);
|
8187 |
|
8188 | function AlphaPicker() {
|
8189 | var _this;
|
8190 |
|
8191 | _classCallCheck(this, AlphaPicker);
|
8192 |
|
8193 | _this = _possibleConstructorReturn(this, _getPrototypeOf(AlphaPicker).apply(this, arguments));
|
8194 | _this.state = {
|
8195 | sliderHeight: 0,
|
8196 | draggerHeight: 0
|
8197 | };
|
8198 |
|
8199 | _this.setSliderHeight = function (node) {
|
8200 | if (node == null) {
|
8201 | return;
|
8202 | }
|
8203 |
|
8204 | _this.setState({
|
8205 | sliderHeight: node.clientHeight
|
8206 | });
|
8207 |
|
8208 | if (process.env.NODE_ENV === 'development') {
|
8209 | setTimeout(function () {
|
8210 | _this.setState({
|
8211 | sliderHeight: node.clientHeight
|
8212 | });
|
8213 | }, 0);
|
8214 | }
|
8215 | };
|
8216 |
|
8217 | _this.setDraggerHeight = function (height) {
|
8218 | _this.setState({
|
8219 | draggerHeight: height
|
8220 | });
|
8221 | };
|
8222 |
|
8223 | _this.handleChange = function (_ref) {
|
8224 | var y = _ref.y;
|
8225 | var onChange = _this.props.onChange;
|
8226 | var sliderHeight = _this.state.sliderHeight;
|
8227 | var alpha = alphaForDraggerY(y, sliderHeight);
|
8228 | onChange(alpha);
|
8229 | };
|
8230 |
|
8231 | return _this;
|
8232 | }
|
8233 |
|
8234 | _createClass(AlphaPicker, [{
|
8235 | key: "render",
|
8236 | value: function render() {
|
8237 | var _this$props = this.props,
|
8238 | color = _this$props.color,
|
8239 | alpha = _this$props.alpha;
|
8240 | var _this$state = this.state,
|
8241 | sliderHeight = _this$state.sliderHeight,
|
8242 | draggerHeight = _this$state.draggerHeight;
|
8243 | var draggerY = calculateDraggerY(alpha, sliderHeight, draggerHeight);
|
8244 | var background = alphaGradientForColor(color);
|
8245 | return React__default.createElement("div", {
|
8246 | className: styles$H.AlphaPicker,
|
8247 | ref: this.setSliderHeight
|
8248 | }, React__default.createElement("div", {
|
8249 | className: styles$H.ColorLayer,
|
8250 | style: {
|
8251 | background
|
8252 | }
|
8253 | }), React__default.createElement(Slidable, {
|
8254 | draggerY: draggerY,
|
8255 | draggerX: 0,
|
8256 | onChange: this.handleChange,
|
8257 | onDraggerHeight: this.setDraggerHeight
|
8258 | }));
|
8259 | }
|
8260 | }]);
|
8261 |
|
8262 | return AlphaPicker;
|
8263 | }(React__default.PureComponent);
|
8264 |
|
8265 | function alphaGradientForColor(color) {
|
8266 | var _hsbToRgb = hsbToRgb(color),
|
8267 | red = _hsbToRgb.red,
|
8268 | green = _hsbToRgb.green,
|
8269 | blue = _hsbToRgb.blue;
|
8270 |
|
8271 | var rgb = "".concat(red, ", ").concat(green, ", ").concat(blue);
|
8272 | return "linear-gradient(to top, rgba(".concat(rgb, ", 0) 18px, rgba(").concat(rgb, ", 1) calc(100% - 18px))");
|
8273 | }
|
8274 |
|
8275 | var VERTICAL_PADDING$1 = 13;
|
8276 | function calculateDraggerY$1(hue, sliderHeight, draggerHeight) {
|
8277 | var offset = offsetForHue(hue, sliderHeight, draggerHeight);
|
8278 | return clamp$1(offset, 0, sliderHeight);
|
8279 | }
|
8280 | function hueForDraggerY(y, sliderHeight) {
|
8281 | var offsetY = clamp$1(y, 0, sliderHeight);
|
8282 | return hueForOffset(offsetY, sliderHeight);
|
8283 | }
|
8284 |
|
8285 | function hueForOffset(offset, sliderHeight) {
|
8286 | var selectionHeight = offset - VERTICAL_PADDING$1;
|
8287 | var slidableArea = sliderHeight - VERTICAL_PADDING$1 * 2;
|
8288 | return clamp$1(selectionHeight / slidableArea * 360, 0, 360);
|
8289 | }
|
8290 |
|
8291 | function offsetForHue(hue, sliderHeight, draggerHeight) {
|
8292 | var slidableArea = sliderHeight - (draggerHeight + VERTICAL_PADDING$1);
|
8293 | return clamp$1(hue / 360 * slidableArea + VERTICAL_PADDING$1, 0, sliderHeight - draggerHeight);
|
8294 | }
|
8295 |
|
8296 | var HuePicker =
|
8297 |
|
8298 | function (_React$PureComponent) {
|
8299 | _inherits(HuePicker, _React$PureComponent);
|
8300 |
|
8301 | function HuePicker() {
|
8302 | var _this;
|
8303 |
|
8304 | _classCallCheck(this, HuePicker);
|
8305 |
|
8306 | _this = _possibleConstructorReturn(this, _getPrototypeOf(HuePicker).apply(this, arguments));
|
8307 | _this.state = {
|
8308 | sliderHeight: 0,
|
8309 | draggerHeight: 0
|
8310 | };
|
8311 |
|
8312 | _this.setSliderHeight = function (node) {
|
8313 | if (node == null) {
|
8314 | return;
|
8315 | }
|
8316 |
|
8317 | _this.setState({
|
8318 | sliderHeight: node.clientHeight
|
8319 | });
|
8320 |
|
8321 | if (process.env.NODE_ENV === 'development') {
|
8322 | setTimeout(function () {
|
8323 | _this.setState({
|
8324 | sliderHeight: node.clientHeight
|
8325 | });
|
8326 | }, 0);
|
8327 | }
|
8328 | };
|
8329 |
|
8330 | _this.setDraggerHeight = function (height) {
|
8331 | _this.setState({
|
8332 | draggerHeight: height
|
8333 | });
|
8334 | };
|
8335 |
|
8336 | _this.handleChange = function (_ref) {
|
8337 | var y = _ref.y;
|
8338 | var onChange = _this.props.onChange;
|
8339 | var sliderHeight = _this.state.sliderHeight;
|
8340 | var hue = hueForDraggerY(y, sliderHeight);
|
8341 | onChange(hue);
|
8342 | };
|
8343 |
|
8344 | return _this;
|
8345 | }
|
8346 |
|
8347 | _createClass(HuePicker, [{
|
8348 | key: "render",
|
8349 | value: function render() {
|
8350 | var hue = this.props.hue;
|
8351 | var _this$state = this.state,
|
8352 | sliderHeight = _this$state.sliderHeight,
|
8353 | draggerHeight = _this$state.draggerHeight;
|
8354 | var draggerY = calculateDraggerY$1(hue, sliderHeight, draggerHeight);
|
8355 | return React__default.createElement("div", {
|
8356 | className: styles$H.HuePicker,
|
8357 | ref: this.setSliderHeight
|
8358 | }, React__default.createElement(Slidable, {
|
8359 | draggerY: draggerY,
|
8360 | draggerX: 0,
|
8361 | onChange: this.handleChange,
|
8362 | onDraggerHeight: this.setDraggerHeight
|
8363 | }));
|
8364 | }
|
8365 | }]);
|
8366 |
|
8367 | return HuePicker;
|
8368 | }(React__default.PureComponent);
|
8369 |
|
8370 | var ColorPicker =
|
8371 |
|
8372 | function (_React$PureComponent) {
|
8373 | _inherits(ColorPicker, _React$PureComponent);
|
8374 |
|
8375 | function ColorPicker() {
|
8376 | var _this;
|
8377 |
|
8378 | _classCallCheck(this, ColorPicker);
|
8379 |
|
8380 | _this = _possibleConstructorReturn(this, _getPrototypeOf(ColorPicker).apply(this, arguments));
|
8381 | _this.state = {
|
8382 | pickerSize: 0
|
8383 | };
|
8384 | _this.colorNode = null;
|
8385 |
|
8386 | _this.setColorNode = function (node) {
|
8387 | _this.colorNode = node;
|
8388 | };
|
8389 |
|
8390 | _this.handleHueChange = function (hue) {
|
8391 | var _this$props = _this.props,
|
8392 | _this$props$color = _this$props.color,
|
8393 | brightness = _this$props$color.brightness,
|
8394 | saturation = _this$props$color.saturation,
|
8395 | _this$props$color$alp = _this$props$color.alpha,
|
8396 | alpha = _this$props$color$alp === void 0 ? 1 : _this$props$color$alp,
|
8397 | onChange = _this$props.onChange;
|
8398 | onChange({
|
8399 | hue,
|
8400 | brightness,
|
8401 | saturation,
|
8402 | alpha
|
8403 | });
|
8404 | };
|
8405 |
|
8406 | _this.handleAlphaChange = function (alpha) {
|
8407 | var _this$props2 = _this.props,
|
8408 | _this$props2$color = _this$props2.color,
|
8409 | hue = _this$props2$color.hue,
|
8410 | brightness = _this$props2$color.brightness,
|
8411 | saturation = _this$props2$color.saturation,
|
8412 | onChange = _this$props2.onChange;
|
8413 | onChange({
|
8414 | hue,
|
8415 | brightness,
|
8416 | saturation,
|
8417 | alpha
|
8418 | });
|
8419 | };
|
8420 |
|
8421 | _this.handleDraggerMove = function (_ref) {
|
8422 | var x = _ref.x,
|
8423 | y = _ref.y;
|
8424 | var pickerSize = _this.state.pickerSize;
|
8425 | var _this$props3 = _this.props,
|
8426 | _this$props3$color = _this$props3.color,
|
8427 | hue = _this$props3$color.hue,
|
8428 | _this$props3$color$al = _this$props3$color.alpha,
|
8429 | alpha = _this$props3$color$al === void 0 ? 1 : _this$props3$color$al,
|
8430 | onChange = _this$props3.onChange;
|
8431 | var saturation = clamp$1(x / pickerSize, 0, 1);
|
8432 | var brightness = clamp$1(1 - y / pickerSize, 0, 1);
|
8433 | onChange({
|
8434 | hue,
|
8435 | saturation,
|
8436 | brightness,
|
8437 | alpha
|
8438 | });
|
8439 | };
|
8440 |
|
8441 | _this.handlePickerDrag = function (event) {
|
8442 |
|
8443 | event.preventDefault();
|
8444 | };
|
8445 |
|
8446 | return _this;
|
8447 | }
|
8448 |
|
8449 | _createClass(ColorPicker, [{
|
8450 | key: "componentDidMount",
|
8451 | value: function componentDidMount() {
|
8452 | var _this2 = this;
|
8453 |
|
8454 | var colorNode = this.colorNode;
|
8455 |
|
8456 | if (colorNode == null) {
|
8457 | return;
|
8458 | }
|
8459 |
|
8460 | this.setState({
|
8461 | pickerSize: colorNode.clientWidth
|
8462 | });
|
8463 |
|
8464 | if (process.env.NODE_ENV === 'development') {
|
8465 | setTimeout(function () {
|
8466 | _this2.setState({
|
8467 | pickerSize: colorNode.clientWidth
|
8468 | });
|
8469 | }, 0);
|
8470 | }
|
8471 | }
|
8472 | }, {
|
8473 | key: "render",
|
8474 | value: function render() {
|
8475 | var _this$props4 = this.props,
|
8476 | id = _this$props4.id,
|
8477 | color = _this$props4.color,
|
8478 | allowAlpha = _this$props4.allowAlpha;
|
8479 | var hue = color.hue,
|
8480 | saturation = color.saturation,
|
8481 | brightness = color.brightness,
|
8482 | providedAlpha = color.alpha;
|
8483 | var pickerSize = this.state.pickerSize;
|
8484 | var alpha = providedAlpha != null && allowAlpha ? providedAlpha : 1;
|
8485 |
|
8486 | var _hsbToRgb = hsbToRgb({
|
8487 | hue,
|
8488 | saturation: 1,
|
8489 | brightness: 1
|
8490 | }),
|
8491 | red = _hsbToRgb.red,
|
8492 | green = _hsbToRgb.green,
|
8493 | blue = _hsbToRgb.blue;
|
8494 |
|
8495 | var colorString = "rgba(".concat(red, ", ").concat(green, ", ").concat(blue, ", ").concat(alpha, ")");
|
8496 | var draggerX = clamp$1(saturation * pickerSize, 0, pickerSize);
|
8497 | var draggerY = clamp$1(pickerSize - brightness * pickerSize, 0, pickerSize);
|
8498 | var alphaSliderMarkup = allowAlpha ? React__default.createElement(AlphaPicker, {
|
8499 | alpha: alpha,
|
8500 | color: color,
|
8501 | onChange: this.handleAlphaChange
|
8502 | }) : null;
|
8503 | return React__default.createElement("div", {
|
8504 | className: styles$H.ColorPicker,
|
8505 | id: id,
|
8506 | onMouseDown: this.handlePickerDrag
|
8507 | }, React__default.createElement("div", {
|
8508 | ref: this.setColorNode,
|
8509 | className: styles$H.MainColor
|
8510 | }, React__default.createElement("div", {
|
8511 | className: styles$H.ColorLayer,
|
8512 | style: {
|
8513 | backgroundColor: colorString
|
8514 | }
|
8515 | }), React__default.createElement(Slidable, {
|
8516 | onChange: this.handleDraggerMove,
|
8517 | draggerX: draggerX,
|
8518 | draggerY: draggerY
|
8519 | })), React__default.createElement(HuePicker, {
|
8520 | hue: hue,
|
8521 | onChange: this.handleHueChange
|
8522 | }), alphaSliderMarkup);
|
8523 | }
|
8524 | }]);
|
8525 |
|
8526 | return ColorPicker;
|
8527 | }(React__default.PureComponent);
|
8528 |
|
8529 | var FrameContext = React__default.createContext(undefined);
|
8530 |
|
8531 | var defaultFrame = {
|
8532 | showToast: noop$5,
|
8533 | hideToast: noop$5,
|
8534 | setContextualSaveBar: noop$5,
|
8535 | removeContextualSaveBar: noop$5,
|
8536 | startLoading: noop$5,
|
8537 | stopLoading: noop$5
|
8538 | };
|
8539 | function useFrame() {
|
8540 | var frame = useContext(FrameContext);
|
8541 | var appBridge = useAppBridge();
|
8542 |
|
8543 | if (!frame && !appBridge) {
|
8544 | throw new Error('No Frame context was provided. Your component must be wrapped in a <Frame> component, or be used within an embedded application by setting the apiKey and shopOrigin properties on <AppProvider>. See https://polaris.shopify.com/components/structure/frame for implementation instructions.');
|
8545 | }
|
8546 |
|
8547 |
|
8548 | if (appBridge || !frame) {
|
8549 | return defaultFrame;
|
8550 | }
|
8551 |
|
8552 | return frame;
|
8553 | }
|
8554 |
|
8555 | function noop$5() {}
|
8556 |
|
8557 | var ContextualSaveBar = React__default.memo(function ContextualSaveBar(_ref) {
|
8558 | var message = _ref.message,
|
8559 | saveAction = _ref.saveAction,
|
8560 | discardAction = _ref.discardAction,
|
8561 | alignContentFlush = _ref.alignContentFlush;
|
8562 |
|
8563 | var _useFrame = useFrame(),
|
8564 | setContextualSaveBar = _useFrame.setContextualSaveBar,
|
8565 | removeContextualSaveBar = _useFrame.removeContextualSaveBar;
|
8566 |
|
8567 | React__default.useEffect(function () {
|
8568 | setContextualSaveBar({
|
8569 | message,
|
8570 | saveAction,
|
8571 | discardAction,
|
8572 | alignContentFlush
|
8573 | });
|
8574 | }, [message, saveAction, discardAction, alignContentFlush, setContextualSaveBar]);
|
8575 | React__default.useEffect(function () {
|
8576 | return removeContextualSaveBar;
|
8577 | }, [removeContextualSaveBar]);
|
8578 | return null;
|
8579 | });
|
8580 |
|
8581 | function withAppProvider() {
|
8582 | return function addProvider(WrappedComponent) {
|
8583 | var WithAppProvider = function WithAppProvider(props) {
|
8584 | var polaris = {
|
8585 | intl: useI18n(),
|
8586 | stickyManager: useStickyManager(),
|
8587 | appBridge: useAppBridge(),
|
8588 | mediaQuery: useMediaQuery()
|
8589 | };
|
8590 | return React__default.createElement(WrappedComponent, Object.assign({}, props, {
|
8591 | polaris: polaris
|
8592 | }));
|
8593 | };
|
8594 |
|
8595 | WithAppProvider.displayName = "WithAppProvider(".concat(getDisplayName(WrappedComponent), ")");
|
8596 | var FinalComponent = hoistStatics(WithAppProvider, WrappedComponent);
|
8597 | return FinalComponent;
|
8598 | };
|
8599 | }
|
8600 |
|
8601 | function getDisplayName(WrappedComponent) {
|
8602 | return WrappedComponent.displayName || WrappedComponent.name || 'Component';
|
8603 | }
|
8604 |
|
8605 | var styles$I = {
|
8606 | "DataTable": "Polaris-DataTable",
|
8607 | "condensed": "Polaris-DataTable--condensed",
|
8608 | "Navigation": "Polaris-DataTable__Navigation",
|
8609 | "Pip": "Polaris-DataTable__Pip",
|
8610 | "Pip-visible": "Polaris-DataTable__Pip--visible",
|
8611 | "ScrollContainer": "Polaris-DataTable__ScrollContainer",
|
8612 | "Table": "Polaris-DataTable__Table",
|
8613 | "TableRow": "Polaris-DataTable__TableRow",
|
8614 | "Cell": "Polaris-DataTable__Cell",
|
8615 | "Cell-firstColumn": "Polaris-DataTable__Cell--firstColumn",
|
8616 | "Cell-numeric": "Polaris-DataTable__Cell--numeric",
|
8617 | "Cell-truncated": "Polaris-DataTable__Cell--truncated",
|
8618 | "Cell-header": "Polaris-DataTable__Cell--header",
|
8619 | "Cell-sortable": "Polaris-DataTable__Cell--sortable",
|
8620 | "Cell-verticalAlignTop": "Polaris-DataTable__Cell--verticalAlignTop",
|
8621 | "Cell-verticalAlignBottom": "Polaris-DataTable__Cell--verticalAlignBottom",
|
8622 | "Cell-verticalAlignMiddle": "Polaris-DataTable__Cell--verticalAlignMiddle",
|
8623 | "Cell-verticalAlignBaseline": "Polaris-DataTable__Cell--verticalAlignBaseline",
|
8624 | "Icon": "Polaris-DataTable__Icon",
|
8625 | "Heading": "Polaris-DataTable__Heading",
|
8626 | "Heading-left": "Polaris-DataTable__Heading--left",
|
8627 | "Cell-sorted": "Polaris-DataTable__Cell--sorted",
|
8628 | "Cell-total": "Polaris-DataTable__Cell--total",
|
8629 | "Cell-total-footer": "Polaris-DataTable--cellTotalFooter",
|
8630 | "Footer": "Polaris-DataTable__Footer"
|
8631 | };
|
8632 |
|
8633 | function Cell(_ref) {
|
8634 | var content = _ref.content,
|
8635 | contentType = _ref.contentType,
|
8636 | firstColumn = _ref.firstColumn,
|
8637 | truncate = _ref.truncate,
|
8638 | header = _ref.header,
|
8639 | total = _ref.total,
|
8640 | totalInFooter = _ref.totalInFooter,
|
8641 | sorted = _ref.sorted,
|
8642 | sortable = _ref.sortable,
|
8643 | sortDirection = _ref.sortDirection,
|
8644 | _ref$verticalAlign = _ref.verticalAlign,
|
8645 | verticalAlign = _ref$verticalAlign === void 0 ? 'top' : _ref$verticalAlign,
|
8646 | _ref$defaultSortDirec = _ref.defaultSortDirection,
|
8647 | defaultSortDirection = _ref$defaultSortDirec === void 0 ? 'ascending' : _ref$defaultSortDirec,
|
8648 | onSort = _ref.onSort;
|
8649 | var i18n = useI18n();
|
8650 | var numeric = contentType === 'numeric';
|
8651 | var className = classNames(styles$I.Cell, styles$I["Cell-".concat(variationName('verticalAlign', verticalAlign))], firstColumn && styles$I['Cell-firstColumn'], firstColumn && truncate && styles$I['Cell-truncated'], header && styles$I['Cell-header'], total && styles$I['Cell-total'], totalInFooter && styles$I['Cell-total-footer'], numeric && styles$I['Cell-numeric'], sortable && styles$I['Cell-sortable'], sorted && styles$I['Cell-sorted']);
|
8652 | var headerClassName = classNames(header && styles$I.Heading, header && contentType === 'text' && styles$I['Heading-left']);
|
8653 | var iconClassName = classNames(sortable && styles$I.Icon);
|
8654 | var direction = sorted ? sortDirection : defaultSortDirection;
|
8655 | var source = direction === 'descending' ? CaretDownMinor : CaretUpMinor;
|
8656 | var oppositeDirection = sortDirection === 'ascending' ? 'descending' : 'ascending';
|
8657 | var sortAccessibilityLabel = i18n.translate('Polaris.DataTable.sortAccessibilityLabel', {
|
8658 | direction: sorted ? oppositeDirection : direction
|
8659 | });
|
8660 | var iconMarkup = React__default.createElement("span", {
|
8661 | className: iconClassName
|
8662 | }, React__default.createElement(Icon, {
|
8663 | source: source,
|
8664 | accessibilityLabel: sortAccessibilityLabel
|
8665 | }));
|
8666 | var sortableHeadingContent = React__default.createElement("button", {
|
8667 | className: headerClassName,
|
8668 | onClick: onSort
|
8669 | }, iconMarkup, content);
|
8670 | var columnHeadingContent = sortable ? sortableHeadingContent : content;
|
8671 | var headingMarkup = header ? React__default.createElement("th", Object.assign({}, headerCell.props, {
|
8672 | className: className,
|
8673 | scope: "col",
|
8674 | "aria-sort": sortDirection
|
8675 | }), columnHeadingContent) : React__default.createElement("th", {
|
8676 | className: className,
|
8677 | scope: "row"
|
8678 | }, content);
|
8679 | var cellMarkup = header || firstColumn ? headingMarkup : React__default.createElement("td", {
|
8680 | className: className
|
8681 | }, content);
|
8682 | return cellMarkup;
|
8683 | }
|
8684 |
|
8685 | function Navigation(_ref) {
|
8686 | var columnVisibilityData = _ref.columnVisibilityData,
|
8687 | isScrolledFarthestLeft = _ref.isScrolledFarthestLeft,
|
8688 | isScrolledFarthestRight = _ref.isScrolledFarthestRight,
|
8689 | navigateTableLeft = _ref.navigateTableLeft,
|
8690 | navigateTableRight = _ref.navigateTableRight;
|
8691 | var i18n = useI18n();
|
8692 | var pipMarkup = columnVisibilityData.map(function (column, index) {
|
8693 | var className = classNames(styles$I.Pip, column.isVisible && styles$I['Pip-visible']);
|
8694 | return React__default.createElement("div", {
|
8695 | className: className,
|
8696 | key: "pip-".concat(index)
|
8697 | });
|
8698 | });
|
8699 | var leftA11yLabel = i18n.translate('Polaris.DataTable.navAccessibilityLabel', {
|
8700 | direction: 'left'
|
8701 | });
|
8702 | var rightA11yLabel = i18n.translate('Polaris.DataTable.navAccessibilityLabel', {
|
8703 | direction: 'right'
|
8704 | });
|
8705 | return React__default.createElement("div", {
|
8706 | className: styles$I.Navigation
|
8707 | }, React__default.createElement(Button, {
|
8708 | plain: true,
|
8709 | icon: ChevronLeftMinor,
|
8710 | disabled: isScrolledFarthestLeft,
|
8711 | accessibilityLabel: leftA11yLabel,
|
8712 | onClick: navigateTableLeft
|
8713 | }), pipMarkup, React__default.createElement(Button, {
|
8714 | plain: true,
|
8715 | icon: ChevronRightMinor,
|
8716 | disabled: isScrolledFarthestRight,
|
8717 | accessibilityLabel: rightA11yLabel,
|
8718 | onClick: navigateTableRight
|
8719 | }));
|
8720 | }
|
8721 |
|
8722 | function measureColumn(tableData) {
|
8723 | return function (column, index) {
|
8724 | var firstVisibleColumnIndex = tableData.firstVisibleColumnIndex,
|
8725 | tableStart = tableData.tableLeftVisibleEdge,
|
8726 | tableEnd = tableData.tableRightVisibleEdge;
|
8727 | var leftEdge = column.offsetLeft;
|
8728 | var rightEdge = leftEdge + column.offsetWidth;
|
8729 | var isVisibleLeft = isEdgeVisible(leftEdge, tableStart, tableEnd);
|
8730 | var isVisibleRight = isEdgeVisible(rightEdge, tableStart, tableEnd);
|
8731 | var isVisible = isVisibleLeft || isVisibleRight;
|
8732 |
|
8733 | if (isVisible) {
|
8734 | tableData.firstVisibleColumnIndex = Math.min(firstVisibleColumnIndex, index);
|
8735 | }
|
8736 |
|
8737 | return {
|
8738 | leftEdge,
|
8739 | rightEdge,
|
8740 | isVisible
|
8741 | };
|
8742 | };
|
8743 | }
|
8744 | function isEdgeVisible(position, start, end) {
|
8745 | var minVisiblePixels = 30;
|
8746 | return position >= start + minVisiblePixels && position <= end - minVisiblePixels;
|
8747 | }
|
8748 | function getPrevAndCurrentColumns(tableData, columnData) {
|
8749 | var firstVisibleColumnIndex = tableData.firstVisibleColumnIndex;
|
8750 | var previousColumnIndex = Math.max(firstVisibleColumnIndex - 1, 0);
|
8751 | var previousColumn = columnData[previousColumnIndex];
|
8752 | var currentColumn = columnData[firstVisibleColumnIndex];
|
8753 | return {
|
8754 | previousColumn,
|
8755 | currentColumn
|
8756 | };
|
8757 | }
|
8758 |
|
8759 | var DataTable =
|
8760 |
|
8761 | function (_React$PureComponent) {
|
8762 | _inherits(DataTable, _React$PureComponent);
|
8763 |
|
8764 | function DataTable(props) {
|
8765 | var _this;
|
8766 |
|
8767 | _classCallCheck(this, DataTable);
|
8768 |
|
8769 | _this = _possibleConstructorReturn(this, _getPrototypeOf(DataTable).call(this, props));
|
8770 | _this.state = {
|
8771 | condensed: false,
|
8772 | columnVisibilityData: [],
|
8773 | isScrolledFarthestLeft: true,
|
8774 | isScrolledFarthestRight: false
|
8775 | };
|
8776 | _this.dataTable = React__default.createRef();
|
8777 | _this.scrollContainer = React__default.createRef();
|
8778 | _this.table = React__default.createRef();
|
8779 | _this.handleResize = debounce(function () {
|
8780 | var _assertThisInitialize = _assertThisInitialized(_this),
|
8781 | table = _assertThisInitialize.table.current,
|
8782 | scrollContainer = _assertThisInitialize.scrollContainer.current;
|
8783 |
|
8784 | var condensed = false;
|
8785 |
|
8786 | if (table && scrollContainer) {
|
8787 | condensed = table.scrollWidth > scrollContainer.clientWidth;
|
8788 | }
|
8789 |
|
8790 | _this.setState(Object.assign({
|
8791 | condensed
|
8792 | }, _this.calculateColumnVisibilityData(condensed)));
|
8793 | });
|
8794 |
|
8795 | _this.calculateColumnVisibilityData = function (condensed) {
|
8796 | var _assertThisInitialize2 = _assertThisInitialized(_this),
|
8797 | table = _assertThisInitialize2.table.current,
|
8798 | scrollContainer = _assertThisInitialize2.scrollContainer.current,
|
8799 | dataTable = _assertThisInitialize2.dataTable.current;
|
8800 |
|
8801 | if (condensed && table && scrollContainer && dataTable) {
|
8802 | var headerCells = table.querySelectorAll(headerCell.selector);
|
8803 | var firstVisibleColumnIndex = headerCells.length - 1;
|
8804 | var tableLeftVisibleEdge = scrollContainer.scrollLeft;
|
8805 | var tableRightVisibleEdge = scrollContainer.scrollLeft + dataTable.offsetWidth;
|
8806 | var tableData = {
|
8807 | firstVisibleColumnIndex,
|
8808 | tableLeftVisibleEdge,
|
8809 | tableRightVisibleEdge
|
8810 | };
|
8811 |
|
8812 | var columnVisibilityData = _toConsumableArray(headerCells).map(measureColumn(tableData));
|
8813 |
|
8814 | var lastColumn = columnVisibilityData[columnVisibilityData.length - 1];
|
8815 | return Object.assign({
|
8816 | columnVisibilityData
|
8817 | }, getPrevAndCurrentColumns(tableData, columnVisibilityData), {
|
8818 | isScrolledFarthestLeft: tableLeftVisibleEdge === 0,
|
8819 | isScrolledFarthestRight: lastColumn.rightEdge <= tableRightVisibleEdge
|
8820 | });
|
8821 | }
|
8822 |
|
8823 | return {
|
8824 | columnVisibilityData: [],
|
8825 | previousColumn: undefined,
|
8826 | currentColumn: undefined
|
8827 | };
|
8828 | };
|
8829 |
|
8830 | _this.scrollListener = function () {
|
8831 | _this.setState(function (prevState) {
|
8832 | return Object.assign({}, _this.calculateColumnVisibilityData(prevState.condensed));
|
8833 | });
|
8834 | };
|
8835 |
|
8836 | _this.navigateTable = function (direction) {
|
8837 | var _this$state = _this.state,
|
8838 | currentColumn = _this$state.currentColumn,
|
8839 | previousColumn = _this$state.previousColumn;
|
8840 | var scrollContainer = _this.scrollContainer.current;
|
8841 |
|
8842 | var handleScroll = function handleScroll() {
|
8843 | if (!currentColumn || !previousColumn) {
|
8844 | return;
|
8845 | }
|
8846 |
|
8847 | if (scrollContainer) {
|
8848 | scrollContainer.scrollLeft = direction === 'right' ? currentColumn.rightEdge : previousColumn.leftEdge;
|
8849 | requestAnimationFrame(function () {
|
8850 | _this.setState(function (prevState) {
|
8851 | return Object.assign({}, _this.calculateColumnVisibilityData(prevState.condensed));
|
8852 | });
|
8853 | });
|
8854 | }
|
8855 | };
|
8856 |
|
8857 | return handleScroll;
|
8858 | };
|
8859 |
|
8860 | _this.renderHeadings = function (heading, headingIndex) {
|
8861 | var _this$props = _this.props,
|
8862 | sortable = _this$props.sortable,
|
8863 | _this$props$truncate = _this$props.truncate,
|
8864 | truncate = _this$props$truncate === void 0 ? false : _this$props$truncate,
|
8865 | columnContentTypes = _this$props.columnContentTypes,
|
8866 | defaultSortDirection = _this$props.defaultSortDirection,
|
8867 | _this$props$initialSo = _this$props.initialSortColumnIndex,
|
8868 | initialSortColumnIndex = _this$props$initialSo === void 0 ? 0 : _this$props$initialSo,
|
8869 | verticalAlign = _this$props.verticalAlign;
|
8870 | var _this$state2 = _this.state,
|
8871 | _this$state2$sortDire = _this$state2.sortDirection,
|
8872 | sortDirection = _this$state2$sortDire === void 0 ? defaultSortDirection : _this$state2$sortDire,
|
8873 | _this$state2$sortedCo = _this$state2.sortedColumnIndex,
|
8874 | sortedColumnIndex = _this$state2$sortedCo === void 0 ? initialSortColumnIndex : _this$state2$sortedCo;
|
8875 | var sortableHeadingProps;
|
8876 | var id = "heading-cell-".concat(headingIndex);
|
8877 |
|
8878 | if (sortable) {
|
8879 | var isSortable = sortable[headingIndex];
|
8880 | var isSorted = isSortable && sortedColumnIndex === headingIndex;
|
8881 | var direction = isSorted ? sortDirection : 'none';
|
8882 | sortableHeadingProps = {
|
8883 | defaultSortDirection,
|
8884 | sorted: isSorted,
|
8885 | sortable: isSortable,
|
8886 | sortDirection: direction,
|
8887 | onSort: _this.defaultOnSort(headingIndex)
|
8888 | };
|
8889 | }
|
8890 |
|
8891 | return React__default.createElement(Cell, Object.assign({
|
8892 | header: true,
|
8893 | key: id,
|
8894 | content: heading,
|
8895 | contentType: columnContentTypes[headingIndex],
|
8896 | firstColumn: headingIndex === 0,
|
8897 | truncate: truncate
|
8898 | }, sortableHeadingProps, {
|
8899 | verticalAlign: verticalAlign
|
8900 | }));
|
8901 | };
|
8902 |
|
8903 | _this.renderTotals = function (total, index) {
|
8904 | var id = "totals-cell-".concat(index);
|
8905 | var _this$props2 = _this.props,
|
8906 | _this$props2$truncate = _this$props2.truncate,
|
8907 | truncate = _this$props2$truncate === void 0 ? false : _this$props2$truncate,
|
8908 | verticalAlign = _this$props2.verticalAlign;
|
8909 | var content;
|
8910 | var contentType;
|
8911 |
|
8912 | if (index === 0) {
|
8913 | content = _this.totalsRowHeading;
|
8914 | }
|
8915 |
|
8916 | if (total !== '' && index > 0) {
|
8917 | contentType = 'numeric';
|
8918 | content = total;
|
8919 | }
|
8920 |
|
8921 | var totalInFooter = _this.props.showTotalsInFooter;
|
8922 | return React__default.createElement(Cell, {
|
8923 | total: true,
|
8924 | totalInFooter: totalInFooter,
|
8925 | firstColumn: index === 0,
|
8926 | key: id,
|
8927 | content: content,
|
8928 | contentType: contentType,
|
8929 | truncate: truncate,
|
8930 | verticalAlign: verticalAlign
|
8931 | });
|
8932 | };
|
8933 |
|
8934 | _this.defaultRenderRow = function (row, index) {
|
8935 | var className = classNames(styles$I.TableRow);
|
8936 | var _this$props3 = _this.props,
|
8937 | columnContentTypes = _this$props3.columnContentTypes,
|
8938 | _this$props3$truncate = _this$props3.truncate,
|
8939 | truncate = _this$props3$truncate === void 0 ? false : _this$props3$truncate,
|
8940 | verticalAlign = _this$props3.verticalAlign;
|
8941 | return React__default.createElement("tr", {
|
8942 | key: "row-".concat(index),
|
8943 | className: className
|
8944 | }, row.map(function (content, cellIndex) {
|
8945 | var id = "cell-".concat(cellIndex, "-row-").concat(index);
|
8946 | return React__default.createElement(Cell, {
|
8947 | key: id,
|
8948 | content: content,
|
8949 | contentType: columnContentTypes[cellIndex],
|
8950 | firstColumn: cellIndex === 0,
|
8951 | truncate: truncate,
|
8952 | verticalAlign: verticalAlign
|
8953 | });
|
8954 | }));
|
8955 | };
|
8956 |
|
8957 | _this.defaultOnSort = function (headingIndex) {
|
8958 | var _this$props4 = _this.props,
|
8959 | onSort = _this$props4.onSort,
|
8960 | _this$props4$defaultS = _this$props4.defaultSortDirection,
|
8961 | defaultSortDirection = _this$props4$defaultS === void 0 ? 'ascending' : _this$props4$defaultS,
|
8962 | initialSortColumnIndex = _this$props4.initialSortColumnIndex;
|
8963 | var _this$state3 = _this.state,
|
8964 | _this$state3$sortDire = _this$state3.sortDirection,
|
8965 | sortDirection = _this$state3$sortDire === void 0 ? defaultSortDirection : _this$state3$sortDire,
|
8966 | _this$state3$sortedCo = _this$state3.sortedColumnIndex,
|
8967 | sortedColumnIndex = _this$state3$sortedCo === void 0 ? initialSortColumnIndex : _this$state3$sortedCo;
|
8968 | var newSortDirection = defaultSortDirection;
|
8969 |
|
8970 | if (sortedColumnIndex === headingIndex) {
|
8971 | newSortDirection = sortDirection === 'ascending' ? 'descending' : 'ascending';
|
8972 | }
|
8973 |
|
8974 | var handleSort = function handleSort() {
|
8975 | _this.setState({
|
8976 | sortDirection: newSortDirection,
|
8977 | sortedColumnIndex: headingIndex
|
8978 | }, function () {
|
8979 | if (onSort) {
|
8980 | onSort(headingIndex, newSortDirection);
|
8981 | }
|
8982 | });
|
8983 | };
|
8984 |
|
8985 | return handleSort;
|
8986 | };
|
8987 |
|
8988 | var intl = props.polaris.intl;
|
8989 | _this.totalsRowHeading = intl.translate('Polaris.DataTable.totalsRowHeading');
|
8990 | return _this;
|
8991 | }
|
8992 |
|
8993 | _createClass(DataTable, [{
|
8994 | key: "componentDidMount",
|
8995 | value: function componentDidMount() {
|
8996 | var _this2 = this;
|
8997 |
|
8998 |
|
8999 | if (process.env.NODE_ENV === 'development') {
|
9000 | setTimeout(function () {
|
9001 | _this2.handleResize();
|
9002 | }, 10);
|
9003 | } else {
|
9004 | this.handleResize();
|
9005 | }
|
9006 | }
|
9007 | }, {
|
9008 | key: "componentDidUpdate",
|
9009 | value: function componentDidUpdate(prevProps) {
|
9010 | if (isEqual(prevProps, this.props)) {
|
9011 | return;
|
9012 | }
|
9013 |
|
9014 | this.handleResize();
|
9015 | }
|
9016 | }, {
|
9017 | key: "render",
|
9018 | value: function render() {
|
9019 | var _this$props5 = this.props,
|
9020 | headings = _this$props5.headings,
|
9021 | totals = _this$props5.totals,
|
9022 | showTotalsInFooter = _this$props5.showTotalsInFooter,
|
9023 | rows = _this$props5.rows,
|
9024 | footerContent = _this$props5.footerContent;
|
9025 | var _this$state4 = this.state,
|
9026 | condensed = _this$state4.condensed,
|
9027 | columnVisibilityData = _this$state4.columnVisibilityData,
|
9028 | isScrolledFarthestLeft = _this$state4.isScrolledFarthestLeft,
|
9029 | isScrolledFarthestRight = _this$state4.isScrolledFarthestRight;
|
9030 | var className = classNames(styles$I.DataTable, condensed && styles$I.condensed);
|
9031 | var wrapperClassName = classNames(styles$I.TableWrapper, condensed && styles$I.condensed);
|
9032 | var headingMarkup = React__default.createElement("tr", null, headings.map(this.renderHeadings));
|
9033 | var totalsMarkup = totals ? React__default.createElement("tr", null, totals.map(this.renderTotals)) : null;
|
9034 | var bodyMarkup = rows.map(this.defaultRenderRow);
|
9035 | var footerMarkup = footerContent ? React__default.createElement("div", {
|
9036 | className: styles$I.Footer
|
9037 | }, footerContent) : null;
|
9038 | var headerTotalsMarkup = !showTotalsInFooter ? totalsMarkup : null;
|
9039 | var footerTotalsMarkup = showTotalsInFooter ? React__default.createElement("tfoot", null, totalsMarkup) : null;
|
9040 | return React__default.createElement("div", {
|
9041 | className: wrapperClassName
|
9042 | }, React__default.createElement(Navigation, {
|
9043 | columnVisibilityData: columnVisibilityData,
|
9044 | isScrolledFarthestLeft: isScrolledFarthestLeft,
|
9045 | isScrolledFarthestRight: isScrolledFarthestRight,
|
9046 | navigateTableLeft: this.navigateTable('left'),
|
9047 | navigateTableRight: this.navigateTable('right')
|
9048 | }), React__default.createElement("div", {
|
9049 | className: className,
|
9050 | ref: this.dataTable
|
9051 | }, React__default.createElement("div", {
|
9052 | className: styles$I.ScrollContainer,
|
9053 | ref: this.scrollContainer
|
9054 | }, React__default.createElement(EventListener, {
|
9055 | event: "resize",
|
9056 | handler: this.handleResize
|
9057 | }), React__default.createElement(EventListener, {
|
9058 | capture: true,
|
9059 | event: "scroll",
|
9060 | handler: this.scrollListener
|
9061 | }), React__default.createElement("table", {
|
9062 | className: styles$I.Table,
|
9063 | ref: this.table
|
9064 | }, React__default.createElement("thead", null, headingMarkup, headerTotalsMarkup), React__default.createElement("tbody", null, bodyMarkup), footerTotalsMarkup)), footerMarkup));
|
9065 | }
|
9066 | }]);
|
9067 |
|
9068 | return DataTable;
|
9069 | }(React__default.PureComponent);
|
9070 |
|
9071 |
|
9072 |
|
9073 | var DataTable$1 = withAppProvider()(DataTable);
|
9074 |
|
9075 | function monthName(month) {
|
9076 | switch (month) {
|
9077 | case 0:
|
9078 | return 'january';
|
9079 |
|
9080 | case 1:
|
9081 | return 'february';
|
9082 |
|
9083 | case 2:
|
9084 | return 'march';
|
9085 |
|
9086 | case 3:
|
9087 | return 'april';
|
9088 |
|
9089 | case 4:
|
9090 | return 'may';
|
9091 |
|
9092 | case 5:
|
9093 | return 'june';
|
9094 |
|
9095 | case 6:
|
9096 | return 'july';
|
9097 |
|
9098 | case 7:
|
9099 | return 'august';
|
9100 |
|
9101 | case 8:
|
9102 | return 'september';
|
9103 |
|
9104 | case 9:
|
9105 | return 'october';
|
9106 |
|
9107 | case 10:
|
9108 | return 'november';
|
9109 |
|
9110 | case 11:
|
9111 | return 'december';
|
9112 | }
|
9113 | }
|
9114 | function weekdayName(weekday) {
|
9115 | switch (weekday) {
|
9116 | case 0:
|
9117 | return 'sunday';
|
9118 |
|
9119 | case 1:
|
9120 | return 'monday';
|
9121 |
|
9122 | case 2:
|
9123 | return 'tuesday';
|
9124 |
|
9125 | case 3:
|
9126 | return 'wednesday';
|
9127 |
|
9128 | case 4:
|
9129 | return 'thursday';
|
9130 |
|
9131 | case 5:
|
9132 | return 'friday';
|
9133 |
|
9134 | case 6:
|
9135 | return 'saturday';
|
9136 | }
|
9137 | }
|
9138 |
|
9139 | var styles$J = {
|
9140 | "DatePicker": "Polaris-DatePicker",
|
9141 | "MonthContainer": "Polaris-DatePicker__MonthContainer",
|
9142 | "Month": "Polaris-DatePicker__Month",
|
9143 | "Month-current": "Polaris-DatePicker__Month--current",
|
9144 | "Week": "Polaris-DatePicker__Week",
|
9145 | "WeekHeadings": "Polaris-DatePicker__WeekHeadings",
|
9146 | "Day": "Polaris-DatePicker__Day",
|
9147 | "EmptyDay": "Polaris-DatePicker__EmptyDay",
|
9148 | "Day-today": "Polaris-DatePicker__Day--today",
|
9149 | "Day-inRange": "Polaris-DatePicker__Day--inRange",
|
9150 | "Day-selected": "Polaris-DatePicker__Day--selected",
|
9151 | "Day-disabled": "Polaris-DatePicker__Day--disabled",
|
9152 | "Weekday": "Polaris-DatePicker__Weekday",
|
9153 | "Weekday-current": "Polaris-DatePicker__Weekday--current",
|
9154 | "Header": "Polaris-DatePicker__Header",
|
9155 | "Title": "Polaris-DatePicker__Title"
|
9156 | };
|
9157 |
|
9158 | function Day(_ref) {
|
9159 | var day = _ref.day,
|
9160 | focused = _ref.focused,
|
9161 | onClick = _ref.onClick,
|
9162 | _ref$onHover = _ref.onHover,
|
9163 | onHover = _ref$onHover === void 0 ? noop$6 : _ref$onHover,
|
9164 | _ref$onFocus = _ref.onFocus,
|
9165 | _onFocus = _ref$onFocus === void 0 ? noop$6 : _ref$onFocus,
|
9166 | selected = _ref.selected,
|
9167 | inRange = _ref.inRange,
|
9168 | inHoveringRange = _ref.inHoveringRange,
|
9169 | disabled = _ref.disabled;
|
9170 |
|
9171 | var i18n = useI18n();
|
9172 | var dayNode = useRef(null);
|
9173 | useEffect(function () {
|
9174 | if (focused && dayNode.current) {
|
9175 | dayNode.current.focus();
|
9176 | }
|
9177 | }, [focused]);
|
9178 |
|
9179 | if (!day) {
|
9180 | return React__default.createElement("div", {
|
9181 | className: styles$J.EmptyDay,
|
9182 | onMouseOver: function onMouseOver() {
|
9183 | return onHover(day);
|
9184 | }
|
9185 | });
|
9186 | }
|
9187 |
|
9188 | var handleClick = onClick && !disabled ? onClick.bind(null, day) : noop$6;
|
9189 | var today = isSameDay(new Date(), day);
|
9190 | var className = classNames(styles$J.Day, selected && styles$J['Day-selected'], disabled && styles$J['Day-disabled'], today && styles$J['Day-today'], (inRange || inHoveringRange) && !disabled && styles$J['Day-inRange']);
|
9191 | var date = day.getDate();
|
9192 | var tabIndex = (focused || selected || today || date === 1) && !disabled ? 0 : -1;
|
9193 | var ariaLabel = ["".concat(today ? i18n.translate('Polaris.DatePicker.today') : ''), "".concat(Months[day.getMonth()], " "), "".concat(date, " "), "".concat(day.getFullYear())].join('');
|
9194 | return React__default.createElement("button", {
|
9195 | onFocus: function onFocus() {
|
9196 | return _onFocus(day);
|
9197 | },
|
9198 | type: "button",
|
9199 | ref: dayNode,
|
9200 | tabIndex: tabIndex,
|
9201 | className: className,
|
9202 | onMouseOver: function onMouseOver() {
|
9203 | return onHover(day);
|
9204 | },
|
9205 | onClick: handleClick,
|
9206 | "aria-label": ariaLabel,
|
9207 | "aria-selected": selected,
|
9208 | "aria-disabled": disabled,
|
9209 | role: "gridcell"
|
9210 | }, date);
|
9211 | }
|
9212 |
|
9213 | function noop$6() {}
|
9214 |
|
9215 | function Weekday(_ref) {
|
9216 | var label = _ref.label,
|
9217 | title = _ref.title,
|
9218 | current = _ref.current;
|
9219 | var className = classNames(styles$J.Weekday, current && styles$J['Weekday-current']);
|
9220 | return React__default.createElement("div", {
|
9221 | "aria-label": Weekdays[label],
|
9222 | className: className
|
9223 | }, title);
|
9224 | }
|
9225 |
|
9226 | var WEEKDAYS = [Weekdays.Sunday, Weekdays.Monday, Weekdays.Tuesday, Weekdays.Wednesday, Weekdays.Thursday, Weekdays.Friday, Weekdays.Saturday];
|
9227 | function Month(_ref) {
|
9228 | var focusedDate = _ref.focusedDate,
|
9229 | selected = _ref.selected,
|
9230 | hoverDate = _ref.hoverDate,
|
9231 | disableDatesBefore = _ref.disableDatesBefore,
|
9232 | disableDatesAfter = _ref.disableDatesAfter,
|
9233 | allowRange = _ref.allowRange,
|
9234 | _ref$onChange = _ref.onChange,
|
9235 | onChange = _ref$onChange === void 0 ? noop$7 : _ref$onChange,
|
9236 | _ref$onHover = _ref.onHover,
|
9237 | onHover = _ref$onHover === void 0 ? noop$7 : _ref$onHover,
|
9238 | _ref$onFocus = _ref.onFocus,
|
9239 | onFocus = _ref$onFocus === void 0 ? noop$7 : _ref$onFocus,
|
9240 | month = _ref.month,
|
9241 | year = _ref.year,
|
9242 | weekStartsOn = _ref.weekStartsOn;
|
9243 | var i18n = useI18n();
|
9244 | var isInHoveringRange = allowRange ? hoveringDateIsInRange : function () {
|
9245 | return false;
|
9246 | };
|
9247 | var now = new Date();
|
9248 | var current = now.getMonth() === month && now.getFullYear() === year;
|
9249 | var className = classNames(styles$J.Title, current && styles$J['Month-current']);
|
9250 | var weeks = getWeeksForMonth(month, year, weekStartsOn);
|
9251 | var weekdays = getWeekdaysOrdered(weekStartsOn).map(function (weekday) {
|
9252 | return React__default.createElement(Weekday, {
|
9253 | key: weekday,
|
9254 | title: i18n.translate("Polaris.DatePicker.daysAbbreviated.".concat(weekdayName(weekday))),
|
9255 | current: current && new Date().getDay() === weekday,
|
9256 | label: weekday
|
9257 | });
|
9258 | });
|
9259 |
|
9260 | function handleDateClick(selectedDate) {
|
9261 | onChange(getNewRange(allowRange ? selected : undefined, selectedDate));
|
9262 | }
|
9263 |
|
9264 | function renderWeek(day, dayIndex) {
|
9265 | if (day == null) {
|
9266 | var lastDayOfMonth = new Date(year, month + 1, 0);
|
9267 | return React__default.createElement(Day, {
|
9268 | key: dayIndex,
|
9269 | onHover: onHover.bind(null, lastDayOfMonth)
|
9270 | });
|
9271 | }
|
9272 |
|
9273 | var disabled = disableDatesBefore && isDateBefore(day, disableDatesBefore) || disableDatesAfter && isDateAfter(day, disableDatesAfter);
|
9274 | return React__default.createElement(Day, {
|
9275 | focused: focusedDate != null && isSameDay(day, focusedDate),
|
9276 | day: day,
|
9277 | key: dayIndex,
|
9278 | onFocus: onFocus,
|
9279 | onClick: handleDateClick,
|
9280 | onHover: onHover,
|
9281 | selected: selected != null && dateIsSelected(day, selected),
|
9282 | inRange: selected != null && dateIsInRange(day, selected),
|
9283 | disabled: disabled,
|
9284 | inHoveringRange: selected != null && hoverDate != null && isInHoveringRange(day, selected, hoverDate)
|
9285 | });
|
9286 | }
|
9287 |
|
9288 | var weeksMarkup = weeks.map(function (week, index) {
|
9289 | return React__default.createElement("div", {
|
9290 | role: "row",
|
9291 | className: styles$J.Week,
|
9292 | key: index
|
9293 | }, week.map(renderWeek));
|
9294 | });
|
9295 | return React__default.createElement("div", {
|
9296 | role: "grid",
|
9297 | className: styles$J.Month
|
9298 | }, React__default.createElement("div", {
|
9299 | className: className
|
9300 | }, i18n.translate("Polaris.DatePicker.months.".concat(monthName(month))), " ", year), React__default.createElement("div", {
|
9301 | role: "rowheader",
|
9302 | className: styles$J.WeekHeadings
|
9303 | }, weekdays), weeksMarkup);
|
9304 | }
|
9305 |
|
9306 | function noop$7() {}
|
9307 |
|
9308 | function hoveringDateIsInRange(day, range, hoverEndDate) {
|
9309 | if (day == null) {
|
9310 | return false;
|
9311 | }
|
9312 |
|
9313 | var start = range.start,
|
9314 | end = range.end;
|
9315 | return Boolean(isSameDay(start, end) && day > start && day <= hoverEndDate);
|
9316 | }
|
9317 |
|
9318 | function getWeekdaysOrdered(weekStartsOn) {
|
9319 | var weekDays = [].concat(WEEKDAYS);
|
9320 | var restOfDays = weekDays.splice(weekStartsOn);
|
9321 | return [].concat(_toConsumableArray(restOfDays), _toConsumableArray(weekDays));
|
9322 | }
|
9323 |
|
9324 | function DatePicker(_ref) {
|
9325 | var id = _ref.id,
|
9326 | selected = _ref.selected,
|
9327 | month = _ref.month,
|
9328 | year = _ref.year,
|
9329 | allowRange = _ref.allowRange,
|
9330 | multiMonth = _ref.multiMonth,
|
9331 | disableDatesBefore = _ref.disableDatesBefore,
|
9332 | disableDatesAfter = _ref.disableDatesAfter,
|
9333 | _ref$weekStartsOn = _ref.weekStartsOn,
|
9334 | weekStartsOn = _ref$weekStartsOn === void 0 ? Weekdays.Sunday : _ref$weekStartsOn,
|
9335 | onMonthChange = _ref.onMonthChange,
|
9336 | _ref$onChange = _ref.onChange,
|
9337 | onChange = _ref$onChange === void 0 ? noop$8 : _ref$onChange;
|
9338 | var i18n = useI18n();
|
9339 |
|
9340 | var _useState = useState(undefined),
|
9341 | _useState2 = _slicedToArray(_useState, 2),
|
9342 | hoverDate = _useState2[0],
|
9343 | setHoverDate = _useState2[1];
|
9344 |
|
9345 | var _useState3 = useState(undefined),
|
9346 | _useState4 = _slicedToArray(_useState3, 2),
|
9347 | focusDate = _useState4[0],
|
9348 | setFocusDate = _useState4[1];
|
9349 |
|
9350 | useEffect(function () {
|
9351 | setFocusDate(undefined);
|
9352 | }, [selected]);
|
9353 | var handleFocus = useCallback(function (date) {
|
9354 | setFocusDate(date);
|
9355 | }, []);
|
9356 | var setFocusDateAndHandleMonthChange = useCallback(function (date) {
|
9357 | if (onMonthChange) {
|
9358 | onMonthChange(date.getMonth(), date.getFullYear());
|
9359 | }
|
9360 |
|
9361 | setHoverDate(date);
|
9362 | setFocusDate(date);
|
9363 | }, [onMonthChange]);
|
9364 | var handleDateSelection = useCallback(function (range) {
|
9365 | var end = range.end;
|
9366 | setHoverDate(end);
|
9367 | setFocusDate(new Date(end));
|
9368 | onChange(range);
|
9369 | }, [onChange]);
|
9370 | var handleMonthChangeClick = useCallback(function (month, year) {
|
9371 | if (!onMonthChange) {
|
9372 | return;
|
9373 | }
|
9374 |
|
9375 | setFocusDate(undefined);
|
9376 | onMonthChange(month, year);
|
9377 | }, [onMonthChange]);
|
9378 | var handleHover = useCallback(function (date) {
|
9379 | setHoverDate(date);
|
9380 | }, []);
|
9381 | var handleKeyUp = useCallback(function (event) {
|
9382 | var key = event.key;
|
9383 | var range = deriveRange(selected);
|
9384 | var focusedDate = focusDate || range && range.start;
|
9385 |
|
9386 | if (focusedDate == null) {
|
9387 | return;
|
9388 | }
|
9389 |
|
9390 | if (key === 'ArrowUp') {
|
9391 | var previousWeek = new Date(focusedDate);
|
9392 | previousWeek.setDate(focusedDate.getDate() - 7);
|
9393 |
|
9394 | if (!(disableDatesBefore && isDateBefore(previousWeek, disableDatesBefore))) {
|
9395 | setFocusDateAndHandleMonthChange(previousWeek);
|
9396 | }
|
9397 | }
|
9398 |
|
9399 | if (key === 'ArrowDown') {
|
9400 | var nextWeek = new Date(focusedDate);
|
9401 | nextWeek.setDate(focusedDate.getDate() + 7);
|
9402 |
|
9403 | if (!(disableDatesAfter && isDateAfter(nextWeek, disableDatesAfter))) {
|
9404 | setFocusDateAndHandleMonthChange(nextWeek);
|
9405 | }
|
9406 | }
|
9407 |
|
9408 | if (key === 'ArrowRight') {
|
9409 | var tomorrow = new Date(focusedDate);
|
9410 | tomorrow.setDate(focusedDate.getDate() + 1);
|
9411 |
|
9412 | if (!(disableDatesAfter && isDateAfter(tomorrow, disableDatesAfter))) {
|
9413 | setFocusDateAndHandleMonthChange(tomorrow);
|
9414 | }
|
9415 | }
|
9416 |
|
9417 | if (key === 'ArrowLeft') {
|
9418 | var yesterday = new Date(focusedDate);
|
9419 | yesterday.setDate(focusedDate.getDate() - 1);
|
9420 |
|
9421 | if (!(disableDatesBefore && isDateBefore(yesterday, disableDatesBefore))) {
|
9422 | setFocusDateAndHandleMonthChange(yesterday);
|
9423 | }
|
9424 | }
|
9425 | }, [disableDatesAfter, disableDatesBefore, focusDate, selected, setFocusDateAndHandleMonthChange]);
|
9426 | var showNextYear = getNextDisplayYear(month, year);
|
9427 | var showNextMonth = getNextDisplayMonth(month);
|
9428 | var showNextToNextYear = getNextDisplayYear(showNextMonth, showNextYear);
|
9429 | var showNextToNextMonth = getNextDisplayMonth(showNextMonth);
|
9430 | var showPreviousYear = getPreviousDisplayYear(month, year);
|
9431 | var showPreviousMonth = getPreviousDisplayMonth(month);
|
9432 | var previousMonthName = i18n.translate("Polaris.DatePicker.months.".concat(monthName(showPreviousMonth)));
|
9433 | var nextMonth = multiMonth ? i18n.translate("Polaris.DatePicker.months.".concat(monthName(showNextToNextMonth))) : i18n.translate("Polaris.DatePicker.months.".concat(monthName(showNextMonth)));
|
9434 | var nextYear = multiMonth ? showNextToNextYear : showNextYear;
|
9435 | var secondDatePicker = multiMonth ? React__default.createElement(Month, {
|
9436 | onFocus: handleFocus,
|
9437 | focusedDate: focusDate,
|
9438 | month: showNextMonth,
|
9439 | year: showNextYear,
|
9440 | selected: deriveRange(selected),
|
9441 | hoverDate: hoverDate,
|
9442 | onChange: handleDateSelection,
|
9443 | onHover: handleHover,
|
9444 | disableDatesBefore: disableDatesBefore,
|
9445 | disableDatesAfter: disableDatesAfter,
|
9446 | allowRange: allowRange,
|
9447 | weekStartsOn: weekStartsOn
|
9448 | }) : null;
|
9449 | return React__default.createElement("div", {
|
9450 | id: id,
|
9451 | className: styles$J.DatePicker,
|
9452 | onKeyDown: handleKeyDown,
|
9453 | onKeyUp: handleKeyUp
|
9454 | }, React__default.createElement("div", {
|
9455 | className: styles$J.Header
|
9456 | }, React__default.createElement(Button, {
|
9457 | plain: true,
|
9458 | icon: ArrowLeftMinor,
|
9459 | accessibilityLabel: i18n.translate('Polaris.DatePicker.previousMonth', {
|
9460 | previousMonthName,
|
9461 | showPreviousYear
|
9462 | }),
|
9463 | onClick: function onClick() {
|
9464 | return handleMonthChangeClick(showPreviousMonth, showPreviousYear);
|
9465 | }
|
9466 | }), React__default.createElement(Button, {
|
9467 | plain: true,
|
9468 | icon: ArrowRightMinor,
|
9469 | accessibilityLabel: i18n.translate('Polaris.DatePicker.nextMonth', {
|
9470 | nextMonth,
|
9471 | nextYear
|
9472 | }),
|
9473 | onClick: function onClick() {
|
9474 | return handleMonthChangeClick(showNextMonth, showNextYear);
|
9475 | }
|
9476 | })), React__default.createElement("div", {
|
9477 | className: styles$J.MonthContainer
|
9478 | }, React__default.createElement(Month, {
|
9479 | onFocus: handleFocus,
|
9480 | focusedDate: focusDate,
|
9481 | month: month,
|
9482 | year: year,
|
9483 | selected: deriveRange(selected),
|
9484 | hoverDate: hoverDate,
|
9485 | onChange: handleDateSelection,
|
9486 | onHover: handleHover,
|
9487 | disableDatesBefore: disableDatesBefore,
|
9488 | disableDatesAfter: disableDatesAfter,
|
9489 | allowRange: allowRange,
|
9490 | weekStartsOn: weekStartsOn
|
9491 | }), secondDatePicker));
|
9492 | }
|
9493 |
|
9494 | function noop$8() {}
|
9495 |
|
9496 | function handleKeyDown(event) {
|
9497 | var key = event.key;
|
9498 |
|
9499 | if (key === 'ArrowUp' || key === 'ArrowDown' || key === 'ArrowLeft' || key === 'ArrowRight') {
|
9500 | event.preventDefault();
|
9501 | event.stopPropagation();
|
9502 | }
|
9503 | }
|
9504 |
|
9505 | function deriveRange(selected) {
|
9506 | return selected instanceof Date ? {
|
9507 | start: selected,
|
9508 | end: selected
|
9509 | } : selected;
|
9510 | }
|
9511 |
|
9512 | var styles$K = {
|
9513 | "DescriptionList": "Polaris-DescriptionList",
|
9514 | "Term": "Polaris-DescriptionList__Term",
|
9515 | "Description": "Polaris-DescriptionList__Description"
|
9516 | };
|
9517 |
|
9518 | var getUniqueTermKey = createUniqueIDFactory("Term");
|
9519 | var getUniqueDescriptionKey = createUniqueIDFactory("Description");
|
9520 | function DescriptionList(_ref) {
|
9521 | var items = _ref.items;
|
9522 | var terms = items.reduce(function (allTerms, _ref2) {
|
9523 | var term = _ref2.term,
|
9524 | description = _ref2.description;
|
9525 | return [].concat(_toConsumableArray(allTerms), [React__default.createElement("dt", {
|
9526 | key: getUniqueTermKey(),
|
9527 | className: styles$K.Term
|
9528 | }, term), React__default.createElement("dd", {
|
9529 | key: getUniqueDescriptionKey(),
|
9530 | className: styles$K.Description
|
9531 | }, description)]);
|
9532 | }, []);
|
9533 | return React__default.createElement("dl", {
|
9534 | className: styles$K.DescriptionList
|
9535 | }, terms);
|
9536 | }
|
9537 |
|
9538 | var styles$L = {
|
9539 | "DisplayText": "Polaris-DisplayText",
|
9540 | "sizeSmall": "Polaris-DisplayText--sizeSmall",
|
9541 | "sizeMedium": "Polaris-DisplayText--sizeMedium",
|
9542 | "sizeLarge": "Polaris-DisplayText--sizeLarge",
|
9543 | "sizeExtraLarge": "Polaris-DisplayText--sizeExtraLarge"
|
9544 | };
|
9545 |
|
9546 | function DisplayText(_ref) {
|
9547 | var _ref$element = _ref.element,
|
9548 | Element = _ref$element === void 0 ? 'p' : _ref$element,
|
9549 | children = _ref.children,
|
9550 | _ref$size = _ref.size,
|
9551 | size = _ref$size === void 0 ? 'medium' : _ref$size;
|
9552 | var className = classNames(styles$L.DisplayText, size && styles$L[variationName('size', size)]);
|
9553 | return React__default.createElement(Element, {
|
9554 | className: className
|
9555 | }, children);
|
9556 | }
|
9557 |
|
9558 | function capitalize() {
|
9559 | var word = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
9560 | var wordLower = word.toLowerCase();
|
9561 | return wordLower.charAt(0).toUpperCase() + wordLower.slice(1);
|
9562 | }
|
9563 |
|
9564 |
|
9565 |
|
9566 |
|
9567 |
|
9568 |
|
9569 |
|
9570 |
|
9571 |
|
9572 |
|
9573 |
|
9574 |
|
9575 |
|
9576 |
|
9577 |
|
9578 |
|
9579 |
|
9580 |
|
9581 |
|
9582 |
|
9583 |
|
9584 | function useEventListener(target, type, handler, listenerOptions, options) {
|
9585 | useEffect(function () {
|
9586 | var eventTarget = target && 'current' in target ? target.current : target;
|
9587 |
|
9588 | if (!eventTarget && options && options.defaultToWindow) {
|
9589 | eventTarget = window;
|
9590 | }
|
9591 |
|
9592 | if (!eventTarget) return;
|
9593 | eventTarget.addEventListener(type, handler, listenerOptions);
|
9594 | return function () {
|
9595 | eventTarget && eventTarget.removeEventListener(type, handler, listenerOptions);
|
9596 | };
|
9597 | }, [handler, listenerOptions, options, target, type]);
|
9598 | }
|
9599 |
|
9600 |
|
9601 |
|
9602 |
|
9603 |
|
9604 |
|
9605 |
|
9606 |
|
9607 |
|
9608 |
|
9609 |
|
9610 |
|
9611 |
|
9612 |
|
9613 |
|
9614 |
|
9615 |
|
9616 |
|
9617 | function useComponentDidMount(callback) {
|
9618 | var isAfterInitialMount = useIsAfterInitialMount();
|
9619 | var hasInvokedLifeCycle = useRef(false);
|
9620 |
|
9621 | if (isAfterInitialMount && !hasInvokedLifeCycle.current) {
|
9622 | hasInvokedLifeCycle.current = true;
|
9623 | return callback();
|
9624 | }
|
9625 | }
|
9626 |
|
9627 | var fileUpload = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjggMTI4Ij48cGF0aCBkPSJNNjkuODEgMTI0LjQzYTEuMzkgMS4zOSAwIDAxLS41Ny0uMTIgMS40MyAxLjQzIDAgMDEtLjQ5LS4zMiAxLjUyIDEuNTIgMCAwMS0uNDQtMS4wNiAxLjUgMS41IDAgMDEuNDQtMS4wNiAxLjUzIDEuNTMgMCAwMTEuMzUtLjQyIDEuMzEgMS4zMSAwIDAxLjI4LjA5IDEuMDggMS4wOCAwIDAxLjI2LjE0IDEuMDYgMS4wNiAwIDAxLjIzLjE5IDEuMzcgMS4zNyAwIDAxLjE5LjIyIDEuMjYgMS4yNiAwIDAxLjEzLjI2IDEuNDkgMS40OSAwIDAxLS4zMiAxLjY0IDEuMzQgMS4zNCAwIDAxLS40OS4zMiAxLjM5IDEuMzkgMCAwMS0uNTcuMTJ6bS05LjcxLTEuNWExLjUgMS41IDAgMDExLjUtMS41IDEuNSAxLjUgMCAwMTEuNSAxLjUgMS41MSAxLjUxIDAgMDEtMS41IDEuNSAxLjUgMS41IDAgMDEtMS41LTEuNXptLTguMjIgMGExLjUgMS41IDAgMDExLjUtMS41IDEuNSAxLjUgMCAwMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjV6bS04LjIyIDBhMS41IDEuNSAwIDAxMS41LTEuNSAxLjUxIDEuNTEgMCAwMTEuNTEgMS41IDEuNTEgMS41MSAwIDAxLTEuNTEgMS41IDEuNTEgMS41MSAwIDAxLTEuNS0xLjV6bS04LjIxIDBhMS41IDEuNSAwIDAxMS41LTEuNSAxLjUgMS41IDAgMDExLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUtMS41em0tOC4yMiAwYTEuNSAxLjUgMCAwMTEuNS0xLjUgMS41MSAxLjUxIDAgMDExLjUxIDEuNSAxLjUxIDEuNTEgMCAwMS0xLjUxIDEuNSAxLjUxIDEuNTEgMCAwMS0xLjUtMS41em0tOC4yMSAwYTEuNSAxLjUgMCAwMTEuNS0xLjUgMS41IDEuNSAwIDAxMS41IDEuNSAxLjUgMS41IDAgMDEtMS41IDEuNSAxLjUgMS41IDAgMDEtMS41Mi0xLjV6bS04LjIyIDBhMS41IDEuNSAwIDAxMS41LTEuNSAxLjUxIDEuNTEgMCAwMTEuNTEgMS41IDEuNTEgMS41MSAwIDAxLTEuNTEgMS41IDEuNSAxLjUgMCAwMS0xLjUtMS41em0tNi43MSAxLjVBMS41IDEuNSAwIDAxMyAxMjRhMS40NyAxLjQ3IDAgMDEtLjQ0LTEuMDYgMS41MyAxLjUzIDAgMDEwLS4zYzAtLjA5IDAtLjE5LjA4LS4yOGEyLjE1IDIuMTUgMCAwMS4xNC0uMjYgMS4zNyAxLjM3IDAgMDEuMTktLjIyIDEuMDYgMS4wNiAwIDAxLjIzLS4xOSAxLjA4IDEuMDggMCAwMS4yNi0uMTQgMS4zMSAxLjMxIDAgMDEuMjgtLjA5IDEuODggMS44OCAwIDAxLjU4IDAgMS4zMSAxLjMxIDAgMDEuMjguMDkgMS4zIDEuMyAwIDAxLjI2LjE0IDEuMzcgMS4zNyAwIDAxLjIzLjE5IDEuMzcgMS4zNyAwIDAxLjE5LjIyIDEuMjYgMS4yNiAwIDAxLjEzLjI2IDEuNDEgMS40MSAwIDAxLjEyLjU4IDEuNTYgMS41NiAwIDAxLS4xMS41NyAxLjYzIDEuNjMgMCAwMS0uMzMuNDkgMS41IDEuNSAwIDAxLTEgLjQzem0tMS41LTkuNWExLjUgMS41IDAgMDExLjUtMS41IDEuNSAxLjUgMCAwMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjV6bTAtOGExLjUgMS41IDAgMDExLjUtMS41IDEuNSAxLjUgMCAwMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjV6bTAtOGExLjUgMS41IDAgMDExLjUtMS41IDEuNSAxLjUgMCAwMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjQ5em0wLThhMS41IDEuNSAwIDAxMS41LTEuNSAxLjUgMS41IDAgMDExLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUtMS40OXptMC04YTEuNSAxLjUgMCAwMTEuNS0xLjVBMS41IDEuNSAwIDAxNS41OSA4M2ExLjUgMS41IDAgMDEtMS41IDEuNSAxLjUgMS41IDAgMDEtMS41LTEuNXptMC04YTEuNSAxLjUgMCAwMTEuNS0xLjVBMS41IDEuNSAwIDAxNS41OSA3NWExLjUgMS41IDAgMDEtMS41IDEuNSAxLjUgMS41IDAgMDEtMS41LTEuNXptMC04YTEuNSAxLjUgMCAwMTEuNS0xLjVBMS41IDEuNSAwIDAxNS41OSA2N2ExLjUxIDEuNTEgMCAwMS0xLjUgMS41MUExLjUxIDEuNTEgMCAwMTIuNTkgNjd6bTAtOGExLjUgMS41IDAgMDExLjUtMS41QTEuNSAxLjUgMCAwMTUuNTkgNTlhMS41IDEuNSAwIDAxLTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjV6bTAtOGExLjUxIDEuNTEgMCAwMTEuNS0xLjUxQTEuNTEgMS41MSAwIDAxNS41OSA1MWExLjUgMS41IDAgMDEtMS41IDEuNSAxLjUgMS41IDAgMDEtMS41LTEuNXptMS41LTYuNDZBMS41IDEuNSAwIDAxMi41OSA0M2ExLjM2IDEuMzYgMCAwMTAtLjI5IDIuMjkgMi4yOSAwIDAxLjA4LS4yOCAyLjE1IDIuMTUgMCAwMS4xNC0uMjYgMS41NyAxLjU3IDAgMDEuNDItLjQyIDIgMiAwIDAxLjI1LS4xNGwuMjktLjA4YTEuNSAxLjUgMCAwMTEuMzUuNDEgMS40NSAxLjQ1IDAgMDEuMTkuMjMgMS4yNiAxLjI2IDAgMDEuMTMuMjYgMS4zMSAxLjMxIDAgMDEuMDkuMjggMS4zNiAxLjM2IDAgMDEwIC4yOSAxLjUyIDEuNTIgMCAwMS0uMzggMSAyLjExIDIuMTEgMCAwMS0uMjMuMTkgMS4yNiAxLjI2IDAgMDEtLjI2LjEzIDEuMzEgMS4zMSAwIDAxLS4yOC4wOSAxLjQzIDEuNDMgMCAwMS0uMjkuMDZ6TTYwLjEgNDNhMS41IDEuNSAwIDAxMS41LTEuNSAxLjUgMS41IDAgMDExLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUtMS41em0tOC4yMiAwYTEuNSAxLjUgMCAwMTEuNS0xLjUgMS41IDEuNSAwIDAxMS41IDEuNSAxLjUgMS41IDAgMDEtMS41IDEuNSAxLjUgMS41IDAgMDEtMS41LTEuNXptLTguMjIgMGExLjUgMS41IDAgMDExLjUtMS41IDEuNTEgMS41MSAwIDAxMS41MSAxLjUgMS41MSAxLjUxIDAgMDEtMS41MSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjV6bS04LjIxIDBhMS41IDEuNSAwIDAxMS41LTEuNSAxLjUgMS41IDAgMDExLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUtMS41em0tOC4yMiAwYTEuNSAxLjUgMCAwMTEuNS0xLjUgMS41IDEuNSAwIDAxMS41IDEuNSAxLjUgMS41IDAgMDEtMS41IDEuNSAxLjUgMS41IDAgMDEtMS41LTEuNXpNMTkgNDNhMS41IDEuNSAwIDAxMS41LTEuNUExLjUgMS41IDAgMDEyMiA0M2ExLjUgMS41IDAgMDEtMS41IDEuNUExLjUgMS41IDAgMDExOSA0M3ptLTguMiAwYTEuNSAxLjUgMCAwMTEuNS0xLjUgMS41IDEuNSAwIDAxMS41IDEuNSAxLjUgMS41IDAgMDEtMS41IDEuNSAxLjUgMS41IDAgMDEtMS41LTEuNXptNTkuMDEgMS40N2ExLjUgMS41IDAgMDEtMS4wNi0uNDcgMS41MiAxLjUyIDAgMDEtLjQ0LTEgMS41IDEuNSAwIDAxMS43OS0xLjVsLjI4LjA4LjI2LjE0YTIuMTEgMi4xMSAwIDAxLjIzLjE5IDEuNSAxLjUgMCAwMS40NCAxLjA5IDEuNTIgMS41MiAwIDAxLS40NCAxIDIuMTEgMi4xMSAwIDAxLS4yMy4xOSAxLjI2IDEuMjYgMCAwMS0uMjYuMTMgMS4zMSAxLjMxIDAgMDEtLjI4LjA5IDEuMzYgMS4zNiAwIDAxLS4yOS4wNnptLTEuNSA3MC40NmExLjUgMS41IDAgMDExLjUtMS41IDEuNSAxLjUgMCAwMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjV6bTAtOGExLjUgMS41IDAgMDExLjUtMS41IDEuNSAxLjUgMCAwMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjV6bTAtOGExLjUgMS41IDAgMDExLjUtMS41IDEuNSAxLjUgMCAwMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjQ5em0wLThhMS41IDEuNSAwIDAxMS41LTEuNSAxLjUgMS41IDAgMDExLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUtMS40OXptMC04YTEuNSAxLjUgMCAwMTEuNS0xLjUgMS41IDEuNSAwIDAxMS41IDEuNSAxLjUgMS41IDAgMDEtMS41IDEuNSAxLjUgMS41IDAgMDEtMS41LTEuNDN6bTAtOGExLjUgMS41IDAgMDExLjUtMS41IDEuNSAxLjUgMCAwMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjQzem0wLThhMS41IDEuNSAwIDAxMS41LTEuNSAxLjUgMS41IDAgMDExLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUgMS40OSAxLjUgMS41IDAgMDEtMS41LTEuNDJ6bTAtOGExLjUgMS41IDAgMDExLjUtMS41IDEuNSAxLjUgMCAwMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNS0xLjQzem0wLThhMS41IDEuNSAwIDAxMS41LTEuNSAxLjUgMS41IDAgMDExLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUtMS40M3oiIGZpbGw9IiNkZWU0ZjUiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMjYuNjcgMy41N2g3OS40MXY5Ni42MUgyNi42N3oiLz48cGF0aCBkPSJNMTA2LjkyIDEwMUg5MS43OGMtMS42NCAwLTMuMjQuMTUtNC45LjE4cy0zLjM5LS4wNS01LjExLS4xM2MtLjg1IDAtMS43LS4wNi0yLjU0IDBzLTEuNjcgMC0yLjQ5IDBsLTkuOTEuMjljLTMuMzIuMDgtNi42Mi4yNC0xMCAuMjZzLTYuNzgtLjI3LTEwLjExLS4xOWMtNi42My40Mi0xMy40LjE2LTIwLjA3IDBoLS4wOGExLjEgMS4xIDAgMDEtMS4wNy0xLjEzYy4wOC0yIC4wNi00IC4wOC02czAtNCAwLTYtLjE5LTQtLjIzLTYgLjE1LTQgLjI4LTZhMjEuNiAyMS42IDAgMDAwLTMgMjcuODYgMjcuODYgMCAwMS0uMTQtM3YtNmwuMTMtMTIuMDh2LTEybC4zMy02YTUzIDUzIDAgMDAtLjEzLTZjLS4yMy00IC4xMi04IC4yNi0xMi4wOGwuMDYtM3YtM2wtLjA4LTZBLjU1LjU1IDAgMDEyNi42NCAzYzMuMy0uMSA2LjYxIDAgOS45MiAwczYuNjIgMCA5LjkzLjA2YzEuNjUgMCAzLjMxLjA2IDUgLjA3SDU0bDIuNDgtLjA4IDkuOTMtLjMzQzczIDIuNTQgNzkuNiAyLjQgODYuMjIgMi40M2MzLjMxLjA3IDYuNjIuMyA5LjkzLjI0bDkuOTItLjI2YTEuMTMgMS4xMyAwIDAxMS4xNiAxLjF2LjA2bC4xOCA2LjFjMCAyLS4xMSA0LjA2LS4xNiA2LjA4IDAgNC4wNi4yMiA4LjE2LjEzIDEyLjIyIDAgMi0uMjYgNC0uMzMgNi0uMDYgMSAwIDIgMCAzdjYuMDZsLS4xMiAzYTQ2Ljc1IDQ2Ljc1IDAgMDAuMDkgNi4xM2MuMjEgNC4xNi0uMjEgOC0uMiAxMi4wOC0uMTcgNCAuMTMgOC4yIDAgMTIuMjEgMCAyLS4xNSA0LS4xNiA2cy4wNyA0LjExLjEzIDYuMTlsLjA4IDMuMTJ2My4wNmMuMDYgMi4xOC4xMyA0LjE4LjA1IDYuMTh6bS0xLjctMS42OVY4Ny4zN2MwLTIgLjA4LTMuOTMuMDYtNS45M3MtLjItNC4xMy0uMjYtNi4xNWMtLjE1LTQuMDguMjItNy44MyAwLTExLjkzLS4wNi0yLS4xNi00LjA2LS4yNy02LjFhNDMuODkgNDMuODkgMCAwMTAtNiAzMS4xNCAzMS4xNCAwIDAwLjE2LTUuOSA0NC43NSA0NC43NSAwIDAxLS4wOS02IDU4LjQ1IDU4LjQ1IDAgMDAuMTgtNS44NmMwLTItLjI3LTQuMDUtLjI4LTZzMC00IC4xMS01Ljk1LjE1LTQgLjE0LTYtLjE5LTQtLjE2LTZsLjE0LTYgMS4xMSAxLjExYy0zLjMxLS4wNy02LjYxLS4xOS05LjkyLS4xOHMtNi42Mi4zLTkuOTMuNDNDNzkuNiA1LjA2IDczIDUgNjYuMzcgNC44M2MtMS42NiAwLTMuMzEtLjEtNS0uMTdsLTUtLjI5Yy0zLjMxLS4xOC02LjYxIDAtOS45Mi4xMy02LjYyLjIyLTEzLjI0LjM5LTE5Ljg1LjI3bDEuMi0xLjItLjI4IDZ2M2wuMSAzYy4yMiA0IC44MyA4LjA2LjM3IDEyLjA4LS4xMSAxLS4yNyAyLS4zNCAzczAgMiAwIDNjLjExIDIgLjQxIDQgLjUgNnYzbC0uMDcgMy0uMTQgNkwyOCA2NGwtLjA2IDZhMjIgMjIgMCAwMS0uMiAzIDIwLjE4IDIwLjE4IDAgMDAtLjA4IDNjLjA5IDIgLjI4IDQgLjE5IDZsLS4yNyA2Yy0uMDYgNC0uMTQgOC4wNS0uMTMgMTIuMDhsLS43NC0uNzVoOS44NWMzLjI4IDAgNi41OC4wOCA5Ljg2LjA2czYuNTEtLjI1IDkuNzYtLjI5IDYuNTcuMSA5Ljg3LjE0bDkuOTEuMTloNC44OWMxLjU5IDAgMy4xOC0uMTQgNC44Mi0uMTRzMy4zNC4xMSA1IC4xNGw0Ljg2LS4wNmMzLjE3LS4wNSA2LjQ3LS4wMiA5LjY5LS4wNHoiIGZpbGw9IiNmZmYiLz48ZyBvcGFjaXR5PSIuNSIgZmlsbD0iI2RlZTRmNSI+PHBhdGggZD0iTTI2LjY3IDMuNTdoNzkuNDF2OTYuNjFIMjYuNjd6Ii8+PHBhdGggZD0iTTEwNi45MiAxMDFIOTEuNzhjLTEuNjQgMC0zLjI0LjE1LTQuOS4xOHMtMy4zOS0uMDUtNS4xMS0uMTNjLS44NSAwLTEuNy0uMDYtMi41NCAwcy0xLjY3IDAtMi40OSAwbC05LjkxLjI5Yy0zLjMyLjA4LTYuNjIuMjQtMTAgLjI2cy02Ljc4LS4yNy0xMC4xMS0uMTljLTYuNjMuNDItMTMuNC4xNi0yMC4wNyAwaC0uMDhhMS4xIDEuMSAwIDAxLTEuMDctMS4xM2MuMDgtMiAuMDYtNCAuMDgtNnMwLTQgMC02LS4xOS00LS4yMy02IC4xNS00IC4yOC02YTIxLjYgMjEuNiAwIDAwMC0zIDI3Ljg2IDI3Ljg2IDAgMDEtLjE0LTN2LTZsLjEzLTEyLjA4di0xMmwuMzMtNmE1MyA1MyAwIDAwLS4xMy02Yy0uMjMtNCAuMTItOCAuMjYtMTIuMDhsLjA2LTN2LTNsLS4wOC02QS41NS41NSAwIDAxMjYuNjQgM2MzLjMtLjEgNi42MSAwIDkuOTIgMHM2LjYyIDAgOS45My4wNmMxLjY1IDAgMy4zMS4wNiA1IC4wN0g1NGwyLjQ4LS4wOCA5LjkzLS4zM0M3MyAyLjU0IDc5LjYgMi40IDg2LjIyIDIuNDNjMy4zMS4wNyA2LjYyLjMgOS45My4yNGw5LjkyLS4yNmExLjEzIDEuMTMgMCAwMTEuMTYgMS4xdi4wNmwuMTggNi4xYzAgMi0uMTEgNC4wNi0uMTYgNi4wOCAwIDQuMDYuMjIgOC4xNi4xMyAxMi4yMiAwIDItLjI2IDQtLjMzIDYtLjA2IDEgMCAyIDAgM3Y2LjA2bC0uMTIgM2E0Ni43NSA0Ni43NSAwIDAwLjA5IDYuMTNjLjIxIDQuMTYtLjIxIDgtLjIgMTIuMDgtLjE3IDQgLjEzIDguMiAwIDEyLjIxIDAgMi0uMTUgNC0uMTYgNnMuMDcgNC4xMS4xMyA2LjE5bC4wOCAzLjEydjMuMDZjLjA2IDIuMTguMTMgNC4xOC4wNSA2LjE4em0tMS43LTEuNjlWODcuMzdjMC0yIC4wOC0zLjkzLjA2LTUuOTNzLS4yLTQuMTMtLjI2LTYuMTVjLS4xNS00LjA4LjIyLTcuODMgMC0xMS45My0uMDYtMi0uMTYtNC4wNi0uMjctNi4xYTQzLjg5IDQzLjg5IDAgMDEwLTYgMzEuMTQgMzEuMTQgMCAwMC4xNi01LjkgNDQuNzUgNDQuNzUgMCAwMS0uMDktNiA1OC40NSA1OC40NSAwIDAwLjE4LTUuODZjMC0yLS4yNy00LjA1LS4yOC02czAtNCAuMTEtNS45NS4xNS00IC4xNC02LS4xOS00LS4xNi02bC4xNC02IDEuMTEgMS4xMWMtMy4zMS0uMDctNi42MS0uMTktOS45Mi0uMThzLTYuNjIuMy05LjkzLjQzQzc5LjYgNS4wNiA3MyA1IDY2LjM3IDQuODNjLTEuNjYgMC0zLjMxLS4xLTUtLjE3bC01LS4yOWMtMy4zMS0uMTgtNi42MSAwLTkuOTIuMTMtNi42Mi4yMi0xMy4yNC4zOS0xOS44NS4yN2wxLjItMS4yLS4yOCA2djNsLjEgM2MuMjIgNCAuODMgOC4wNi4zNyAxMi4wOC0uMTEgMS0uMjcgMi0uMzQgM3MwIDIgMCAzYy4xMSAyIC40MSA0IC41IDZ2M2wtLjA3IDMtLjE0IDZMMjggNjRsLS4wNiA2YTIyIDIyIDAgMDEtLjIgMyAyMC4xOCAyMC4xOCAwIDAwLS4wOCAzYy4wOSAyIC4yOCA0IC4xOSA2bC0uMjcgNmMtLjA2IDQtLjE0IDguMDUtLjEzIDEyLjA4bC0uNzQtLjc1aDkuODVjMy4yOCAwIDYuNTguMDggOS44Ni4wNnM2LjUxLS4yNSA5Ljc2LS4yOSA2LjU3LjEgOS44Ny4xNGw5LjkxLjE5aDQuODljMS41OSAwIDMuMTgtLjE0IDQuODItLjE0czMuMzQuMTEgNSAuMTRsNC44Ni0uMDZjMy4xNy0uMDUgNi40Ny0uMDIgOS42OS0uMDR6Ii8+PC9nPjxyZWN0IHg9IjM4LjgiIHk9IjE2LjE3IiB3aWR0aD0iMjEuOTYiIGhlaWdodD0iMjMuMzMiIHJ4PSIxMC43MSIgcnk9IjEwLjcxIiBmaWxsPSIjZGVlNGY1Ii8+PHBhdGggZD0iTTUwLjA1IDQwLjI5YTExLjc4IDExLjc4IDAgMDEtNC43LS44MmMtLjcyLS4zNS0xLjQzLS43Mi0yLjE1LTEuMDktLjM1LS4xOS0uNjgtLjQzLTEtLjY0cy0uNjUtLjUtMS0uNzZhMTEuNDUgMTEuNDUgMCAwMS0zLjI3LTguODdMMzggMjdjMC0uMzkgMC0uOC4wNy0xLjJzLjE0LS44LjIyLTEuMmwuMzQtMS4xNmExMC42OCAxMC42OCAwIDAxMi41MS00IDE1LjUxIDE1LjUxIDAgMDExLjc2LTEuNTggMTAuMTggMTAuMTggMCAwMTIuMDYtMS4xNiAxMy42MyAxMy42MyAwIDAxNC41OC0uOTUgMTEuODUgMTEuODUgMCAwMTQuNTguODEgMTIuMjkgMTIuMjkgMCAwMTQgMi40MSAxMS43NSAxMS43NSAwIDAxMy40NiA4LjY1IDEyLjYxIDEyLjYxIDAgMDEtMyA4LjgyIDcuNTcgNy41NyAwIDAxLS44OS44MSA4LjQ2IDguNDYgMCAwMS0xIC43MiAxMi40MiAxMi40MiAwIDAxLTIgMS4yMyAxMS4xNCAxMS4xNCAwIDAxLTQuNjQgMS4wOXptMC0xLjU4YTkuNjkgOS42OSAwIDAwNC0uOTIgOS4zMiA5LjMyIDAgMDAxLjc3LTEuMDYgNS4xMiA1LjEyIDAgMDAuNzYtLjcxIDcuMDcgNy4wNyAwIDAwLjY3LS43OCAxMS4xNSAxMS4xNSAwIDAwMi4wOS0zLjQ5bC4zLTEgLjE2LTEgLjA3LTF2LTEuMThjMC0uMzguMDUtLjc2IDAtMS4xYTYuMTUgNi4xNSAwIDAwMC0xIDYgNiAwIDAwLS41My0yQTEwLjE5IDEwLjE5IDAgMDA1Ny4wNSAyMGMtLjUxLS40Ny0xLjA3LS44Ni0xLjU3LTEuMzZhNC40NCA0LjQ0IDAgMDAtMS44Mi0xIDYuMDcgNi4wNyAwIDAwLTEtLjI1IDYuMTQgNi4xNCAwIDAwLTEtLjEyYy0uNzEtLjA4LTEuMzMgMC0yLjExIDBoLTFhOC42MSA4LjYxIDAgMDAtMSAuMTIgOS4zOCA5LjM4IDAgMDAtMiAuNjggMTEuMzIgMTEuMzIgMCAwMC0xLjc5IDEgNSA1IDAgMDAtLjgzLjYybC0uMzkuMzUtLjMyLjRhMjUuMzUgMjUuMzUgMCAwMC0yLjExIDMuNTUgNi40OCA2LjQ4IDAgMDAtLjMyIDFjLS4wNS4zNC0uMTEuNjktLjE1IDFMMzkuNDYgMjdsLS4xIDEuMTNhOS4zOCA5LjM4IDAgMDAzIDcuNzFjLjI0LjI1LjUuNDkuNzUuNzRzLjU0LjQ1LjgzLjY2YTUuNTkgNS41OSAwIDAwMS45LjkyIDExLjIzIDExLjIzIDAgMDA0LjIxLjU1eiIgZmlsbD0iI2RlZTRmNSIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik00OS43NyAyNy44NGgyOC42OHYzMC40N0g0OS43N3oiLz48cGF0aCBkPSJNNzkgNTguODdjLTIuNDMuMDUtNS0uMTMtNy4zMS4wN2E0MS40MiA0MS40MiAwIDAwLTcuMjYuMTggMjQuODcgMjQuODcgMCAwMS0zLjY3IDAgMTYgMTYgMCAwMC0zLjY3LjA1Yy0yLjQzLjE2LTQuOTItLjItNy4zNC0uMjFhLjY3LjY3IDAgMDEtLjY3LS42OHYtMS45MWMwLS42NC0uMS0xLjI3LS4xNS0xLjktLjE1LTEuMjcuNDQtMi41NC4wOC0zLjgxIDAtMi41NC4xLTUuMDguMS03LjYyYTMyLjMxIDMyLjMxIDAgMDEuMDktMy44MSAxNS4yNiAxNS4yNiAwIDAwLjE4LTEuOWMwLS42NC0uMTMtMS4yNy0uMTYtMS45MSAwLTEuMjYuMTUtMi41My4yMy0zLjhzMC0yLjU0LS4wNS0zLjgxYS4zNi4zNiAwIDAxLjM0LS4zN2MxLjItLjA2IDIuMzkgMCAzLjU5IDBzMi4zOSAwIDMuNTguMDZjMi4zOS4xNiA0Ljc4LS4yMyA3LjE3LS4yOWE4Ni4xIDg2LjEgMCAwMTMuNTktLjEzIDI1LjE5IDI1LjE5IDAgMDEzLjU4LjA5IDYzLjYyIDYzLjYyIDAgMDA3LjItLjE3Ljg3Ljg3IDAgMDEuODkuODN2LjA2YTE4IDE4IDAgMDEtLjEgMS45NCAxOCAxOCAwIDAwMCAxLjk0IDE1LjYxIDE1LjYxIDAgMDEtLjEyIDMuODcgMzguMyAzOC4zIDAgMDAtLjA2IDMuODcgMTMuMiAxMy4yIDAgMDAtLjExIDEuOSAxOS42NCAxOS42NCAwIDAxLjE1IDJjLS4wNiAxLjI3LS4yMiAyLjQ5LS4yMiAzLjc3cy4xNiAyLjY5IDAgMy45MWEyMS4wOCAyMS4wOCAwIDAwMCAzLjg5djJjMCAuNjYuMTIgMS4yNi4xMiAxLjg5em0tMS4xMy0xLjEzdi0zLjcxYTE4LjY0IDE4LjY0IDAgMDAtLjA4LTMuNzggMzUuNSAzNS41IDAgMDEwLTMuNzJjMC0xLjI1LS4yMy0yLjU5LS4yOC0zLjg0YTguNjcgOC42NyAwIDAxLjIxLTEuNzggMTEuMjggMTEuMjggMCAwMC0uMTItMS45IDguNTQgOC41NCAwIDAxLjEtMS44MyA3LjgyIDcuODIgMCAwMDAtMS44NyAxNC4yMSAxNC4yMSAwIDAxMC0zLjc0IDE0LjM5IDE0LjM5IDAgMDAuMDYtMS44NmMwLS42My0uMTEtMS4yNS0uMDktMS44N2wuODMuODNjLTIuMzkgMC00Ljc4LS40LTcuMTctLjA4YTIxLjQ5IDIxLjQ5IDAgMDEtMy41OC4xOUg2NS45bC0xLjc5LS4wN2MtMi4zOSAwLTQuNzgtLjY0LTcuMTctLjI5YTY4LjY5IDY4LjY5IDAgMDEtNy4xNy4yMmwuOC0uOGEyMi4wOSAyMi4wOSAwIDAwLS4xNiAzLjgxIDIyLjMzIDIyLjMzIDAgMDEuMzcgMy44IDE2IDE2IDAgMDAtLjM1IDEuOTEgOC44NiA4Ljg2IDAgMDAuMjYgMS45IDE2LjE5IDE2LjE5IDAgMDEwIDMuODFjLS4xMSAyLjU0IDAgNS4wOC0uMTcgNy42Mi0uNDIgMS4yNy4xMyAyLjU0IDAgMy44MWwtLjE4IDEuOS0uMDUgMS45MS0uNTMtLjUzYzIuMzcuMDkgNC43MSAwIDcuMDggMGEyMi41NyAyMi41NyAwIDAwMy41LS4xIDI1LjQ4IDI1LjQ4IDAgMDEzLjUgMCA0NSA0NSAwIDAwNy4wNS4wNmMyLjQ3LjE3IDQuNjYtLjAzIDcgMHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNODMuNzEgNDEuMTlMNzQgNTkuMjhsMjEuNDYtLjY3LTExLjE1LTE3LjQ1YS4zNC4zNCAwIDAwLS42LjAzeiIgZmlsbD0iI2RlZTRmNSIvPjxwYXRoIGQ9Ik04NC40IDQxLjU2Yy0uODIgMS41LTEuNTkgMy0yLjQ5IDQuNDhsLTEgMi4zN2MtLjM1Ljc4LS43NSAxLjUzLTEuMTcgMi4yOGwtMi41MiA0LjQ3Yy0uODEgMS41LTEuNjcgMy0yLjU0IDQuNDVsLS42NS0xYzEuNzkgMCAzLjU4LjE0IDUuMzcgMHMzLjU4IDAgNS4zNy0uMDkgMy41NyAwIDUuMzYtLjEyYTUzLjUxIDUzLjUxIDAgMDE1LjM2LS40M2wtLjU1IDEtMS40OS0yLjIzYy0uNTItLjc0LTEtMS40Ny0xLjUyLTIuMjJDOTEgNTMgOTAuMTMgNTEuNDMgODkuMSA1MGMtLjQ4LS43Ni0xLTEuNDgtMS40NS0yLjI2cy0uODUtMS41OC0xLjM2LTIuMzEtMS0xLjQ5LTEuNTEtMi4yMkw4NCA0Mi4wOGwtLjMxLS40NmEuNDQuNDQgMCAwMC43MS0uMDZ6bS0xLjQtLjc0YTEuMTMgMS4xMyAwIDAxLjg1LS42IDEuMTUgMS4xNSAwIDAxMSAuMzYgMiAyIDAgMDEuMTcuMjRsLjA5LjE0LjE5LjI4LjczIDEuMTIgMS40OCAyLjI0Yy40Ny43NiAxLjA2IDEuNDQgMS41OCAyLjE3cy45NCAxLjUyIDEuNDEgMi4yOGMuODkgMS41NiAxLjg2IDMuMDYgMi43OCA0LjYuNDQuNzguODUgMS41OCAxLjM0IDIuMzNsMS41MyAyLjJhLjc4Ljc4IDAgMDEtLjIgMS4wOC43NS43NSAwIDAxLS4zOC4xM2gtLjA2YTI0LjcyIDI0LjcyIDAgMDEtNS4zNy4wN2MtMS43OS4wNy0zLjU3LjUyLTUuMzYuNDRhMTcuMjYgMTcuMjYgMCAwMC0yLjY5IDBjLS44OS4wNi0xLjc4LjA3LTIuNjguMDgtMS43OS0uMTUtMy41Ny40MS01LjM2LjE0aC0uMjVhLjguOCAwIDAxLS42Ny0uOTIuNjkuNjkgMCAwMS4xMi0uMzJsLjc1LTEuMDkuNi0xLjEzYy40NS0uNzMuOTMtMS40NCAxLjQtMi4xNS44OS0xLjQ3IDEuNi0zIDIuMzQtNC41Ny4zNi0uNzguNzItMS41NSAxLjE0LTIuM2wxLjMtMi4yMWMuNjYtMS41OCAxLjQ4LTMuMDggMi4yMi00LjYxem0xNC43NiAzNi42OUg4NmExIDEgMCAwMTAtMmgxMS43NmExIDEgMCAwMTAgMnptLTIwLjE2IDBIMzVhMSAxIDAgMDEwLTJoNDIuNmExIDEgMCAwMTAgMnpNOTggODguMTRINjkuMzFhMSAxIDAgMDEwLTJIOThhMSAxIDAgMDEwIDJ6bS0zNy4yNSAwSDM1YTEgMSAwIDAxMC0yaDI1Ljc1YTEgMSAwIDAxMCAyeiIgZmlsbD0iI2RlZTRmNSIvPjxjaXJjbGUgY3g9IjEwNy40MSIgY3k9IjEwNi40MyIgcj0iMTgiIGZpbGw9IiNkZWU0ZjUiIHN0cm9rZT0iI2RlZTRmNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIiBkPSJNMTA3LjQxIDk2Ljg0djE5LjE4bTcuMTgtOS41OWwtNy4xOC05LjU5LTcuMTggOS41OSIvPjwvc3ZnPgo=';
|
9628 |
|
9629 | var imageUpload = 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTI5IDEwOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik02OC43OCAxMDYuMjVhMS41MiAxLjUyIDAgMDEtMS4wNi0uNDQgMS41NCAxLjU0IDAgMDEtLjMyLS40OSAxLjM5IDEuMzkgMCAwMS0uMTItLjU3IDEuNDEgMS40MSAwIDAxLjEyLS41OC45NC45NCAwIDAxLjE0LS4yNiAxIDEgMCAwMS4xOC0uMjIgMS41NCAxLjU0IDAgMDEyLjEyIDAgMS41IDEuNSAwIDAxLTEuMDYgMi41NnptLTkuNzgtMS41YTEuNSAxLjUgMCAxMTMgMCAxLjUgMS41IDAgMDEtMyAwem0tOC4zMSAwYTEuNSAxLjUgMCAwMTMgMCAxLjUxIDEuNTEgMCAwMS0xLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUzLTEuNWguMDN6bS04LjMyIDBhMS41IDEuNSAwIDExMS41IDEuNSAxLjUgMS41IDAgMDEtMS41My0xLjVoLjAzem0tOC4zMSAwYTEuNSAxLjUgMCAxMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNTYtMS41aC4wNnptLTguMzEgMGExLjUgMS41IDAgMTExLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUzLTEuNWguMDN6bS04LjMyIDBhMS41IDEuNSAwIDExMS41IDEuNSAxLjUxIDEuNTEgMCAwMS0xLjUzLTEuNWguMDN6bS04LjMxIDBhMS41IDEuNSAwIDExMS41IDEuNSAxLjUgMS41IDAgMDEtMS41My0xLjVoLjAzem0tNi44NCAxLjVhMS41IDEuNSAwIDAxLTEuMDYtLjQ0IDEuNSAxLjUgMCAwMTAtMi4xMiAxLjA2IDEuMDYgMCAwMS4yMy0uMTkgMS4wOCAxLjA4IDAgMDEuMjYtLjE0IDEuMzEgMS4zMSAwIDAxLjI4LS4wOSAxLjg4IDEuODggMCAwMS41OCAwIDEuMzEgMS4zMSAwIDAxLjI4LjA5IDEuMyAxLjMgMCAwMS4yNi4xNCAxLjM3IDEuMzcgMCAwMS4yMy4xOSAxLjUgMS41IDAgMDEuNDQgMS4wNiAxLjUgMS41IDAgMDEtMS41IDEuNXptLTEuNS05LjQzYTEuNSAxLjUgMCAxMTMgMCAxLjUgMS41IDAgMDEtMyAwem0wLTcuOTJhMS41IDEuNSAwIDExMyAwIDEuNSAxLjUgMCAwMS0zIDB6bTAtNy45MmExLjUgMS41IDAgMTEzIC4wMiAxLjUgMS41IDAgMDEtMyAwdi0uMDJ6bTAtNy45M2ExLjUgMS41IDAgMTEzIDAgMS41IDEuNSAwIDAxLTMgMHptMC03LjkyYTEuNSAxLjUgMCAxMTMgMCAxLjUgMS41IDAgMDEtMyAwem0wLTcuOTNhMS41IDEuNSAwIDExMyAwIDEuNSAxLjUgMCAwMS0zIDB6bTAtNy45MmExLjUgMS41IDAgMTEzIDAgMS41IDEuNSAwIDAxLTMgMHptMS41LTYuNDJhMS41IDEuNSAwIDAxLTEuMDYtMi41NiAxLjA2IDEuMDYgMCAwMS4yMy0uMTkgMS41OSAxLjU5IDAgMDEuMjYtLjExbC4yOS0uMTFhMS40MiAxLjQyIDAgMDEuNTggMGwuMjguMDguMjYuMTRhMS4zNyAxLjM3IDAgMDEuMjMuMTkgMS41IDEuNSAwIDAxLTEuMDYgMi41NmgtLjAxek01OSA0MS4zNmExLjUgMS41IDAgMTEzIDAgMS41IDEuNSAwIDAxLTMgMHptLTguMzEgMGExLjUgMS41IDAgMTExLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUzLTEuNWguMDN6bS04LjMyIDBhMS41IDEuNSAwIDExMS41IDEuNSAxLjUgMS41IDAgMDEtMS41My0xLjVoLjAzem0tOC4zMSAwYTEuNSAxLjUgMCAxMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNTYtMS41aC4wNnptLTguMzEgMGExLjUgMS41IDAgMTExLjUgMS41IDEuNSAxLjUgMCAwMS0xLjUzLTEuNWguMDN6bS04LjMyIDBhMS41IDEuNSAwIDExMS41IDEuNSAxLjUgMS41IDAgMDEtMS41My0xLjVoLjAzem0tOC4zMSAwYTEuNSAxLjUgMCAxMTEuNSAxLjUgMS41IDEuNSAwIDAxLTEuNTMtMS41aC4wM3ptNTkuNjYgMS41YTEuNDkgMS40OSAwIDAxLTEuMzgtMi4wOCAxLjEgMS4xIDAgMDEuMTQtLjI2IDEuMjQgMS4yNCAwIDAxLjE4LS4yMiAxLjUyIDEuNTIgMCAwMTEuMzYtLjQxbC4yOC4wOGEyIDIgMCAwMS4yNS4xNCAxLjA2IDEuMDYgMCAwMS4yMy4xOSAxLjMgMS4zIDAgMDEuMTkuMjJjMCAuMDkuMS4xNy4xNC4yNmExLjQ3IDEuNDcgMCAwMS4wOC4yOCAxLjUgMS41IDAgMDEtLjQxIDEuMzYgMSAxIDAgMDEtLjIzLjE4IDEuMjMgMS4yMyAwIDAxLS4yNS4xNCAxLjQxIDEuNDEgMCAwMS0uNTguMTJ6bS0xLjUgNTMuOTZhMS41IDEuNSAwIDExMyAwIDEuNSAxLjUgMCAwMS0zIDB6bTAtNy45MmExLjUgMS41IDAgMTEzIDAgMS41IDEuNSAwIDAxLTMgMHptMC03LjkyYzAtLjgzLjY3LTEuNTA1IDEuNS0xLjUxYTEuNTEgMS41MSAwIDAxMS41IDEuNTMgMS41IDEuNSAwIDAxLTMgMHYtLjAyem0wLTcuOTNhMS41IDEuNSAwIDExMyAwIDEuNSAxLjUgMCAwMS0zIDB6bTAtNy45MmExLjUgMS41IDAgMTEzIDAgMS41IDEuNSAwIDAxLTMgMHptMC03LjkzYTEuNSAxLjUgMCAxMTMgMCAxLjUgMS41IDAgMDEtMyAwem0wLTcuOTJhMS41IDEuNSAwIDExMyAwIDEuNSAxLjUgMCAwMS0zIDB6IiBmaWxsPSIjREVFNEY1IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0xNy42NCAxLjk4aDkxLjI2djg3LjU1SDE3LjY0eiIvPjxwYXRoIGQ9Ik0xMDkuNzUgOTAuMzhIOTguMTZjLTEuOTIgMC0zLjg4LS4wNi01LjczIDAtLjk0IDAtMS44NS4xLTIuODEuMWgtMi45MWMtMi0uMDctMy45NS0uMTctNS44Ni0uMTZsLTUuNjguMTUtMTEuMzguMzNjLTEuOTEgMC0zLjgxLjEzLTUuNzUuMXMtMy44OS0uMTMtNS44My0uMTdjLTEuOTQtLjA0LTMuODUgMC01Ljc1LjA2cy0zLjgxLjE3LTUuNzMuMTljLTMuODctLjA3LTcuNzItLjE0LTExLjU4LS4yNmwtMi44OC0uMDhoLTguNjNhMSAxIDAgMDEtMS0xYzAtMy42NS0uMzktNy4yOS0uMTctMTAuOTRhNDUuNSA0NS41IDAgMDAuMjMtNS40N2MtLjA2LS45MS0uMTctMS44My0uMTgtMi43NC0uMDEtLjkxIDAtMS44MiAwLTIuNzMgMC03LjMuMjEtMTQuNi4xNi0yMS44OVY0MC40YzAtMS44Mi4xNy0zLjY1LjI1LTUuNDguMDgtMS44My4xOS0zLjY0LjEzLTUuNDctLjA2LTEuODMtLjI0LTMuNjQtLjIzLTUuNDcgMC0zLjY1LjMtNy4yOS4zNy0xMC45NC4wNy0zLjY1IDAtNy4zLS4wOC0xMC45NSAwLS4zLjI0LS41NDUuNTQtLjU1IDMuOC0uMDkgNy42MSAwIDExLjQxIDBzNy42IDAgMTEuNDEuMTFjMS45IDAgMy44LjA1IDUuNyAwbDUuNy0uMThjMy44MS0uMTYgNy42MS0uMjQgMTEuNDEtLjMzIDMuOC0uMDkgNy42LS4xMiAxMS40MS0uMTggMy44MS0uMDYgNy42LjIxIDExLjQuMjYgMy44LjA1IDcuNjEtLjE2IDExLjQxLS4yNCAzLjgtLjA4IDcuNjEtLjMzIDExLjQxLS4xaC4wOEExLjE5IDEuMTkgMCAwMTExMC4xMyAyYzAgLjkzLS4wNiAxLjg1LS4wNyAyLjc3bC4wNiAyLjc2LjExIDUuNTRjMCAxLjg1IDAgMy42OS0uMTIgNS41Mi0uMTIgMS44My0uMjYgMy42NC0uMjcgNS40OCAwIDMuNjguMTYgNy40MS0uMDkgMTFhNDUuMjEgNDUuMjEgMCAwMC4xMSA1LjU2IDUzLjcyIDUzLjcyIDAgMDEwIDUuNTNjLS4xNiAzLjYyLS4yNSA3LjI1LS4yNiAxMC45My0uMDEgMy42OC4xNyA3LjQ3IDAgMTEtLjE3IDMuNTMgMCA3LjM0LjA4IDExLjExLjA2IDEuOSAwIDMuNzMuMDYgNS41OS4wNiAxLjg2LjAzIDMuNzcuMDEgNS41OXptLTEuNy0xLjdWNzcuODdjLjA2LTMuNTUuMTgtNy4wOC0uMDYtMTAuODUtLjEtMS44Ny0uMTktMy43Mi0uMTctNS41MWwuMTEtNS4zNGMwLTMuNi0uMTgtNy4zLS4zNy0xMWEzNi44OSAzNi44OSAwIDAxMC01LjM3IDMwLjUyIDMwLjUyIDAgMDAuMTgtNS4zNSA1MCA1MCAwIDAxLS4xNi01LjQ1YzAtMS43OC4yMy0zLjU1LjIzLTUuMzZ2LTIuNzJsLS4xNi0yLjczYy0uMTItMS44Mi0uMTItMy42Mi0uMDktNS40MmwuMTctNS40LjA4LTIuN1YxLjk1bDEuMTQgMS4xNWMtNy42MS4zMi0xNS4yMS0uMzktMjIuODItLjE4LTEuOSAwLTMuOC4xOS01LjcuMjktLjk1LjA3LTEuOS4xLTIuODUuMTMtLjk1LjAzLTEuOS4wNS0yLjg1IDAtMy44MSAwLTcuNjEuMDUtMTEuNDEtLjA3LTMuOC0uMTItNy42LS4wOS0xMS40MS0uMzNhOTQuMyA5NC4zIDAgMDAtMTEuNC0uMmMtNy42MS4zMi0xNS4yMS40OC0yMi44Mi4zOEwxOC44NCAyYy0uMTQgMy42NS0uNDEgNy4zLS4yNSAxMSAuMTYgMy43LjU4IDcuMjkuNTkgMTAuOTQgMCAxLjgzLS4zNCAzLjY1LS41IDUuNDdhMjAuODkgMjAuODkgMCAwMDAgMi43NGMwIC45MS4xIDEuODIuMTggMi43M2E1MC40MSA1MC40MSAwIDAxLjM2IDUuNDhjLjA1IDEuODItLjA1IDMuNjQtLjA4IDUuNDdsLS4xNCA1LjR2NS40N2wtLjA4IDExdjIuNzNjMCAuOTEtLjE2IDEuODMtLjI0IDIuNzRhNDMuNDUgNDMuNDUgMCAwMC4xNCA1LjQ3Yy4xNyAzLjY1LS4yNCA3LjI5LS4yOCAxMC45NGwtLjg0LS44NGM3LjU2LjE1IDE1LjEyLjA4IDIyLjY3LjA2bDUuNjcuMDZjMS44OSAwIDMuNzkgMCA1LjY1LS4wN2w1LjU5LS4xOWg1LjY2bDExLjQuMiA1LjcuMDljMS44OSAwIDMuNzItLjEgNS41NS0uMTcgMS44My0uMDcgMy43MyAwIDUuNjcgMGg1LjY2YzMuNjMtLjAzIDcuNC0uMDIgMTEuMTMtLjA0eiIgZmlsbD0iI0RFRTRGNSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PGcgb3BhY2l0eT0iLjUiIGZpbGw9IiNERUU0RjUiIGZpbGwtcnVsZT0ibm9uemVybyI+PHBhdGggZD0iTTI1LjkgOS45aDc0Ljc1djcxLjcxSDI1Ljl6Ii8+PHBhdGggZD0iTTEwMS4yMSA4Mi4xOEg4Ny4wNmMtMS41MiAwLTMuMDguMS00LjY5IDAtMS42MS0uMS0zLjIxLS4wOS00Ljc3LS4wOGwtNC42NS4xLTkuMzQuMjJjLTMuMDkuMTItNi4yOSAwLTkuNDUgMC0xLjU4LS4wNi0zLjE0IDAtNC43IDBsLTQuNy4xMWMtNi4zMS0uMDctMTIuNi0uMjktMTguODYtLjI1YS43LjcgMCAwMS0uNzEtLjY5YzAtMy0uMjQtNi0uMTEtOWE0NC43MSA0NC43MSAwIDAwLjE2LTQuNDhjMC0uNzUtLjEyLTEuNS0uMTItMi4yNHYtMi4xOGMwLTYgLjE0LTEyIC4xMS0xNy45My0uMDMtNS45My41Ny0xMS45NS4xLTE3LjkzbC4yNC05Yy4wNi0zIDAtNi0uMDUtOSAwLS4yLjE2LS4zNjUuMzYtLjM3IDMuMTEtLjA2IDYuMjIgMCA5LjM0IDBzNi4yMyAwIDkuMzQuMDdoNC42N2w0LjY4LS4xMmMzLjExLS4xIDYuMjMtLjE2IDkuMzQtLjIyIDMuMTEtLjA2IDYuMjMtLjA3IDkuMzQtLjExIDMuMTEtLjA0IDYuMjMuMTEgOS4zNS4xNSAzLjEyLjA0IDYuMjMtLjA5IDkuMzQtLjE0IDMuMTEtLjA1IDYuMjMtLjE5IDkuMzQtLjA3aC4wNmEuODEuODEgMCAwMS43Ny44MnY0LjUybC4wNiA0LjUzYzAgMS41MSAwIDMtLjA4IDQuNTEtLjA4IDEuNTEtLjE0IDMtLjE3IDQuNDkgMCAzIC4xIDYgMCA5LS4wNyAxLjQ4IDAgMyAuMDYgNC41My4wNiAxLjUzIDAgMyAwIDQuNTMtLjEgMy0uMTYgNS45NC0uMTcgOC45NS0uMDEgMy4wMS4xMSA2LjA5IDAgOXMwIDYgLjA1IDkuMDggMCA2LjE3LjAxIDkuMnptLTEuMTMtMS4xM3YtOC44OGMwLTIuODguMS01Ljg1IDAtOC45LS4xLTMuMDUtLjA5LTYgMC04LjkuMDktMi45LS4xMS02LS4yNC05YTQwLjYzIDQwLjYzIDAgMDEwLTQuNDIgMzIgMzIgMCAwMC4xMi00LjRjLS4yNS0zIDAtNS45MSAwLTguODcgMC0yLjk2LS4zMy02LS4xOC04LjkxbC4xLTQuNDRWOS44OGwuNzcuNzdjLTMuMTEuMTItNi4yMiAwLTkuMzQgMHMtNi4yMy0uMTItOS4zNC0uMDhjLTMuMTEuMDQtNi4yMy4zMy05LjM1LjMtMy4xMi0uMDMtNi4yMyAwLTkuMzQgMC0zLjExIDAtNi4yMy0uMDgtOS4zNC0uMjNsLTQuNjgtLjE3Yy0xLjU1LS4wNS0zLjExIDAtNC42NyAwLTYuMjMuMjItMTIuNDYuMzItMTguNjguMjVsLjgtLjhjLS4xIDMtLjI4IDYtLjE3IDkgLjExIDMgLjM5IDYgLjM5IDkgMCAxLjUtLjIyIDMtLjMyIDQuNDhhMzEuODkgMzEuODkgMCAwMC4xIDQuNDggNzAuNjkgNzAuNjkgMCAwMS4xOCA5Yy0uMTUgNi0uMDcgMTEuOTUtLjE1IDE3LjkzdjIuMjRjMCAuNzQtLjExIDEuNDktLjE2IDIuMjRhNDEuODcgNDEuODcgMCAwMC4wOSA0LjQ4Yy4xIDMtLjE1IDYtLjE4IDlsLS41Ni0uNTZjNi4xOS4xIDEyLjM5IDAgMTguNTggMCAzLjEgMCA2LjIzLjExIDkuMjkgMCAzLjA2LS4xMSA2LjEyLS4yIDkuMjQtLjExbDkuMzQuMTQgNC42Ny4wNiA0LjU3LS4xYzEuNTEtLjA2IDMuMDcgMCA0LjY1IDBoNC42NGMzLjAxLS4xNSA2LjA5LS4xNCA5LjE3LS4xNXoiLz48L2c+PHJlY3QgZmlsbD0iI0RFRTRGNSIgZmlsbC1ydWxlPSJub256ZXJvIiB4PSIzNC42NyIgeT0iMjMuMTEiIHdpZHRoPSIyMi4xNSIgaGVpZ2h0PSIyNC41MiIgcng9IjExLjAyIi8+PHBhdGggZD0iTTQ1Ljc5IDQ4YTEyLjA3IDEyLjA3IDAgMDEtOC42MS0zLjcgMTEuMTEgMTEuMTEgMCAwMS0yLjQyLTQuMTZjLS4xMi0uMzktLjItLjc5LS4zLTEuMTgtLjEtLjM5LS4xMi0uNzktLjE4LTEuMTlsLS4wNS0xLjIxdi0xLjE0YzAtLjc3IDAtMS41NS4wNy0yLjM2IDAtLjQuMTMtLjguMTktMS4xOWwuMzItMS4xNmExMS4wNiAxMS4wNiAwIDAxMi40My00LjA4IDExLjM5IDExLjM5IDAgMDEzLjgyLTIuNzggMTIuMjcgMTIuMjcgMCAwMTQuNjItMSAxMS4yNSAxMS4yNSAwIDAxNC42MSAxIDEyIDEyIDAgMDEzLjg4IDIuNjkgMTEuNDEgMTEuNDEgMCAwMTIuNDMgNC4wOWMuMTMuMzcuMjIuNzcuMzIgMS4xNS4xLjM4LjE0Ljc5LjIxIDEuMTlsLjA3IDEuMTl2MS4xN2MwIC43NyAwIDEuNTUtLjA5IDIuMzUtLjA1LjQtLjEzLjgtLjE5IDEuMTlMNTYuNjQgNDBhMTAuODcgMTAuODcgMCAwMS0yLjM1IDQuMTQgNy40OCA3LjQ4IDAgMDEtLjg2LjgzIDguMjYgOC4yNiAwIDAxLS45NC43NEExMC45MiAxMC45MiAwIDAxNTAuNDQgNDdhMTEuNjIgMTEuNjIgMCAwMS00LjY1IDF6bTAtLjc5YTEwLjI5IDEwLjI5IDAgMDA3Ljg2LTMuNjQgMTEuMjMgMTEuMjMgMCAwMDIuMjItMy44MSAxMyAxMyAwIDAwLjUzLTQuNDZ2LTIuMjljLS4wNi0uMzctLjA5LS43NC0uMTYtMS4xMS0uMDctLjM3LS4xOS0uNzMtLjMxLTEuMDhhMTAuNjkgMTAuNjkgMCAwMC0yLjMtMy44MiAxMC40OCAxMC40OCAwIDAwLTMuNTctMi42NSAxMS4yNyAxMS4yNyAwIDAwLTQuMzctLjc4aC0xLjExYTEwLjYgMTAuNiAwIDAwLTEuMTEuMTYgMTEgMTEgMCAwMC0yLjEuNzEgMTAuMjggMTAuMjggMCAwMC0zLjU4IDIuNjEgMTQuMTIgMTQuMTIgMCAwMC0yLjIzIDMuODMgMTAuMjIgMTAuMjIgMCAwMC0uMzEgMS4xMmMwIC4zNy0uMTIuNzQtLjE2IDEuMTEtLjA4Ljc0LS4xMiAxLjUxLS4xNCAyLjI5YTEwLjU3IDEwLjU3IDAgMDAyLjg0IDguMzQgMTAuMjMgMTAuMjMgMCAwMDggMy40OXYtLjAyeiIgZmlsbD0iI0RFRTRGNSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNNDUuNzQgMzUuMzdoMjguOTN2MzIuMDJINDUuNzR6Ii8+PHBhdGggZD0iTTc1IDY3LjY3Yy0yLjQzIDAtNC45NC0uMDYtNy4zIDAtMi41MS0uMTEtNC44NyAwLTcuMjkuMDctMS4yMSAwLTIuNDEuMDktMy42NSAwLTEuMjQtLjA5LTIuNDYtLjA3LTMuNjYgMC0yLjQzLjEyLTQuODktLjA3LTcuMzItLjA3YS4zNi4zNiAwIDAxLS4zNi0uMzZ2LTRjMC0xLjMzLjEyLTIuNjcgMC00LS4wOC0yLjY2IDAtNS4zMyAwLTh2LTRsLjA5LTJjMC0uNjcgMC0xLjM0LS4wNi0yIDAtMS4zMy4wNi0yLjY2LjA5LTQgLjAzLTEuMzQgMC0yLjY3IDAtNGEuMi4yIDAgMDEuMTktLjE5aDcuMjNjMi40MS4wOCA0LjgzLS4xIDcuMjQtLjEyaDcuMjRjMi40MS4xMSA0LjgyIDAgNy4yMy0uMDhhLjQyLjQyIDAgMDEuNDMuNGMuMDcgMS4zNS0uMDkgMi42OSAwIDRzLjA3IDIuNzEgMCA0LS4wNyAyLjY3IDAgNGwtLjA3IDItLjAzIDIuMmMwIDEuMzQtLjEgMi42NS0uMTEgNC0uMDEgMS4zNS4wOCAyLjc0IDAgNGwtLjA1IDIgLjA1IDIuMDZDNzUgNjUgNzUgNjYuMzEgNzUgNjcuNjd6bS0uNTctLjU2di02bC0uMDctMmMtLjA5LTEuMzcgMC0yLjYxIDAtNGwtLjE0LTRjMC0uNjYuMTMtMS4yNy4xMi0xLjk0LS4wMS0uNjctLjA2LTEuMzQtLjA4LTJhMzcuMTIgMzcuMTIgMCAwMDAtNGMtLjA5LTEuMzQgMC0yLjY0IDAtNCAwLTEuMzYtLjA3LTIuNjUgMC00bC40LjRjLTIuNDEgMC00LjgyLS4xNi03LjIzIDBsLTEuODEuMDdINjAuMmMtMi40MSAwLTQuODMtLjI5LTcuMjQtLjEzLTIuNDEuMTYtNC44Mi4xNi03LjIzLjFsLjM5LS4zOWMwIDEuMzMtLjE0IDIuNjctLjA2IDQgLjA4IDEuMzMuMjMgMi42Ny4xNiA0YTE5LjQzIDE5LjQzIDAgMDAtLjE2IDJjMCAuNjYuMDkgMS4zMy4xNCAyIC4xMiAxLjMzIDAgMi42NiAwIDQtLjA2IDIuNjcgMCA1LjM0LS4xMiA4LS4wOSAxLjM0LjEyIDIuNjcgMCA0cy0uMDcgMi42Ny0uMDkgNGwtLjI2LS4yNWg3LjE5YzEuMiAwIDIuMzkgMCAzLjU3LS4wNyAxLjE4LS4wNyAyLjM4IDAgMy41OCAwIDIuNCAwIDQuODUuMTMgNy4xNyAwIDIuNDUuMjkgNC43Ni4xOSA3LjE1LjIxaC4wNHoiIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik04MCA0OS40bC05Ljc2IDE5IDIxLjY1LS43LTExLjMxLTE4LjMzYS4zMy4zMyAwIDAwLS41OC4wM3oiIGZpbGw9IiNERUU0RjUiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik04MC4zMyA0OS41OGMtLjgyIDEuNTgtMS42MiAzLjE3LTIuNDggNC43M2wtMS4xMiAyLjQzLTEuMiAyLjM4Yy0xLjY4IDMuMTUtMy4yOSA2LjMyLTUgOS40NWwtLjMzLS41MmMxLjggMCAzLjYxIDAgNS40Mi0uMDlzMy42MSAwIDUuNDEtLjEzYzEuOC0uMTMgMy42MS0uMDkgNS40MS0uMTYgMS44LS4wNyAzLjYxLS4yMyA1LjQxLS4zbC0uMjcuNTEtMy00LjcxYy0xLTEuNTgtMS44Ny0zLjItMi44OC00Ljc2LS40OS0uNzktMS0xLjU3LTEuNDctMi4zN3MtLjkxLTEuNjItMS40Mi0yLjRsLTEuNDgtMi4zNS0uNzUtMS4xOC0uMzUtLjU0LjEuMDF6bS0uNy0uMzZhLjc0Ljc0IDAgMDEuNTctLjQxLjcxLjcxIDAgMDEuNjYuMjdjLjE5LjI3LjI3LjQxLjQuNjNsLjc0IDEuMTggMS40OCAyLjM2Yy40OC44IDEgMS41NSAxLjUyIDIuMzQuNTIuNzkgMSAxLjU5IDEuNDQgMi4zOGwyLjg2IDQuNzhhNjUuMzUgNjUuMzUgMCAwMDEuNDEgMi40bDEuNSAyLjM1YS4zOC4zOCAwIDAxLS4xMi41NC4zMy4zMyAwIDAxLS4xOS4wNmwtMi43MS4xM2MtLjkuMDgtMS44MSAwLTIuNzEgMC0xLjguMDktMy42LjI5LTUuNDEuMzEtMS44MS4wMi0zLjYxLjEzLTUuNDEuMTQtMS44LjAxLTMuNjEuMjYtNS40Mi4xN2EuNDMuNDMgMCAwMS0uNDEtLjQ1LjQ2LjQ2IDAgMDEwLS4yYy40NS0uNzcuOS0xLjU0IDEuMjktMi4zNC4zOS0uOC44OC0xLjU1IDEuMy0yLjMzLjg4LTEuNTMgMS41OC0zLjE3IDIuNDEtNC43N0w3NiA1Ni4zNyA3Ny4yNyA1NGMuNzMtMS42IDEuNTctMy4xOSAyLjM2LTQuNzh6IiBmaWxsPSIjREVFNEY1IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48Y2lyY2xlIGZpbGw9IiNERUU0RjUiIGZpbGwtcnVsZT0ibm9uemVybyIgY3g9IjEwOC42NCIgY3k9Ijg4LjI1IiByPSIxOS41Ii8+PHBhdGggZD0iTTEwOC42NCA3OC42NnYxOS4xOG03LjE4LTkuNTlsLTcuMTgtOS41OS03LjE4IDkuNTkiIHN0cm9rZT0iI0ZGRiIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+Cg==';
|
9630 |
|
9631 | var DropZoneContext = React__default.createContext({
|
9632 | disabled: false,
|
9633 | focused: false,
|
9634 | size: 'extraLarge',
|
9635 | type: 'file',
|
9636 | measuring: false
|
9637 | });
|
9638 |
|
9639 | var styles$M = {
|
9640 | "FileUpload": "Polaris-DropZone-FileUpload",
|
9641 | "measuring": "Polaris-DropZone-FileUpload--measuring",
|
9642 | "Button": "Polaris-DropZone-FileUpload__Button",
|
9643 | "globalTheming": "Polaris-DropZone-FileUpload--globalTheming",
|
9644 | "disabled": "Polaris-DropZone-FileUpload--disabled",
|
9645 | "focused": "Polaris-DropZone-FileUpload--focused",
|
9646 | "sizeSlim": "Polaris-DropZone-FileUpload--sizeSlim",
|
9647 | "ActionTitle": "Polaris-DropZone-FileUpload__ActionTitle",
|
9648 | "ActionTitle-disabled": "Polaris-DropZone-FileUpload__ActionTitle--disabled",
|
9649 | "ActionTitle-focused": "Polaris-DropZone-FileUpload__ActionTitle--focused",
|
9650 | "Image": "Polaris-DropZone-FileUpload__Image",
|
9651 | "sizeExtraLarge": "Polaris-DropZone-FileUpload--sizeExtraLarge",
|
9652 | "sizeLarge": "Polaris-DropZone-FileUpload--sizeLarge"
|
9653 | };
|
9654 |
|
9655 | function FileUpload(props) {
|
9656 | var i18n = useI18n();
|
9657 |
|
9658 | var _useContext = useContext(DropZoneContext),
|
9659 | size = _useContext.size,
|
9660 | measuring = _useContext.measuring,
|
9661 | type = _useContext.type,
|
9662 | focused = _useContext.focused,
|
9663 | disabled = _useContext.disabled;
|
9664 |
|
9665 | var suffix = capitalize(type);
|
9666 | var _props$actionTitle = props.actionTitle,
|
9667 | actionTitle = _props$actionTitle === void 0 ? i18n.translate("Polaris.DropZone.FileUpload.actionTitle".concat(suffix)) : _props$actionTitle,
|
9668 | _props$actionHint = props.actionHint,
|
9669 | actionHint = _props$actionHint === void 0 ? i18n.translate("Polaris.DropZone.FileUpload.actionHint".concat(suffix)) : _props$actionHint;
|
9670 | var imageClasses = classNames(styles$M.Image, size && size === 'extraLarge' && styles$M.sizeExtraLarge, size && size === 'large' && styles$M.sizeLarge);
|
9671 | var buttonStyles = size === 'extraLarge' || size === 'large' ? classNames(styles$M.Button, size && size !== 'extraLarge' && styles$M.slim, focused && styles$M.focused, disabled && styles$M.disabled) : null;
|
9672 | var buttonMarkup = (size === 'extraLarge' || size === 'large') && buttonStyles ? React__default.createElement("div", {
|
9673 | className: buttonStyles
|
9674 | }, actionTitle) : null;
|
9675 | var extraLargeView = size === 'extraLarge' ? React__default.createElement(Stack, {
|
9676 | vertical: true
|
9677 | }, type === 'file' && React__default.createElement("img", {
|
9678 | className: imageClasses,
|
9679 | src: fileUpload,
|
9680 | alt: ""
|
9681 | }), type === 'image' && React__default.createElement("img", {
|
9682 | className: imageClasses,
|
9683 | src: imageUpload,
|
9684 | alt: ""
|
9685 | }), buttonMarkup, React__default.createElement(TextStyle, {
|
9686 | variation: "subdued"
|
9687 | }, actionHint)) : null;
|
9688 | var largeView = size === 'large' ? React__default.createElement(Stack, {
|
9689 | vertical: true,
|
9690 | spacing: "tight"
|
9691 | }, type === 'file' && React__default.createElement("img", {
|
9692 | className: imageClasses,
|
9693 | src: fileUpload,
|
9694 | alt: ""
|
9695 | }), type === 'image' && React__default.createElement("img", {
|
9696 | className: imageClasses,
|
9697 | src: imageUpload,
|
9698 | alt: ""
|
9699 | }), buttonMarkup, React__default.createElement(Caption, null, React__default.createElement(TextStyle, {
|
9700 | variation: "subdued"
|
9701 | }, actionHint))) : null;
|
9702 | var actionTitleClassName = classNames(styles$M.ActionTitle, focused && !disabled && styles$M['ActionTitle-focused'], disabled && styles$M['ActionTitle-disabled']);
|
9703 | var actionTitleMarkup = React__default.createElement("div", {
|
9704 | className: actionTitleClassName
|
9705 | }, actionTitle);
|
9706 | var mediumView = size === 'medium' ? React__default.createElement(Stack, {
|
9707 | vertical: true,
|
9708 | spacing: "tight"
|
9709 | }, actionTitleMarkup, React__default.createElement(Caption, null, React__default.createElement(TextStyle, {
|
9710 | variation: "subdued"
|
9711 | }, actionHint))) : null;
|
9712 | var smallView = size === 'small' ? React__default.createElement(Stack, {
|
9713 | vertical: true,
|
9714 | spacing: "tight"
|
9715 | }, React__default.createElement(Icon, {
|
9716 | source: DragDropMajorMonotone,
|
9717 | color: "inkLightest"
|
9718 | })) : null;
|
9719 | var fileUploadClassName = classNames(styles$M.FileUpload, measuring && styles$M.measuring);
|
9720 | return React__default.createElement("div", {
|
9721 | className: fileUploadClassName
|
9722 | }, smallView, mediumView, largeView, extraLargeView);
|
9723 | }
|
9724 |
|
9725 | var dragEvents = ['dragover', 'dragenter', 'drop'];
|
9726 | function fileAccepted(file, accept) {
|
9727 | return file.type === 'application/x-moz-file' || accepts(file, accept);
|
9728 | }
|
9729 | function getDataTransferFiles(event) {
|
9730 | if (isDragEvent(event) && event.dataTransfer) {
|
9731 | var dt = event.dataTransfer;
|
9732 |
|
9733 | if (dt.files && dt.files.length) {
|
9734 | return Array.from(dt.files);
|
9735 | } else if (dt.items && dt.items.length) {
|
9736 |
|
9737 |
|
9738 | return Array.from(dt.items);
|
9739 | }
|
9740 | } else if (isChangeEvent(event) && event.target.files) {
|
9741 |
|
9742 | return Array.from(event.target.files);
|
9743 | }
|
9744 |
|
9745 | return [];
|
9746 | }
|
9747 |
|
9748 | function accepts(file, acceptedFiles) {
|
9749 | if (file && acceptedFiles) {
|
9750 | var fileName = file.name || '';
|
9751 | var mimeType = file.type || '';
|
9752 | var baseMimeType = mimeType.replace(/\/.*$/, '');
|
9753 | var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');
|
9754 | return acceptedFilesArray.some(function (type) {
|
9755 | var validType = type.trim();
|
9756 |
|
9757 | if (validType.startsWith('.')) {
|
9758 | return fileName.toLowerCase().endsWith(validType.toLowerCase());
|
9759 | } else if (validType.endsWith('/*')) {
|
9760 |
|
9761 | return baseMimeType === validType.replace(/\/.*$/, '');
|
9762 | }
|
9763 |
|
9764 | return mimeType === validType;
|
9765 | });
|
9766 | }
|
9767 |
|
9768 | return true;
|
9769 | }
|
9770 |
|
9771 | function isDragEvent(event) {
|
9772 | return dragEvents.indexOf(event.type) > 0;
|
9773 | }
|
9774 |
|
9775 | function isChangeEvent(event) {
|
9776 | return Object.prototype.hasOwnProperty.call(event, 'target');
|
9777 | }
|
9778 |
|
9779 | var styles$N = {
|
9780 | "DropZone": "Polaris-DropZone",
|
9781 | "hasOutline": "Polaris-DropZone--hasOutline",
|
9782 | "isDisabled": "Polaris-DropZone--isDisabled",
|
9783 | "focused": "Polaris-DropZone--focused",
|
9784 | "isDragging": "Polaris-DropZone--isDragging",
|
9785 | "sizeExtraLarge": "Polaris-DropZone--sizeExtraLarge",
|
9786 | "sizeLarge": "Polaris-DropZone--sizeLarge",
|
9787 | "sizeMedium": "Polaris-DropZone--sizeMedium",
|
9788 | "sizeSmall": "Polaris-DropZone--sizeSmall",
|
9789 | "measuring": "Polaris-DropZone--measuring",
|
9790 | "Container": "Polaris-DropZone__Container",
|
9791 | "Overlay": "Polaris-DropZone__Overlay",
|
9792 | "hasError": "Polaris-DropZone--hasError"
|
9793 | };
|
9794 |
|
9795 |
|
9796 |
|
9797 |
|
9798 |
|
9799 | var DropZone = function DropZone(_ref) {
|
9800 | var dropOnPage = _ref.dropOnPage,
|
9801 | label = _ref.label,
|
9802 | labelAction = _ref.labelAction,
|
9803 | labelHidden = _ref.labelHidden,
|
9804 | children = _ref.children,
|
9805 | _ref$disabled = _ref.disabled,
|
9806 | disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
9807 | _ref$outline = _ref.outline,
|
9808 | outline = _ref$outline === void 0 ? true : _ref$outline,
|
9809 | accept = _ref.accept,
|
9810 | active = _ref.active,
|
9811 | _ref$overlay = _ref.overlay,
|
9812 | overlay = _ref$overlay === void 0 ? true : _ref$overlay,
|
9813 | _ref$allowMultiple = _ref.allowMultiple,
|
9814 | allowMultiple = _ref$allowMultiple === void 0 ? true : _ref$allowMultiple,
|
9815 | overlayText = _ref.overlayText,
|
9816 | errorOverlayText = _ref.errorOverlayText,
|
9817 | idProp = _ref.id,
|
9818 | _ref$type = _ref.type,
|
9819 | type = _ref$type === void 0 ? 'file' : _ref$type,
|
9820 | onClick = _ref.onClick,
|
9821 | error = _ref.error,
|
9822 | openFileDialog = _ref.openFileDialog,
|
9823 | onFileDialogClose = _ref.onFileDialogClose,
|
9824 | customValidator = _ref.customValidator,
|
9825 | onDrop = _ref.onDrop,
|
9826 | onDropAccepted = _ref.onDropAccepted,
|
9827 | onDropRejected = _ref.onDropRejected,
|
9828 | onDragEnter = _ref.onDragEnter,
|
9829 | onDragOver = _ref.onDragOver,
|
9830 | onDragLeave = _ref.onDragLeave;
|
9831 | var node = useRef(null);
|
9832 | var fileInputNode = useRef(null);
|
9833 | var dragTargets = useRef([]);
|
9834 | var adjustSize = useCallback(debounce(function () {
|
9835 | if (!node.current) {
|
9836 | return;
|
9837 | }
|
9838 |
|
9839 | var size = 'extraLarge';
|
9840 | var width = node.current.getBoundingClientRect().width;
|
9841 |
|
9842 | if (width < 100) {
|
9843 | size = 'small';
|
9844 | } else if (width < 160) {
|
9845 | size = 'medium';
|
9846 | } else if (width < 300) {
|
9847 | size = 'large';
|
9848 | }
|
9849 |
|
9850 | setSize(size);
|
9851 | measuring && setMeasuring(false);
|
9852 | }, 50, {
|
9853 | trailing: true
|
9854 | }), []);
|
9855 |
|
9856 | var _useState = useState(false),
|
9857 | _useState2 = _slicedToArray(_useState, 2),
|
9858 | dragging = _useState2[0],
|
9859 | setDragging = _useState2[1];
|
9860 |
|
9861 | var _useState3 = useState(false),
|
9862 | _useState4 = _slicedToArray(_useState3, 2),
|
9863 | internalError = _useState4[0],
|
9864 | setInternalError = _useState4[1];
|
9865 |
|
9866 | var _useForcibleToggle = useForcibleToggle(false),
|
9867 | _useForcibleToggle2 = _slicedToArray(_useForcibleToggle, 2),
|
9868 | focused = _useForcibleToggle2[0],
|
9869 | _useForcibleToggle2$ = _useForcibleToggle2[1],
|
9870 | handleFocus = _useForcibleToggle2$.forceTrue,
|
9871 | handleBlur = _useForcibleToggle2$.forceFalse;
|
9872 |
|
9873 | var _useState5 = useState(0),
|
9874 | _useState6 = _slicedToArray(_useState5, 2),
|
9875 | numFiles = _useState6[0],
|
9876 | setNumFiles = _useState6[1];
|
9877 |
|
9878 | var _useState7 = useState('extraLarge'),
|
9879 | _useState8 = _slicedToArray(_useState7, 2),
|
9880 | size = _useState8[0],
|
9881 | setSize = _useState8[1];
|
9882 |
|
9883 | var _useState9 = useState(true),
|
9884 | _useState10 = _slicedToArray(_useState9, 2),
|
9885 | measuring = _useState10[0],
|
9886 | setMeasuring = _useState10[1];
|
9887 |
|
9888 | var i18n = useI18n();
|
9889 | var dropNode = dropOnPage ? document : node;
|
9890 | var getValidatedFiles = useCallback(function (files) {
|
9891 | var acceptedFiles = [];
|
9892 | var rejectedFiles = [];
|
9893 | Array.from(files).forEach(function (file) {
|
9894 | !fileAccepted(file, accept) || customValidator && !customValidator(file) ? rejectedFiles.push(file) : acceptedFiles.push(file);
|
9895 | });
|
9896 |
|
9897 | if (!allowMultiple) {
|
9898 | acceptedFiles.splice(1, acceptedFiles.length);
|
9899 | rejectedFiles.push.apply(rejectedFiles, _toConsumableArray(acceptedFiles.slice(1)));
|
9900 | }
|
9901 |
|
9902 | return {
|
9903 | files,
|
9904 | acceptedFiles,
|
9905 | rejectedFiles
|
9906 | };
|
9907 | }, [accept, allowMultiple, customValidator]);
|
9908 | var handleDrop = useCallback(function (event) {
|
9909 | stopEvent(event);
|
9910 | if (disabled || !allowMultiple && numFiles > 0) return;
|
9911 | var fileList = getDataTransferFiles(event);
|
9912 |
|
9913 | var _getValidatedFiles = getValidatedFiles(fileList),
|
9914 | files = _getValidatedFiles.files,
|
9915 | acceptedFiles = _getValidatedFiles.acceptedFiles,
|
9916 | rejectedFiles = _getValidatedFiles.rejectedFiles;
|
9917 |
|
9918 | dragTargets.current = [];
|
9919 | setDragging(false);
|
9920 | setInternalError(rejectedFiles.length > 0);
|
9921 | setNumFiles(function (numFiles) {
|
9922 | return numFiles + acceptedFiles.length;
|
9923 | });
|
9924 | onDrop && onDrop(files, acceptedFiles, rejectedFiles);
|
9925 | onDropAccepted && acceptedFiles.length && onDropAccepted(acceptedFiles);
|
9926 | onDropRejected && rejectedFiles.length && onDropRejected(rejectedFiles);
|
9927 | event.target.value = '';
|
9928 | }, [allowMultiple, disabled, getValidatedFiles, numFiles, onDrop, onDropAccepted, onDropRejected]);
|
9929 | var handleDragEnter = useCallback(function (event) {
|
9930 | stopEvent(event);
|
9931 | if (disabled || !allowMultiple && numFiles > 0) return;
|
9932 | var fileList = getDataTransferFiles(event);
|
9933 |
|
9934 | if (event.target && !dragTargets.current.includes(event.target)) {
|
9935 | dragTargets.current.push(event.target);
|
9936 | }
|
9937 |
|
9938 | if (dragging) return;
|
9939 |
|
9940 | var _getValidatedFiles2 = getValidatedFiles(fileList),
|
9941 | rejectedFiles = _getValidatedFiles2.rejectedFiles;
|
9942 |
|
9943 | setDragging(true);
|
9944 | setInternalError(rejectedFiles.length > 0);
|
9945 | onDragEnter && onDragEnter();
|
9946 | }, [allowMultiple, disabled, dragging, getValidatedFiles, numFiles, onDragEnter]);
|
9947 | var handleDragOver = useCallback(function (event) {
|
9948 | stopEvent(event);
|
9949 | if (disabled || !allowMultiple && numFiles > 0) return;
|
9950 | onDragOver && onDragOver();
|
9951 | }, [allowMultiple, disabled, numFiles, onDragOver]);
|
9952 | var handleDragLeave = useCallback(function (event) {
|
9953 | event.preventDefault();
|
9954 | if (disabled || !allowMultiple && numFiles > 0) return;
|
9955 | dragTargets.current = dragTargets.current.filter(function (el) {
|
9956 | var compareNode = dropNode && 'current' in dropNode ? dropNode.current : document;
|
9957 | return el !== event.target && compareNode && compareNode.contains(el);
|
9958 | });
|
9959 | if (dragTargets.current.length > 0) return;
|
9960 | setDragging(false);
|
9961 | setInternalError(false);
|
9962 | onDragLeave && onDragLeave();
|
9963 | }, [allowMultiple, disabled, dropNode, numFiles, onDragLeave]);
|
9964 | useEventListener(dropNode, 'drop', handleDrop);
|
9965 | useEventListener(dropNode, 'dragover', handleDragOver);
|
9966 | useEventListener(dropNode, 'dragenter', handleDragEnter);
|
9967 | useEventListener(dropNode, 'dragleave', handleDragLeave);
|
9968 | useEventListener(null, 'resize', adjustSize, {}, {
|
9969 | defaultToWindow: true
|
9970 | });
|
9971 | useComponentDidMount(function () {
|
9972 | adjustSize();
|
9973 | });
|
9974 | useEffect(function () {
|
9975 | if (!openFileDialog) return;
|
9976 | open();
|
9977 | onFileDialogClose && onFileDialogClose();
|
9978 | }, [onFileDialogClose, openFileDialog]);
|
9979 | var id = useUniqueId('DropZone', idProp);
|
9980 | var suffix = capitalize(type);
|
9981 | var overlayTextWithDefault = overlayText === undefined ? i18n.translate("Polaris.DropZone.overlayText".concat(suffix)) : overlayText;
|
9982 | var errorOverlayTextWithDefault = errorOverlayText === undefined ? i18n.translate("Polaris.DropZone.errorOverlayText".concat(suffix)) : errorOverlayText;
|
9983 | var inputAttributes = {
|
9984 | id,
|
9985 | accept,
|
9986 | disabled,
|
9987 | type: 'file',
|
9988 | multiple: allowMultiple,
|
9989 | ref: fileInputNode,
|
9990 | onChange: handleDrop,
|
9991 | autoComplete: 'off',
|
9992 | onFocus: handleFocus,
|
9993 | onBlur: handleBlur
|
9994 | };
|
9995 | var classes = classNames(styles$N.DropZone, outline && styles$N.hasOutline, focused && styles$N.focused, (active || dragging) && styles$N.isDragging, disabled && styles$N.isDisabled, (internalError || error) && styles$N.hasError, styles$N[variationName('size', size)], measuring && styles$N.measuring);
|
9996 | var dragOverlay = (active || dragging) && (!internalError || !error) && overlay && overlayMarkup(DragDropMajorMonotone, 'indigo', overlayTextWithDefault);
|
9997 | var dragErrorOverlay = dragging && (internalError || error) && overlayMarkup(CircleAlertMajorMonotone, 'red', errorOverlayTextWithDefault);
|
9998 | var labelValue = label || i18n.translate('Polaris.DropZone.FileUpload.label');
|
9999 | var labelHiddenValue = label ? labelHidden : true;
|
10000 | var context = useMemo(function () {
|
10001 | return {
|
10002 | disabled,
|
10003 | focused,
|
10004 | size,
|
10005 | type: type || 'file',
|
10006 | measuring
|
10007 | };
|
10008 | }, [disabled, focused, measuring, size, type]);
|
10009 | return React__default.createElement(DropZoneContext.Provider, {
|
10010 | value: context
|
10011 | }, React__default.createElement(Labelled, {
|
10012 | id: id,
|
10013 | label: labelValue,
|
10014 | action: labelAction,
|
10015 | labelHidden: labelHiddenValue
|
10016 | }, React__default.createElement("div", {
|
10017 | ref: node,
|
10018 | className: classes,
|
10019 | "aria-disabled": disabled,
|
10020 | onClick: handleClick,
|
10021 | onDragStart: stopEvent
|
10022 | }, dragOverlay, dragErrorOverlay, React__default.createElement("div", {
|
10023 | className: styles$N.Container
|
10024 | }, children), React__default.createElement(VisuallyHidden, null, React__default.createElement("input", inputAttributes)))));
|
10025 |
|
10026 | function overlayMarkup(icon, color, text) {
|
10027 | return React__default.createElement("div", {
|
10028 | className: styles$N.Overlay
|
10029 | }, React__default.createElement(Stack, {
|
10030 | vertical: true,
|
10031 | spacing: "tight"
|
10032 | }, React__default.createElement(Icon, {
|
10033 | source: icon,
|
10034 | color: color
|
10035 | }), size === 'extraLarge' && React__default.createElement(DisplayText, {
|
10036 | size: "small",
|
10037 | element: "p"
|
10038 | }, text), (size === 'medium' || size === 'large') && React__default.createElement(Caption, null, text)));
|
10039 | }
|
10040 |
|
10041 | function open() {
|
10042 | fileInputNode.current && fileInputNode.current.click();
|
10043 | }
|
10044 |
|
10045 | function handleClick(event) {
|
10046 | if (disabled || !allowMultiple && numFiles > 0) return;
|
10047 | return onClick ? onClick(event) : open();
|
10048 | }
|
10049 | };
|
10050 |
|
10051 | function stopEvent(event) {
|
10052 | event.preventDefault();
|
10053 | event.stopPropagation();
|
10054 | }
|
10055 |
|
10056 | DropZone.FileUpload = FileUpload;
|
10057 |
|
10058 | var emptySearch = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzggMTU4Ij48cGF0aCBkPSJNOS4xOSAxMjkuODRhNDAuMDI5IDQwLjAyOSAwIDAxLTQuOS03LjE0Qy0xMy45MSA4OC41OSA1OC4wOC00MS44OCAxMzUuODUgMTguNDNhMTA1Ljk0NiAxMDUuOTQ2IDAgMDE4LjM0IDcuMThjLjMyLjMuNjMuNi45NS45MSA4Ny40OSA4NS04Mi4zIDE2Ni4yOC0xMzUuOTUgMTAzLjMyeiIgZmlsbD0iI2Y0ZjZmOCIvPjxwYXRoIGQ9Ik0xMjIuNiAxMDAuODg1Yy0zLjM2NyA1LjQtNy44MzQgMTAuNzY1LTEzLjY0NiAxMy42MDUtNC4yODcgMi4xLTE0LjQ1MyA5Ljc1LTMxLjcwOSA3LjAzMy03LjU2LTE0LjUyMyA0MC40MzEtMTEuMzIzIDIzLjE0OS0zMi44Ny04LjA3Mi0xMC4wODEgMTMuMzI3LTE0LjEyIDEwLjc0Ny0yMy42MDctMS43NTYtNi40NTItMTIuNTktNy40MS02LjA5My0xOS4yMTYgNC4xNzQtNy41ODktNC45Ny04LjE5NC05LjgzOS0xMC45MTRhOC40MzkgOC40MzkgMCAwMS0yLjk2LTIuNzE0IDI1LjU0IDI1LjU0IDAgMDEyLjYyNC40NzJjNC42MDkgMS4xIDkuMzE3IDMuNjI0IDEzLjMyNSA2LjExOSAxMC44ODEgNi43ODcgMTQuODM2IDEzLjQxNCAxNy4yMjEgMTkuNDggNS43NzUgMTQuNzQ5IDUuNzA1IDI4Ljk1MS0yLjgxOSA0Mi42MTJ6IiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuNCIvPjxwYXRoIGQ9Ik0xMTMuNyAyOC4yMDZjLS4xNTUuMTM2LS4zMTQuMjcyLS40NjkuNDEyLS40NDIuMzktLjg4NS43OS0xLjMzMSAxLjE4NGEyNC4xIDI0LjEgMCAwMS0zLjY0MiAyLjgxIDE5LjMzNSAxOS4zMzUgMCAwMS00LjU2OS45MzhjLTIuNDA1LTEuNTMyLTcuNzIzLTEuNC03LjQ2Ni00Ljg3OS4xNy0yLjI4OCAyLjMtNC44NTYgNC4xMzgtNi4zNDMuMTYzLS4xMzIuMzI1LS4yNTMuNDgtLjM2NyAzLjUzMi0yLjU0OSA4LjI2LTIuNDIxIDEyLjM0NS0xLjY2IDQuNTU5Ljg0NyAzLjYxNCA1LjIzOC41MTQgNy45MDV6IiBmaWxsPSIjYWZiYWRkIi8+PHBhdGggZD0iTTExMy45NjQgMjguNTA4Yy0uODIzLjcyMS0xLjcyIDEuMzc1LTIuNDg4IDIuMTc5LS45NTUuNTkxLTEuNyAxLjQ0LTIuNjQ3IDIuMDc3bC0uMzU4LjI0OGEzLjEgMy4xIDAgMDEtLjQ2NS4yMTIgNC4xNTcgNC4xNTcgMCAwMS0uODM5LjE3OCA5Ljg4MSA5Ljg4MSAwIDAwLTEuNjI5LjQgOS4yMzggOS4yMzggMCAwMS0xLjcyNS4xNjIuODEzLjgxMyAwIDAxLS4yMjItLjAzNi40MDcuNDA3IDAgMDEtLjEzLS4wNjZsLS4wMzktLjAyNy0uMTU2LS4xMDlhNC40NzIgNC40NzIgMCAwMC0uMzQ0LS4xNzkgOC41NTIgOC41NTIgMCAwMC0uNzMzLS4zMDcgNy4wNTEgNy4wNTEgMCAwMS0xLjU2MS0uNDc4IDEuODcgMS44NyAwIDAwLS44LS4yMjFjLS4yNzEtLjA2OS0uNTMyLS4xNzItLjgtLjI2OGE3LjgyNSA3LjgyNSAwIDAxLTEuNTUyLS43NTIgMy40NDkgMy40NDkgMCAwMS0xLjI3Ni0xLjI4OCAzLjk2NyAzLjk2NyAwIDAxLS4xNjktMS43ODlBMy4yMzEgMy4yMzEgMCAwMTk2LjUgMjYuOGExNy45IDE3LjkgMCAwMTEuODU2LTIuOCAxMi44MjMgMTIuODIzIDAgMDEyLjQ5NC0yLjIyMSA5Ljg5MSA5Ljg5MSAwIDAxMi45NC0xLjY1OSAxMC4wNSAxMC4wNSAwIDAxMS42NDQtLjQyOGMuNTYxLS4wODMgMS4xMy0uMDYgMS42ODYtLjEyNXMxLjExOS0uMTEzIDEuNjgtLjEzNmE1LjgzNSA1LjgzNSAwIDAxMS42NzkuMDg5Yy41NTYuMDY3IDEuMTE3LjA3OCAxLjY3MS4xNThhMTUuNDM0IDE1LjQzNCAwIDAxMS42NDMuNDMyIDUuNyA1LjcgMCAwMS44MzcuMjc2IDMuMTggMy4xOCAwIDAxLjczOS41MDdjLjIxNS4yMS40NzIuMzc0LjY5MS42YTIuMTIyIDIuMTIyIDAgMDEuNDIyLjgyOSA0LjY3NCA0LjY3NCAwIDAxLjA1MSAxLjc4OCAzLjc4OCAzLjc4OCAwIDAxLS41MyAxLjY0OWMtLjMuNDg5LS41NjYuOTkyLS44ODQgMS40NzRhNy43MTQgNy43MTQgMCAwMS0xLjE1NSAxLjI3NXptLS41MjUtLjZhMTEuMjc3IDExLjI3NyAwIDAwMS4xMTYtMS4xMjEgMy42MDkgMy42MDkgMCAwMC44NjItMS4zMTNjLjEzOS0uNTA4LjM2Ni0uOTY0LjQ3Ni0xLjQ2YTIuMiAyLjIgMCAwMC0uMTg4LTEuNDJjLS4xLS4yMDktLjIyMi0uMzg5LS4zMTctLjZhMS4xMTQgMS4xMTQgMCAwMC0uNDIyLS41NzFjLS4yMTUtLjEyMy0uNDQ3LS4yLS42NjctLjMxNWE1LjQxMSA1LjQxMSAwIDAwLS42ODctLjMzMmMtLjQ4NC0uMTczLTEuMDcxLS4wODMtMS42LS4yMWExMy43NDcgMTMuNzQ3IDAgMDAtMS42MDgtLjI3MWMtMS4wODcuMDMxLTIuMTYxLS4yMDktMy4yNDctLjExMmE3LjggNy44IDAgMDAtMS41ODIuMzRjLS41MTkuMTIxLTEuMDQuMjI1LTEuNTQ1LjM4OWExMi4zNzEgMTIuMzcxIDAgMDAtMS41LjUxOSA4IDggMCAwMC0xLjQ2LjY3IDE2LjA2NCAxNi4wNjQgMCAwMC0yLjI2IDIuM2MtLjYzNC44MzktMS41NTMgMS41Ni0xLjc0MiAyLjY1YTUuMzE3IDUuMzE3IDAgMDEtLjQ0MiAxLjQ2OC44NzguODc4IDAgMDAtLjAxMS43MjVjLjEuMjI3LjI0My40LjMzMS41OTNhMi43MyAyLjczIDAgMDAuOTMzIDEuMDEgOC4yMiA4LjIyIDAgMDAxLjQxMS42NjRjLjI0OC4xLjUwOS4xNzQuNzYuMjhhMS42ODYgMS42ODYgMCAwMC43Ny4yOTIgNS40MzEgNS40MzEgMCAwMTEuNTc1LjU1OWMuMjYyLjEuNTIzLjIxNC43NzguMzQ0bC4zOC4yLjE4OS4xMDljLjExOS4wNi0uMDM1IDAgLjA2NC4wMTlhMTUuODQ4IDE1Ljg0OCAwIDAwMS41ODUtLjI0MyA3LjYyNiA3LjYyNiAwIDAwMS41OTQtLjM4MmMuMjU2LS4xLjUxMy0uMTkxLjc2Mi0uMjY2YTIuNzI2IDIuNzI2IDAgMDAuMzIzLS4xbC4zNDUtLjJBMTAuNTIzIDEwLjUyMyAwIDAwMTExIDMwLjE0Yy44NzgtLjY2NiAxLjYxMi0xLjQ5NiAyLjQzOS0yLjI0eiIgZmlsbD0iI2FmYmFkZCIvPjxnIG9wYWNpdHk9Ii40IiBmaWxsPSIjN2I4ZWQwIj48cGF0aCBkPSJNMTEzLjIzMyAyOC42MThjLS40NDIuMzktLjg4NS43OS0xLjMzMSAxLjE4NGEyNC4xIDI0LjEgMCAwMS0zLjY0MiAyLjgxIDE5LjMzNSAxOS4zMzUgMCAwMS00LjU2OS45MzhjLTIuNDA1LTEuNTMyLTcuNzIzLTEuNC03LjQ2Ni00Ljg3OS4xNy0yLjI4OCAyLjMtNC44NTYgNC4xMzgtNi4zNDNhMjIuNjY4IDIyLjY2OCAwIDAxMTIuODcgNi4yOXoiLz48cGF0aCBkPSJNMTEzLjYzMiAyOC42MzFhMTMuNjMxIDEzLjYzMSAwIDAxLTEuNSAxLjQxOGMtLjI0LjE3Ny0uMzkyLjQ1NC0uNjM3LjYyOC0uMjMuMTkxLS41MTUuMzE2LS43MzkuNTE1bC0xLjM1OCAxLjJhOC4zMTMgOC4zMTMgMCAwMS0uNzM4LjU0MiAxLjUxOCAxLjUxOCAwIDAxLS41LjIxNGwtLjQ2Ni4wOTFhNC42NzMgNC42NzMgMCAwMC0uODY3LjI3NCA0LjI1OSA0LjI1OSAwIDAxLS44ODMuMTc1Yy0uNi4wNzItMS4xOS4xMjMtMS44LjIwOGwtLjI0My4wMThoLS4xNDNjLS4wNDItLjAwNi0uMDU5IDAtLjEyMy0uMDEyYS41NDYuNTQ2IDAgMDEtLjEzNC0uMDUybC0uMDI0LS4wMWEzLjg3OCAzLjg3OCAwIDAwLS4zODMtLjE1NCAzIDMgMCAwMS0uNzQ1LS40MDhjLS41NjYtLjEyMy0xLjExMi0uMzI2LTEuNjc3LS41MDdsLTEuNy0uNTdjLS42LS4xNDQtMS4wMzMtLjY2Ni0xLjYxOC0uODgxYTIuMjY3IDIuMjY3IDAgMDEtMS4xMjUtMS40ODcgMy4xMzcgMy4xMzcgMCAwMS0uMDkzLTEuODQzIDYuMzczIDYuMzczIDAgMDEuNjY0LTEuNjljLjMxNy0uNTE0LjYyNS0xLjAyNS45MzMtMS41NDZhOS43IDkuNyAwIDAxMi40MDctMi43bC4wNTYtLjA0MWEuMjQyLjI0MiAwIDAxLjIxLS4wMzdjMS4xOTMuMzUyIDIuNDgzLjIyNyAzLjY0LjcyNi41NzUuMjI4IDEuMi4zMDYgMS43Ni41OWE5LjA0NiA5LjA0NiAwIDAwLjgwOC40NjZjLjI3OC4xMzEuNTc0LjIyNi44NDYuMzcxYTMuNzM3IDMuNzM3IDAgMDAuOC40NiAyLjQxNSAyLjQxNSAwIDAxLjgyNy40MTQgMTEuMyAxMS4zIDAgMDAxLjUyOSAxLjAzOGMuNTU3LjI4NC45MTguODI1IDEuNDY0IDEuMTI2LjI1MS4xNzkuNTE4LjM0NC43NTIuNTQ3YTQuMTQzIDQuMTQzIDAgMDEuOC45MTd6bS0uOC0uMDI2YTEuMjI3IDEuMjI3IDAgMDEtLjUyNi0uMzIzYy0uMjI4LS4xOTEtLjQxOS0uNDI1LS42MzUtLjYzNC0uNC0uNDU3LTEuMDM3LS42MTItMS40NjgtMS4wMjlhNC45NDEgNC45NDEgMCAwMC0xLjU0My0uOTA2IDEuODkxIDEuODkxIDAgMDEtLjc0LS41MDggMi40MDggMi40MDggMCAwMC0uODEzLS4zNzZjLS4yNzctLjExMS0uNTA1LS4zMjYtLjc3NC0uNDU4YTUuMTUzIDUuMTUzIDAgMDAtLjg1OS0uMjY3Yy0uNTctLjE3NC0xLjA4LS41MTgtMS42NjItLjY2Ni0xLjE2Ni0uMjE0LTIuMjctLjg0Ny0zLjUtLjY5bC4zMTItLjA5MWMtLjgyMS44LTEuNjUgMS41ODgtMi40NTIgMi40MjdhMy4yMzYgMy4yMzYgMCAwMC0uOTUyIDEuNDM0IDkuNDA3IDkuNDA3IDAgMDAtLjUgMS42IDMuNjc0IDMuNjc0IDAgMDAtLjA4NCAxLjU2M2MuMjExLjUyMS43OTMuNjA3IDEuMDc2IDEuMDg5YS44NTEuODUxIDAgMDAuNzE3LjQgMi4yODggMi4yODggMCAwMS44Mi4yMzIgMTEuMzQgMTEuMzQgMCAwMDEuNjQ0LjYgNy40NDQgNy40NDQgMCAwMTEuNjc3LjY3IDIuMDg1IDIuMDg1IDAgMDEuODY3LjMyN2MuMTMuMDkuMjU4LjE4Ny4zODIuMjg3LS4xLS4wMTctLjAyMy4wMDcuMDQzIDBsLjItLjAwOWExMS4yODEgMTEuMjgxIDAgMDAxLjcyOS0uMjc4IDE1LjI0OCAxNS4yNDggMCAwMDEuNzA5LS40MDhjLjEzNC0uMDU2LjI2OS0uMTEuMzkxLS4xNzRhMi41MzcgMi41MzcgMCAwMC4zMTctLjJjLjI0OS0uMTQ2LjUtLjI4OS43NDUtLjQ0Ny40ODktLjMxNC45NzMtLjY0NSAxLjQzNS0xLjAwNy4yMjktLjE4NS40LS40MzkuNjEzLS42MzlzLjQ4LS4zNDYuNjg1LS41NTlhNi45MTMgNi45MTMgMCAwMTEuMTQ3LS45NjV6Ii8+PC9nPjxwYXRoIGQ9Ik0xMTQuOCA2Mi43OTFjLjA2OSAyMS40NzgtMTIuMTgxIDE4Ljg0Mi0zMS41IDM1LjE4Ny0xMi44NzYgMTAuODkzLTIyLjcgNi40NzctMjQuMjQ2LS43MzhhOS42NDggOS42NDggMCAwMS0uMi0yLjUyNEM1OS4xMTQgODkuNDEgNjMuNiA4My40NDQgNzQgODAuOTI1IDg0LjgzNyA3OC4zIDgwLjggNTkuNyA5OS42NDUgNTEuNGMuNDQ2LS4yLjktLjM4NiAxLjM3NC0uNTcxLjIwNi0uMDgyLjQwOC0uMTU1LjYwNS0uMjI3IDkuMzM1LTMuMzcgMTMuMTQ2IDEuODM2IDEzLjE3NiAxMi4xODl6IiBmaWxsPSIjZmZiZjRkIi8+PHBhdGggZD0iTTExNSA2Mi43OWEzMy44NTMgMzMuODUzIDAgMDEtMS40NTQgMTAuNSAxNi45NTQgMTYuOTU0IDAgMDEtMi40NzkgNC43MWwtLjgyMSAxLjA1OWMtLjI4MS4zNDYtLjYyMS42MzgtLjkyOS45NnMtLjYyNy42MzQtLjk1Mi45MzlsLTEuMDM1Ljg0YTg2LjEzMiA4Ni4xMzIgMCAwMS04Ljg2MSA1LjgxN2MtMy4wMjUgMS44MDktNS45OSAzLjcwNi04Ljg1OCA1Ljc0NS0yLjg5MSAyLjAyMS01LjUzOSA0LjMxLTguMzcyIDYuNDU2YTI0LjY4NCAyNC42ODQgMCAwMS05LjU0IDQuNTQ0bC0xLjMxNS4yMzYtMS4zMzYuMDcyYTcuMjcgNy4yNyAwIDAxLTEuMzM2LS4wNDcgNi41IDYuNSAwIDAxLTEuMzI0LS4xODUgOS4zMjIgOS4zMjIgMCAwMS03LjItMTIuMjIxIDE0LjggMTQuOCAwIDAxNi41ODEtOC4wODYgMjYuMzE1IDI2LjMxNSAwIDAxNC43NzctMi4zMDhjMS42NDUtLjY1MSAzLjQ0MS0uOTIgNS4wMjItMS42YTkuNTc4IDkuNTc4IDAgMDAzLjg2MS0zLjQgMjguMzE1IDI4LjMxNSAwIDAwMi40ODQtNC42MjEgODIuMTI5IDgyLjEyOSAwIDAxNC41ODctOS41NDggMjcuNyAyNy43IDAgMDE3LjAyOS03LjkxNUEzMC43MDkgMzAuNzA5IDAgMDExMDMgNDkuOTkzYTEyLjA0MiAxMi4wNDIgMCAwMTUuMy0uNDA3IDYuNiA2LjYgMCAwMTQuMzg4IDIuOTE4IDEzLjUyNSAxMy41MjUgMCAwMTEuODcyIDQuOTg4IDM0LjAzNCAzNC4wMzQgMCAwMS40NCA1LjI5OHptLS40IDBhMzMuNjUxIDMzLjY1MSAwIDAwLS40MzYtNS4yMjggMTMuMTQxIDEzLjE0MSAwIDAwLTEuODA4LTQuODM4IDYuMiA2LjIgMCAwMC00LjEzNS0yLjc1MyAxMS41NDYgMTEuNTQ2IDAgMDAtNS4xMTUuNCAzMC43ODcgMzAuNzg3IDAgMDAtOS4zMzQgNC42ODEgMjcuMzcgMjcuMzcgMCAwMC02Ljk0MiA3Ljc5NSA4MS44NzUgODEuODc1IDAgMDAtNC41ODcgOS41IDI4LjY0NCAyOC42NDQgMCAwMS0yLjUyNiA0LjY4IDkuOTMxIDkuOTMxIDAgMDEtNC4wMDggMy41MDljLTEuNjgyLjcxNy0zLjQxNC45NTktNS4wNTEgMS42YTI1Ljk4NyAyNS45ODcgMCAwMC00LjcxNyAyLjI2OCAxNC40MDYgMTQuNDA2IDAgMDAtNi40NTEgNy45IDkuMjQyIDkuMjQyIDAgMDAyLjQxIDkuNDk2IDkuMTM1IDkuMTM1IDAgMDA0LjU2NyAyLjIzOCA2LjE3IDYuMTcgMCAwMDEuMjc4LjE3MSA3LjQ0MyA3LjQ0MyAwIDAwMS4yOTIuMDQ3bDEuMy0uMDY0IDEuMjgyLS4yMjVhMjQuMzEgMjQuMzEgMCAwMDkuNDA5LTQuNDM0YzIuNzg5LTIuMTE0IDUuNDQzLTQuNDkzIDguMzU2LTYuNDg1IDIuODgtMi4wNDQgNS44NjQtMy45MzggOC44ODgtNS43NTFhOTAuMDA3IDkwLjAwNyAwIDAwOC43OTUtNS44MjFsMS4wMjEtLjgyNy45MzMtLjkyYy4zLS4zMTUuNjM3LS42LjkxMi0uOTM5bC44LTEuMDM0YTE2LjU0MSAxNi41NDEgMCAwMDIuNDI5LTQuNiAzMy40NzEgMzMuNDcxIDAgMDAxLjQzOC0xMC4zNjV6TTU5LjMxMyA4Ny41YTMuMjE2IDMuMjE2IDAgMDEuNzY4LTEuMDgybC4xMjUtLjExMWMuMDU2LS4wMjUuMTMtLjAzNC4xNTYtLjA4NGwuMjMzLS4yMzRjLjE0OC0uMTYzLjM5MS0uMjM0LjU0NC0uMzg4bC44MzctMS4wMjNhMS4yNjIgMS4yNjIgMCAwMS41MzMtLjM4OCAzLjkzMiAzLjkzMiAwIDAwLjQ3OC0uNDU2bC40OC42NGMtLjE1Ni4xNDItLjMuMy0uNDYuNDMzcy0uNC4xNzYtLjUyNi4zNTFjLS4zMDkuMjg0LS42MTMuNTczLS44OTIuODg1LS4xMjguMTY4LS4xOS4zOTQtLjM3OS41LS4wOTMuMDU2LS4yMTcuMDg1LS4zMDcuMTQ2LS4wNjUuMDEzLS4wNjguMDgtLjA5LjEyOWwtLjEzMy4wOTNhLjkyOC45MjggMCAwMC0uMjQ5LjJjLS4wNTcuMDg5LS4wNDQuMjMyLS4xMTcuMzA4LS4xMTcuMTc0LS4yMDguMzY1LS4zMzguNTI4eiIgZmlsbD0iI2ZmYmY0ZCIvPjxwYXRoIGQ9Ik02Ni40IDgxLjY1NWEyOS43NjggMjkuNzY4IDAgMDE1LjcyMy0yLjE1NSA5LjA1NSA5LjA1NSAwIDAwNC45MTItMi44MDggMTIuNTY2IDEyLjU2NiAwIDAwLjkxNi0xLjEzNSA5LjQ1NyA5LjQ1NyAwIDAwLjg0Ni0xLjIxMSAzMy42NyAzMy42NyAwIDAwMS4zNzYtMi42NDlsMi41NzItNS40NTlhMzUuMTI0IDM1LjEyNCAwIDAxNi41Mi0xMC4yMDggMjIuMjg0IDIyLjI4NCAwIDAxNC43ODItMy43OSAzNS4zMzUgMzUuMzM1IDAgMDE1LjQwOS0yLjgxM2wuMjk0Ljc0NGEzMi41MTQgMzIuNTE0IDAgMDAtNS4yNzUgMi43NDIgMjQuNzMyIDI0LjczMiAwIDAwLTQuNjY0IDMuNjU3IDMzLjM1OSAzMy4zNTkgMCAwMC02LjQ5IDkuOTM0Yy0uODE1IDEuODI4LTEuNDkgMy43MjMtMi40MDggNS41MzZhMjkuNTc3IDI5LjU3NyAwIDAxLTEuNSAyLjY2NWMtLjMuNDItLjUyNy44NzctLjgxOCAxLjNhMTEuNzExIDExLjcxMSAwIDAxLS45ODUgMS4yIDEwLjAyMyAxMC4wMjMgMCAwMS0yLjQyNiAxLjkzIDEwLjcgMTAuNyAwIDAxLTEuMzg3LjcxNSAxMy40OTEgMTMuNDkxIDAgMDEtMS40NzEuNDYxIDI4Ljk0MyAyOC45NDMgMCAwMC01LjU3NyAyLjA2MnoiIGZpbGw9IiNmZmJmNGQiLz48cGF0aCBkPSJNMTE0LjggNjIuNzkxYy4wNjkgMjEuNDc4LTEyLjE4MSAxOC44NDItMzEuNSAzNS4xODctMTIuODc2IDEwLjg5My0yMi43IDYuNDc3LTI0LjI0Ni0uNzM4YTkuNjQ4IDkuNjQ4IDAgMDEtLjItMi41MjQgMTkuNTEzIDE5LjUxMyAwIDAxOC40NjQtMy45ODNjNC4zODItLjYgOC45NzUtLjI1OCAxMy4zNzgtMS4xNDIgOC4zODctMS42ODIgMTkuMDg3LTEwLjM2NSAxNy4zMTQtMTkuOTM3LS44NzEtNC43LTIuNDEyLTguNjc0LS43LTEzLjQ1MWEyMy4wMDkgMjMuMDA5IDAgMDEyLjMzNS00LjhjLjQ0Ni0uMi45LS4zODYgMS4zNzQtLjU3MS4yMDYtLjA4Mi40MDgtLjE1NS42MDUtLjIyNyA5LjMzNS0zLjM3MyAxMy4xNDYgMS44MzMgMTMuMTc2IDEyLjE4NnoiIGZpbGw9IiNmZmFhMTAiIHN0cm9rZT0iI2ZmYWExMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIuNSIvPjxwYXRoIGQ9Ik0zOC4xMTMgODQuNjU5YTE3LjI2NSAxNy4yNjUgMCAwMS0zLjIwNyAzLjYxNiAyOS4zIDI5LjMgMCAwMS0zLjY3MiAyLjcwOCAxMi4xNzIgMTIuMTcyIDAgMDEtMS41MTMuODEzYy0zLjU4OSAxLjY0NS03LjczOCAxLjc4NS0xMS4wOTMgMy45OS0yLjY1MSAxLjc0NC00LjU3MyA1LjE3OC04LjE4MSA0Ljg5LTMuNTU1LS4yODQtNS4yNzYtMy40MjMtNC4yNTUtNi42NTMgMS4zOTItNC40MjUgNy40NzctMy45MTUgMTAuNjItNi41MjhhNDEuODIxIDQxLjgyMSAwIDAwNC41LTQuODcxYy4zMTgtLjM3NC42NTEtLjc0NS45OC0xLjFhMTMuNjczIDEzLjY3MyAwIDAxNC41MjctMy40OCA4LjAzNiA4LjAzNiAwIDAxMS42OTQtLjUzYzQuMTU0LS44MTQgMTMuNTY0Ljk3NiA5LjYgNy4xNDV6IiBmaWxsPSIjYWZiYWRkIi8+PHBhdGggZD0iTTM4LjQ0OSA4NC44NzVhMjEuMjE4IDIxLjIxOCAwIDAxLTMuNzEgNC4wMjkgNDIuNDg5IDQyLjQ4OSAwIDAxLTQuNSAzLjExMiA5Ljk3NSA5Ljk3NSAwIDAxLTIuNTYgMS4wMDhjLS44ODguMjEtMS43MzYuNTI2LTIuNi43NzdhMjUuMzkxIDI1LjM5MSAwIDAwLTUuMDUgMS41ODcgOS4zMTYgOS4zMTYgMCAwMC0yLjEyOSAxLjQ3N3EtLjUzLjM4OC0xLjA1NS44MDhjLS4zNDcuMjgzLS41OTEuNjc5LS45NDkuOTYyYTEyLjU0MiAxMi41NDIgMCAwMS0yLjIyOCAxLjY0MiA1Ljc2OCA1Ljc2OCAwIDAxLTIuNzMuNzQyIDQuOSA0LjkgMCAwMS0yLjcxOS0uNzA5IDYuNTYyIDYuNTYyIDAgMDEtMS4xLS44NzcgNC41NzkgNC41NzkgMCAwMS0uODk1LTEuMDk1IDQuOTkxIDQuOTkxIDAgMDEtLjQ3OS0yLjczOCA2Ljg2MSA2Ljg2MSAwIDAxLjcyNS0yLjY1QTUuMDUzIDUuMDUzIDAgMDE4LjQwOCA5MWExMS43IDExLjcgMCAwMTIuNDktMS4xIDIyLjk3MiAyMi45NzIgMCAwMDQuOS0yLjA2NyAxMC40IDEwLjQgMCAwMDEuOTU4LTEuNzExYy41ODUtLjY1OSAxLjIzOS0xLjI2NSAxLjgyOC0xLjkzOSAxLjItMS4zMjEgMi4xODUtMi44NTkgMy41NDItNC4xMDdhMjUuNjQ5IDI1LjY0OSAwIDAxMi4xNzQtMS43MjIgNi44OCA2Ljg4IDAgMDEyLjU5My0xLjA0MyA5LjIwOCA5LjIwOCAwIDAxMi43NTEtLjMgMjIuNiAyMi42IDAgMDEyLjczOC4xOSAxNi41NTUgMTYuNTU1IDAgMDEyLjYyOC44MjEgNS41MTggNS41MTggMCAwMTIuMzYyIDEuNDg5IDMuOTg2IDMuOTg2IDAgMDExLjAyMSAyLjY3NyA1LjU4NyA1LjU4NyAwIDAxLS45NDQgMi42ODd6bS0uNjczLS40MzNhNS41ODUgNS41ODUgMCAwMC45MDUtMi4zIDIuNzA5IDIuNzA5IDAgMDAtLjExLTEuMTgyIDIuNjU0IDIuNjU0IDAgMDAtLjY5LS45ODIgOC43NjkgOC43NjkgMCAwMC0yLjEwOC0xLjM2MyAxMC41NDkgMTAuNTQ5IDAgMDAtMi41MzQtLjU3MyAxMi4yNTggMTIuMjU4IDAgMDAtNS4xNjYtLjA1MSAxNS42MSAxNS42MSAwIDAwLTIuMzE5IDEuMSA4LjQ4MyA4LjQ4MyAwIDAwLTIuMDYzIDEuNTg4IDQzLjg1NiA0My44NTYgMCAwMC0zLjYxMyAzLjkyMSAxNC45NTggMTQuOTU4IDAgMDEtMS43MjIgMi4xMTEgOS44MTMgOS44MTMgMCAwMS0yLjE3MyAxLjc2MWMtMS42MzYgMS4wMDctMy41MTYgMS4wODktNS4xMzggMS44MzZDOS40MjYgOTEgNy44MTEgOTEuOCA2Ljk3IDkzLjIzOGE0LjQwOSA0LjQwOSAwIDAwLS43MzkgMi4zODUgNS4yMjMgNS4yMjMgMCAwMC42ODYgMi4zNDcgNC45MzYgNC45MzYgMCAwMC41ODMgMS4wNzcgMi40MTEgMi40MTEgMCAwMDEuMDQxLjY1NiA4LjkgOC45IDAgMDAyLjM4NS40OTRjMS42NjYuMDg4IDMuMTI0LTEuMDA1IDQuNDMtMi4xNTguMzEtLjMxNS43MzMtLjUxOSAxLjA1MS0uODM4cy42MzctLjY0NS45NzEtLjk2YTEyLjI4NSAxMi4yODUgMCAwMTIuMzc0LTEuNDE1YzMuMzA5LTEuNTkgNy4wMjYtMS44NTggMTAuMTQ1LTMuNTFsMS4xNjktLjU5NXEuNTcyLS4zNDUgMS4xMzEtLjcwOWExMi42NTIgMTIuNjUyIDAgMDAyLjA5MS0xLjY0NSAxOSAxOSAwIDAwMS45MjItMS44MiAxNy42ODQgMTcuNjg0IDAgMDAxLjU2Ni0yLjEwNXoiIGZpbGw9IiNhZmJhZGQiLz48ZyBvcGFjaXR5PSIuNCIgZmlsbD0iIzdiOGVkMCI+PHBhdGggZD0iTTM4LjExMyA4NC42NTlhMTcuMjY1IDE3LjI2NSAwIDAxLTMuMjA3IDMuNjE2IDI5LjMgMjkuMyAwIDAxLTMuNjcyIDIuNzA4IDEyLjE3MiAxMi4xNzIgMCAwMS0xLjUxMy44MTNjLS4yMTktMy4yODMuMzYzLTYuMzg4LS45MTUtOS43NjZhMjcuMDE4IDI3LjAxOCAwIDAwLTEuOTgyLTMuOTkgOC4wMzYgOC4wMzYgMCAwMTEuNjk0LS41M2M0LjE0OS0uODEgMTMuNTU5Ljk4IDkuNTk1IDcuMTQ5eiIvPjxwYXRoIGQ9Ik0zOC40NDkgODQuODc1QTkuNzU0IDkuNzU0IDAgMDEzNy41NzUgODZjLS4zNDkuMzI0LS41MjYuOC0uOTE1IDEuMDg4LS43NjguNTY5LTEuMjkyIDEuMzc3LTIuMDA1IDIuMDA1YTUuODI2IDUuODI2IDAgMDEtMS4xNTMuODIyYy0uNC4yNTItLjcuNjQ0LTEuMTExLjg3My0uNzkxLjUtMS43Ljg0Ni0yLjUyNCAxLjMyNWEuMzI5LjMyOSAwIDAxLS40OTItLjI0MWwtLjAwNy0uMDU3YTYuODYxIDYuODYxIDAgMDEtLjExNy0uOTA1IDQuOSA0LjkgMCAwMC4wNzgtLjkwNiAzLjAxIDMuMDEgMCAwMS0uMDQ0LS45bC4wMjctLjg5NGExNi44MzIgMTYuODMyIDAgMDAtLjAwNy0xLjc3NGMtLjA5MS0uNTc5LjE0Ni0xLjE5NC0uMDU2LTEuNzY0YTExLjExNCAxMS4xMTQgMCAwMS0uMzEyLTEuNzM2IDkuMDY3IDkuMDY3IDAgMDAtLjY0OC0xLjY0NSAyNi45OTIgMjYuOTkyIDAgMDAtLjc1NC0xLjYwOCA3LjUyOCA3LjUyOCAwIDAwLS44OTMtMS41NDMuMTg3LjE4NyAwIDAxLjAzNy0uMjYybC4wMi0uMDEzLjA0LS4wMjJhNi44NjcgNi44NjcgMCAwMTQuMzQtLjgwOCAxNi4zNDEgMTYuMzQxIDAgMDEyLjIyMS4wNjVjLjcuMjY0IDEuNDc3LjIzMiAyLjE3Mi41NDdhOC41MjYgOC41MjYgMCAwMDEuMDA3LjUxN2MuMTc0LjA3My4zNDUuMTUyLjUxNi4yMzVhNC4zMDggNC4zMDggMCAwMS40NTMuMzQ5Yy4yNzUuMjU3LjcuMzQ5LjkzNC42ODFhMy44MTYgMy44MTYgMCAwMS42MDYgMS4wMTIgNC41NTggNC41NTggMCAwMS4zNzQgMS4xMjUgMy4yNzQgMy4yNzQgMCAwMS0uMTMyIDEuMTY0IDYuNjYgNi42NiAwIDAxLS4yNjYgMS4xMjQgOC45OTIgOC45OTIgMCAwMS0uNTE1IDEuMDIxem0tLjY3My0uNDMzYTguMjIzIDguMjIzIDAgMDAuNS0uOSAzLjMgMy4zIDAgMDAuMzkxLS45MzEgNS4wMjQgNS4wMjQgMCAwMC0uMDM4LS45NzEgMS44MTIgMS44MTIgMCAwMC0uMjE3LS45MTIgMi43MTggMi43MTggMCAwMC0uNjUtLjdjLS4yNDctLjE4OS0uMzU5LS41ODItLjY4My0uNzIyYTIuOTU1IDIuOTU1IDAgMDEtLjg5NC0uNSAyLjQzMiAyLjQzMiAwIDAwLS45OTEtLjMyMiA3LjQ2NCA3LjQ2NCAwIDAwLTIuMDMxLS41MzEgMTMuMzUzIDEzLjM1MyAwIDAwLTIuMS0uMzA3IDUuNSA1LjUgMCAwMC0xLjA1NS4xNDljLS4zNDcuMDU5LS42OTMuMDY2LTEuMDMzLjExOWExNi40NzQgMTYuNDc0IDAgMDAtMi4wMTcuNDMxbC4xNTMtLjQ3YTUuNzE3IDUuNzE3IDAgMDAuODc1IDEuNTc5IDEyLjIxOSAxMi4yMTkgMCAwMS44NyAxLjZjLjI3LjU0OS4yOTQgMS4xOTQuNTQxIDEuNzU2LjIyNC41NjQuNjUyIDEuMTI0LjQ2OCAxLjc3OS0uMTI2LjYyOS4zODYgMS4xOTIuMjkyIDEuODE2LS4wMTcuNjEyLS4wNDUgMS4yMTUtLjA0MiAxLjgxNWwtLjAyMy45QTIuOTUyIDIuOTUyIDAgMDEzMCA5MGEzLjM0NSAzLjM0NSAwIDAwLjA3Ljg4NWMwIC4yOTUtLjAzOS41OS0uMDU2Ljg4N2wtLjQxMy0uMjQ3YTEzLjI0NyAxMy4yNDcgMCAwMDIuMzc4LTEuMzQ5IDExLjM1OSAxMS4zNTkgMCAwMDEuMTI5LS43OTMgOS4zMjQgOS4zMjQgMCAwMTEuMDMyLS45MTRjLjM2NC0uMjc2LjcyNS0uNTYzIDEuMDc0LS44NThhMy45ODMgMy45ODMgMCAwMC45NDUtLjk5M2MuMjQ1LS4zOTEuNjYxLS42MzIuODg2LTEuMDM3LjI0Ni0uMzgxLjUwNC0uNzUuNzMxLTEuMTM5eiIvPjwvZz48cGF0aCBkPSJNMTQ0LjE5IDI1LjYxYS4yNDkuMjQ5IDAgMDEtLjA3LjA0IDQwLjUyMSA0MC41MjEgMCAwMC01LjQ5IDMuMDdjLTMuMSAyLjMyLTMuOTggOC4wNS04LjM2IDguMzYtMy4yMS4yMi01LjcyLTIuMDYtNS4yLTUuNC41My0zLjM5IDQuMTItNC40IDYuMzItNi40NiAyLjAyLTEuOSAzLjEyLTQuNDIgNC40Ni02Ljc5YTEwNS45NDYgMTA1Ljk0NiAwIDAxOC4zNCA3LjE4eiIgZmlsbD0iI2FmYmFkZCIvPjxwYXRoIGQ9Ik0xMTcuODU1IDM3LjAzM2E1MC45MzYgNTAuOTM2IDAgMTA0LjI2NSA3MS45MDggNTAuNjcxIDUwLjY3MSAwIDAwLTQuMjY1LTcxLjkwOHptOS43IDQ5LjYzOGMtMi4xNzYgNi44OTItNS4xNzUgMTMuMjk1LTEwLjAxMiAxOC43NDItNC4yMjUgNC43NTMtOS41MzMgOS4zLTE1LjczOSAxMS4xMTktMy45NzggMS4xNy04LjAyIDIuOTY2LTEyLjEzNCAzLjYwN2E0NS4zMjggNDUuMzI4IDAgMDEtOC43OTMuMjEyIDQ0LjUxNiA0NC41MTYgMCAwMS0yNi45NjctMTEuMTY0Yy04LjctNy43MjktMTIuOTQzLTE3LjM3OS0xNC40NDYtMjguNjE2YTM3LjIgMzcuMiAwIDAxLS4xNzUtMTAuNTY0YzEuMjI1LTguNDkgNS4xNDYtMTguMDM2IDEwLjg0Ny0yNC40NTMgOS45LTExLjE1MiAyNy44MTctMTguNzM1IDQyLjY4Ni0xNC42MzlhNzAuNjc0IDcwLjY3NCAwIDAxOC44NCAyLjU5NGM0LjM2IDEuODYzIDguNTc3IDUuMTM4IDEyLjEwNyA4LjI3MWE0Ny45NDMgNDcuOTQzIDAgMDE5LjE4NyAxMC42MzYgMjguMTU1IDI4LjE1NSAwIDAxMi4wNjUgMy42MDggMzguNSAzOC41IDAgMDEyLjQ1MSA3Ljg1M2MxLjQ3MiA3LjA3NyAyLjI5NCAxNS43OTkuMDg3IDIyLjc5NHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNMTIzLjMgMTA5Ljk4NmE1MS41NTQgNTEuNTU0IDAgMDEtMTYuMzY2IDEyLjMwNmMtMS41NjYuNy0zLjIgMS4yMzEtNC43NjkgMS45MjJsLTQuODY1IDEuNjc4Yy0xLjY1Ny40NDEtMy4zMzcuODE0LTUuMDEzIDEuMjI4bC01LjEyNi43NDFhNDkuNTUzIDQ5LjU1MyAwIDAxLTIwLjQxNC0yLjg0MyA1My44IDUzLjggMCAwMS0xNy42NjctMTAuNTQ2bC0zLjY2My0zLjYzOWMtMS4xMjUtMS4zLTIuMi0yLjY0OS0zLjI5LTMuOTc3LS45OTUtMS40LTEuOS0yLjg3MS0yLjg0NC00LjMtLjg1NS0xLjQ4OC0xLjYtMy4wMzgtMi40MDYtNC41NTItLjctMS41NjMtMS4zLTMuMTc2LTEuOTQ2LTQuNzU5LS41MzYtMS42MjUtLjk3OC0zLjI4Mi0xLjQ2OC00LjkyLS4zNjgtMS42Ny0uNjM0LTMuMzYyLS45NDUtNS4wMzhsLS40NDMtNS4xYy4wMjktMS43LjAxMy0zLjQwNiAwLTUuMTA2LjE1My0xLjY5NC4yNTYtMy4zOTQuNDMzLTUuMDg1LjMtMS42NzUuNTg2LTMuMzU2Ljk2NC01LjAxMi40OTQtMS42MjguOTI0LTMuMjc3IDEuNDc0LTQuODg0LjY1Ni0xLjU2OSAxLjI1OS0zLjE2IDEuOTc2LTQuNy44MTUtMS40OSAxLjU1NS0zLjAyIDIuNDA5LTQuNDgyLjk1Ny0xLjQgMS44MjEtMi44NjEgMi43NzMtNC4yNjNsMy4xNDYtNGE1MS4zODQgNTEuMzg0IDAgMDExNi4xNzMtMTIuMTMzIDUzLjA0IDUzLjA0IDAgMDE0LjY4LTEuOTc3IDgxLjE5IDgxLjE5IDAgMDE0LjgtMS42ODkgNDYuNjA4IDQ2LjYwOCAwIDAxNC45NjEtMS4yMiA1Mi41MTIgNTIuNTEyIDAgMDE1LjA4Mi0uNiA1Mi40NjcgNTIuNDY3IDAgMDEzNy45ODUgMTIuNzcybDMuNjIxIDMuNjY5YzEuMTEzIDEuMzA3IDIuMTY1IDIuNjY2IDMuMjQ1IDQgLjk5MyAxLjQgMS44ODkgMi44NjIgMi44MzMgNC4yODkuODY1IDEuNDc1IDEuNjU2IDMgMi40ODUgNC41LjczNiAxLjU0NCAxLjM2IDMuMTQzIDIuMDQzIDQuNzE1LjU3MiAxLjYxMyAxLjA0NSAzLjI2MyAxLjU3IDQuOS40IDEuNjY2LjcyMyAzLjM1MSAxLjA4NCA1LjAyOC4yMzUgMS43LjM2MiAzLjQxMy41MDcgNS4xMThsLS4wNjEgNS4xMzYtLjU0OSA1LjFjLS4zMTEgMS42NzctLjU3MSAzLjM2OC0uOTI5IDUuMDM1LS40ODEgMS42MzgtLjg4IDMuMy0xLjM5MyA0LjkzMWE1Mi4zMjYgNTIuMzI2IDAgMDEtMTAuMDg3IDE3Ljc1N3ptLTIuMzU1LTIuMDkxYTQ5LjU4MSA0OS41ODEgMCAwMDkuNjM0LTE2LjY1NWMuNS0xLjUzMS44ODEtMy4xIDEuMzMxLTQuNjQ1LjMzNC0xLjU3NC41NzMtMy4xNy44NjktNC43NTEuMTUtMS42LjE4Ny0zLjIxNi4yOS00LjgxNmwtLjE2OS00LjgxYy0uMjItMS41OS0uNDE2LTMuMTc2LS41NjgtNC43Ny0uMzE4LTEuNTY3LS41OTUtMy4xNDYtLjkzOS00LjcxLS40NjgtMS41MzEtLjg5NC0zLjA3Ny0xLjM4Ny00LjYtLjYwOS0xLjQ4MS0xLjE1Ni0yLjk5NC0xLjgxMS00LjQ1OWE0OC4yNzIgNDguMjcyIDAgMDAtMTEuNDU1LTE1LjM5NCA0My45MiA0My45MiAwIDAwLTE2LjUwNy05LjkyMSA0OS45NTMgNDkuOTUzIDAgMDAtMTkuMTA2LTIuMzU1IDQ5LjE3IDQ5LjE3IDAgMDAtNC43ODkuNTg2Yy0xLjU5LjI0NS0zLjE3Mi41MjMtNC43NjguOGEzMC45MjggMzAuOTI4IDAgMDAtOS4xMzQgMy4yMTIgNTMuNDM0IDUzLjQzNCAwIDAwLTE0Ljk4NyAxMi4wMDZjLTEuMDE4IDEuMjM1LTIuMDgzIDIuNDM2LTMuMTIzIDMuNjY1YTc1LjMyOCA3NS4zMjggMCAwMC0yLjcxOSAzLjk4M2MtLjc4MyAxLjQtMS40NzggMi44NTctMi4yMDkgNC4yODgtLjY0MiAxLjQ3Mi0xLjE1NSAzLTEuNzU2IDQuNDg4LS41MDggMS41MjItLjkgMy4wODMtMS4zNjIgNC42MjEtLjM1IDEuNTY3LS41ODQgMy4xNTktLjkzNCA0LjczMS0uMjExIDEuNTkzLS4zNDcgMy4yLS41IDQuOC0uMDIuOCAwIDEuNjExIDAgMi40MTZsLjA4MyAyLjQxNC43MjIgNC43N2MuMzY4IDEuNTYzLjY4OSAzLjEzMSAxIDQuN2wuNjU5IDIuMzEzYy4yMTYuNzcyLjM4MSAxLjU2NS42MzggMi4zMjYuNTczIDEuNSAxLjA5MyAzLjAzIDEuNzE2IDQuNTIuNzI0IDEuNDM4IDEuMzcyIDIuOTMzIDIuMjIyIDQuMzA3LjkxOCAxLjMzMiAxLjc4NSAyLjcgMi43NCA0IDEuMDE0IDEuMjU4IDEuOTY2IDIuNTc0IDIuOTkzIDMuODM0bDMuMzU0IDMuNTUxYTQ0LjAyMyA0NC4wMjMgMCAwMDE2Ljc0OCA5Ljg3NSA1MS4xNTggNTEuMTU4IDAgMDAxOS4yNTEgMi4zMjZsNC44NDUtLjQ0NmMxLjU5Mi0uMzEgMy4yLS41ODEgNC43ODYtLjkxOCAxLjU1MS0uNDc5IDMuMTQ0LS44NDggNC42NjktMS40MTMgMS40ODEtLjY3OSAyLjk4Ny0xLjMgNC40MjktMi4wMzlhNTAuOTI5IDUwLjkyOSAwIDAwMTUuMjQyLTExLjgzem02Ljg4OSAzLjcwNWMyLjkgMi4zNDcgNS43NjQgNC43NCA4LjQ0IDcuMzQzIDEuMzQ2IDEuMjkyIDIuNiAyLjY4NCAzLjk3NSAzLjk0NyAxLjM1IDEuMjg4IDIuNzk1IDIuNDY5IDQuMjUxIDMuNjM3czIuOSAyLjM0NSA0LjI2NyAzLjYxOSAyLjcgMi41NzcgNC4wNDkgMy44NjRjLjY2Ny42NTMgMS40IDEuMjM3IDIuMDkzIDEuODU1bDIuMiAxLjczN2MuNzQyLjU2OCAxLjQxNyAxLjIxMyAyLjEyMSAxLjgyNHMxLjQgMS4yMzUgMi4wNjUgMS44ODdhMS44IDEuOCAwIDAxLTIuMzQ0IDIuNzMybC0uMDQ5LS4wMzdjLS43NDgtLjU2Mi0xLjQ3LTEuMTUyLTIuMTg3LTEuNzQ5cy0xLjQ1NC0xLjE3MS0yLjE0Mi0xLjhjLS43MDYtLjYwOS0xLjM4LTEuMjU0LTIuMDYyLTEuODlzLTEuMzE2LTEuMzI2LTIuMDIzLTEuOTM0Yy0yLjgwOS0yLjQ1Mi01LjYtNC45MjEtOC4yMzYtNy41NzItMS4zMjYtMS4zMTUtMi42NTUtMi42MjYtNC4wNjEtMy44NXMtMi44NTItMi40LTQuMjY0LTMuNjIyYy0xLjQ1MS0xLjE3My0yLjctMi41NzItNC4wODUtMy44MjRhNDEuMjQyIDQxLjI0MiAwIDAwLTQuNC0zLjQ3IDEuOCAxLjggMCAwMTItM3EuMDY4LjA0Ni4xMzEuMXoiIGZpbGw9IiMwODExNDAiLz48cGF0aCBkPSJNMTcwIDE0MS44MThhNi45NDMgNi45NDMgMCAwMS0xLjY3IDQuMzg1Yy0xLjEgMS40Ni0zLjI2OCA1LjA4My01LjA2IDUuNjIyLTIuNjkzLjgwOC02LjUtMi43NDYtOC4zMTctNC4xLTQuNjc1LTMuNDg0LTQuNDA2LTMuMDI0LTguNjc2LTYuOTgyLTQuMzEtNC04LjUyOS04LjA4OS0xMi43NzgtMTIuMTUtMi4zLTIuMTkzLTkuMjUzLTUuODgzLTcuMzE4LTEwLjEzNC45NzYtMi4xMSA0Ljg3My01LjEyOSA2LjctNi40OTMgNS44MzItNC4zNjEgMTcuMTQ1IDEwLjE4MyAyMC45ODYgMTMuNTkzIDQuNTU1IDQuMDQ0IDQuNTI4IDMuNjQ4IDkuMDgyIDcuNjkyIDIuODMxIDIuNTE4IDYuOTI5IDQuOTc1IDcuMDUxIDguNTY3eiIgZmlsbD0iIzA4MTE0MCIvPjxwYXRoIGQ9Ik0xNzAuMTk0IDE0MS44MTFhNi42MzkgNi42MzkgMCAwMS0xLjE3NiAzLjczNSAyMTQuMjUgMjE0LjI1IDAgMDEtMi4yMzcgMy4xNiAxNC4yMTIgMTQuMjEyIDAgMDEtMi42MzEgMi44OSAyLjkyIDIuOTIgMCAwMS0xLjk0OC41NjUgNS41NzggNS41NzggMCAwMS0xLjkzNi0uNWMtMi40MjktMS4wODItNC4yOTItMi45NDUtNi4zNjUtNC40MjVhNjQuNjM3IDY0LjYzNyAwIDAxLTYuMDc1LTQuNzg1Yy0zLjc3Ny0zLjUtNy40NDktNy4xLTExLjE2Ny0xMC42NjRhNTYuNTMzIDU2LjUzMyAwIDAwLTUuNzU5LTUuMTA2IDI5LjA5MSAyOS4wOTEgMCAwMS0yLjk0Mi0yLjUxNyA3LjYyNyA3LjYyNyAwIDAxLTIuMTA1LTMuMjUyIDMuNiAzLjYgMCAwMS4wMjQtMS45NjcgNS4wNTQgNS4wNTQgMCAwMS45NTQtMS43MTMgMjEuMzg0IDIxLjM4NCAwIDAxMi43MjktMi43NTFjLjk3My0uODQ4IDEuOTkzLTEuNjM2IDMuMDEyLTIuNDIzYTQuNDQgNC40NCAwIDAxMy43MTItLjk2OCAxMC44NDEgMTAuODQxIDAgMDEzLjYyMSAxLjQzMyAyNi4zNDggMjYuMzQ4IDAgMDEzLjE3MyAyLjIzNCA2Ny42MTEgNjcuNjExIDAgMDE1LjY2MiA1LjI2OWwyLjY3MyAyLjc4NmMuODg1LjkzMiAxLjc1MyAxLjg4MiAyLjcgMi43MyAxLjg5NCAxLjc0MyAzLjkxMSAzLjMyMiA1LjkxMSA0Ljk1MSAxIC44MTcgMS45NTggMS42NzYgMi45MTUgMi41MzdzMS45NjYgMS42NDUgMi45NiAyLjQ2N2ExOS4zNjQgMTkuMzY0IDAgMDEyLjc5IDIuNzA3IDYuMTg2IDYuMTg2IDAgMDExLjUwNSAzLjYwN3ptLS4zOTMuMDEzYTUuOCA1LjggMCAwMC0xLjQwNy0zLjM4NyAxOC43ODMgMTguNzgzIDAgMDAtMi43My0yLjY1NmMtLjk4NS0uODE5LTIuMDA3LTEuNjA2LTIuOTg1LTIuNDU3bC0yLjkzLTIuNWMtMS45OC0xLjYyNS0zLjk5LTMuMjYxLTUuOS00Ljk4Ny0xLjkxOC0xLjc2LTMuNTg4LTMuNzA5LTUuMzgzLTUuNTUxYTU5LjY2OCA1OS42NjggMCAwMC01LjYxOC01LjI1MyAyNS45ODUgMjUuOTg1IDAgMDAtMy4xMzEtMi4yIDEwLjQ4NCAxMC40ODQgMCAwMC0zLjQ5NC0xLjM4MSA0LjE0IDQuMTQgMCAwMC0zLjQ3Ni44MzMgNDQuMDAyIDQ0LjAwMiAwIDAwLTIuOTg2IDIuNDIxIDIxLjA3NSAyMS4wNzUgMCAwMC0yLjY1OSAyLjczMSAzLjc3OCAzLjc3OCAwIDAwLS45IDMuMzc4IDcuMTMzIDcuMTMzIDAgMDAxLjk5MiAzLjEwOCAyOC43NzkgMjguNzc5IDAgMDAyLjkyMyAyLjQ2OCAyOC40MjYgMjguNDI2IDAgMDEyLjk5NSAyLjQ2N2wyLjc4NSAyLjY3MWMzLjggMy40NjcgNy40IDcuMTU3IDExLjE4NCAxMC42MzIuOTQzLjg3MyAxLjkgMS43MiAyLjkyMyAyLjVzMi4wOCAxLjUxMSAzLjExNCAyLjI3N2MyLjEwNiAxLjQ4MSAzLjk4IDMuMzE2IDYuMzE0IDQuMzQxIDEuMTI2LjQ4OCAyLjUuNzg3IDMuNTE0LjAxNWExMS43NTIgMTEuNzUyIDAgMDAyLjU1Ni0yLjhsMi4yLTMuMTU3YTYuMjU5IDYuMjU5IDAgMDAxLjA5OC0zLjUxM3oiIGZpbGw9IiMwODExNDAiLz48cGF0aCBkPSJNMTQxLjc1MiAxMTQuMDYyYTM1LjU0IDM1LjU0IDAgMDEtMi43MjYgMy4xMjMgMjMuNzE0IDIzLjcxNCAwIDAwLTIuODQgMy4wMjMgMzAuMDY2IDMwLjA2NiAwIDAxLTIuNzkyIDMuMDY1IDE1LjU2NiAxNS41NjYgMCAwMC0xLjMyMSAxLjYgMjEuNzM3IDIxLjczNyAwIDAxLTEuMzgxIDEuNTQ2LjkuOSAwIDAxLTEuMzY5LTEuMTdsLjAwOC0uMDExYTI1LjY1MyAyNS42NTMgMCAwMTIuNzQxLTMuMTE5Yy45MTEtMS4wNDIgMS44MzEtMi4wNzYgMi44NDItMy4wM2EzMy40MzcgMzMuNDM3IDAgMDAyLjc5Mi0zLjA3NCAyMC4yMzEgMjAuMjMxIDAgMDAyLjctMy4xNTMuOS45IDAgMTExLjU1OS45MS45MTMuOTEzIDAgMDEtLjA2My4wOTR6bTE0Ljk4NyAzNS4xMTRhMzkuMjEyIDM5LjIxMiAwIDAxMi4yLTMuMzU5IDI2Ljg1NiAyNi44NTYgMCAwMDIuMzctMy4zIDE5LjE0MiAxOS4xNDIgMCAwMTIuNTA2LTMuMjM5Yy40NjctLjUuODcxLTEuMDYzIDEuMy0xLjYwOWExMy4yOCAxMy4yOCAwIDAxMS40NjktMS40NzYuOS45IDAgMDExLjI2MyAxLjI3OWwtLjAzNi4wNDFhOTQuODY4IDk0Ljg2OCAwIDAxLTIuNjQyIDIuODg0Yy0uODI1IDEuMDIyLTEuNjExIDIuMDgyLTIuNDc1IDMuMWEyNS42NDMgMjUuNjQzIDAgMDAtMi4yODUgMy4zIDIxLjA3MyAyMS4wNzMgMCAwMC0yLjE5MSAzLjQwNy45LjkgMCAxMS0xLjYxMS0uODA3eiIgZmlsbD0iI2ZmYzc1NyIvPjxwYXRoIGQ9Ik0zOC44MzQgNjcuNjkxYy40NC0yLjc3OSAxLjM4Ni01LjQwOSAxLjk0Mi04LjE3M2E0My44OSA0My44OSAwIDAxMy40MjQtNy42NzIgMzMuNSAzMy41IDAgMDEyLjIzNi0zLjU2M0EzMC45IDMwLjkgMCAwMTQ5LjA2MyA0NWMuOTMxLTEuMDQ4IDEuODQ0LTIuMSAyLjg2OS0zLjA1M2wzLjEyOS0yLjc2N2E0NC45NDkgNDQuOTQ5IDAgMDEzLjM2Mi0yLjQ2N2MxLjE4MS0uNzI4IDIuMi0xLjcyOCAzLjQxOS0yLjRsMS44LTEuMDYzIDEuODYyLS45NjFjMS4yNjQtLjU5IDIuNS0xLjI1OSAzLjgyMi0xLjczMS42NjktLjIxIDEuMzIzLS40NjEgMi0uNjI4czEuMzQ5LS4zNzEgMi4wMTMtLjU5M2EzMS45MjQgMzEuOTI0IDAgMDE0LjA4Ni0uOTYyYy42OTEtLjExOCAxLjM5My0uMTU4IDIuMDg5LS4yMjcuNjkyLS4xMDYgMS4zODQtLjIgMi4wODItLjI2MiAxLjM5Mi0uMTgxIDIuOC0uMjI5IDQuMi0uMjc3YS43ODcuNzg3IDAgMTEuMDUzIDEuNTcyaC0uMWMtMS4zNDkuMDItMi43LjAzNi00LjAzOS4xODVhMTkuMTM2IDE5LjEzNiAwIDAwLTMuOTguNzA1Yy0uNjUxLjE3Ny0xLjMyNi4yMzItMS45ODEuMzkzbC0xLjk3OC40MzNhNDAuMDMzIDQwLjAzMyAwIDAwLTMuODc1IDEuMiAyOC43NzkgMjguNzc5IDAgMDAtNy4zMjcgMy41IDEwLjYgMTAuNiAwIDAxLTEuNzcgMSA1IDUgMCAwMC0uOTIxLjQ1MWMtLjI3OC4yLS41NDQuNDA5LS44MTYuNjEyLTEuMDgzLjgyNi0yLjAyNCAxLjgyMi0zLjA4NyAyLjY0OC0uNTMxLjQxNS0xLjEwOS43OC0xLjYxOCAxLjIyNWwtMS40MjQgMS40MjdjLS41LjQ1NC0uOTI2Ljk3OS0xLjQyIDEuNDQxYTEwLjI1OCAxMC4yNTggMCAwMC0xLjM0NyAxLjUgMjUuMTIzIDI1LjEyMyAwIDAxLTIuNDM1IDMuMjI4IDExLjI0MyAxMS4yNDMgMCAwMC0xLjEyMiAxLjY5M2MtLjQuNTUyLS43NjUgMS4xMjYtMS4xNTMgMS42OWEzMi43MzYgMzIuNzM2IDAgMDAtMy4xMTIgNy41NDQgMTkuMjgzIDE5LjI4MyAwIDAwLTEuMjEgMy45IDcxLjMzMyA3MS4zMzMgMCAwMC0uNzQ5IDQgLjc4Ny43ODcgMCAwMS0xLjU1Ni0uMjM5em04Mi45MDUgMzQuMjZsLTEuODU0IDIuMzA5YTIxLjA5MSAyMS4wOTEgMCAwMS0xLjk0NiAyLjIxNWwtMS4wNTIgMS4wM2MtLjM0Ny4zNDctLjY2MS43MjctMSAxLjA4M3EtMSAxLjA4NC0yLjA3NyAyLjExNmEyOS4wODUgMjkuMDg1IDAgMDEtMTAuMzI0IDUuOTA3bC01LjU0MSAxLjcxNGE0Ni41IDQ2LjUgMCAwMS01LjY3OCAxLjUxNmMtLjk3MS4xNy0xLjk0Mi4zNzctMi45MjguNDg3YTI4LjUzMSAyOC41MzEgMCAwMS0yLjk0Ny4xNDljLS45OCAwLTEuOTU2LS4wMzItMi45My0uMDgzcy0xLjk0Mi0uMDQ1LTIuOTIzLS4xMTlhMzguODYyIDM4Ljg2MiAwIDAxLTUuOC0uODY3IDUxLjU0NyA1MS41NDcgMCAwMS01LjcwOS0xLjQgNDcgNDcgMCAwMS0xMC42LTUuMTE4Yy0xLjYxMy0xLjE0LTMuMS0yLjQzNi00LjYtMy43YTM2LjI1IDM2LjI1IDAgMDEtNC4xNzQtNC4xNzEgNTEuMjA1IDUxLjIwNSAwIDAxLTEuNzc3LTIuMzU5Yy0uNi0uNzgtMS4xNjEtMS41ODYtMS43MTktMi40YTQzLjMxOCA0My4zMTggMCAwMS0yLjk5LTUuMS43ODcuNzg3IDAgMTExLjQwNy0uNzA2di4wMDZsLjAxNi4wMzJhNDEuNTQ2IDQxLjU0NiAwIDAwMi44MTEgNC45NTMgMzguOSAzOC45IDAgMDAxLjY1MyAyLjMxNmMuNi43MzggMS4yNTIgMS40MjcgMS44ODkgMi4xMjYgMS4yODcgMS4zODUgMi41NjEgMi43ODcgMy45NTcgNC4wNzhhNDAuNDI3IDQwLjQyNyAwIDAwNC40NTQgMy41NDcgMzMuOCAzMy44IDAgMDAxMC4xNjIgNS4wODhjMS44NDEuNDUxIDMuNTM3IDEuNDY3IDUuNDU0IDEuNjcgMS44ODIuMzE5IDMuNzg4LjM5MSA1LjY2OS41MzUuOTMzLjExIDEuOS4yNDEgMi44NTYuMjY0czEuOTExLjAxIDIuODYtLjAyMWMuOTQ5LS4wMTEgMS44OS0uMDgyIDIuODIzLS4xNDdhMTIuMzI3IDEyLjMyNyAwIDAwMi43NjEtLjQ2N2MuOTA2LS4yNTkgMS43ODktLjYgMi43MTItLjgzNi45MTUtLjI2MyAxLjg1Ni0uNDczIDIuNzg3LS43MzguOTQ0LS4yMjYgMS44NDYtLjU4NiAyLjc3NS0uODg3LjkyNS0uMjczIDEuOTMxLS40NzQgMi44MjYtLjcyMiAzLjcwNi0uOTQ5IDYuODMzLTMuMzU3IDkuNy01LjgxNy43NDEtLjYgMS40NzMtMS4yMTMgMi4xOC0xLjg1OGExNS45NzYgMTUuOTc2IDAgMDAxLjk3OC0yLjA3NmMxLjI5Mi0xLjQyNSAyLjM3Ni0yLjk4NSAzLjU1OS00LjQ3MmwuMDUtLjA2M2EuNzg2Ljc4NiAwIDAxMS4yMzEuOTc5ek00MC4yMTggODcuNDE0YTQuNzEgNC43MSAwIDAxLS40NTQtMS41NTQgMy41NzMgMy41NzMgMCAwMC0uMjUxLTEuNiAzLjkyOCAzLjkyOCAwIDAxLS4yNzEtMS41OSAyLjQ4NiAyLjQ4NiAwIDAwLS4yMTktLjc4IDMuMTgyIDMuMTgyIDAgMDEtLjEzLS44LjkuOSAwIDAxMS43MzQtLjM4NGwuMDQ3LjExYTMuNzc5IDMuNzc5IDAgMDEuMjk1IDEuNTM5IDYuOTM3IDYuOTM3IDAgMDEuMiAxLjU1NiA0LjAyNSA0LjAyNSAwIDAwLjMxMiAxLjUzNiA0LjI1MSA0LjI1MSAwIDAxLjExNi43NzggMS42ODUgMS42ODUgMCAwMC4zNTYuNzE2LjkxLjkxIDAgMTEtMS41MS45ODF6IiBmaWxsPSIjMDgxMTQwIi8+PHBhdGggZD0iTTI1LjMgMTIzLjYyN2MtMS43MjMgMy41NTMtNS4xMTQgNC4yMzMtOC41OTIgNC42MTZhNzEuNjM3IDcxLjYzNyAwIDAwLTcuNTIxIDEuNiAzOS45MzEgMzkuOTMxIDAgMDEtNC44OTMtNy4xNDNjMS44NTUtLjUgMy44MjktMS4wODIgNC4zNjYtMS4zMDcgNC45NTMtMi4xIDcuNzM2LTYuODM3IDEyLjQ5Mi05LjExOCAxLjM3NS0uNjYzIDQuNDM3LTEuMTUgNS43NTUtLjA3NSAyLjA4MSAxLjctMS4zIDEwLjc4My0xLjYwNyAxMS40Mjd6IiBmaWxsPSIjYWZiYWRkIi8+PHBhdGggZD0iTTgwLjQ3NSA1OC45OTVjLS40LS44MzgtLjgzOC0xLjY2LTEuMjU4LTIuNWExNC42MzEgMTQuNjMxIDAgMDAtMS40MDctMi40MzZjLS41NTQtLjc2LTEuMDY3LTEuNTQ1LTEuNTktMi4zMjdhMTEuMDc5IDExLjA3OSAwIDAwLS44ODctMS4wOTVjLS4zMDctLjM1NS0uNTg4LS43My0uODkxLTEuMDg3YS40NS40NSAwIDAxLjY2Ny0uNmwuMDE4LjAxOWExNS44NjIgMTUuODYyIDAgMDExLjggMi4yNDUgMjIuMDIzIDIyLjAyMyAwIDAxMS42IDIuMzg4Yy40NzEuODM0Ljk3OSAxLjY0NCAxLjQ2OCAyLjQ3LjI0NC40MTQuNDI5Ljg1OS42MzkgMS4yOTFzLjQzLjg2LjY3NiAxLjI4MmEuNDUxLjQ1MSAwIDAxLS43NzkuNDU1bC0uMDE3LS4wMzJ6bS0zLjAwNyA0LjA2YTE5LjU0NyAxOS41NDcgMCAwMS03LjcyNS01LjU2NiAxMC4xMzMgMTAuMTMzIDAgMDEtMS4zMDctMi4wNzggMy41NSAzLjU1IDAgMDEtLjI5LTIuNTk0IDIuNjY1IDIuNjY1IDAgMDEuODExLTEuMTE3IDMuNDE2IDMuNDE2IDAgMDExLjItLjU3NyAzLjYzOSAzLjYzOSAwIDAxMi41ODEuMjQxIDEuOSAxLjkgMCAwMS41NzguNDU1IDIuNTY2IDIuNTY2IDAgMDEuMzc3LjU4IDIgMiAwIDAxLjE1MyAxLjQ0NSAzLjA0OSAzLjA0OSAwIDAxLTEuOTU1IDEuOCA4LjMxNyA4LjMxNyAwIDAxLTQuODg1LjA5NSA5LjY5MyA5LjY5MyAwIDAxLTQuMjMyLTIuMzg4IDkuOTIyIDkuOTIyIDAgMDEtMi40Ni00LjE4NS40NTEuNDUxIDAgMTEuODYtLjI3IDguODM1IDguODM1IDAgMDA2LjA1MiA1Ljk4OSA3LjQ0MyA3LjQ0MyAwIDAwNC4zMzMtLjExQTIuMjQ1IDIuMjQ1IDAgMDA3MyA1My41OTVhMS4xMjkgMS4xMjkgMCAwMC0uMDc4LS44MzMgMS43NCAxLjc0IDAgMDAtLjI1LS40MDYgMS4wOCAxLjA4IDAgMDAtLjMzNS0uMjdjLTEuMTIxLS42MTgtMy4wNDItLjI3LTMuNDQxIDFhMi43NTggMi43NTggMCAwMC4zIDEuOTY5IDkuMjc2IDkuMjc2IDAgMDAxLjIzNCAxLjg2NyAxOC4zMSAxOC4zMSAwIDAwMy4zMzcgMy4xMzEgMTguNTA5IDE4LjUwOSAwIDAwNC4wMzMgMi4xNjYuNDUxLjQ1MSAwIDAxLS4zMjQuODQxem0tLjg2OCAzLjUyNmMtMS4yMTItLjM0NS0yLjQ2OC0uNTk1LTMuNzIyLS45NTRhNDcuNzQgNDcuNzQgMCAwMS0xLjg2My0uNjEzIDE4LjUxNiAxOC41MTYgMCAwMC0xLjg0Ni0uNSAzMS41NTEgMzEuNTUxIDAgMDEtMy43NDYtMS4wNDZjLS42MTgtLjIxNS0xLjI0OC0uNC0xLjg3LS42MzhhOS44NDcgOS44NDcgMCAwMS0xLjc4NS0uOTM0LjQ1LjQ1IDAgMDEuNDcxLS43NjdsLjAyNy4wMTZhMjAuODY2IDIwLjg2NiAwIDAwMy40MjEgMS40ODZjMS4yMS4zODIgMi40Ni42NzQgMy43IDEuMDYzIDEuMjU0LjM2IDIuNDgyLjgwNiAzLjcxMyAxLjA4LjYyMy4xNDYgMS4yMzkuMzM2IDEuODY3LjVzMS4yNjMuMzA5IDEuOTEuNDUzYS40NTEuNDUxIDAgMDEtLjIuODhsLS4wMjUtLjAwNnoiIGZpbGw9IiMyMjI2NmQiLz48cGF0aCBkPSJNODAuNTI3IDU4Ljk3M2MtLjIxNC0uNDEyLS4yNzItLjktLjY1OC0xLjIzNC0uMjUyLS4zOTQtLjM4OC0uODQ5LS42MDgtMS4yNjRzLS40LS44NTEtLjU3OC0xLjI5M2MtLjEtLjIxNS0uMjUtLjQtLjM0OS0uNjE1YTIuNjk0IDIuNjk0IDAgMDAtLjM2NC0uNjA3Yy0uMTM2LS4xOTMtLjIzOC0uNDA4LS4zNy0uNi0uMDk0LS4yMjItLjM2Ny0uMzIxLS40ODEtLjUyOC0uMy0uMzY2LS41OTEtLjczNS0uOS0xLjA5MmE2Ljg5MyA2Ljg5MyAwIDAwLS44MTktMS4xNSAzLjg5MiAzLjg5MiAwIDAwLS45MTMtMS4wNzIuMzkyLjM5MiAwIDAxLjU2My0uNTQ2bC4wMzYuMDM2YTguNzI4IDguNzI4IDAgMDAxIDEuMDQ0Yy4zLjM3Mi41Mi44MS44MDUgMS4xOTRhMy45ODggMy45ODggMCAwMC44NTMgMS4xNTRjLjIwOC4xNDguMTI2LjQ5My4zNDIuNjM1YTMuNTA4IDMuNTA4IDAgMDEuNTA1LjUyNyAxNC44MjIgMTQuODIyIDAgMDExLjMgMi41NzEgNS45MjkgNS45MjkgMCAwMC43MyAxLjI0IDcuOTggNy45OCAwIDAwLjY0IDEuMy4zOTMuMzkzIDAgMDEtLjcxMy4zMjl6IiBmaWxsPSIjZmZjNjU3Ii8+PHBhdGggZD0iTTgwLjEyIDU5LjE2NGEyMy4zODEgMjMuMzgxIDAgMDAtMS41MDktMi44MzNBMjUuOTE4IDI1LjkxOCAwIDAwNzcgNTMuNjM4Yy0uMy0uNDQ2LS41ODctLjktLjg2Ny0xLjM2NC0uMjc0LS40NzYtLjYtLjg1LS44OTItMS4zLS4zMTEtLjQyNy0uNjgzLS44MjQtMS0xLjI1OGEuNjkxLjY5MSAwIDAxLjIyMy0xLjA0OC43Mi43MiAwIDAxLjU4LS4wMjcuNy43IDAgMDEuMjQuMTY0bC4xNDQuMTQzYTE1LjE4IDE1LjE4IDAgMDExLjAzNiAxLjI1NmMuMy40NjEuNzI2LjgwOSAxLjAwNiAxLjI3NC42MDUuODkgMS4zIDEuNzU2IDEuODQ0IDIuNjY3LjQ2NC45NjUgMS4wODYgMS44MzQgMS41MjggMi44NDRhOS4yNTQgOS4yNTQgMCAwMC43MDkgMS40MjIuODYxLjg2MSAwIDAxLjEzNS42MTUuOC44IDAgMDEtLjQuNTYxLjgyNC44MjQgMCAwMS0xLjAwNi0uMTcgMS4xNjcgMS4xNjcgMCAwMS0uMTYtLjI1M3ptLjcxMS0uMzM5Yy4wMzkuMDgxLjA0NS4wODIuMDQ1LjA4MmEuMDQzLjA0MyAwIDAwLjAyLjAxLjA0My4wNDMgMCAwMC4wNC0uMDA3LjAzNy4wMzcgMCAwMC4wMTctLjAzMi4wNTUuMDU1IDAgMDAwLS4wMTZsLS4wNDEtLjA3NC0uMzkzLS43MThjLS4xNC0uMjMxLS4zMDctLjQ2NS0uNDMtLjY4OS0uMjcyLS40NTItLjQxOS0uOTQ4LS43LTEuNDE4LS4yNDYtLjQ3OS0uNTI2LS45MzctLjc4Ny0xLjQwNkExNC44MjkgMTQuODI5IDAgMDA3Ni44NiA1MS45Yy0uMzc1LS4zODEtLjQ1My0uOTkxLS44NS0xLjMzOC0uMzU0LS4zODgtLjc1Mi0uNzMyLTEuMTEzLTEuMTA2LS4wNDYtLjA0Ny0uMDgxLS4xLS4xMjItLjE1NC0uMDIyLS4wMzEuMDA4LS4wMTMuMDA1LS4wMjRzMC0uMDMxIDAtLjAyMi4wMS4wMTUuMDExIDBjLjM1NC40LjYyNi44NTYgMSAxLjI1NWE0LjI1MSA0LjI1MSAwIDAxLjk4IDEuMzI2IDUuMDgzIDUuMDgzIDAgMDAuNDI3LjY3N2wuMzgzLjcwOWExMC42ODQgMTAuNjg0IDAgMDAuOSAxLjM1MSAxMiAxMiAwIDAxLjg3MiAxLjM5IDI3Ljc1OCAyNy43NTggMCAwMDEuNDc3IDIuODYxek03Ny40ODkgNjNhMzQuNDY2IDM0LjQ2NiAwIDAxLTQuMjA4LTIuMjcgMTcuMjYgMTcuMjYgMCAwMS0zLjQ5LTMuMjgxIDkuMzczIDkuMzczIDAgMDEtMS4yODQtMi4wNzIgMy4zOSAzLjM5IDAgMDEtLjIyNi0yLjUxNiAyLjY4OCAyLjY4OCAwIDAxLjc1OC0xLjA2MSAyLjk1OCAyLjk1OCAwIDAxMS4xNTQtLjU0MSAzLjgyNyAzLjgyNyAwIDAxMi40NTguMjYgMS45MTEgMS45MTEgMCAwMS44NTguOTY0IDEuNzc0IDEuNzc0IDAgMDEuMTE1IDEuMjkzIDIuOTY5IDIuOTY5IDAgMDEtMS43ODggMS43MjggOC4zMjkgOC4zMjkgMCAwMS00LjgyOC4yMjcgOS43ODUgOS43ODUgMCAwMS00LjE3Mi0yLjQ0IDEwLjIxNiAxMC4yMTYgMCAwMS0uNzU4LS45NTEgOS40OTUgOS40OTUgMCAwMS0uNjgyLTEgMTIuMjY1IDEyLjI2NSAwIDAxLTEuMDI3LTIuMTkuMzkzLjM5MyAwIDAxLjczNi0uMjc4di4wMDZsLjAxMy4wMzZhOC41NDMgOC41NDMgMCAwMDIuMzI1IDMuNzc0IDExLjM1NCAxMS4zNTQgMCAwMDEuNzI1IDEuMzc1IDcuNzI5IDcuNzI5IDAgMDAyLjA0NC44NjcgNi4zOTQgNi4zOTQgMCAwMDQuMzU2LS4xMjJjLjMzMS0uMTM5LjYxOC0uMzI1LjkyNi0uNDcxYTEuMDQxIDEuMDQxIDAgMDAuNTYxLS43MjkgMS40NjMgMS40NjMgMCAwMC0uNzU5LTEuNDUzIDIuMzkxIDIuMzkxIDAgMDAtMS45MjktLjIwNyAxLjgzIDEuODMgMCAwMC0xLjQxMSAxLjE1NSA0LjAyOSA0LjAyOSAwIDAwLjI0OCAxLjk0NyA0LjMyMyA0LjMyMyAwIDAwLjUzLjk3OWMuMTczLjMzNC40LjY0NS42MDUuOTY2YTEzLjcxMSAxMy43MTEgMCAwMDMuNDI1IDMuMDYxIDE0Ljc5MyAxNC43OTMgMCAwMDQuMDE2IDIuMjEyLjM5NC4zOTQgMCAwMS0uMjk0LjczeiIgZmlsbD0iI2ZmYzY1NyIvPjxwYXRoIGQ9Ik03Ny4zMjEgNjMuNDIxYTIxLjk4NyAyMS45ODcgMCAwMS04LjAyMS01LjczMyAxMC4xMzUgMTAuMTM1IDAgMDEtMS4zNDItMi4xNzIgMy45NDQgMy45NDQgMCAwMS0uMy0yLjY4NCAzLjEgMy4xIDAgMDExLjkxNS0xLjk3NyA0LjI2MyA0LjI2MyAwIDAxMi42NjYtLjE0MSAyLjk2OCAyLjk2OCAwIDAxMS4yNDIuNjY0IDIuODYgMi44NiAwIDAxLjQyMS41NjkgMi4xNTUgMi4xNTUgMCAwMS4zMTcuNjM2IDIuMzE2IDIuMzE2IDAgMDEtLjAxNyAxLjQ0NyAyLjgxNyAyLjgxNyAwIDAxLS43ODkgMS4xNDkgNC45ODIgNC45ODIgMCAwMS0yLjM3IDEuMDU0IDguMTgzIDguMTgzIDAgMDEtMi41MTcuMDY3IDEwLjAxIDEwLjAxIDAgMDEtNC42NDMtMS43MTggMTAuMTM0IDEwLjEzNCAwIDAxLTMuNjQ3LTQuOTI4IDIgMiAwIDAxLS4xNjUtLjY4NS42OC42OCAwIDAxMS4zMTgtLjE2M2wuMi41N2ExMC4xNjIgMTAuMTYyIDAgMDAuNDkzIDEuMDgyIDguNTIgOC41MiAwIDAwMy4yNzYgMy4zMjQgNy44NTkgNy44NTkgMCAwMDQuNDg4IDEgNS4xNzggNS4xNzggMCAwMDIuMTU4LS42MjMgMS4zODUgMS4zODUgMCAwMC42My0uNjcuODY1Ljg2NSAwIDAwLS4yMDgtLjc3OGMtLjY2Ny0uOTE5LTMuMTE1LS42NjUtMy4yMzMuN2EzLjU0IDMuNTQgMCAwMC42NTQgMi4wNTEgMTUuMzU0IDE1LjM1NCAwIDAwMS40MzMgMS44NzMgMTQuNjc2IDE0LjY3NiAwIDAwMy42MiAzLjA3MSAxNy4wMTkgMTcuMDE5IDAgMDAyLjEyIDEuMWwuNTUxLjIyOC4yNzguMTA3YS45NTIuOTUyIDAgMDEuNC4yNDcuODM0LjgzNCAwIDAxLjA2OCAxLjAzNi44NDQuODQ0IDAgMDEtLjk5Ni4yOTd6bS4yOTMtLjczMWEuMDU0LjA1NCAwIDAwLjA2NC0uMDg0Yy4wNi4wMTQtLjIyLS4wODctLjQtLjE2MWwtLjU3My0uMjQzYTE4Ljk2NSAxOC45NjUgMCAwMS0yLjItMS4xNTggMTYuNTY4IDE2LjU2OCAwIDAxLTIuMDI1LTEuNDUzIDE4LjE2NCAxOC4xNjQgMCAwMS0xLjg0Ny0xLjY3OEExMC43ODYgMTAuNzg2IDAgMDE2OS4xIDU1LjlhNC4yNjcgNC4yNjcgMCAwMS0uNzItMi42MDcgMi4xMTYgMi4xMTYgMCAwMS43NjEtMS4zMDkgMi44ODYgMi44ODYgMCAwMTEuMy0uNTcyIDMuMzQ3IDMuMzQ3IDAgMDExLjM4My4wMzEgMi43NDEgMi43NDEgMCAwMS42NjguMjQ2IDEuMzUgMS4zNSAwIDAxLjU4OS41MzIgMS42NSAxLjY1IDAgMDEuMjgxIDEuNTA5IDIuMTMzIDIuMTMzIDAgMDEtLjk5NCAxLjA2NCA2LjU5MiA2LjU5MiAwIDAxLTIuNDgzLjcgOC41NDcgOC41NDcgMCAwMS00LjkxOS0xLjA3NiA5LjYwNSA5LjYwNSAwIDAxLTMuNDIxLTMuNjg0IDEwLjc2NyAxMC43NjcgMCAwMS0uNTU1LTEuMTM0bC0uMjIyLS41NzZjLS4wMDgtLjAwOS0uMDI3LS4wMDctLjAyMyAwLS4xLS4zMTMuMzM3Ljg0Mi42MTUgMS40NjFhOC41MzEgOC41MzEgMCAwMDEuMTkxIDEuOTc3IDguNyA4LjcgMCAwMDEuNzI3IDEuNTI2IDkuMSA5LjEgMCAwMDQuMzExIDEuNTg5IDkuMyA5LjMgMCAwMDIuMjgxLS4xNSA0LjM3NCA0LjM3NCAwIDAwMi4wMTYtLjgyNCAxLjgxNyAxLjgxNyAwIDAwLjU4OS0uODI0IDEuNTQ3IDEuNTQ3IDAgMDAtLjAwNy0uOTYzIDEuNiAxLjYgMCAwMC0uMjItLjQ2MyAyLjI0MSAyLjI0MSAwIDAwLS4yODktLjQzOCAyLjE3MiAyLjE3MiAwIDAwLS45MTktLjUyYy0xLjM5Mi0uNDYyLTMuMzA1LjE3MS0zLjY3OCAxLjYzM2EzLjMxIDMuMzEgMCAwMC4zMjggMi4xNzEgOS4zOCA5LjM4IDAgMDAxLjI2IDEuOTczIDE3LjkyMyAxNy45MjMgMCAwMDcuNjY0IDUuNTE4em0tLjk5NyAzLjgzN2E2LjEyMyA2LjEyMyAwIDAwLTEuODU4LS40MzVjLS42MzMtLjEwNy0xLjIzOS0uMzQ4LTEuODY4LS41MTRhMTIuNDA5IDEyLjQwOSAwIDAxLTEuODM3LS42ODVjLS4yOTQtLjEyNC0uNjEyLS4xNzktLjkxLS4zYTQuNzE2IDQuNzE2IDAgMDAtLjkyNS0uMjY5Yy0uMzEzLS4wNzUtLjYxNy0uMTg2LS45My0uMjY1LS4zLS4xMjgtLjY1Ni0uMDQyLS45NjItLjE1Mi0uNjMxLS4xNDUtMS4yNy0uMjc1LTEuOS0uNDQ1LS41OTMtLjI4OS0xLjIzNS0uNDM3LTEuODM2LS43MTgtLjU1Ni0uMzcyLTEuMi0uNTQ4LTEuNzg4LS45YS4zOTMuMzkzIDAgMDEuMzk1LS42NzlsLjA0MS4wMjNhNi4xNzQgNi4xNzQgMCAwMDEuNjg4Ljc2N2MuNTc5LjIyNiAxLjE0MS41MyAxLjc0OS43MThhNi40NzUgNi40NzUgMCAwMDEuODQ1LjUxNWMuMzM1LS4wMTQuNTc5LjMyNi45MTYuMzA5YTYuMDkyIDYuMDkyIDAgMDEuOTcxLjExNSAzLjUgMy41IDAgMDAuOTMxLjI5M2MuMzIuMDczLjYxMy4yMzEuOTM2LjNhMS44MTEgMS44MTEgMCAwMS45LjMxMyAxLjcgMS43IDAgMDAuNDUyLjE1N2wuNDQxLjIwN2E5LjE5IDkuMTkgMCAwMDEuODkzLjQgMTguMjU4IDE4LjI1OCAwIDAwMS45LjQ5LjM5My4zOTMgMCAwMS0uMjIxLjc1NXoiIGZpbGw9IiNmZmM2NTciLz48cGF0aCBkPSJNNzYuNDkyIDY2Ljk2Yy0xLjM3NS0uMzM5LTIuNzA5LS43NzUtNC4xMjYtMS0xLjQtLjQ0LTIuNjQ3LS44NzItNC4wMjgtMS4yYTI3LjgxNCAyNy44MTQgMCAwMS00LjA0Ni0xLjM4M2MtLjMyOC0uMTQzLS42NjUtLjIyNy0xLjAwNS0uMzYyYTcuNjg0IDcuNjg0IDAgMDEtLjk3Mi0uNDlsLS40NTgtLjI4OS0uMjI3LS4xNTVhLjY3Ni42NzYgMCAwMS0uMjQtLjMxLjcuNyAwIDAxLjE0OC0uNzMxLjY4My42ODMgMCAwMS43MzktLjE1NCAxNi40OSAxNi40OSAwIDAwMS44OTMuOTQyIDE1Ljk3NiAxNS45NzYgMCAwMDIuMDA3LjYyMmw0LjA4OCAxLjA4MmMuNjczLjIyNCAxLjMyMi41IDIgLjY2OHMxLjM2LjMgMi4wMzguNTIyYy4zMzguMS42NzQuMjI5IDEuMDE0LjMxNWwxLjAzLjIyMi41MTUuMTExYS45NS45NSAwIDAxLjM3Mi4xMzcuODEyLjgxMiAwIDAxLjExOCAxLjI1Ljg2Mi44NjIgMCAwMS0uODYuMjAzem0uMjE2LS43NTdjLjE0Mi4wNDMuMTExLS4wMzEuMTExLS4wNTVhLjA1LjA1IDAgMDAtLjAxOC0uMDE4LjYuNiAwIDAwLS4xLS4wMjRsLS41MTktLjExN2MtLjY4OS0uMTY5LTEuMzkxLS4zLTIuMDc3LS40MzUtMS4zNDUtLjMzLTIuNzY3LS43OTQtNC4wOC0xLjIzM2EzNC42MzYgMzQuNjM2IDAgMDAtNC4wOC0xLjE2N2MtLjcyNS0uMS0xLjI4OS0uNjI2LTEuOTktLjc5MS0uMzM4LS4xMi0uNjg2LS4yMjUtMS4wMjItLjM2NWwtLjUwNi0uMjE0LS4yNTEtLjExNy0uMTItLjA2OGMtLjA0OC0uMDI5LS4wNzktLjA0Ni0uMDU5LS4wMzYuMDYyLS4wMS4wMDYtLjA2OS4wMS0uMDQxaC4wMDVsLjIxLjEyOS40NDQuMjQ3YTguMiA4LjIgMCAwMDEuODc5LjggOS44NDIgOS44NDIgMCAwMTEuOTcyLjcgNi43MDggNi43MDggMCAwMDEgLjMxOWwuOTk1LjM0YzEuMzQxLjQyNSAyLjguNjczIDQuMTA2IDEuMWEzOS4xNjQgMzkuMTY0IDAgMDA0LjA5IDEuMDQzeiIgZmlsbD0iI2ZmYzY1NyIvPjxwYXRoIGQ9Ik02OC4xIDQ0LjkwNmMuMDM2LS4yOTMtLjIzMy0uNTc2LS40NTEtLjQ3M2EuNTE1LjUxNSAwIDAwLS4wOS43MjdjLjE4Mi4xOTEuNS4wMzkuNTQxLS4yNTQiIGZpbGw9IiNmZmM3NTciLz48cGF0aCBkPSJNNjcuNzA3IDQ0Ljg1N2MtLjAzOC0uMDMyLS4xNTkuMDIzLS4wMjItLjAxNWEuMzEuMzEgMCAwMC4wNS0uMDE0Yy4wMjEtLjAyNy4wMy0uMDc2LjA0NS0uMDY4LjAyNy0uMDEzLjAzOC0uMDMyLjAzNS0uMDM4cy0uMTQ0LS4wMDgtLjE1NC4wNjVjMCAuMTU0LjIuMjE5LjEyLjA4Mi0uMDUtLjA3Ny0uMDc3LjAxOC0uMDI5LjAzOS4wMS0uMDA3IDAtLjA0MS0uMDQ1LS4wNTFhLjY1Ni42NTYgMCAxMS44MDktLjYyNWwtLjAxNS43MjRhLjc3Mi43NzIgMCAwMS0uMjI5LjU1MWMtLjE2Ni4xNjEtLjQyOS4xMjEtLjY1Ni4xMTNhLjcuNyAwIDAxLS41LS40MTUgMS4wODUgMS4wODUgMCAwMS0uMDgyLS41YzAtLjE1NS0uMDU0LS4zOTIuMTcyLS41NDdhLjc2Ni43NjYgMCAwMS40LS4wOTFjLjA2OS4wMjUuMTI0LS4wMjMuMTktLjAzMWEuNDUuNDUgMCAwMS4xNTkuMDc4IDIuNDEyIDIuNDEyIDAgMDEuMTkzLjJjLjA2My4wNDMuMTkxLjA1Mi4yMjMuMTM3YS43LjcgMCAwMS4xMzMuNTA2LjI5NC4yOTQgMCAwMS0uNDc3LjE3em00LjEgMS4zNDNjLjA2Ny0uNTUzLS41MDctMS4xLS45NjItLjkyMWEuOS45IDAgMDAtLjE2NyAxLjM3Mi42ODcuNjg3IDAgMDAxLjEyOS0uNDUxIiBmaWxsPSIjZmZjNzU3Ii8+PHBhdGggZD0iTTcxLjQxIDQ2LjE1NGMtLjAyMi0uMTg4LS4yNDItLjMyNC0uMzI1LS40NTVsLS4wMzgtLjAzNWMtLjAwOC0uMDI5LS4wMjctLjA3OC0uMDQxLS4wNjJhLjE3Mi4xNzIgMCAwMC0uMDkzLjAyNWMtLjA1NS4wNDItLjI0MS4xMjQtLjI2My4yOS0uMDEyLjMzLjI0NS41ODkuNC41MjMuMDcyLS4wNS4xNTMuMDA1LjI3My0uMDIyYS4yMzIuMjMyIDAgMDAuMDg2LS4yNjMuNDE2LjQxNiAwIDExLjgwNi0uMTI3bC0uMDExLjIyNGExLjEgMS4xIDAgMDEtLjQxNS44MDkgMS4yNTggMS4yNTggMCAwMS0uOS4xMyAxLjAzOSAxLjAzOSAwIDAxLS43MTItLjU1MiAxLjQ4IDEuNDggMCAwMS0uMTQ5LS44LjkxMi45MTIgMCAwMS4zMzgtLjgyOS45ODYuOTg2IDAgMDEuNTI4LS4xMTFjLjA4Ni4wMjYuMTYyLS4wMTYuMjQ1LS4wMjFhLjc2Mi43NjIgMCAwMS4yMTEuMDk0IDIuODg2IDIuODg2IDAgMDEuMzA5LjI1N2MuMS4wNjguMjU5LjEwNi4zMjMuMjI4YTEuMDkyIDEuMDkyIDAgMDEuMjI1LjguNC40IDAgMDEtLjc4NS0uMDE1eiIgZmlsbD0iI2ZmYzc1NyIvPjwvc3ZnPgo=';
|
10059 |
|
10060 | var styles$O = {
|
10061 | "Image": "Polaris-EmptySearchResult__Image"
|
10062 | };
|
10063 |
|
10064 | function EmptySearchResult(_ref) {
|
10065 | var title = _ref.title,
|
10066 | description = _ref.description,
|
10067 | withIllustration = _ref.withIllustration;
|
10068 | var i18n = useI18n();
|
10069 | var altText = i18n.translate('Polaris.EmptySearchResult.altText');
|
10070 | var descriptionMarkup = description ? React__default.createElement("p", null, description) : null;
|
10071 | var illustrationMarkup = withIllustration ? React__default.createElement(Image, {
|
10072 | alt: altText,
|
10073 | source: emptySearch,
|
10074 | className: styles$O.Image,
|
10075 | draggable: false
|
10076 | }) : null;
|
10077 | return React__default.createElement(Stack, {
|
10078 | alignment: "center",
|
10079 | vertical: true
|
10080 | }, illustrationMarkup, React__default.createElement(DisplayText, {
|
10081 | size: "small"
|
10082 | }, title), React__default.createElement(TextStyle, {
|
10083 | variation: "subdued"
|
10084 | }, descriptionMarkup));
|
10085 | }
|
10086 |
|
10087 | var styles$P = {
|
10088 | "EmptyState": "Polaris-EmptyState",
|
10089 | "Section": "Polaris-EmptyState__Section",
|
10090 | "ImageContainer": "Polaris-EmptyState__ImageContainer",
|
10091 | "DetailsContainer": "Polaris-EmptyState__DetailsContainer",
|
10092 | "withinContentContainer": "Polaris-EmptyState--withinContentContainer",
|
10093 | "Details": "Polaris-EmptyState__Details",
|
10094 | "Image": "Polaris-EmptyState__Image",
|
10095 | "Content": "Polaris-EmptyState__Content",
|
10096 | "withinPage": "Polaris-EmptyState--withinPage",
|
10097 | "imageContained": "Polaris-EmptyState--imageContained",
|
10098 | "Actions": "Polaris-EmptyState__Actions",
|
10099 | "FooterContent": "Polaris-EmptyState__FooterContent"
|
10100 | };
|
10101 |
|
10102 | function EmptyState(_ref) {
|
10103 | var children = _ref.children,
|
10104 | heading = _ref.heading,
|
10105 | image = _ref.image,
|
10106 | largeImage = _ref.largeImage,
|
10107 | imageContained = _ref.imageContained,
|
10108 | action = _ref.action,
|
10109 | secondaryAction = _ref.secondaryAction,
|
10110 | footerContent = _ref.footerContent;
|
10111 | var withinContentContainer = useContext(WithinContentContext);
|
10112 | var className = classNames(styles$P.EmptyState, imageContained && styles$P.imageContained, withinContentContainer ? styles$P.withinContentContainer : styles$P.withinPage);
|
10113 | var imageMarkup = largeImage ? React__default.createElement(Image, {
|
10114 | alt: "",
|
10115 | role: "presentation",
|
10116 | className: styles$P.Image,
|
10117 | source: largeImage,
|
10118 | sourceSet: [{
|
10119 | source: image,
|
10120 | descriptor: '568w'
|
10121 | }, {
|
10122 | source: largeImage,
|
10123 | descriptor: '1136w'
|
10124 | }],
|
10125 | sizes: "(max-width: 568px) 60vw"
|
10126 | }) : React__default.createElement(Image, {
|
10127 | role: "presentation",
|
10128 | alt: "",
|
10129 | className: styles$P.Image,
|
10130 | source: image
|
10131 | });
|
10132 | var secondaryActionMarkup = secondaryAction ? buttonFrom(secondaryAction, {
|
10133 | plain: true
|
10134 | }) : null;
|
10135 | var footerContentMarkup = footerContent ? React__default.createElement("div", {
|
10136 | className: styles$P.FooterContent
|
10137 | }, React__default.createElement(TextContainer, null, footerContent)) : null;
|
10138 | var headingSize = withinContentContainer ? 'small' : 'medium';
|
10139 | var primaryActionSize = withinContentContainer ? 'medium' : 'large';
|
10140 | var primaryActionMarkup = action ? buttonFrom(action, {
|
10141 | primary: true,
|
10142 | size: primaryActionSize
|
10143 | }) : null;
|
10144 | var headingMarkup = heading ? React__default.createElement(DisplayText, {
|
10145 | size: headingSize
|
10146 | }, heading) : null;
|
10147 | var childrenMarkup = children ? React__default.createElement("div", {
|
10148 | className: styles$P.Content
|
10149 | }, children) : null;
|
10150 | var textContentMarkup = headingMarkup || children ? React__default.createElement(TextContainer, null, headingMarkup, childrenMarkup) : null;
|
10151 | var actionsMarkup = primaryActionMarkup || secondaryActionMarkup ? React__default.createElement("div", {
|
10152 | className: styles$P.Actions
|
10153 | }, React__default.createElement(Stack, {
|
10154 | alignment: "center"
|
10155 | }, primaryActionMarkup, secondaryActionMarkup)) : null;
|
10156 | var detailsMarkup = textContentMarkup || actionsMarkup || footerContentMarkup ? React__default.createElement("div", {
|
10157 | className: styles$P.DetailsContainer
|
10158 | }, React__default.createElement("div", {
|
10159 | className: styles$P.Details
|
10160 | }, textContentMarkup, actionsMarkup, footerContentMarkup)) : React__default.createElement("div", {
|
10161 | className: styles$P.DetailsContainer
|
10162 | });
|
10163 | return React__default.createElement("div", {
|
10164 | className: className
|
10165 | }, React__default.createElement("div", {
|
10166 | className: styles$P.Section
|
10167 | }, detailsMarkup, React__default.createElement("div", {
|
10168 | className: styles$P.ImageContainer
|
10169 | }, imageMarkup)));
|
10170 | }
|
10171 |
|
10172 | var styles$Q = {
|
10173 | "Truncate": "Polaris-Truncate"
|
10174 | };
|
10175 |
|
10176 | function Truncate(_ref) {
|
10177 | var children = _ref.children;
|
10178 | return React__default.createElement("span", {
|
10179 | className: styles$Q.Truncate
|
10180 | }, children);
|
10181 | }
|
10182 |
|
10183 | var styles$R = {
|
10184 | "ExceptionList": "Polaris-ExceptionList",
|
10185 | "Item": "Polaris-ExceptionList__Item",
|
10186 | "Icon": "Polaris-ExceptionList__Icon",
|
10187 | "statusWarning": "Polaris-ExceptionList--statusWarning",
|
10188 | "statusCritical": "Polaris-ExceptionList--statusCritical",
|
10189 | "Bullet": "Polaris-ExceptionList__Bullet",
|
10190 | "Title": "Polaris-ExceptionList__Title",
|
10191 | "Description": "Polaris-ExceptionList__Description"
|
10192 | };
|
10193 |
|
10194 | function ExceptionList(_ref) {
|
10195 | var itemsList = _ref.items;
|
10196 | var items = itemsList.map(function (item, index) {
|
10197 | var status = item.status,
|
10198 | icon = item.icon,
|
10199 | title = item.title,
|
10200 | description = item.description,
|
10201 | _item$truncate = item.truncate,
|
10202 | truncate = _item$truncate === void 0 ? false : _item$truncate;
|
10203 | var itemClasses = classNames(styles$R.Item, status && styles$R[variationName('status', status)]);
|
10204 | var iconMarkup = icon ? React__default.createElement(Icon, {
|
10205 | source: icon
|
10206 | }) : React__default.createElement("span", {
|
10207 | className: styles$R.Bullet
|
10208 | });
|
10209 | var titleMarkup = title && React__default.createElement("span", {
|
10210 | className: styles$R.Title
|
10211 | }, title);
|
10212 | var descriptionMarkup = description && React__default.createElement("span", {
|
10213 | className: styles$R.Description
|
10214 | }, description);
|
10215 | var Element = truncate ? Truncate : React__default.Fragment;
|
10216 | return React__default.createElement("li", {
|
10217 | className: itemClasses,
|
10218 | key: index
|
10219 | }, React__default.createElement("span", {
|
10220 | className: styles$R.Icon
|
10221 | }, iconMarkup), React__default.createElement(Element, null, titleMarkup, descriptionMarkup));
|
10222 | });
|
10223 | return React__default.createElement("ul", {
|
10224 | className: styles$R.ExceptionList
|
10225 | }, items);
|
10226 | }
|
10227 |
|
10228 | var ResourceListContext = React__default.createContext({});
|
10229 |
|
10230 | var SELECT_ALL_ITEMS = 'All';
|
10231 |
|
10232 | var styles$S = {
|
10233 | "Tag": "Polaris-Tag",
|
10234 | "disabled": "Polaris-Tag--disabled",
|
10235 | "TagText": "Polaris-Tag__TagText",
|
10236 | "Button": "Polaris-Tag__Button"
|
10237 | };
|
10238 |
|
10239 | function Tag(_ref) {
|
10240 | var children = _ref.children,
|
10241 | _ref$disabled = _ref.disabled,
|
10242 | disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
10243 | onRemove = _ref.onRemove;
|
10244 | var i18n = useI18n();
|
10245 | var className = classNames(disabled && styles$S.disabled, styles$S.Tag);
|
10246 | var ariaLabel = i18n.translate('Polaris.Tag.ariaLabel', {
|
10247 | children
|
10248 | });
|
10249 | return React__default.createElement("span", {
|
10250 | className: className
|
10251 | }, React__default.createElement("span", {
|
10252 | title: children,
|
10253 | className: styles$S.TagText
|
10254 | }, children), React__default.createElement("button", {
|
10255 | type: "button",
|
10256 | "aria-label": ariaLabel,
|
10257 | className: styles$S.Button,
|
10258 | onClick: onRemove,
|
10259 | onMouseUp: handleMouseUpByBlurring,
|
10260 | disabled: disabled
|
10261 | }, React__default.createElement(Icon, {
|
10262 | source: CancelSmallMinor
|
10263 | })));
|
10264 | }
|
10265 |
|
10266 | var Focus =
|
10267 |
|
10268 | function (_React$PureComponent) {
|
10269 | _inherits(Focus, _React$PureComponent);
|
10270 |
|
10271 | function Focus() {
|
10272 | _classCallCheck(this, Focus);
|
10273 |
|
10274 | return _possibleConstructorReturn(this, _getPrototypeOf(Focus).apply(this, arguments));
|
10275 | }
|
10276 |
|
10277 | _createClass(Focus, [{
|
10278 | key: "componentDidMount",
|
10279 | value: function componentDidMount() {
|
10280 | this.handleSelfFocus();
|
10281 | }
|
10282 | }, {
|
10283 | key: "componentDidUpdate",
|
10284 | value: function componentDidUpdate(_a) {
|
10285 | var prevChildren = _a.children,
|
10286 | restPrevProps = __rest(_a, ["children"]);
|
10287 |
|
10288 | var _b = this.props,
|
10289 | children = _b.children,
|
10290 | restProps = __rest(_b, ["children"]);
|
10291 |
|
10292 | if (isEqual(restProps, restPrevProps)) {
|
10293 | return;
|
10294 | }
|
10295 |
|
10296 | this.handleSelfFocus();
|
10297 | }
|
10298 | }, {
|
10299 | key: "handleSelfFocus",
|
10300 | value: function handleSelfFocus() {
|
10301 | var _this$props = this.props,
|
10302 | disabled = _this$props.disabled,
|
10303 | root = _this$props.root;
|
10304 |
|
10305 | if (disabled) {
|
10306 | return;
|
10307 | }
|
10308 |
|
10309 | if (root) {
|
10310 | if (!root.querySelector('[autofocus]')) {
|
10311 | focusFirstFocusableNode(root, false);
|
10312 | }
|
10313 | }
|
10314 | }
|
10315 | }, {
|
10316 | key: "render",
|
10317 | value: function render() {
|
10318 | var children = this.props.children;
|
10319 | return React__default.createElement(React__default.Fragment, null, children);
|
10320 | }
|
10321 | }]);
|
10322 |
|
10323 | return Focus;
|
10324 | }(React__default.PureComponent);
|
10325 |
|
10326 | var TrapFocus =
|
10327 |
|
10328 | function (_React$PureComponent) {
|
10329 | _inherits(TrapFocus, _React$PureComponent);
|
10330 |
|
10331 | function TrapFocus() {
|
10332 | var _this;
|
10333 |
|
10334 | _classCallCheck(this, TrapFocus);
|
10335 |
|
10336 | _this = _possibleConstructorReturn(this, _getPrototypeOf(TrapFocus).apply(this, arguments));
|
10337 | _this.state = {
|
10338 | shouldFocusSelf: undefined
|
10339 | };
|
10340 |
|
10341 | _this.setFocusTrapWrapper = function (node) {
|
10342 | _this.focusTrapWrapper = node;
|
10343 | };
|
10344 |
|
10345 | _this.handleBlur = function (event) {
|
10346 | var relatedTarget = event.relatedTarget;
|
10347 |
|
10348 | var _assertThisInitialize = _assertThisInitialized(_this),
|
10349 | focusTrapWrapper = _assertThisInitialize.focusTrapWrapper;
|
10350 |
|
10351 | var _this$props$trapping = _this.props.trapping,
|
10352 | trapping = _this$props$trapping === void 0 ? true : _this$props$trapping;
|
10353 |
|
10354 | if (relatedTarget == null || trapping === false) {
|
10355 | return;
|
10356 | }
|
10357 |
|
10358 | if (focusTrapWrapper && !focusTrapWrapper.contains(relatedTarget) && (!relatedTarget || !closest(relatedTarget, '[data-polaris-overlay]'))) {
|
10359 | event.preventDefault();
|
10360 |
|
10361 | if (event.srcElement === findFirstFocusableNode(focusTrapWrapper)) {
|
10362 | return write(function () {
|
10363 | return focusLastFocusableNode(focusTrapWrapper);
|
10364 | });
|
10365 | }
|
10366 |
|
10367 | var firstNode = findFirstFocusableNode(focusTrapWrapper);
|
10368 | write(function () {
|
10369 | return focusFirstFocusableNode(firstNode);
|
10370 | });
|
10371 | }
|
10372 | };
|
10373 |
|
10374 | return _this;
|
10375 | }
|
10376 |
|
10377 | _createClass(TrapFocus, [{
|
10378 | key: "componentDidMount",
|
10379 | value: function componentDidMount() {
|
10380 | this.setState(this.handleTrappingChange());
|
10381 | }
|
10382 | }, {
|
10383 | key: "handleTrappingChange",
|
10384 | value: function handleTrappingChange() {
|
10385 | var _this$props$trapping2 = this.props.trapping,
|
10386 | trapping = _this$props$trapping2 === void 0 ? true : _this$props$trapping2;
|
10387 |
|
10388 | if (this.focusTrapWrapper.contains(document.activeElement)) {
|
10389 | return {
|
10390 | shouldFocusSelf: false
|
10391 | };
|
10392 | }
|
10393 |
|
10394 | return {
|
10395 | shouldFocusSelf: trapping
|
10396 | };
|
10397 | }
|
10398 | }, {
|
10399 | key: "render",
|
10400 | value: function render() {
|
10401 | var children = this.props.children;
|
10402 | return React__default.createElement(Focus, {
|
10403 | disabled: this.shouldDisable,
|
10404 | root: this.focusTrapWrapper
|
10405 | }, React__default.createElement("div", {
|
10406 | ref: this.setFocusTrapWrapper
|
10407 | }, React__default.createElement(EventListener, {
|
10408 | event: "focusout",
|
10409 | handler: this.handleBlur
|
10410 | }), children));
|
10411 | }
|
10412 | }, {
|
10413 | key: "shouldDisable",
|
10414 | get: function get() {
|
10415 | var _this$props$trapping3 = this.props.trapping,
|
10416 | trapping = _this$props$trapping3 === void 0 ? true : _this$props$trapping3;
|
10417 | var shouldFocusSelf = this.state.shouldFocusSelf;
|
10418 |
|
10419 | if (shouldFocusSelf === undefined) {
|
10420 | return true;
|
10421 | }
|
10422 |
|
10423 | return shouldFocusSelf ? !trapping : !shouldFocusSelf;
|
10424 | }
|
10425 | }]);
|
10426 |
|
10427 | return TrapFocus;
|
10428 | }(React__default.PureComponent);
|
10429 |
|
10430 | var styles$T = {
|
10431 | "Sheet": "Polaris-Sheet",
|
10432 | "Container": "Polaris-Sheet__Container",
|
10433 | "Bottom": "Polaris-Sheet__Bottom",
|
10434 | "enterBottom": "Polaris-Sheet--enterBottom",
|
10435 | "enterBottomActive": "Polaris-Sheet--enterBottomActive",
|
10436 | "exitBottom": "Polaris-Sheet--exitBottom",
|
10437 | "exitBottomActive": "Polaris-Sheet--exitBottomActive",
|
10438 | "Right": "Polaris-Sheet__Right",
|
10439 | "enterRight": "Polaris-Sheet--enterRight",
|
10440 | "enterRightActive": "Polaris-Sheet--enterRightActive",
|
10441 | "exitRight": "Polaris-Sheet--exitRight",
|
10442 | "exitRightActive": "Polaris-Sheet--exitRightActive"
|
10443 | };
|
10444 |
|
10445 | var BOTTOM_CLASS_NAMES = {
|
10446 | enter: classNames(styles$T.Bottom, styles$T.enterBottom),
|
10447 | enterActive: classNames(styles$T.Bottom, styles$T.enterBottomActive),
|
10448 | exit: classNames(styles$T.Bottom, styles$T.exitBottom),
|
10449 | exitActive: classNames(styles$T.Bottom, styles$T.exitBottomActive)
|
10450 | };
|
10451 | var RIGHT_CLASS_NAMES = {
|
10452 | enter: classNames(styles$T.Right, styles$T.enterRight),
|
10453 | enterActive: classNames(styles$T.Right, styles$T.enterRightActive),
|
10454 | exit: classNames(styles$T.Right, styles$T.exitRight),
|
10455 | exitActive: classNames(styles$T.Right, styles$T.exitRightActive)
|
10456 | };
|
10457 | function Sheet(_ref) {
|
10458 | var children = _ref.children,
|
10459 | open = _ref.open,
|
10460 | onClose = _ref.onClose,
|
10461 | onEntered = _ref.onEntered,
|
10462 | onExit = _ref.onExit;
|
10463 |
|
10464 | var _useMediaQuery = useMediaQuery(),
|
10465 | isNavigationCollapsed = _useMediaQuery.isNavigationCollapsed;
|
10466 |
|
10467 | var container = useRef(null);
|
10468 | var findDOMNode = useCallback(function () {
|
10469 | return container.current;
|
10470 | }, []);
|
10471 | return React__default.createElement(Portal, {
|
10472 | idPrefix: "sheet"
|
10473 | }, React__default.createElement(CSSTransition, {
|
10474 | findDOMNode: findDOMNode,
|
10475 | classNames: isNavigationCollapsed ? BOTTOM_CLASS_NAMES : RIGHT_CLASS_NAMES,
|
10476 | timeout: Duration.Slow,
|
10477 | in: open,
|
10478 | mountOnEnter: true,
|
10479 | unmountOnExit: true,
|
10480 | onEntered: onEntered,
|
10481 | onExit: onExit
|
10482 | }, React__default.createElement("div", Object.assign({
|
10483 | className: styles$T.Container
|
10484 | }, layer.props, overlay.props, {
|
10485 | ref: container
|
10486 | }), React__default.createElement(TrapFocus, {
|
10487 | trapping: open
|
10488 | }, React__default.createElement("div", {
|
10489 | role: "dialog",
|
10490 | tabIndex: -1,
|
10491 | className: styles$T.Sheet
|
10492 | }, children)))), React__default.createElement(KeypressListener, {
|
10493 | keyCode: Key.Escape,
|
10494 | handler: onClose
|
10495 | }), open && React__default.createElement(Backdrop, {
|
10496 | transparent: true,
|
10497 | onClick: onClose
|
10498 | }));
|
10499 | }
|
10500 |
|
10501 | var styles$U = {
|
10502 | "Item": "Polaris-Filters-ConnectedFilterControl__Item",
|
10503 | "Item-focused": "Polaris-Filters-ConnectedFilterControl__Item--focused",
|
10504 | "ProxyButtonContainer": "Polaris-Filters-ConnectedFilterControl__ProxyButtonContainer",
|
10505 | "ConnectedFilterControl": "Polaris-Filters-ConnectedFilterControl",
|
10506 | "CenterContainer": "Polaris-Filters-ConnectedFilterControl__CenterContainer",
|
10507 | "right": "Polaris-Filters-ConnectedFilterControl--right",
|
10508 | "RightContainer": "Polaris-Filters-ConnectedFilterControl__RightContainer",
|
10509 | "MoreFiltersButtonContainer": "Polaris-Filters-ConnectedFilterControl__MoreFiltersButtonContainer",
|
10510 | "Wrapper": "Polaris-Filters-ConnectedFilterControl__Wrapper",
|
10511 | "AuxiliaryContainer": "Polaris-Filters-ConnectedFilterControl__AuxiliaryContainer"
|
10512 | };
|
10513 |
|
10514 | var Item$4 =
|
10515 |
|
10516 | function (_React$PureComponent) {
|
10517 | _inherits(Item, _React$PureComponent);
|
10518 |
|
10519 | function Item() {
|
10520 | var _this;
|
10521 |
|
10522 | _classCallCheck(this, Item);
|
10523 |
|
10524 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Item).apply(this, arguments));
|
10525 | _this.state = {
|
10526 | focused: false
|
10527 | };
|
10528 |
|
10529 | _this.handleBlur = function () {
|
10530 | _this.setState({
|
10531 | focused: false
|
10532 | });
|
10533 | };
|
10534 |
|
10535 | _this.handleFocus = function () {
|
10536 | _this.setState({
|
10537 | focused: true
|
10538 | });
|
10539 | };
|
10540 |
|
10541 | return _this;
|
10542 | }
|
10543 |
|
10544 | _createClass(Item, [{
|
10545 | key: "render",
|
10546 | value: function render() {
|
10547 | var focused = this.state.focused;
|
10548 | var children = this.props.children;
|
10549 | var className = classNames(styles$U.Item, focused && styles$U['Item-focused']);
|
10550 | return React__default.createElement("div", {
|
10551 | onBlur: this.handleBlur,
|
10552 | onFocus: this.handleFocus,
|
10553 | className: className
|
10554 | }, children);
|
10555 | }
|
10556 | }]);
|
10557 |
|
10558 | return Item;
|
10559 | }(React__default.PureComponent);
|
10560 |
|
10561 | var FILTER_FIELD_MIN_WIDTH = 150;
|
10562 | var ConnectedFilterControl =
|
10563 |
|
10564 | function (_React$Component) {
|
10565 | _inherits(ConnectedFilterControl, _React$Component);
|
10566 |
|
10567 | function ConnectedFilterControl() {
|
10568 | var _this;
|
10569 |
|
10570 | _classCallCheck(this, ConnectedFilterControl);
|
10571 |
|
10572 | _this = _possibleConstructorReturn(this, _getPrototypeOf(ConnectedFilterControl).apply(this, arguments));
|
10573 | _this.state = {
|
10574 | availableWidth: 0,
|
10575 | proxyButtonsWidth: {}
|
10576 | };
|
10577 | _this.container = React__default.createRef();
|
10578 | _this.proxyButtonContainer = React__default.createRef();
|
10579 | _this.moreFiltersButtonContainer = React__default.createRef();
|
10580 | _this.handleResize = debounce(function () {
|
10581 | _this.measureProxyButtons();
|
10582 |
|
10583 | _this.measureAvailableWidth();
|
10584 | }, 40, {
|
10585 | leading: true,
|
10586 | trailing: true,
|
10587 | maxWait: 40
|
10588 | });
|
10589 | return _this;
|
10590 | }
|
10591 |
|
10592 | _createClass(ConnectedFilterControl, [{
|
10593 | key: "componentDidMount",
|
10594 | value: function componentDidMount() {
|
10595 | this.handleResize();
|
10596 | }
|
10597 | }, {
|
10598 | key: "render",
|
10599 | value: function render() {
|
10600 | var _this2 = this;
|
10601 |
|
10602 | var _this$props = this.props,
|
10603 | children = _this$props.children,
|
10604 | rightPopoverableActions = _this$props.rightPopoverableActions,
|
10605 | rightAction = _this$props.rightAction,
|
10606 | auxiliary = _this$props.auxiliary;
|
10607 | var className = classNames(styles$U.ConnectedFilterControl, rightPopoverableActions && styles$U.right);
|
10608 | var rightMarkup = rightPopoverableActions ? React__default.createElement("div", {
|
10609 | className: styles$U.RightContainer
|
10610 | }, this.popoverFrom(this.getActionsToRender(rightPopoverableActions))) : null;
|
10611 | var rightActionMarkup = rightAction ? React__default.createElement("div", {
|
10612 | ref: this.moreFiltersButtonContainer,
|
10613 | className: styles$U.MoreFiltersButtonContainer
|
10614 | }, React__default.createElement(Item$4, null, rightAction)) : null;
|
10615 | var proxyButtonMarkup = rightPopoverableActions ? React__default.createElement("div", {
|
10616 | className: styles$U.ProxyButtonContainer,
|
10617 | ref: this.proxyButtonContainer,
|
10618 | "aria-hidden": true
|
10619 | }, rightPopoverableActions.map(function (action) {
|
10620 | return React__default.createElement("div", {
|
10621 | key: action.key,
|
10622 | "data-key": action.key
|
10623 | }, _this2.activatorButtonFrom(action));
|
10624 | })) : null;
|
10625 | var auxMarkup = auxiliary ? React__default.createElement("div", {
|
10626 | className: styles$U.AuxiliaryContainer
|
10627 | }, auxiliary) : null;
|
10628 | return React__default.createElement(React__default.Fragment, null, proxyButtonMarkup, React__default.createElement("div", {
|
10629 | className: styles$U.Wrapper
|
10630 | }, React__default.createElement("div", {
|
10631 | className: className,
|
10632 | ref: this.container
|
10633 | }, React__default.createElement("div", {
|
10634 | className: styles$U.CenterContainer
|
10635 | }, React__default.createElement(Item$4, null, children)), rightMarkup, rightActionMarkup, React__default.createElement(EventListener, {
|
10636 | event: "resize",
|
10637 | handler: this.handleResize
|
10638 | })), auxMarkup));
|
10639 | }
|
10640 | }, {
|
10641 | key: "measureProxyButtons",
|
10642 | value: function measureProxyButtons() {
|
10643 | if (this.proxyButtonContainer.current) {
|
10644 | var proxyButtonsWidth = {};
|
10645 |
|
10646 | var tolerance = 52;
|
10647 |
|
10648 | if (this.proxyButtonContainer.current) {
|
10649 | Array.from(this.proxyButtonContainer.current.children).forEach(function (element) {
|
10650 | var buttonWidth = element.getBoundingClientRect().width + tolerance;
|
10651 | var buttonKey = element.dataset.key;
|
10652 |
|
10653 | if (buttonKey) {
|
10654 | proxyButtonsWidth[buttonKey] = buttonWidth;
|
10655 | }
|
10656 | });
|
10657 | }
|
10658 |
|
10659 | this.setState({
|
10660 | proxyButtonsWidth
|
10661 | });
|
10662 | }
|
10663 | }
|
10664 | }, {
|
10665 | key: "measureAvailableWidth",
|
10666 | value: function measureAvailableWidth() {
|
10667 | if (this.container.current && this.moreFiltersButtonContainer.current) {
|
10668 | var containerWidth = this.container.current.getBoundingClientRect().width;
|
10669 | var moreFiltersButtonWidth = this.moreFiltersButtonContainer.current.getBoundingClientRect().width;
|
10670 | var filtersActionWidth = 0;
|
10671 | var availableWidth = containerWidth - FILTER_FIELD_MIN_WIDTH - moreFiltersButtonWidth - filtersActionWidth;
|
10672 | this.setState({
|
10673 | availableWidth
|
10674 | });
|
10675 | }
|
10676 | }
|
10677 | }, {
|
10678 | key: "getActionsToRender",
|
10679 | value: function getActionsToRender(actions) {
|
10680 | var remainingWidth = this.state.availableWidth;
|
10681 | var actionsToReturn = [];
|
10682 |
|
10683 | for (var i = 0; remainingWidth > 0 && i < actions.length; i++) {
|
10684 | var action = actions[i];
|
10685 | var actionWidth = this.state.proxyButtonsWidth[action.key];
|
10686 |
|
10687 | if (actionWidth <= remainingWidth) {
|
10688 | actionsToReturn.push(action);
|
10689 | remainingWidth -= actionWidth;
|
10690 | }
|
10691 | }
|
10692 |
|
10693 | return actionsToReturn;
|
10694 | }
|
10695 | }, {
|
10696 | key: "activatorButtonFrom",
|
10697 | value: function activatorButtonFrom(action) {
|
10698 | return React__default.createElement(Button, {
|
10699 | onClick: action.onAction,
|
10700 | disclosure: true,
|
10701 | disabled: this.props.disabled || action.disabled,
|
10702 | id: "Activator-".concat(action.key)
|
10703 | }, action.content);
|
10704 | }
|
10705 | }, {
|
10706 | key: "popoverFrom",
|
10707 | value: function popoverFrom(actions) {
|
10708 | var _this3 = this;
|
10709 |
|
10710 | return actions.map(function (action) {
|
10711 | return React__default.createElement(Item$4, {
|
10712 | key: action.key
|
10713 | }, React__default.createElement(Popover, {
|
10714 | active: action.popoverOpen,
|
10715 | activator: _this3.activatorButtonFrom(action),
|
10716 | onClose: action.onAction,
|
10717 | preferredAlignment: "left",
|
10718 | sectioned: true
|
10719 | }, action.popoverContent));
|
10720 | });
|
10721 | }
|
10722 | }]);
|
10723 |
|
10724 | return ConnectedFilterControl;
|
10725 | }(React__default.Component);
|
10726 |
|
10727 | var styles$V = {
|
10728 | "Filters": "Polaris-Filters",
|
10729 | "FiltersContainer": "Polaris-Filters__FiltersContainer",
|
10730 | "FiltersContainerHeader": "Polaris-Filters__FiltersContainerHeader",
|
10731 | "FiltersDesktopContainerContent": "Polaris-Filters__FiltersDesktopContainerContent",
|
10732 | "FiltersMobileContainerContent": "Polaris-Filters__FiltersMobileContainerContent",
|
10733 | "FiltersContainerFooter": "Polaris-Filters__FiltersContainerFooter",
|
10734 | "FiltersMobileContainerFooter": "Polaris-Filters__FiltersMobileContainerFooter",
|
10735 | "EmptyFooterState": "Polaris-Filters__EmptyFooterState",
|
10736 | "FilterTriggerContainer": "Polaris-Filters__FilterTriggerContainer",
|
10737 | "FilterTrigger": "Polaris-Filters__FilterTrigger",
|
10738 | "FilterTriggerTitle": "Polaris-Filters__FilterTriggerTitle",
|
10739 | "AppliedFilterBadgeContainer": "Polaris-Filters__AppliedFilterBadgeContainer",
|
10740 | "open": "Polaris-Filters--open",
|
10741 | "FilterTriggerLabelContainer": "Polaris-Filters__FilterTriggerLabelContainer",
|
10742 | "first": "Polaris-Filters--first",
|
10743 | "last": "Polaris-Filters--last",
|
10744 | "FilterNodeContainer": "Polaris-Filters__FilterNodeContainer",
|
10745 | "SearchIcon": "Polaris-Filters__SearchIcon",
|
10746 | "Backdrop": "Polaris-Filters__Backdrop",
|
10747 | "HelpText": "Polaris-Filters__HelpText",
|
10748 | "TagsContainer": "Polaris-Filters__TagsContainer"
|
10749 | };
|
10750 |
|
10751 | var Suffix;
|
10752 |
|
10753 | (function (Suffix) {
|
10754 | Suffix["Filter"] = "Filter";
|
10755 | Suffix["Shortcut"] = "Shortcut";
|
10756 | })(Suffix || (Suffix = {}));
|
10757 |
|
10758 | var Filters =
|
10759 |
|
10760 | function (_React$Component) {
|
10761 | _inherits(Filters, _React$Component);
|
10762 |
|
10763 | function Filters() {
|
10764 | var _this;
|
10765 |
|
10766 | _classCallCheck(this, Filters);
|
10767 |
|
10768 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Filters).apply(this, arguments));
|
10769 | _this.state = {
|
10770 | open: false,
|
10771 | readyForFocus: false
|
10772 | };
|
10773 | _this.moreFiltersButtonContainer = createRef();
|
10774 | _this.focusNode = createRef();
|
10775 |
|
10776 | _this.closeFilters = function () {
|
10777 | _this.setState({
|
10778 | open: false
|
10779 | }, function () {
|
10780 | if (_this.moreFiltersButtonContainer.current) {
|
10781 | focusFirstFocusableNode(_this.moreFiltersButtonContainer.current, false);
|
10782 | }
|
10783 | });
|
10784 | };
|
10785 |
|
10786 | _this.toggleFilters = function () {
|
10787 | if (_this.state.open === true) {
|
10788 | _this.closeFilters();
|
10789 | } else {
|
10790 | _this.openFilters();
|
10791 | }
|
10792 | };
|
10793 |
|
10794 | _this.setReadyForFocus = function (newState) {
|
10795 | return function () {
|
10796 | _this.setState({
|
10797 | readyForFocus: newState
|
10798 | });
|
10799 | };
|
10800 | };
|
10801 |
|
10802 | return _this;
|
10803 | }
|
10804 |
|
10805 | _createClass(Filters, [{
|
10806 | key: "render",
|
10807 | value: function render() {
|
10808 | var _this2 = this;
|
10809 |
|
10810 | var _this$props = this.props,
|
10811 | filters = _this$props.filters,
|
10812 | queryValue = _this$props.queryValue,
|
10813 | onQueryBlur = _this$props.onQueryBlur,
|
10814 | onQueryChange = _this$props.onQueryChange,
|
10815 | onQueryFocus = _this$props.onQueryFocus,
|
10816 | focused = _this$props.focused,
|
10817 | onClearAll = _this$props.onClearAll,
|
10818 | appliedFilters = _this$props.appliedFilters,
|
10819 | _this$props$polaris = _this$props.polaris,
|
10820 | intl = _this$props$polaris.intl,
|
10821 | isNavigationCollapsed = _this$props$polaris.mediaQuery.isNavigationCollapsed,
|
10822 | onQueryClear = _this$props.onQueryClear,
|
10823 | queryPlaceholder = _this$props.queryPlaceholder,
|
10824 | children = _this$props.children,
|
10825 | _this$props$disabled = _this$props.disabled,
|
10826 | disabled = _this$props$disabled === void 0 ? false : _this$props$disabled,
|
10827 | helpText = _this$props.helpText;
|
10828 | var resourceName = this.context.resourceName;
|
10829 | var _this$state = this.state,
|
10830 | open = _this$state.open,
|
10831 | readyForFocus = _this$state.readyForFocus;
|
10832 | var backdropMarkup = open ? React__default.createElement(React__default.Fragment, null, React__default.createElement(ScrollLock, null), React__default.createElement("div", {
|
10833 | className: styles$V.Backdrop,
|
10834 | onClick: this.closeFilters
|
10835 | })) : null;
|
10836 | var filtersContentMarkup = filters.map(function (filter, index) {
|
10837 | var filterIsOpen = _this2.state["".concat(filter.key).concat(Suffix.Filter)] === true;
|
10838 | var icon = filterIsOpen ? ChevronUpMinor : ChevronDownMinor;
|
10839 | var className = classNames(styles$V.FilterTriggerContainer, filterIsOpen && styles$V.open, index === 0 && styles$V.first, filters.length !== 1 && index === filters.length - 1 && styles$V.last);
|
10840 |
|
10841 | var appliedFilterContent = _this2.getAppliedFilterContent(filter.key);
|
10842 |
|
10843 | var appliedFilterBadgeMarkup = appliedFilterContent ? React__default.createElement("div", {
|
10844 | className: styles$V.AppliedFilterBadgeContainer
|
10845 | }, React__default.createElement(Badge, {
|
10846 | size: "small",
|
10847 | status: "new"
|
10848 | }, appliedFilterContent)) : null;
|
10849 | var collapsibleID = "".concat(filter.key, "Collapsible");
|
10850 | return React__default.createElement("div", {
|
10851 | key: filter.key,
|
10852 | className: className
|
10853 | }, React__default.createElement("button", {
|
10854 | onClick: function onClick() {
|
10855 | return _this2.toggleFilter(filter.key);
|
10856 | },
|
10857 | className: styles$V.FilterTrigger,
|
10858 | id: "".concat(filter.key, "ToggleButton"),
|
10859 | type: "button",
|
10860 | "aria-controls": collapsibleID,
|
10861 | "aria-expanded": filterIsOpen
|
10862 | }, React__default.createElement("div", {
|
10863 | className: styles$V.FilterTriggerLabelContainer
|
10864 | }, React__default.createElement("h2", {
|
10865 | className: styles$V.FilterTriggerTitle
|
10866 | }, React__default.createElement(TextStyle, {
|
10867 | variation: _this2.props.disabled || filter.disabled ? VariationValue.Subdued : undefined
|
10868 | }, filter.label)), React__default.createElement("span", {
|
10869 | className: styles$V.FilterTriggerIcon
|
10870 | }, React__default.createElement(Icon, {
|
10871 | source: icon,
|
10872 | color: "inkLightest"
|
10873 | }))), appliedFilterBadgeMarkup), React__default.createElement(Collapsible, {
|
10874 | id: collapsibleID,
|
10875 | open: filterIsOpen
|
10876 | }, React__default.createElement("div", {
|
10877 | className: styles$V.FilterNodeContainer
|
10878 | }, React__default.createElement(Focus, {
|
10879 | disabled: !filterIsOpen || !readyForFocus || !open,
|
10880 | root: _this2.focusNode.current
|
10881 | }, _this2.generateFilterMarkup(filter)))));
|
10882 | });
|
10883 | var rightActionMarkup = React__default.createElement("div", {
|
10884 | ref: this.moreFiltersButtonContainer
|
10885 | }, React__default.createElement(Button, {
|
10886 | onClick: this.toggleFilters,
|
10887 | disabled: disabled
|
10888 | }, intl.translate('Polaris.Filters.moreFilters')));
|
10889 | var filterResourceName = resourceName || {
|
10890 | singular: intl.translate('Polaris.ResourceList.defaultItemSingular'),
|
10891 | plural: intl.translate('Polaris.ResourceList.defaultItemPlural')
|
10892 | };
|
10893 | var filtersControlMarkup = React__default.createElement(ConnectedFilterControl, {
|
10894 | rightPopoverableActions: this.transformFilters(filters),
|
10895 | rightAction: rightActionMarkup,
|
10896 | auxiliary: children,
|
10897 | disabled: disabled
|
10898 | }, React__default.createElement(TextField, {
|
10899 | placeholder: queryPlaceholder || intl.translate('Polaris.Filters.filter', {
|
10900 | resourceName: filterResourceName.plural
|
10901 | }),
|
10902 | onChange: onQueryChange,
|
10903 | onBlur: onQueryBlur,
|
10904 | onFocus: onQueryFocus,
|
10905 | value: queryValue,
|
10906 | focused: focused,
|
10907 | label: queryPlaceholder || intl.translate('Polaris.Filters.filter', {
|
10908 | resourceName: filterResourceName.plural
|
10909 | }),
|
10910 | labelHidden: true,
|
10911 | prefix: React__default.createElement("span", {
|
10912 | className: styles$V.SearchIcon
|
10913 | }, React__default.createElement(Icon, {
|
10914 | source: SearchMinor
|
10915 | })),
|
10916 | clearButton: true,
|
10917 | onClearButtonClick: onQueryClear,
|
10918 | disabled: disabled
|
10919 | }));
|
10920 | var filtersDesktopHeaderMarkup = React__default.createElement("div", {
|
10921 | className: styles$V.FiltersContainerHeader
|
10922 | }, React__default.createElement(DisplayText, {
|
10923 | size: "small"
|
10924 | }, intl.translate('Polaris.Filters.moreFilters')), React__default.createElement(Button, {
|
10925 | icon: CancelSmallMinor,
|
10926 | plain: true,
|
10927 | accessibilityLabel: intl.translate('Polaris.Filters.cancel'),
|
10928 | onClick: this.closeFilters
|
10929 | }));
|
10930 | var filtersMobileHeaderMarkup = React__default.createElement("div", {
|
10931 | className: styles$V.FiltersContainerHeader
|
10932 | }, React__default.createElement(Button, {
|
10933 | icon: CancelSmallMinor,
|
10934 | plain: true,
|
10935 | accessibilityLabel: intl.translate('Polaris.Filters.cancel'),
|
10936 | onClick: this.closeFilters
|
10937 | }), React__default.createElement(DisplayText, {
|
10938 | size: "small"
|
10939 | }, intl.translate('Polaris.Filters.moreFilters')), React__default.createElement(Button, {
|
10940 | onClick: this.closeFilters,
|
10941 | primary: true
|
10942 | }, intl.translate('Polaris.Filters.done')));
|
10943 | var filtersDesktopFooterMarkup = React__default.createElement("div", {
|
10944 | className: styles$V.FiltersContainerFooter
|
10945 | }, React__default.createElement(Button, {
|
10946 | onClick: onClearAll,
|
10947 | disabled: !this.hasAppliedFilters
|
10948 | }, intl.translate('Polaris.Filters.clearAllFilters')), React__default.createElement(Button, {
|
10949 | onClick: this.closeFilters,
|
10950 | primary: true
|
10951 | }, intl.translate('Polaris.Filters.done')));
|
10952 | var filtersMobileFooterMarkup = React__default.createElement("div", {
|
10953 | className: styles$V.FiltersMobileContainerFooter
|
10954 | }, this.hasAppliedFilters ? React__default.createElement(Button, {
|
10955 | onClick: onClearAll,
|
10956 | fullWidth: true
|
10957 | }, intl.translate('Polaris.Filters.clearAllFilters')) : React__default.createElement("div", {
|
10958 | className: styles$V.EmptyFooterState
|
10959 | }, React__default.createElement(TextStyle, {
|
10960 | variation: "subdued"
|
10961 | }, React__default.createElement("p", null, intl.translate('Polaris.Filters.noFiltersApplied')))));
|
10962 | var tagsMarkup = appliedFilters && appliedFilters.length ? React__default.createElement("div", {
|
10963 | className: styles$V.TagsContainer
|
10964 | }, appliedFilters.map(function (filter) {
|
10965 | return React__default.createElement(Tag, {
|
10966 | key: filter.key,
|
10967 | onRemove: function onRemove() {
|
10968 | filter.onRemove(filter.key);
|
10969 | },
|
10970 | disabled: disabled
|
10971 | }, filter.label);
|
10972 | })) : null;
|
10973 | var filtersContainerMarkup = isNavigationCollapsed ? React__default.createElement(Sheet, {
|
10974 | open: open,
|
10975 | onClose: this.closeFilters,
|
10976 | onEntered: this.setReadyForFocus(true),
|
10977 | onExit: this.setReadyForFocus(false)
|
10978 | }, filtersMobileHeaderMarkup, React__default.createElement(Scrollable, {
|
10979 | className: styles$V.FiltersMobileContainerContent,
|
10980 | shadow: true
|
10981 | }, filtersContentMarkup, filtersMobileFooterMarkup)) : React__default.createElement(Sheet, {
|
10982 | open: open,
|
10983 | onClose: this.closeFilters,
|
10984 | onEntered: this.setReadyForFocus(true),
|
10985 | onExit: this.setReadyForFocus(false)
|
10986 | }, React__default.createElement("div", {
|
10987 | className: styles$V.FiltersContainer
|
10988 | }, filtersDesktopHeaderMarkup, React__default.createElement(Scrollable, {
|
10989 | className: styles$V.FiltersDesktopContainerContent,
|
10990 | shadow: true
|
10991 | }, filtersContentMarkup), filtersDesktopFooterMarkup));
|
10992 | var helpTextMarkup = helpText ? React__default.createElement("div", {
|
10993 | id: "FiltersHelpText",
|
10994 | className: styles$V.HelpText
|
10995 | }, React__default.createElement(TextStyle, {
|
10996 | variation: "subdued"
|
10997 | }, helpText)) : null;
|
10998 | return React__default.createElement("div", {
|
10999 | className: styles$V.Filters
|
11000 | }, filtersControlMarkup, filtersContainerMarkup, tagsMarkup, helpTextMarkup, backdropMarkup, React__default.createElement(KeypressListener, {
|
11001 | keyCode: Key.Escape,
|
11002 | handler: this.closeFilters
|
11003 | }));
|
11004 | }
|
11005 | }, {
|
11006 | key: "getAppliedFilterContent",
|
11007 | value: function getAppliedFilterContent(key) {
|
11008 | var appliedFilters = this.props.appliedFilters;
|
11009 |
|
11010 | if (!appliedFilters) {
|
11011 | return undefined;
|
11012 | }
|
11013 |
|
11014 | var filter = appliedFilters.find(function (filter) {
|
11015 | return filter.key === key;
|
11016 | });
|
11017 | return filter == null ? undefined : filter.label;
|
11018 | }
|
11019 | }, {
|
11020 | key: "getAppliedFilterRemoveHandler",
|
11021 | value: function getAppliedFilterRemoveHandler(key) {
|
11022 | var appliedFilters = this.props.appliedFilters;
|
11023 |
|
11024 | if (!appliedFilters) {
|
11025 | return undefined;
|
11026 | }
|
11027 |
|
11028 | var filter = appliedFilters.find(function (filter) {
|
11029 | return filter.key === key;
|
11030 | });
|
11031 | return filter == null ? undefined : filter.onRemove;
|
11032 | }
|
11033 | }, {
|
11034 | key: "openFilters",
|
11035 | value: function openFilters() {
|
11036 | this.setState({
|
11037 | open: true
|
11038 | });
|
11039 | }
|
11040 | }, {
|
11041 | key: "openFilter",
|
11042 | value: function openFilter(key) {
|
11043 | this.setState({
|
11044 | ["".concat(key).concat(Suffix.Filter)]: true
|
11045 | });
|
11046 | }
|
11047 | }, {
|
11048 | key: "closeFilter",
|
11049 | value: function closeFilter(key) {
|
11050 | this.setState({
|
11051 | ["".concat(key).concat(Suffix.Filter)]: false
|
11052 | });
|
11053 | }
|
11054 | }, {
|
11055 | key: "toggleFilter",
|
11056 | value: function toggleFilter(key) {
|
11057 | if (this.state["".concat(key).concat(Suffix.Filter)] === true) {
|
11058 | this.closeFilter(key);
|
11059 | } else {
|
11060 | this.openFilter(key);
|
11061 | }
|
11062 | }
|
11063 | }, {
|
11064 | key: "openFilterShortcut",
|
11065 | value: function openFilterShortcut(key) {
|
11066 | this.setState({
|
11067 | ["".concat(key).concat(Suffix.Shortcut)]: true
|
11068 | });
|
11069 | }
|
11070 | }, {
|
11071 | key: "closeFilterShortcut",
|
11072 | value: function closeFilterShortcut(key) {
|
11073 | this.setState({
|
11074 | ["".concat(key).concat(Suffix.Shortcut)]: false
|
11075 | });
|
11076 | }
|
11077 | }, {
|
11078 | key: "toggleFilterShortcut",
|
11079 | value: function toggleFilterShortcut(key) {
|
11080 | if (this.state["".concat(key).concat(Suffix.Shortcut)] === true) {
|
11081 | this.closeFilterShortcut(key);
|
11082 | } else {
|
11083 | this.openFilterShortcut(key);
|
11084 | }
|
11085 | }
|
11086 | }, {
|
11087 | key: "transformFilters",
|
11088 | value: function transformFilters(filters) {
|
11089 | var _this3 = this;
|
11090 |
|
11091 | var transformedActions = [];
|
11092 | getShortcutFilters(filters).forEach(function (filter) {
|
11093 | var key = filter.key,
|
11094 | label = filter.label,
|
11095 | disabled = filter.disabled;
|
11096 | transformedActions.push({
|
11097 | popoverContent: _this3.generateFilterMarkup(filter),
|
11098 | popoverOpen: _this3.state["".concat(key).concat(Suffix.Shortcut)],
|
11099 | key,
|
11100 | content: label,
|
11101 | disabled,
|
11102 | onAction: function onAction() {
|
11103 | return _this3.toggleFilterShortcut(key);
|
11104 | }
|
11105 | });
|
11106 | });
|
11107 | return transformedActions;
|
11108 | }
|
11109 | }, {
|
11110 | key: "generateFilterMarkup",
|
11111 | value: function generateFilterMarkup(filter) {
|
11112 | var intl = this.props.polaris.intl;
|
11113 | var removeCallback = this.getAppliedFilterRemoveHandler(filter.key);
|
11114 | var removeHandler = removeCallback == null ? undefined : function () {
|
11115 | removeCallback(filter.key);
|
11116 | };
|
11117 | return React__default.createElement("div", {
|
11118 | ref: this.focusNode
|
11119 | }, React__default.createElement(Stack, {
|
11120 | vertical: true,
|
11121 | spacing: "tight"
|
11122 | }, filter.filter, React__default.createElement(Button, {
|
11123 | plain: true,
|
11124 | disabled: removeHandler == null,
|
11125 | onClick: removeHandler,
|
11126 | accessibilityLabel: intl.translate('Polaris.Filters.clearLabel', {
|
11127 | filterName: filter.label
|
11128 | })
|
11129 | }, intl.translate('Polaris.Filters.clear'))));
|
11130 | }
|
11131 | }, {
|
11132 | key: "hasAppliedFilters",
|
11133 | get: function get() {
|
11134 | var _this$props2 = this.props,
|
11135 | appliedFilters = _this$props2.appliedFilters,
|
11136 | queryValue = _this$props2.queryValue;
|
11137 | var filtersApplied = Boolean(appliedFilters && appliedFilters.length > 0);
|
11138 | var queryApplied = Boolean(queryValue && queryValue !== '');
|
11139 | return filtersApplied || queryApplied;
|
11140 | }
|
11141 | }]);
|
11142 |
|
11143 | return Filters;
|
11144 | }(React__default.Component);
|
11145 |
|
11146 | Filters.contextType = ResourceListContext;
|
11147 |
|
11148 | function getShortcutFilters(filters) {
|
11149 | return filters.filter(function (filter) {
|
11150 | return filter.shortcut === true;
|
11151 | });
|
11152 | }
|
11153 |
|
11154 |
|
11155 |
|
11156 | var Filters$1 = withAppProvider()(Filters);
|
11157 |
|
11158 | var styles$W = {
|
11159 | "FooterHelp": "Polaris-FooterHelp",
|
11160 | "Content": "Polaris-FooterHelp__Content",
|
11161 | "Icon": "Polaris-FooterHelp__Icon",
|
11162 | "Text": "Polaris-FooterHelp__Text"
|
11163 | };
|
11164 |
|
11165 | function FooterHelp(_ref) {
|
11166 | var children = _ref.children;
|
11167 | return React__default.createElement("div", {
|
11168 | className: styles$W.FooterHelp
|
11169 | }, React__default.createElement("div", {
|
11170 | className: styles$W.Content
|
11171 | }, React__default.createElement("div", {
|
11172 | className: styles$W.Icon
|
11173 | }, React__default.createElement(Icon, {
|
11174 | source: QuestionMarkMajorTwotone,
|
11175 | color: "teal",
|
11176 | backdrop: true
|
11177 | })), React__default.createElement("div", {
|
11178 | className: styles$W.Text
|
11179 | }, children)));
|
11180 | }
|
11181 |
|
11182 | function Form(_ref) {
|
11183 | var acceptCharset = _ref.acceptCharset,
|
11184 | action = _ref.action,
|
11185 | autoComplete = _ref.autoComplete,
|
11186 | children = _ref.children,
|
11187 | encType = _ref.encType,
|
11188 | _ref$implicitSubmit = _ref.implicitSubmit,
|
11189 | implicitSubmit = _ref$implicitSubmit === void 0 ? true : _ref$implicitSubmit,
|
11190 | _ref$method = _ref.method,
|
11191 | method = _ref$method === void 0 ? 'post' : _ref$method,
|
11192 | name = _ref.name,
|
11193 | noValidate = _ref.noValidate,
|
11194 | _ref$preventDefault = _ref.preventDefault,
|
11195 | preventDefault = _ref$preventDefault === void 0 ? true : _ref$preventDefault,
|
11196 | target = _ref.target,
|
11197 | onSubmit = _ref.onSubmit;
|
11198 | var i18n = useI18n();
|
11199 | var handleSubmit = useCallback(function (event) {
|
11200 | if (!preventDefault) {
|
11201 | return;
|
11202 | }
|
11203 |
|
11204 | event.preventDefault();
|
11205 | onSubmit(event);
|
11206 | }, [onSubmit, preventDefault]);
|
11207 | var autoCompleteInputs = normalizeAutoComplete$1(autoComplete);
|
11208 | var submitMarkup = implicitSubmit ? React__default.createElement(VisuallyHidden, null, React__default.createElement("button", {
|
11209 | type: "submit",
|
11210 | "aria-hidden": "true",
|
11211 | tabIndex: -1
|
11212 | }, i18n.translate('Polaris.Common.submit'))) : null;
|
11213 | return React__default.createElement("form", {
|
11214 | acceptCharset: acceptCharset,
|
11215 | action: action,
|
11216 | autoComplete: autoCompleteInputs,
|
11217 | encType: encType,
|
11218 | method: method,
|
11219 | name: name,
|
11220 | noValidate: noValidate,
|
11221 | target: target,
|
11222 | onSubmit: handleSubmit
|
11223 | }, children, submitMarkup);
|
11224 | }
|
11225 |
|
11226 | function normalizeAutoComplete$1(autoComplete) {
|
11227 | if (autoComplete == null) {
|
11228 | return autoComplete;
|
11229 | }
|
11230 |
|
11231 | return autoComplete ? 'on' : 'off';
|
11232 | }
|
11233 |
|
11234 | var styles$X = {
|
11235 | "FormLayout": "Polaris-FormLayout",
|
11236 | "Title": "Polaris-FormLayout__Title",
|
11237 | "Items": "Polaris-FormLayout__Items",
|
11238 | "HelpText": "Polaris-FormLayout__HelpText",
|
11239 | "Item": "Polaris-FormLayout__Item",
|
11240 | "grouped": "Polaris-FormLayout--grouped",
|
11241 | "condensed": "Polaris-FormLayout--condensed"
|
11242 | };
|
11243 |
|
11244 | function Item$5(props) {
|
11245 | return React__default.createElement("div", {
|
11246 | className: styles$X.Item
|
11247 | }, props.children);
|
11248 | }
|
11249 |
|
11250 | function Group(_ref) {
|
11251 | var children = _ref.children,
|
11252 | condensed = _ref.condensed,
|
11253 | title = _ref.title,
|
11254 | helpText = _ref.helpText;
|
11255 | var className = classNames(condensed ? styles$X.condensed : styles$X.grouped);
|
11256 | var id = useUniqueId('FormLayoutGroup');
|
11257 | var helpTextElement = null;
|
11258 | var helpTextID;
|
11259 | var titleElement = null;
|
11260 | var titleID;
|
11261 |
|
11262 | if (helpText) {
|
11263 | helpTextID = "".concat(id, "HelpText");
|
11264 | helpTextElement = React__default.createElement("div", {
|
11265 | id: helpTextID,
|
11266 | className: styles$X.HelpText
|
11267 | }, helpText);
|
11268 | }
|
11269 |
|
11270 | if (title) {
|
11271 | titleID = "".concat(id, "Title");
|
11272 | titleElement = React__default.createElement("div", {
|
11273 | id: titleID,
|
11274 | className: styles$X.Title
|
11275 | }, title);
|
11276 | }
|
11277 |
|
11278 | var itemsMarkup = React__default.Children.map(children, function (child) {
|
11279 | return wrapWithComponent(child, Item$5, {});
|
11280 | });
|
11281 | return React__default.createElement("div", {
|
11282 | role: "group",
|
11283 | className: className,
|
11284 | "aria-labelledby": titleID,
|
11285 | "aria-describedby": helpTextID
|
11286 | }, titleElement, React__default.createElement("div", {
|
11287 | className: styles$X.Items
|
11288 | }, itemsMarkup), helpTextElement);
|
11289 | }
|
11290 |
|
11291 | var FormLayout =
|
11292 |
|
11293 | function (_React$PureComponent) {
|
11294 | _inherits(FormLayout, _React$PureComponent);
|
11295 |
|
11296 | function FormLayout() {
|
11297 | _classCallCheck(this, FormLayout);
|
11298 |
|
11299 | return _possibleConstructorReturn(this, _getPrototypeOf(FormLayout).apply(this, arguments));
|
11300 | }
|
11301 |
|
11302 | _createClass(FormLayout, [{
|
11303 | key: "render",
|
11304 | value: function render() {
|
11305 | var children = this.props.children;
|
11306 | return React__default.createElement("div", {
|
11307 | className: styles$X.FormLayout
|
11308 | }, React__default.Children.map(children, wrapChildren));
|
11309 | }
|
11310 | }]);
|
11311 |
|
11312 | return FormLayout;
|
11313 | }(React__default.PureComponent);
|
11314 | FormLayout.Group = Group;
|
11315 |
|
11316 | function wrapChildren(child, index) {
|
11317 | if (isElementOfType(child, Group)) {
|
11318 | return child;
|
11319 | }
|
11320 |
|
11321 | var props = {
|
11322 | key: index
|
11323 | };
|
11324 | return wrapWithComponent(child, Item$5, props);
|
11325 | }
|
11326 |
|
11327 | function setRootProperty(name, value, node) {
|
11328 | if (document == null) {
|
11329 | return;
|
11330 | }
|
11331 |
|
11332 | var styleNode = node && node instanceof HTMLElement ? node : document.documentElement;
|
11333 | styleNode && styleNode.style.setProperty(name, value);
|
11334 | }
|
11335 |
|
11336 | var styles$Y = {
|
11337 | "Toast": "Polaris-Frame-Toast",
|
11338 | "Action": "Polaris-Frame-Toast__Action",
|
11339 | "error": "Polaris-Frame-Toast--error",
|
11340 | "CloseButton": "Polaris-Frame-Toast__CloseButton"
|
11341 | };
|
11342 |
|
11343 | var DEFAULT_TOAST_DURATION = 5000;
|
11344 | var DEFAULT_TOAST_DURATION_WITH_ACTION = 10000;
|
11345 | function Toast(_ref) {
|
11346 | var content = _ref.content,
|
11347 | onDismiss = _ref.onDismiss,
|
11348 | duration = _ref.duration,
|
11349 | error = _ref.error,
|
11350 | action = _ref.action;
|
11351 | useEffect(function () {
|
11352 | var timeoutDuration = duration || DEFAULT_TOAST_DURATION;
|
11353 |
|
11354 | if (action && !duration) {
|
11355 | timeoutDuration = DEFAULT_TOAST_DURATION_WITH_ACTION;
|
11356 | } else if (action && duration && duration < DEFAULT_TOAST_DURATION_WITH_ACTION) {
|
11357 |
|
11358 | console.log('Toast with action should persist for at least 10,000 milliseconds to give the merchant enough time to act on it.');
|
11359 | }
|
11360 |
|
11361 | var timer = setTimeout(onDismiss, timeoutDuration);
|
11362 | return function () {
|
11363 | clearTimeout(timer);
|
11364 | };
|
11365 | }, [action, duration, onDismiss]);
|
11366 | var dismissMarkup = React__default.createElement("button", {
|
11367 | type: "button",
|
11368 | className: styles$Y.CloseButton,
|
11369 | onClick: onDismiss
|
11370 | }, React__default.createElement(Icon, {
|
11371 | source: MobileCancelMajorMonotone
|
11372 | }));
|
11373 | var actionMarkup = action ? React__default.createElement("div", {
|
11374 | className: styles$Y.Action
|
11375 | }, React__default.createElement(Button, {
|
11376 | plain: true,
|
11377 | monochrome: true,
|
11378 | onClick: action.onAction
|
11379 | }, action.content)) : null;
|
11380 | var className = classNames(styles$Y.Toast, error && styles$Y.error);
|
11381 | return React__default.createElement("div", {
|
11382 | className: className
|
11383 | }, React__default.createElement(KeypressListener, {
|
11384 | keyCode: Key.Escape,
|
11385 | handler: onDismiss
|
11386 | }), content, actionMarkup, dismissMarkup);
|
11387 | }
|
11388 |
|
11389 |
|
11390 |
|
11391 |
|
11392 |
|
11393 |
|
11394 |
|
11395 |
|
11396 |
|
11397 |
|
11398 |
|
11399 |
|
11400 |
|
11401 |
|
11402 |
|
11403 |
|
11404 |
|
11405 |
|
11406 |
|
11407 |
|
11408 |
|
11409 |
|
11410 |
|
11411 |
|
11412 |
|
11413 |
|
11414 |
|
11415 |
|
11416 |
|
11417 |
|
11418 |
|
11419 | function useDeepCallback(callback, dependencies, customCompare) {
|
11420 | return useCallback(callback, useDeepCompareRef(dependencies, customCompare));
|
11421 | }
|
11422 |
|
11423 | var styles$Z = {
|
11424 | "ToastManager": "Polaris-Frame-ToastManager",
|
11425 | "ToastWrapper": "Polaris-Frame-ToastManager__ToastWrapper",
|
11426 | "ToastWrapper-enter": "Polaris-Frame-ToastManager__ToastWrapper--enter",
|
11427 | "ToastWrapper-exit": "Polaris-Frame-ToastManager__ToastWrapper--exit",
|
11428 | "ToastWrapper-enter-done": "Polaris-Frame-ToastManager--toastWrapperEnterDone"
|
11429 | };
|
11430 |
|
11431 | var ToastManager = memo(function ToastManager(_ref) {
|
11432 | var toastMessages = _ref.toastMessages;
|
11433 | var toastNodes = [];
|
11434 | var updateToasts = useDeepCallback(function () {
|
11435 | var targetInPos = 0;
|
11436 | toastMessages.forEach(function (_, index) {
|
11437 | var currentToast = toastNodes[index];
|
11438 | if (!currentToast.current) return;
|
11439 | targetInPos += currentToast.current.clientHeight;
|
11440 | currentToast.current.style.setProperty('--toast-translate-y-in', "-".concat(targetInPos, "px"));
|
11441 | currentToast.current.style.setProperty('--toast-translate-y-out', "".concat(-targetInPos + 150, "px"));
|
11442 | });
|
11443 | }, [toastMessages, toastNodes]);
|
11444 | useDeepEffect(function () {
|
11445 | updateToasts();
|
11446 | }, [toastMessages]);
|
11447 | var toastsMarkup = toastMessages.map(function (toast, index) {
|
11448 | var toastNode = createRef();
|
11449 | toastNodes[index] = toastNode;
|
11450 | return React__default.createElement(CSSTransition, {
|
11451 | findDOMNode: findDOMNode(index),
|
11452 | key: toast.id,
|
11453 | timeout: {
|
11454 | enter: 0,
|
11455 | exit: 400
|
11456 | },
|
11457 | classNames: toastClasses
|
11458 | }, React__default.createElement("div", {
|
11459 | ref: toastNode
|
11460 | }, React__default.createElement(Toast, toast)));
|
11461 | });
|
11462 | return React__default.createElement(Portal, {
|
11463 | idPrefix: "toast-manager"
|
11464 | }, React__default.createElement(EventListener, {
|
11465 | event: "resize",
|
11466 | handler: updateToasts
|
11467 | }), React__default.createElement("div", {
|
11468 | className: styles$Z.ToastManager,
|
11469 | "aria-live": "polite"
|
11470 | }, React__default.createElement(TransitionGroup, {
|
11471 | component: null
|
11472 | }, toastsMarkup)));
|
11473 |
|
11474 | function findDOMNode(index) {
|
11475 | return function () {
|
11476 | return toastNodes[index].current;
|
11477 | };
|
11478 | }
|
11479 | });
|
11480 | var toastClasses = {
|
11481 | enter: classNames(styles$Z.ToastWrapper, styles$Z['ToastWrapper-enter']),
|
11482 | enterDone: classNames(styles$Z.ToastWrapper, styles$Z['ToastWrapper-enter-done']),
|
11483 | exit: classNames(styles$Z.ToastWrapper, styles$Z['ToastWrapper-exit'])
|
11484 | };
|
11485 |
|
11486 | var styles$_ = {
|
11487 | "Loading": "Polaris-Frame-Loading",
|
11488 | "Level": "Polaris-Frame-Loading__Level"
|
11489 | };
|
11490 |
|
11491 | var INITIAL_STEP = 10;
|
11492 | var STUCK_THRESHOLD = 99;
|
11493 | var Loading =
|
11494 |
|
11495 | function (_React$Component) {
|
11496 | _inherits(Loading, _React$Component);
|
11497 |
|
11498 | function Loading() {
|
11499 | var _this;
|
11500 |
|
11501 | _classCallCheck(this, Loading);
|
11502 |
|
11503 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Loading).apply(this, arguments));
|
11504 | _this.state = {
|
11505 | progress: 0,
|
11506 | step: INITIAL_STEP,
|
11507 | animation: null
|
11508 | };
|
11509 | _this.ariaValuenow = debounce(function () {
|
11510 | var progress = _this.state.progress;
|
11511 | return Math.floor(progress / 10) * 10;
|
11512 | }, 15);
|
11513 | return _this;
|
11514 | }
|
11515 |
|
11516 | _createClass(Loading, [{
|
11517 | key: "componentDidMount",
|
11518 | value: function componentDidMount() {
|
11519 | this.increment();
|
11520 | }
|
11521 | }, {
|
11522 | key: "componentWillUnmount",
|
11523 | value: function componentWillUnmount() {
|
11524 | var animation = this.state.animation;
|
11525 |
|
11526 | if (animation != null) {
|
11527 | cancelAnimationFrame(animation);
|
11528 | }
|
11529 | }
|
11530 | }, {
|
11531 | key: "render",
|
11532 | value: function render() {
|
11533 | var progress = this.state.progress;
|
11534 | var customStyles = {
|
11535 | transform: "scaleX(".concat(Math.floor(progress) / 100, ")")
|
11536 | };
|
11537 | var ariaValuenow = this.ariaValuenow();
|
11538 | return React__default.createElement("div", {
|
11539 | className: styles$_.Loading
|
11540 | }, React__default.createElement("div", {
|
11541 | className: styles$_.Level,
|
11542 | style: customStyles,
|
11543 | "aria-valuenow": ariaValuenow,
|
11544 | "aria-valuemin": 0,
|
11545 | "aria-valuemax": 100,
|
11546 | role: "progressbar"
|
11547 | }));
|
11548 | }
|
11549 | }, {
|
11550 | key: "increment",
|
11551 | value: function increment() {
|
11552 | var _this2 = this;
|
11553 |
|
11554 | var _this$state = this.state,
|
11555 | progress = _this$state.progress,
|
11556 | step = _this$state.step;
|
11557 |
|
11558 | if (progress >= STUCK_THRESHOLD) {
|
11559 | return;
|
11560 | }
|
11561 |
|
11562 | var animation = requestAnimationFrame(function () {
|
11563 | return _this2.increment();
|
11564 | });
|
11565 | this.setState({
|
11566 | progress: Math.min(progress + step, 100),
|
11567 | step: Math.pow(INITIAL_STEP, -(progress / 25)),
|
11568 | animation
|
11569 | });
|
11570 | }
|
11571 | }]);
|
11572 |
|
11573 | return Loading;
|
11574 | }(React__default.Component);
|
11575 |
|
11576 | function isObject(value) {
|
11577 | var type = typeof value;
|
11578 | return value != null && (type === TypeOf.Object || type === TypeOf.Function);
|
11579 | }
|
11580 |
|
11581 | function pluckDeep(obj, key) {
|
11582 | if (!obj) {
|
11583 | return null;
|
11584 | }
|
11585 |
|
11586 | var keys = Object.keys(obj);
|
11587 |
|
11588 | for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {
|
11589 | var currKey = _keys[_i];
|
11590 |
|
11591 | if (currKey === key) {
|
11592 | return obj[key];
|
11593 | }
|
11594 |
|
11595 | if (isObject(obj[currKey])) {
|
11596 | var plucked = pluckDeep(obj[currKey], key);
|
11597 |
|
11598 | if (plucked) {
|
11599 | return plucked;
|
11600 | }
|
11601 | }
|
11602 | }
|
11603 |
|
11604 | return null;
|
11605 | }
|
11606 |
|
11607 | function getWidth() {
|
11608 | var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
11609 | var defaultWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
11610 | var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'width';
|
11611 | var width = typeof value === 'number' ? value : pluckDeep(value, key);
|
11612 | return width ? "".concat(width, "px") : "".concat(defaultWidth, "px");
|
11613 | }
|
11614 |
|
11615 | function generateRedirect(appBridge, url) {
|
11616 | var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'APP';
|
11617 | var external = arguments.length > 3 ? arguments[3] : undefined;
|
11618 |
|
11619 | if (url == null) {
|
11620 | return undefined;
|
11621 | }
|
11622 |
|
11623 | var redirect = Redirect.create(appBridge);
|
11624 | var payload = external === true ? {
|
11625 | url,
|
11626 | newContext: true
|
11627 | } : url;
|
11628 | return function () {
|
11629 | redirect.dispatch(redirectAction(target, external), payload);
|
11630 | };
|
11631 | }
|
11632 |
|
11633 | function redirectAction(target, external) {
|
11634 | if (external === true) {
|
11635 | return Redirect.Action.REMOTE;
|
11636 | }
|
11637 |
|
11638 | return Redirect.Action[target];
|
11639 | }
|
11640 |
|
11641 | function transformActions(appBridge, _ref) {
|
11642 | var primaryAction = _ref.primaryAction,
|
11643 | secondaryActions = _ref.secondaryActions,
|
11644 | actionGroups = _ref.actionGroups;
|
11645 | var primary = transformPrimaryAction(appBridge, primaryAction);
|
11646 | var secondary = [].concat(_toConsumableArray(transformSecondaryActions(appBridge, secondaryActions)), _toConsumableArray(transformActionGroups(appBridge, actionGroups)));
|
11647 | return {
|
11648 | primary,
|
11649 | secondary
|
11650 | };
|
11651 | }
|
11652 |
|
11653 | function transformAction(appBridge, action) {
|
11654 | var style = action.destructive === true ? Button$1.Style.Danger : undefined;
|
11655 | var button = Button$1.create(appBridge, {
|
11656 | label: action.content || '',
|
11657 | disabled: action.disabled,
|
11658 | style
|
11659 | });
|
11660 |
|
11661 | if (action.onAction) {
|
11662 | button.subscribe(Button$1.Action.CLICK, action.onAction);
|
11663 | }
|
11664 |
|
11665 | var redirect = generateRedirect(appBridge, action.url, action.target, action.external);
|
11666 |
|
11667 | if (redirect != null) {
|
11668 | button.subscribe(Button$1.Action.CLICK, redirect);
|
11669 | }
|
11670 |
|
11671 | return button;
|
11672 | }
|
11673 |
|
11674 | function transformPrimaryAction(appBridge, primaryAction) {
|
11675 | if (primaryAction == null) {
|
11676 | return undefined;
|
11677 | }
|
11678 |
|
11679 | var primary = transformAction(appBridge, primaryAction);
|
11680 | return primary;
|
11681 | }
|
11682 |
|
11683 | function transformSecondaryActions(appBridge) {
|
11684 | var secondaryActions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
11685 |
|
11686 | var secondary = _toConsumableArray(secondaryActions.map(function (secondaryAction) {
|
11687 | return transformAction(appBridge, secondaryAction);
|
11688 | }));
|
11689 |
|
11690 | return secondary;
|
11691 | }
|
11692 |
|
11693 | function transformActionGroups(appBridge) {
|
11694 | var actionGroups = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
11695 |
|
11696 | var buttonGroups = _toConsumableArray(actionGroups.map(function (group) {
|
11697 | var buttons = group.actions.map(function (groupAction) {
|
11698 | return transformAction(appBridge, groupAction);
|
11699 | });
|
11700 | return ButtonGroup$1.create(appBridge, {
|
11701 | label: group.title,
|
11702 | buttons
|
11703 | });
|
11704 | }));
|
11705 |
|
11706 | return buttonGroups;
|
11707 | }
|
11708 |
|
11709 | function pickValueAndLength(obj, key) {
|
11710 | var keyPaths = key.split('.');
|
11711 | var value = obj;
|
11712 | var _iteratorNormalCompletion = true;
|
11713 | var _didIteratorError = false;
|
11714 | var _iteratorError = undefined;
|
11715 |
|
11716 | try {
|
11717 | for (var _iterator = keyPaths[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
11718 | var _key = _step.value;
|
11719 |
|
11720 | if (!Object.prototype.hasOwnProperty.call(value, _key)) {
|
11721 | return null;
|
11722 | }
|
11723 |
|
11724 | value = value[_key];
|
11725 | }
|
11726 | } catch (err) {
|
11727 | _didIteratorError = true;
|
11728 | _iteratorError = err;
|
11729 | } finally {
|
11730 | try {
|
11731 | if (!_iteratorNormalCompletion && _iterator.return != null) {
|
11732 | _iterator.return();
|
11733 | }
|
11734 | } finally {
|
11735 | if (_didIteratorError) {
|
11736 | throw _iteratorError;
|
11737 | }
|
11738 | }
|
11739 | }
|
11740 |
|
11741 | return {
|
11742 | keyPaths,
|
11743 | value
|
11744 | };
|
11745 | }
|
11746 |
|
11747 | function pick(obj) {
|
11748 | var _ref;
|
11749 |
|
11750 | for (var _len = arguments.length, keyPaths = new Array(_len > 1 ? _len - 1 : 0), _key2 = 1; _key2 < _len; _key2++) {
|
11751 | keyPaths[_key2 - 1] = arguments[_key2];
|
11752 | }
|
11753 |
|
11754 | var flattenedKeypaths = (_ref = []).concat.apply(_ref, keyPaths);
|
11755 |
|
11756 | if (obj == null || flattenedKeypaths.length === 0) return {};
|
11757 | return flattenedKeypaths.reduce(function (acc, key) {
|
11758 | if (typeof key !== TypeOf.String || Object.prototype.hasOwnProperty.call(obj, key)) {
|
11759 | return Object.assign({}, acc, {
|
11760 | [key]: obj[key]
|
11761 | });
|
11762 | }
|
11763 |
|
11764 | var pickedValues = pickValueAndLength(obj, key);
|
11765 |
|
11766 | if (pickedValues === null) {
|
11767 | return acc;
|
11768 | }
|
11769 |
|
11770 | var keyPaths = pickedValues.keyPaths,
|
11771 | value = pickedValues.value;
|
11772 | var len = keyPaths.length;
|
11773 | var innerObject = {
|
11774 | [keyPaths[--len]]: value
|
11775 | };
|
11776 |
|
11777 | while (len--) {
|
11778 | innerObject = {
|
11779 | [keyPaths[len]]: innerObject
|
11780 | };
|
11781 | }
|
11782 |
|
11783 | return Object.assign({}, acc, innerObject);
|
11784 | }, {});
|
11785 | }
|
11786 |
|
11787 | var styles$$ = {
|
11788 | "Container": "Polaris-Modal-Dialog__Container",
|
11789 | "Modal": "Polaris-Modal-Dialog__Modal",
|
11790 | "limitHeight": "Polaris-Modal-Dialog--limitHeight",
|
11791 | "sizeLarge": "Polaris-Modal-Dialog--sizeLarge",
|
11792 | "animateFadeUp": "Polaris-Modal-Dialog--animateFadeUp",
|
11793 | "entering": "Polaris-Modal-Dialog--entering",
|
11794 | "exiting": "Polaris-Modal-Dialog--exiting",
|
11795 | "exited": "Polaris-Modal-Dialog--exited",
|
11796 | "entered": "Polaris-Modal-Dialog--entered"
|
11797 | };
|
11798 |
|
11799 | function Dialog(_a) {
|
11800 | var instant = _a.instant,
|
11801 | labelledBy = _a.labelledBy,
|
11802 | children = _a.children,
|
11803 | onClose = _a.onClose,
|
11804 | onExited = _a.onExited,
|
11805 | onEntered = _a.onEntered,
|
11806 | large = _a.large,
|
11807 | limitHeight = _a.limitHeight,
|
11808 | props = __rest(_a, ["instant", "labelledBy", "children", "onClose", "onExited", "onEntered", "large", "limitHeight"]);
|
11809 |
|
11810 | var containerNode = useRef(null);
|
11811 | var findDOMNode = useCallback(function () {
|
11812 | return containerNode.current;
|
11813 | }, []);
|
11814 | var classes = classNames(styles$$.Modal, large && styles$$.sizeLarge, limitHeight && styles$$.limitHeight);
|
11815 | var TransitionChild = instant ? Transition : FadeUp;
|
11816 | return React__default.createElement(TransitionChild, Object.assign({}, props, {
|
11817 | findDOMNode: findDOMNode,
|
11818 | mountOnEnter: true,
|
11819 | unmountOnExit: true,
|
11820 | timeout: durationBase,
|
11821 | onEntered: onEntered,
|
11822 | onExited: onExited
|
11823 | }), React__default.createElement("div", {
|
11824 | className: styles$$.Container,
|
11825 | "data-polaris-layer": true,
|
11826 | "data-polaris-overlay": true,
|
11827 | ref: containerNode
|
11828 | }, React__default.createElement(TrapFocus, null, React__default.createElement("div", {
|
11829 | className: classes,
|
11830 | role: "dialog",
|
11831 | "aria-labelledby": labelledBy,
|
11832 | tabIndex: -1
|
11833 | }, React__default.createElement(KeypressListener, {
|
11834 | keyCode: Key.Escape,
|
11835 | handler: onClose
|
11836 | }), children))));
|
11837 | }
|
11838 | var fadeUpClasses = {
|
11839 | appear: classNames(styles$$.animateFadeUp, styles$$.entering),
|
11840 | appearActive: classNames(styles$$.animateFadeUp, styles$$.entered),
|
11841 | enter: classNames(styles$$.animateFadeUp, styles$$.entering),
|
11842 | enterActive: classNames(styles$$.animateFadeUp, styles$$.entered),
|
11843 | exit: classNames(styles$$.animateFadeUp, styles$$.exiting),
|
11844 | exitActive: classNames(styles$$.animateFadeUp, styles$$.exited)
|
11845 | };
|
11846 |
|
11847 | function FadeUp(_a) {
|
11848 | var children = _a.children,
|
11849 | props = __rest(_a, ["children"]);
|
11850 |
|
11851 | return React__default.createElement(CSSTransition, Object.assign({}, props, {
|
11852 | classNames: fadeUpClasses
|
11853 | }), children);
|
11854 | }
|
11855 |
|
11856 | var styles$10 = {
|
11857 | "Footer": "Polaris-Modal-Footer",
|
11858 | "FooterContent": "Polaris-Modal-Footer__FooterContent"
|
11859 | };
|
11860 |
|
11861 | function Footer(_ref) {
|
11862 | var primaryAction = _ref.primaryAction,
|
11863 | secondaryActions = _ref.secondaryActions,
|
11864 | children = _ref.children;
|
11865 | var primaryActionButton = primaryAction && buttonsFrom(primaryAction, {
|
11866 | primary: true
|
11867 | }) || null;
|
11868 | var secondaryActionButtons = secondaryActions && buttonsFrom(secondaryActions) || null;
|
11869 | var actions = primaryActionButton || secondaryActionButtons ? React__default.createElement(ButtonGroup, null, secondaryActionButtons, primaryActionButton) : null;
|
11870 | return React__default.createElement("div", {
|
11871 | className: styles$10.Footer
|
11872 | }, React__default.createElement("div", {
|
11873 | className: styles$10.FooterContent
|
11874 | }, React__default.createElement(Stack, {
|
11875 | alignment: "center"
|
11876 | }, React__default.createElement(Stack.Item, {
|
11877 | fill: true
|
11878 | }, children), actions)));
|
11879 | }
|
11880 |
|
11881 | var styles$11 = {
|
11882 | "CloseButton": "Polaris-Modal-CloseButton",
|
11883 | "withoutTitle": "Polaris-Modal-CloseButton--withoutTitle"
|
11884 | };
|
11885 |
|
11886 | function CloseButton(_ref) {
|
11887 | var _ref$title = _ref.title,
|
11888 | title = _ref$title === void 0 ? true : _ref$title,
|
11889 | onClick = _ref.onClick;
|
11890 | var i18n = useI18n();
|
11891 | var className = classNames(styles$11.CloseButton, !title && styles$11.withoutTitle);
|
11892 | return React__default.createElement("button", {
|
11893 | onClick: onClick,
|
11894 | className: className,
|
11895 | "aria-label": i18n.translate('Polaris.Common.close')
|
11896 | }, React__default.createElement(Icon, {
|
11897 | source: MobileCancelMajorMonotone,
|
11898 | color: "inkLighter"
|
11899 | }));
|
11900 | }
|
11901 |
|
11902 | var styles$12 = {
|
11903 | "Header": "Polaris-Modal-Header",
|
11904 | "Title": "Polaris-Modal-Header__Title"
|
11905 | };
|
11906 |
|
11907 | function Header$1(_ref) {
|
11908 | var id = _ref.id,
|
11909 | children = _ref.children,
|
11910 | onClose = _ref.onClose;
|
11911 | return React__default.createElement("div", {
|
11912 | className: styles$12.Header
|
11913 | }, React__default.createElement("div", {
|
11914 | id: id,
|
11915 | className: styles$12.Title
|
11916 | }, React__default.createElement(DisplayText, {
|
11917 | element: "h2",
|
11918 | size: "small"
|
11919 | }, children)), React__default.createElement(CloseButton, {
|
11920 | onClick: onClose
|
11921 | }));
|
11922 | }
|
11923 |
|
11924 | var styles$13 = {
|
11925 | "Section": "Polaris-Modal-Section",
|
11926 | "subdued": "Polaris-Modal-Section--subdued",
|
11927 | "flush": "Polaris-Modal-Section--flush"
|
11928 | };
|
11929 |
|
11930 | function Section$3(_ref) {
|
11931 | var children = _ref.children,
|
11932 | _ref$flush = _ref.flush,
|
11933 | flush = _ref$flush === void 0 ? false : _ref$flush,
|
11934 | _ref$subdued = _ref.subdued,
|
11935 | subdued = _ref$subdued === void 0 ? false : _ref$subdued;
|
11936 | var className = classNames(styles$13.Section, flush && styles$13.flush, subdued && styles$13.subdued);
|
11937 | return React__default.createElement("section", {
|
11938 | className: className
|
11939 | }, children);
|
11940 | }
|
11941 |
|
11942 | var styles$14 = {
|
11943 | "BodyWrapper": "Polaris-Modal__BodyWrapper",
|
11944 | "Body": "Polaris-Modal__Body",
|
11945 | "IFrame": "Polaris-Modal__IFrame",
|
11946 | "Spinner": "Polaris-Modal__Spinner"
|
11947 | };
|
11948 |
|
11949 | var IFRAME_LOADING_HEIGHT = 200;
|
11950 | var DEFAULT_IFRAME_CONTENT_HEIGHT = 400;
|
11951 | var getUniqueID$1 = createUniqueIDFactory('modal-header');
|
11952 | var APP_BRIDGE_PROPS = ['title', 'size', 'message', 'src', 'primaryAction', 'secondaryActions'];
|
11953 |
|
11954 | var Modal =
|
11955 |
|
11956 | function (_React$Component) {
|
11957 | _inherits(Modal, _React$Component);
|
11958 |
|
11959 | function Modal() {
|
11960 | var _this;
|
11961 |
|
11962 | _classCallCheck(this, Modal);
|
11963 |
|
11964 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Modal).apply(this, arguments));
|
11965 | _this.state = {
|
11966 | iframeHeight: IFRAME_LOADING_HEIGHT
|
11967 | };
|
11968 | _this.headerId = getUniqueID$1();
|
11969 |
|
11970 | _this.handleEntered = function () {
|
11971 | var onTransitionEnd = _this.props.onTransitionEnd;
|
11972 |
|
11973 | if (onTransitionEnd) {
|
11974 | onTransitionEnd();
|
11975 | }
|
11976 | };
|
11977 |
|
11978 | _this.handleExited = function () {
|
11979 | _this.setState({
|
11980 | iframeHeight: IFRAME_LOADING_HEIGHT
|
11981 | });
|
11982 |
|
11983 | if (_this.focusReturnPointNode) {
|
11984 | write(function () {
|
11985 | return focusFirstFocusableNode(_this.focusReturnPointNode, false);
|
11986 | });
|
11987 | }
|
11988 | };
|
11989 |
|
11990 | _this.handleIFrameLoad = function (evt) {
|
11991 | var iframe = evt.target;
|
11992 |
|
11993 | if (iframe && iframe.contentWindow) {
|
11994 | try {
|
11995 | _this.setState({
|
11996 | iframeHeight: iframe.contentWindow.document.body.scrollHeight
|
11997 | });
|
11998 | } catch (_a) {
|
11999 | _this.setState({
|
12000 | iframeHeight: DEFAULT_IFRAME_CONTENT_HEIGHT
|
12001 | });
|
12002 | }
|
12003 | }
|
12004 |
|
12005 | var onIFrameLoad = _this.props.onIFrameLoad;
|
12006 |
|
12007 | if (onIFrameLoad != null) {
|
12008 | onIFrameLoad(evt);
|
12009 | }
|
12010 | };
|
12011 |
|
12012 | return _this;
|
12013 | }
|
12014 |
|
12015 | _createClass(Modal, [{
|
12016 | key: "componentDidMount",
|
12017 | value: function componentDidMount() {
|
12018 | if (this.props.polaris.appBridge == null) {
|
12019 | return;
|
12020 | }
|
12021 |
|
12022 |
|
12023 | console.warn('Deprecation: Using `Modal` in an embedded app is deprecated and will be removed in v5.0. Use `Modal` from `@shopify/app-bridge-react` instead: https://help.shopify.com/en/api/embedded-apps/app-bridge/react-components/modal');
|
12024 | var transformProps = this.transformProps();
|
12025 |
|
12026 | if (transformProps) {
|
12027 | this.appBridgeModal = Modal$2.create(this.props.polaris.appBridge, transformProps);
|
12028 | }
|
12029 |
|
12030 | if (this.appBridgeModal) {
|
12031 | this.appBridgeModal.subscribe(Modal$2.Action.CLOSE, this.props.onClose);
|
12032 | }
|
12033 |
|
12034 | var open = this.props.open;
|
12035 |
|
12036 | if (open) {
|
12037 | this.focusReturnPointNode = document.activeElement;
|
12038 | this.appBridgeModal && this.appBridgeModal.dispatch(Modal$2.Action.OPEN);
|
12039 | }
|
12040 | }
|
12041 | }, {
|
12042 | key: "componentDidUpdate",
|
12043 | value: function componentDidUpdate(prevProps) {
|
12044 | if (this.props.polaris.appBridge == null || this.appBridgeModal == null) {
|
12045 | return;
|
12046 | }
|
12047 |
|
12048 | var open = this.props.open;
|
12049 | var wasOpen = prevProps.open;
|
12050 | var transformedProps = this.transformProps();
|
12051 | var prevAppBridgeProps = pick(prevProps, APP_BRIDGE_PROPS);
|
12052 | var currentAppBridgeProps = pick(this.props, APP_BRIDGE_PROPS);
|
12053 |
|
12054 | if (!isEqual(prevAppBridgeProps, currentAppBridgeProps) && transformedProps) {
|
12055 | if (isIframeModal(transformedProps)) {
|
12056 | this.appBridgeModal.set(transformedProps);
|
12057 | } else {
|
12058 | this.appBridgeModal.set(transformedProps);
|
12059 | }
|
12060 | }
|
12061 |
|
12062 | if (wasOpen !== open) {
|
12063 | if (open) {
|
12064 | this.appBridgeModal.dispatch(Modal$2.Action.OPEN);
|
12065 | } else {
|
12066 | this.appBridgeModal.dispatch(Modal$2.Action.CLOSE);
|
12067 | }
|
12068 | }
|
12069 |
|
12070 | if (!wasOpen && open) {
|
12071 | this.focusReturnPointNode = document.activeElement;
|
12072 | } else if (wasOpen && !open && this.focusReturnPointNode != null && document.contains(this.focusReturnPointNode)) {
|
12073 | this.focusReturnPointNode.focus();
|
12074 | this.focusReturnPointNode = null;
|
12075 | }
|
12076 | }
|
12077 | }, {
|
12078 | key: "componentWillUnmount",
|
12079 | value: function componentWillUnmount() {
|
12080 | if (this.props.polaris.appBridge == null || this.appBridgeModal == null) {
|
12081 | return;
|
12082 | }
|
12083 |
|
12084 | this.appBridgeModal.unsubscribe();
|
12085 | }
|
12086 | }, {
|
12087 | key: "render",
|
12088 | value: function render() {
|
12089 | if (this.props.polaris.appBridge != null) {
|
12090 | return null;
|
12091 | }
|
12092 |
|
12093 | var _this$props = this.props,
|
12094 | children = _this$props.children,
|
12095 | title = _this$props.title,
|
12096 | src = _this$props.src,
|
12097 | iFrameName = _this$props.iFrameName,
|
12098 | open = _this$props.open,
|
12099 | instant = _this$props.instant,
|
12100 | sectioned = _this$props.sectioned,
|
12101 | loading = _this$props.loading,
|
12102 | large = _this$props.large,
|
12103 | limitHeight = _this$props.limitHeight,
|
12104 | onClose = _this$props.onClose,
|
12105 | footer = _this$props.footer,
|
12106 | primaryAction = _this$props.primaryAction,
|
12107 | secondaryActions = _this$props.secondaryActions,
|
12108 | intl = _this$props.polaris.intl,
|
12109 | onScrolledToBottom = _this$props.onScrolledToBottom;
|
12110 | var iframeHeight = this.state.iframeHeight;
|
12111 | var iframeTitle = intl.translate('Polaris.Modal.iFrameTitle');
|
12112 | var dialog;
|
12113 | var backdrop;
|
12114 |
|
12115 | if (open) {
|
12116 | var footerMarkup = !footer && !primaryAction && !secondaryActions ? null : React__default.createElement(Footer, {
|
12117 | primaryAction: primaryAction,
|
12118 | secondaryActions: secondaryActions
|
12119 | }, footer);
|
12120 | var content = sectioned ? wrapWithComponent(children, Section$3, {}) : children;
|
12121 | var body = loading ? React__default.createElement("div", {
|
12122 | className: styles$14.Spinner
|
12123 | }, React__default.createElement(Spinner, null)) : content;
|
12124 | var bodyMarkup = src ? React__default.createElement("iframe", {
|
12125 | name: iFrameName,
|
12126 | title: iframeTitle,
|
12127 | src: src,
|
12128 | className: styles$14.IFrame,
|
12129 | onLoad: this.handleIFrameLoad,
|
12130 | style: {
|
12131 | height: "".concat(iframeHeight, "px")
|
12132 | }
|
12133 | }) : React__default.createElement(Scrollable, {
|
12134 | shadow: true,
|
12135 | className: styles$14.Body,
|
12136 | onScrolledToBottom: onScrolledToBottom
|
12137 | }, body);
|
12138 | var headerMarkup = title ? React__default.createElement(Header$1, {
|
12139 | id: this.headerId,
|
12140 | onClose: onClose
|
12141 | }, title) : React__default.createElement(CloseButton, {
|
12142 | onClick: onClose,
|
12143 | title: false
|
12144 | });
|
12145 | var labelledBy = title ? this.headerId : undefined;
|
12146 | dialog = React__default.createElement(Dialog, {
|
12147 | instant: instant,
|
12148 | labelledBy: labelledBy,
|
12149 | onClose: onClose,
|
12150 | onEntered: this.handleEntered,
|
12151 | onExited: this.handleExited,
|
12152 | large: large,
|
12153 | limitHeight: limitHeight
|
12154 | }, headerMarkup, React__default.createElement("div", {
|
12155 | className: styles$14.BodyWrapper
|
12156 | }, bodyMarkup), footerMarkup);
|
12157 | backdrop = React__default.createElement(Backdrop, null);
|
12158 | }
|
12159 |
|
12160 | var animated = !instant;
|
12161 | return React__default.createElement(WithinContentContext.Provider, {
|
12162 | value: true
|
12163 | }, React__default.createElement(Portal, {
|
12164 | idPrefix: "modal"
|
12165 | }, React__default.createElement(TransitionGroup, {
|
12166 | appear: animated,
|
12167 | enter: animated,
|
12168 | exit: animated
|
12169 | }, dialog), backdrop));
|
12170 | }
|
12171 | }, {
|
12172 | key: "transformProps",
|
12173 | value: function transformProps() {
|
12174 | var _this$props2 = this.props,
|
12175 | title = _this$props2.title,
|
12176 | size = _this$props2.size,
|
12177 | message = _this$props2.message,
|
12178 | src = _this$props2.src,
|
12179 | primaryAction = _this$props2.primaryAction,
|
12180 | secondaryActions = _this$props2.secondaryActions,
|
12181 | polaris = _this$props2.polaris;
|
12182 | var appBridge = polaris.appBridge;
|
12183 | if (!appBridge) return;
|
12184 | var safeTitle = typeof title === 'string' ? title : undefined;
|
12185 | var safeSize = size != null ? Modal$2.Size[size] : undefined;
|
12186 | var srcPayload = {};
|
12187 |
|
12188 | if (src != null) {
|
12189 | if (/^https?:\/\//.test(src)) {
|
12190 | srcPayload.url = src;
|
12191 | } else {
|
12192 | srcPayload.path = src;
|
12193 | }
|
12194 | }
|
12195 |
|
12196 | return Object.assign({
|
12197 | title: safeTitle,
|
12198 | message,
|
12199 | size: safeSize
|
12200 | }, srcPayload, {
|
12201 | footer: {
|
12202 | buttons: transformActions(appBridge, {
|
12203 | primaryAction,
|
12204 | secondaryActions
|
12205 | })
|
12206 | }
|
12207 | });
|
12208 | }
|
12209 | }]);
|
12210 |
|
12211 | return Modal;
|
12212 | }(React__default.Component);
|
12213 |
|
12214 | Modal.Section = Section$3;
|
12215 |
|
12216 | function isIframeModal(options) {
|
12217 | return typeof options.url === 'string' || typeof options.path === 'string';
|
12218 | }
|
12219 |
|
12220 |
|
12221 |
|
12222 | var Modal$1 = withAppProvider()(Modal);
|
12223 |
|
12224 | function DiscardConfirmationModal(_ref) {
|
12225 | var open = _ref.open,
|
12226 | onDiscard = _ref.onDiscard,
|
12227 | onCancel = _ref.onCancel;
|
12228 | var i18n = useI18n();
|
12229 | return React__default.createElement(Modal$1, {
|
12230 | title: i18n.translate('Polaris.DiscardConfirmationModal.title'),
|
12231 | open: open,
|
12232 | onClose: onCancel,
|
12233 | primaryAction: {
|
12234 | content: i18n.translate('Polaris.DiscardConfirmationModal.primaryAction'),
|
12235 | destructive: true,
|
12236 | onAction: onDiscard
|
12237 | },
|
12238 | secondaryActions: [{
|
12239 | content: i18n.translate('Polaris.DiscardConfirmationModal.secondaryAction'),
|
12240 | onAction: onCancel
|
12241 | }],
|
12242 | sectioned: true
|
12243 | }, i18n.translate('Polaris.DiscardConfirmationModal.message'));
|
12244 | }
|
12245 |
|
12246 | var styles$15 = {
|
12247 | "ContextualSaveBar": "Polaris-Frame-ContextualSaveBar",
|
12248 | "LogoContainer": "Polaris-Frame-ContextualSaveBar__LogoContainer",
|
12249 | "Contents": "Polaris-Frame-ContextualSaveBar__Contents",
|
12250 | "Message": "Polaris-Frame-ContextualSaveBar__Message",
|
12251 | "ActionContainer": "Polaris-Frame-ContextualSaveBar__ActionContainer",
|
12252 | "Action": "Polaris-Frame-ContextualSaveBar__Action"
|
12253 | };
|
12254 |
|
12255 | function ContextualSaveBar$1(_ref) {
|
12256 | var alignContentFlush = _ref.alignContentFlush,
|
12257 | message = _ref.message,
|
12258 | saveAction = _ref.saveAction,
|
12259 | discardAction = _ref.discardAction;
|
12260 | var i18n = useI18n();
|
12261 |
|
12262 | var _useTheme = useTheme(),
|
12263 | logo = _useTheme.logo;
|
12264 |
|
12265 | var _useForcibleToggle = useForcibleToggle(false),
|
12266 | _useForcibleToggle2 = _slicedToArray(_useForcibleToggle, 2),
|
12267 | discardConfirmationModalVisible = _useForcibleToggle2[0],
|
12268 | _useForcibleToggle2$ = _useForcibleToggle2[1],
|
12269 | toggleDiscardConfirmationModal = _useForcibleToggle2$.toggle,
|
12270 | closeDiscardConfirmationModal = _useForcibleToggle2$.forceFalse;
|
12271 |
|
12272 | var handleDiscardAction = useCallback(function () {
|
12273 | if (discardAction && discardAction.onAction) {
|
12274 | discardAction.onAction();
|
12275 | }
|
12276 |
|
12277 | closeDiscardConfirmationModal();
|
12278 | }, [closeDiscardConfirmationModal, discardAction]);
|
12279 | var discardActionContent = discardAction && discardAction.content ? discardAction.content : i18n.translate('Polaris.ContextualSaveBar.discard');
|
12280 | var discardActionHandler;
|
12281 |
|
12282 | if (discardAction && discardAction.discardConfirmationModal) {
|
12283 | discardActionHandler = toggleDiscardConfirmationModal;
|
12284 | } else if (discardAction) {
|
12285 | discardActionHandler = discardAction.onAction;
|
12286 | }
|
12287 |
|
12288 | var discardConfirmationModalMarkup = discardAction && discardAction.onAction && discardAction.discardConfirmationModal && React__default.createElement(DiscardConfirmationModal, {
|
12289 | open: discardConfirmationModalVisible,
|
12290 | onCancel: toggleDiscardConfirmationModal,
|
12291 | onDiscard: handleDiscardAction
|
12292 | });
|
12293 | var discardActionMarkup = discardAction && React__default.createElement(Button, {
|
12294 | url: discardAction.url,
|
12295 | onClick: discardActionHandler,
|
12296 | loading: discardAction.loading,
|
12297 | disabled: discardAction.disabled,
|
12298 | accessibilityLabel: discardAction.content
|
12299 | }, discardActionContent);
|
12300 | var saveActionContent = saveAction && saveAction.content ? saveAction.content : i18n.translate('Polaris.ContextualSaveBar.save');
|
12301 | var saveActionMarkup = saveAction && React__default.createElement(Button, {
|
12302 | primary: true,
|
12303 | url: saveAction.url,
|
12304 | onClick: saveAction.onAction,
|
12305 | loading: saveAction.loading,
|
12306 | disabled: saveAction.disabled,
|
12307 | accessibilityLabel: saveAction.content
|
12308 | }, saveActionContent);
|
12309 | var width = getWidth(logo, 104);
|
12310 | var imageMarkup = logo && React__default.createElement(Image, {
|
12311 | style: {
|
12312 | width
|
12313 | },
|
12314 | source: logo.contextualSaveBarSource || '',
|
12315 | alt: ""
|
12316 | });
|
12317 | var logoMarkup = alignContentFlush ? null : React__default.createElement("div", {
|
12318 | className: styles$15.LogoContainer,
|
12319 | style: {
|
12320 | width
|
12321 | }
|
12322 | }, imageMarkup);
|
12323 | return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
|
12324 | className: styles$15.ContextualSaveBar
|
12325 | }, logoMarkup, React__default.createElement("div", {
|
12326 | className: styles$15.Contents
|
12327 | }, React__default.createElement("h2", {
|
12328 | className: styles$15.Message
|
12329 | }, message), React__default.createElement("div", {
|
12330 | className: styles$15.ActionContainer
|
12331 | }, React__default.createElement(Stack, {
|
12332 | spacing: "tight",
|
12333 | wrap: false
|
12334 | }, discardActionMarkup, saveActionMarkup)))), discardConfirmationModalMarkup);
|
12335 | }
|
12336 |
|
12337 | var styles$16 = {
|
12338 | "startFade": "Polaris-Frame-CSSAnimation--startFade",
|
12339 | "endFade": "Polaris-Frame-CSSAnimation--endFade"
|
12340 | };
|
12341 |
|
12342 | var AnimationType;
|
12343 |
|
12344 | (function (AnimationType) {
|
12345 | AnimationType["Fade"] = "fade";
|
12346 | })(AnimationType || (AnimationType = {}));
|
12347 |
|
12348 | var TransitionStatus$1;
|
12349 |
|
12350 | (function (TransitionStatus) {
|
12351 | TransitionStatus["Entering"] = "entering";
|
12352 | TransitionStatus["Entered"] = "entered";
|
12353 | TransitionStatus["Exiting"] = "exiting";
|
12354 | TransitionStatus["Exited"] = "exited";
|
12355 | })(TransitionStatus$1 || (TransitionStatus$1 = {}));
|
12356 |
|
12357 | function CSSAnimation(_ref) {
|
12358 | var inProp = _ref.in,
|
12359 | className = _ref.className,
|
12360 | type = _ref.type,
|
12361 | children = _ref.children;
|
12362 |
|
12363 | var _useState = useState(inProp ? TransitionStatus$1.Entering : TransitionStatus$1.Exited),
|
12364 | _useState2 = _slicedToArray(_useState, 2),
|
12365 | transitionStatus = _useState2[0],
|
12366 | setTransitionStatus = _useState2[1];
|
12367 |
|
12368 | var isMounted = useRef(false);
|
12369 | var node = useRef(null);
|
12370 | useEffect(function () {
|
12371 | if (!isMounted.current) return;
|
12372 | transitionStatus === TransitionStatus$1.Entering && changeTransitionStatus(TransitionStatus$1.Entered);
|
12373 | }, [transitionStatus]);
|
12374 | useEffect(function () {
|
12375 | if (!isMounted.current) return;
|
12376 | inProp && changeTransitionStatus(TransitionStatus$1.Entering);
|
12377 | !inProp && changeTransitionStatus(TransitionStatus$1.Exiting);
|
12378 | }, [inProp]);
|
12379 | useEffect(function () {
|
12380 | isMounted.current = true;
|
12381 | }, []);
|
12382 | var wrapperClassName = classNames(className, styles$16[variationName('start', type)], inProp && styles$16[variationName('end', type)]);
|
12383 | var content = transitionStatus === TransitionStatus$1.Exited && !inProp ? null : children;
|
12384 | return React__default.createElement("div", {
|
12385 | className: wrapperClassName,
|
12386 | ref: node,
|
12387 | onTransitionEnd: handleTransitionEnd
|
12388 | }, content);
|
12389 |
|
12390 | function handleTransitionEnd() {
|
12391 | transitionStatus === TransitionStatus$1.Exiting && changeTransitionStatus(TransitionStatus$1.Exited);
|
12392 | }
|
12393 |
|
12394 | function changeTransitionStatus(transitionStatus) {
|
12395 | setTransitionStatus(transitionStatus);
|
12396 |
|
12397 | if (transitionStatus === TransitionStatus$1.Entering) node.current && node.current.getBoundingClientRect();
|
12398 | }
|
12399 | }
|
12400 |
|
12401 | var styles$17 = {
|
12402 | "Frame": "Polaris-Frame",
|
12403 | "Navigation": "Polaris-Frame__Navigation",
|
12404 | "Navigation-enter": "Polaris-Frame__Navigation--enter",
|
12405 | "Navigation-enterActive": "Polaris-Frame__Navigation--enterActive",
|
12406 | "Navigation-exit": "Polaris-Frame__Navigation--exit",
|
12407 | "Navigation-exitActive": "Polaris-Frame__Navigation--exitActive",
|
12408 | "NavigationDismiss": "Polaris-Frame__NavigationDismiss",
|
12409 | "Navigation-visible": "Polaris-Frame__Navigation--visible",
|
12410 | "TopBar": "Polaris-Frame__TopBar",
|
12411 | "ContextualSaveBar": "Polaris-Frame__ContextualSaveBar",
|
12412 | "Main": "Polaris-Frame__Main",
|
12413 | "hasNav": "Polaris-Frame--hasNav",
|
12414 | "hasTopBar": "Polaris-Frame--hasTopBar",
|
12415 | "Content": "Polaris-Frame__Content",
|
12416 | "GlobalRibbonContainer": "Polaris-Frame__GlobalRibbonContainer",
|
12417 | "LoadingBar": "Polaris-Frame__LoadingBar",
|
12418 | "Skip": "Polaris-Frame__Skip",
|
12419 | "focused": "Polaris-Frame--focused",
|
12420 | "SkipAnchor": "Polaris-Frame__SkipAnchor",
|
12421 | "globalTheming": "Polaris-Frame--globalTheming"
|
12422 | };
|
12423 |
|
12424 | var GLOBAL_RIBBON_CUSTOM_PROPERTY = '--global-ribbon-height';
|
12425 | var APP_FRAME_MAIN = 'AppFrameMain';
|
12426 | var APP_FRAME_MAIN_ANCHOR_TARGET = 'AppFrameMainContent';
|
12427 | var APP_FRAME_NAV = 'AppFrameNav';
|
12428 | var APP_FRAME_TOP_BAR = 'AppFrameTopBar';
|
12429 | var APP_FRAME_LOADING_BAR = 'AppFrameLoadingBar';
|
12430 |
|
12431 | var Frame =
|
12432 |
|
12433 | function (_React$PureComponent) {
|
12434 | _inherits(Frame, _React$PureComponent);
|
12435 |
|
12436 | function Frame() {
|
12437 | var _this;
|
12438 |
|
12439 | _classCallCheck(this, Frame);
|
12440 |
|
12441 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Frame).apply(this, arguments));
|
12442 | _this.state = {
|
12443 | skipFocused: false,
|
12444 | globalRibbonHeight: 0,
|
12445 | loadingStack: 0,
|
12446 | toastMessages: [],
|
12447 | showContextualSaveBar: false
|
12448 | };
|
12449 | _this.globalRibbonContainer = null;
|
12450 | _this.navigationNode = createRef();
|
12451 | _this.skipToMainContentTargetNode = _this.props.skipToContentTarget || React__default.createRef();
|
12452 |
|
12453 | _this.setGlobalRibbonHeight = function () {
|
12454 | var _assertThisInitialize = _assertThisInitialized(_this),
|
12455 | globalRibbonContainer = _assertThisInitialize.globalRibbonContainer;
|
12456 |
|
12457 | if (globalRibbonContainer) {
|
12458 | _this.setState({
|
12459 | globalRibbonHeight: globalRibbonContainer.offsetHeight
|
12460 | }, _this.setGlobalRibbonRootProperty);
|
12461 | }
|
12462 | };
|
12463 |
|
12464 | _this.setGlobalRibbonRootProperty = function () {
|
12465 | var globalRibbonHeight = _this.state.globalRibbonHeight;
|
12466 | setRootProperty(GLOBAL_RIBBON_CUSTOM_PROPERTY, "".concat(globalRibbonHeight, "px"), null);
|
12467 | };
|
12468 |
|
12469 | _this.showToast = function (toast) {
|
12470 | _this.setState(function (_ref) {
|
12471 | var toastMessages = _ref.toastMessages;
|
12472 | var hasToastById = toastMessages.find(function (_ref2) {
|
12473 | var id = _ref2.id;
|
12474 | return id === toast.id;
|
12475 | }) != null;
|
12476 | return {
|
12477 | toastMessages: hasToastById ? toastMessages : [].concat(_toConsumableArray(toastMessages), [toast])
|
12478 | };
|
12479 | });
|
12480 | };
|
12481 |
|
12482 | _this.hideToast = function (_ref3) {
|
12483 | var id = _ref3.id;
|
12484 |
|
12485 | _this.setState(function (_ref4) {
|
12486 | var toastMessages = _ref4.toastMessages;
|
12487 | return {
|
12488 | toastMessages: toastMessages.filter(function (_ref5) {
|
12489 | var toastId = _ref5.id;
|
12490 | return id !== toastId;
|
12491 | })
|
12492 | };
|
12493 | });
|
12494 | };
|
12495 |
|
12496 | _this.setContextualSaveBar = function (props) {
|
12497 | var showContextualSaveBar = _this.state.showContextualSaveBar;
|
12498 | _this.contextualSaveBar = Object.assign({}, props);
|
12499 |
|
12500 | if (showContextualSaveBar === true) {
|
12501 | _this.forceUpdate();
|
12502 | } else {
|
12503 | _this.setState({
|
12504 | showContextualSaveBar: true
|
12505 | });
|
12506 | }
|
12507 | };
|
12508 |
|
12509 | _this.removeContextualSaveBar = function () {
|
12510 | _this.contextualSaveBar = null;
|
12511 |
|
12512 | _this.setState({
|
12513 | showContextualSaveBar: false
|
12514 | });
|
12515 | };
|
12516 |
|
12517 | _this.startLoading = function () {
|
12518 | _this.setState(function (_ref6) {
|
12519 | var loadingStack = _ref6.loadingStack;
|
12520 | return {
|
12521 | loadingStack: loadingStack + 1
|
12522 | };
|
12523 | });
|
12524 | };
|
12525 |
|
12526 | _this.stopLoading = function () {
|
12527 | _this.setState(function (_ref7) {
|
12528 | var loadingStack = _ref7.loadingStack;
|
12529 | return {
|
12530 | loadingStack: Math.max(0, loadingStack - 1)
|
12531 | };
|
12532 | });
|
12533 | };
|
12534 |
|
12535 | _this.handleResize = function () {
|
12536 | if (_this.props.globalRibbon) {
|
12537 | _this.setGlobalRibbonHeight();
|
12538 | }
|
12539 | };
|
12540 |
|
12541 | _this.handleFocus = function () {
|
12542 | _this.setState({
|
12543 | skipFocused: true
|
12544 | });
|
12545 | };
|
12546 |
|
12547 | _this.handleBlur = function () {
|
12548 | _this.setState({
|
12549 | skipFocused: false
|
12550 | });
|
12551 | };
|
12552 |
|
12553 | _this.handleClick = function () {
|
12554 | _this.skipToMainContentTargetNode.current && _this.skipToMainContentTargetNode.current.focus();
|
12555 | };
|
12556 |
|
12557 | _this.handleNavigationDismiss = function () {
|
12558 | var onNavigationDismiss = _this.props.onNavigationDismiss;
|
12559 |
|
12560 | if (onNavigationDismiss != null) {
|
12561 | onNavigationDismiss();
|
12562 | }
|
12563 | };
|
12564 |
|
12565 | _this.setGlobalRibbonContainer = function (node) {
|
12566 | _this.globalRibbonContainer = node;
|
12567 | };
|
12568 |
|
12569 | _this.handleNavKeydown = function (event) {
|
12570 | var key = event.key;
|
12571 |
|
12572 | if (key === 'Escape') {
|
12573 | _this.handleNavigationDismiss();
|
12574 | }
|
12575 | };
|
12576 |
|
12577 | _this.findNavigationNode = function () {
|
12578 | return _this.navigationNode.current;
|
12579 | };
|
12580 |
|
12581 | return _this;
|
12582 | }
|
12583 |
|
12584 | _createClass(Frame, [{
|
12585 | key: "componentDidMount",
|
12586 | value: function componentDidMount() {
|
12587 | this.handleResize();
|
12588 |
|
12589 | if (this.props.globalRibbon) {
|
12590 | return;
|
12591 | }
|
12592 |
|
12593 | this.setGlobalRibbonRootProperty();
|
12594 | }
|
12595 | }, {
|
12596 | key: "componentDidUpdate",
|
12597 | value: function componentDidUpdate(prevProps) {
|
12598 | if (this.props.globalRibbon !== prevProps.globalRibbon) {
|
12599 | this.setGlobalRibbonHeight();
|
12600 | }
|
12601 | }
|
12602 | }, {
|
12603 | key: "render",
|
12604 | value: function render() {
|
12605 | var _this$state = this.state,
|
12606 | skipFocused = _this$state.skipFocused,
|
12607 | loadingStack = _this$state.loadingStack,
|
12608 | toastMessages = _this$state.toastMessages,
|
12609 | showContextualSaveBar = _this$state.showContextualSaveBar;
|
12610 | var _this$props = this.props,
|
12611 | children = _this$props.children,
|
12612 | navigation = _this$props.navigation,
|
12613 | topBar = _this$props.topBar,
|
12614 | globalRibbon = _this$props.globalRibbon,
|
12615 | _this$props$showMobil = _this$props.showMobileNavigation,
|
12616 | showMobileNavigation = _this$props$showMobil === void 0 ? false : _this$props$showMobil,
|
12617 | skipToContentTarget = _this$props.skipToContentTarget,
|
12618 | _this$props$polaris = _this$props.polaris,
|
12619 | intl = _this$props$polaris.intl,
|
12620 | isNavigationCollapsed = _this$props$polaris.mediaQuery.isNavigationCollapsed;
|
12621 | var navClassName = classNames(styles$17.Navigation, showMobileNavigation && styles$17['Navigation-visible']);
|
12622 | var mobileNavHidden = isNavigationCollapsed && !showMobileNavigation;
|
12623 | var mobileNavShowing = isNavigationCollapsed && showMobileNavigation;
|
12624 | var tabIndex = mobileNavShowing ? 0 : -1;
|
12625 | var navigationMarkup = navigation ? React__default.createElement(TrapFocus, {
|
12626 | trapping: mobileNavShowing
|
12627 | }, React__default.createElement(CSSTransition, {
|
12628 | findDOMNode: this.findNavigationNode,
|
12629 | appear: isNavigationCollapsed,
|
12630 | exit: isNavigationCollapsed,
|
12631 | in: showMobileNavigation,
|
12632 | timeout: durationSlow,
|
12633 | classNames: navTransitionClasses
|
12634 | }, React__default.createElement("div", {
|
12635 | ref: this.navigationNode,
|
12636 | className: navClassName,
|
12637 | onKeyDown: this.handleNavKeydown,
|
12638 | id: APP_FRAME_NAV,
|
12639 | key: "NavContent",
|
12640 | hidden: mobileNavHidden
|
12641 | }, navigation, React__default.createElement("button", {
|
12642 | type: "button",
|
12643 | className: styles$17.NavigationDismiss,
|
12644 | onClick: this.handleNavigationDismiss,
|
12645 | "aria-hidden": mobileNavHidden || !isNavigationCollapsed && !showMobileNavigation,
|
12646 | "aria-label": intl.translate('Polaris.Frame.Navigation.closeMobileNavigationLabel'),
|
12647 | tabIndex: tabIndex
|
12648 | }, React__default.createElement(Icon, {
|
12649 | source: MobileCancelMajorMonotone,
|
12650 | color: "white"
|
12651 | }))))) : null;
|
12652 | var loadingMarkup = loadingStack > 0 ? React__default.createElement("div", {
|
12653 | className: styles$17.LoadingBar,
|
12654 | id: APP_FRAME_LOADING_BAR
|
12655 | }, React__default.createElement(Loading, null)) : null;
|
12656 | var contextualSaveBarMarkup = React__default.createElement(CSSAnimation, {
|
12657 | in: showContextualSaveBar,
|
12658 | className: styles$17.ContextualSaveBar,
|
12659 | type: AnimationType.Fade
|
12660 | }, React__default.createElement(ContextualSaveBar$1, this.contextualSaveBar));
|
12661 | var topBarMarkup = topBar ? React__default.createElement("div", Object.assign({
|
12662 | className: styles$17.TopBar
|
12663 | }, layer.props, dataPolarisTopBar.props, {
|
12664 | id: APP_FRAME_TOP_BAR
|
12665 | }), topBar) : null;
|
12666 | var globalRibbonMarkup = globalRibbon ? React__default.createElement("div", {
|
12667 | className: styles$17.GlobalRibbonContainer,
|
12668 | ref: this.setGlobalRibbonContainer
|
12669 | }, globalRibbon) : null;
|
12670 | var skipClassName = classNames(styles$17.Skip, skipFocused && styles$17.focused);
|
12671 | var skipTarget = skipToContentTarget ? skipToContentTarget.current && skipToContentTarget.current.id || '' : APP_FRAME_MAIN_ANCHOR_TARGET;
|
12672 | var skipMarkup = React__default.createElement("div", {
|
12673 | className: skipClassName
|
12674 | }, React__default.createElement("a", {
|
12675 | href: "#".concat(skipTarget),
|
12676 | onFocus: this.handleFocus,
|
12677 | onBlur: this.handleBlur,
|
12678 | onClick: this.handleClick,
|
12679 | className: styles$17.SkipAnchor
|
12680 | }, intl.translate('Polaris.Frame.skipToContent')));
|
12681 | var navigationAttributes = navigation ? {
|
12682 | 'data-has-navigation': true
|
12683 | } : {};
|
12684 | var frameClassName = classNames(styles$17.Frame, navigation && styles$17.hasNav, topBar && styles$17.hasTopBar);
|
12685 | var navigationOverlayMarkup = showMobileNavigation && isNavigationCollapsed ? React__default.createElement(Backdrop, {
|
12686 | belowNavigation: true,
|
12687 | onClick: this.handleNavigationDismiss,
|
12688 | onTouchStart: this.handleNavigationDismiss
|
12689 | }) : null;
|
12690 | var skipToMainContentTarget = skipToContentTarget ? null :
|
12691 | React__default.createElement("a", {
|
12692 | id: APP_FRAME_MAIN_ANCHOR_TARGET,
|
12693 | ref: this.skipToMainContentTargetNode,
|
12694 | tabIndex: -1
|
12695 | });
|
12696 | var context = {
|
12697 | showToast: this.showToast,
|
12698 | hideToast: this.hideToast,
|
12699 | startLoading: this.startLoading,
|
12700 | stopLoading: this.stopLoading,
|
12701 | setContextualSaveBar: this.setContextualSaveBar,
|
12702 | removeContextualSaveBar: this.removeContextualSaveBar
|
12703 | };
|
12704 | return React__default.createElement(FrameContext.Provider, {
|
12705 | value: context
|
12706 | }, React__default.createElement("div", Object.assign({
|
12707 | className: frameClassName
|
12708 | }, layer.props, navigationAttributes), skipMarkup, topBarMarkup, navigationMarkup, contextualSaveBarMarkup, loadingMarkup, navigationOverlayMarkup, React__default.createElement("main", {
|
12709 | className: styles$17.Main,
|
12710 | id: APP_FRAME_MAIN,
|
12711 | "data-has-global-ribbon": Boolean(globalRibbon)
|
12712 | }, skipToMainContentTarget, React__default.createElement("div", {
|
12713 | className: styles$17.Content
|
12714 | }, children)), React__default.createElement(ToastManager, {
|
12715 | toastMessages: toastMessages
|
12716 | }), globalRibbonMarkup, React__default.createElement(EventListener, {
|
12717 | event: "resize",
|
12718 | handler: this.handleResize
|
12719 | })));
|
12720 | }
|
12721 | }]);
|
12722 |
|
12723 | return Frame;
|
12724 | }(React__default.PureComponent);
|
12725 |
|
12726 | var navTransitionClasses = {
|
12727 | enter: classNames(styles$17['Navigation-enter']),
|
12728 | enterActive: classNames(styles$17['Navigation-enterActive']),
|
12729 | enterDone: classNames(styles$17['Navigation-enterActive']),
|
12730 | exit: classNames(styles$17['Navigation-exit']),
|
12731 | exitActive: classNames(styles$17['Navigation-exitActive'])
|
12732 | };
|
12733 |
|
12734 |
|
12735 | var Frame$1 = withAppProvider()(Frame);
|
12736 |
|
12737 | var styles$18 = {
|
12738 | "Indicator": "Polaris-Indicator",
|
12739 | "pulseIndicator": "Polaris-Indicator--pulseIndicator",
|
12740 | "bounce": "Polaris-Indicator--bounce",
|
12741 | "pulse": "Polaris-Indicator--pulse"
|
12742 | };
|
12743 |
|
12744 | function Indicator(_ref) {
|
12745 | var _ref$pulse = _ref.pulse,
|
12746 | pulse = _ref$pulse === void 0 ? true : _ref$pulse;
|
12747 | var className = classNames(styles$18.Indicator, pulse && styles$18.pulseIndicator);
|
12748 | return React__default.createElement("span", {
|
12749 | className: className
|
12750 | });
|
12751 | }
|
12752 |
|
12753 | var styles$19 = {
|
12754 | "KeyboardKey": "Polaris-KeyboardKey"
|
12755 | };
|
12756 |
|
12757 | function KeyboardKey(_ref) {
|
12758 | var children = _ref.children;
|
12759 | var key = children || '';
|
12760 | key = key.length > 1 ? key.toLowerCase() : key.toUpperCase();
|
12761 | return React__default.createElement("kbd", {
|
12762 | className: styles$19.KeyboardKey
|
12763 | }, key);
|
12764 | }
|
12765 |
|
12766 | var styles$1a = {
|
12767 | "Layout": "Polaris-Layout",
|
12768 | "Section": "Polaris-Layout__Section",
|
12769 | "Section-secondary": "Polaris-Layout__Section--secondary",
|
12770 | "Section-fullWidth": "Polaris-Layout__Section--fullWidth",
|
12771 | "Section-oneHalf": "Polaris-Layout__Section--oneHalf",
|
12772 | "Section-oneThird": "Polaris-Layout__Section--oneThird",
|
12773 | "AnnotatedSection": "Polaris-Layout__AnnotatedSection",
|
12774 | "AnnotationWrapper": "Polaris-Layout__AnnotationWrapper",
|
12775 | "AnnotationContent": "Polaris-Layout__AnnotationContent",
|
12776 | "Annotation": "Polaris-Layout__Annotation",
|
12777 | "AnnotationDescription": "Polaris-Layout__AnnotationDescription"
|
12778 | };
|
12779 |
|
12780 | function AnnotatedSection(props) {
|
12781 | var children = props.children,
|
12782 | title = props.title,
|
12783 | description = props.description;
|
12784 | var descriptionMarkup = typeof description === 'string' ? React__default.createElement("p", null, description) : description;
|
12785 | return React__default.createElement("div", {
|
12786 | className: styles$1a.AnnotatedSection
|
12787 | }, React__default.createElement("div", {
|
12788 | className: styles$1a.AnnotationWrapper
|
12789 | }, React__default.createElement("div", {
|
12790 | className: styles$1a.Annotation
|
12791 | }, React__default.createElement(TextContainer, null, React__default.createElement(Heading, null, title), descriptionMarkup && React__default.createElement("div", {
|
12792 | className: styles$1a.AnnotationDescription
|
12793 | }, descriptionMarkup))), React__default.createElement("div", {
|
12794 | className: styles$1a.AnnotationContent
|
12795 | }, children)));
|
12796 | }
|
12797 |
|
12798 | function Section$4(_ref) {
|
12799 | var children = _ref.children,
|
12800 | secondary = _ref.secondary,
|
12801 | fullWidth = _ref.fullWidth,
|
12802 | oneHalf = _ref.oneHalf,
|
12803 | oneThird = _ref.oneThird;
|
12804 | var className = classNames(styles$1a.Section, secondary && styles$1a['Section-secondary'], fullWidth && styles$1a['Section-fullWidth'], oneHalf && styles$1a['Section-oneHalf'], oneThird && styles$1a['Section-oneThird']);
|
12805 | return React__default.createElement("div", {
|
12806 | className: className
|
12807 | }, children);
|
12808 | }
|
12809 |
|
12810 | var Layout =
|
12811 |
|
12812 | function (_React$Component) {
|
12813 | _inherits(Layout, _React$Component);
|
12814 |
|
12815 | function Layout() {
|
12816 | _classCallCheck(this, Layout);
|
12817 |
|
12818 | return _possibleConstructorReturn(this, _getPrototypeOf(Layout).apply(this, arguments));
|
12819 | }
|
12820 |
|
12821 | _createClass(Layout, [{
|
12822 | key: "render",
|
12823 | value: function render() {
|
12824 | var _this$props = this.props,
|
12825 | children = _this$props.children,
|
12826 | sectioned = _this$props.sectioned;
|
12827 | var content = sectioned ? React__default.createElement(Section$4, null, children) : children;
|
12828 | return React__default.createElement("div", {
|
12829 | className: styles$1a.Layout
|
12830 | }, content);
|
12831 | }
|
12832 | }]);
|
12833 |
|
12834 | return Layout;
|
12835 | }(React__default.Component);
|
12836 | Layout.AnnotatedSection = AnnotatedSection;
|
12837 | Layout.Section = Section$4;
|
12838 |
|
12839 | var styles$1b = {
|
12840 | "Link": "Polaris-Link",
|
12841 | "IconLockup": "Polaris-Link__IconLockup",
|
12842 | "IconLayout": "Polaris-Link__IconLayout",
|
12843 | "monochrome": "Polaris-Link--monochrome"
|
12844 | };
|
12845 |
|
12846 | function Link(_ref) {
|
12847 | var url = _ref.url,
|
12848 | children = _ref.children,
|
12849 | onClick = _ref.onClick,
|
12850 | external = _ref.external,
|
12851 | id = _ref.id,
|
12852 | monochrome = _ref.monochrome;
|
12853 | var i18n = useI18n();
|
12854 | var childrenMarkup = children;
|
12855 |
|
12856 | if (external && typeof children === 'string') {
|
12857 | var iconLabel = i18n.translate('Polaris.Common.newWindowAccessibilityHint');
|
12858 | childrenMarkup = React__default.createElement(React__default.Fragment, null, children, React__default.createElement("span", {
|
12859 | className: styles$1b.IconLockup
|
12860 | }, React__default.createElement("span", {
|
12861 | className: styles$1b.IconLayout
|
12862 | }, React__default.createElement(Icon, {
|
12863 | accessibilityLabel: iconLabel,
|
12864 | source: ExternalSmallMinor
|
12865 | }))));
|
12866 | }
|
12867 |
|
12868 | return React__default.createElement(BannerContext.Consumer, null, function (BannerContext) {
|
12869 | var shouldBeMonochrome = monochrome || BannerContext;
|
12870 | var className = classNames(styles$1b.Link, shouldBeMonochrome && styles$1b.monochrome);
|
12871 | return url ? React__default.createElement(UnstyledLink, {
|
12872 | onClick: onClick,
|
12873 | className: className,
|
12874 | url: url,
|
12875 | external: external,
|
12876 | id: id
|
12877 | }, childrenMarkup) : React__default.createElement("button", {
|
12878 | type: "button",
|
12879 | onClick: onClick,
|
12880 | className: className,
|
12881 | id: id
|
12882 | }, childrenMarkup);
|
12883 | });
|
12884 | }
|
12885 |
|
12886 | var styles$1c = {
|
12887 | "List": "Polaris-List",
|
12888 | "typeNumber": "Polaris-List--typeNumber",
|
12889 | "Item": "Polaris-List__Item"
|
12890 | };
|
12891 |
|
12892 | function Item$6(_ref) {
|
12893 | var children = _ref.children;
|
12894 | return React__default.createElement("li", {
|
12895 | className: styles$1c.Item
|
12896 | }, children);
|
12897 | }
|
12898 |
|
12899 | var List =
|
12900 |
|
12901 | function (_React$PureComponent) {
|
12902 | _inherits(List, _React$PureComponent);
|
12903 |
|
12904 | function List() {
|
12905 | _classCallCheck(this, List);
|
12906 |
|
12907 | return _possibleConstructorReturn(this, _getPrototypeOf(List).apply(this, arguments));
|
12908 | }
|
12909 |
|
12910 | _createClass(List, [{
|
12911 | key: "render",
|
12912 | value: function render() {
|
12913 | var _this$props = this.props,
|
12914 | children = _this$props.children,
|
12915 | _this$props$type = _this$props.type,
|
12916 | type = _this$props$type === void 0 ? 'bullet' : _this$props$type;
|
12917 | var className = classNames(styles$1c.List, type && styles$1c[variationName('type', type)]);
|
12918 | var ListElement = type === 'bullet' ? 'ul' : 'ol';
|
12919 | return React__default.createElement(ListElement, {
|
12920 | className: className
|
12921 | }, children);
|
12922 | }
|
12923 | }]);
|
12924 |
|
12925 | return List;
|
12926 | }(React__default.PureComponent);
|
12927 | List.Item = Item$6;
|
12928 |
|
12929 | var Loading$1 = React__default.memo(function Loading() {
|
12930 | var appBridgeLoading = useRef();
|
12931 | var appBridge = useAppBridge();
|
12932 |
|
12933 | var _useFrame = useFrame(),
|
12934 | startLoading = _useFrame.startLoading,
|
12935 | stopLoading = _useFrame.stopLoading;
|
12936 |
|
12937 | useEffect(function () {
|
12938 | if (appBridge == null) {
|
12939 | startLoading();
|
12940 | } else {
|
12941 |
|
12942 | console.warn('Deprecation: Using `Loading` in an embedded app is deprecated and will be removed in v5.0. Use `Loading` from `@shopify/app-bridge-react` instead: https://help.shopify.com/en/api/embedded-apps/app-bridge/react-components/loading');
|
12943 | appBridgeLoading.current = Loading$2.create(appBridge);
|
12944 | appBridgeLoading.current.dispatch(Loading$2.Action.START);
|
12945 | }
|
12946 |
|
12947 | return function () {
|
12948 | if (appBridge == null) {
|
12949 | stopLoading();
|
12950 | } else {
|
12951 | appBridgeLoading.current && appBridgeLoading.current.dispatch(Loading$2.Action.STOP);
|
12952 | }
|
12953 | };
|
12954 | }, [appBridge, startLoading, stopLoading]);
|
12955 | return null;
|
12956 | });
|
12957 |
|
12958 | var NavigationContext = React__default.createContext({
|
12959 | location: ''
|
12960 | });
|
12961 |
|
12962 | var styles$1d = {
|
12963 | "Navigation": "Polaris-Navigation",
|
12964 | "UserMenu": "Polaris-Navigation__UserMenu",
|
12965 | "ContextControl": "Polaris-Navigation__ContextControl",
|
12966 | "PrimaryNavigation": "Polaris-Navigation__PrimaryNavigation",
|
12967 | "Item": "Polaris-Navigation__Item",
|
12968 | "Icon": "Polaris-Navigation__Icon",
|
12969 | "Item-selected": "Polaris-Navigation__Item--selected",
|
12970 | "Item-disabled": "Polaris-Navigation__Item--disabled",
|
12971 | "Badge": "Polaris-Navigation__Badge",
|
12972 | "subNavigationActive": "Polaris-Navigation--subNavigationActive",
|
12973 | "ListItem": "Polaris-Navigation__ListItem",
|
12974 | "RollupSection": "Polaris-Navigation__RollupSection",
|
12975 | "SecondaryNavigation": "Polaris-Navigation__SecondaryNavigation",
|
12976 | "fade-in": "Polaris-Navigation__fade--in",
|
12977 | "ListItem-hasAction": "Polaris-Navigation__ListItem--hasAction",
|
12978 | "ItemWrapper": "Polaris-Navigation__ItemWrapper",
|
12979 | "Text": "Polaris-Navigation__Text",
|
12980 | "SecondaryAction": "Polaris-Navigation__SecondaryAction",
|
12981 | "List": "Polaris-Navigation__List",
|
12982 | "Section": "Polaris-Navigation__Section",
|
12983 | "Section-fill": "Polaris-Navigation__Section--fill",
|
12984 | "Section-withSeparator": "Polaris-Navigation__Section--withSeparator",
|
12985 | "SectionHeading": "Polaris-Navigation__SectionHeading",
|
12986 | "Action": "Polaris-Navigation__Action",
|
12987 | "RollupToggle": "Polaris-Navigation__RollupToggle",
|
12988 | "Indicator": "Polaris-Navigation__Indicator"
|
12989 | };
|
12990 |
|
12991 | function Secondary(_ref) {
|
12992 | var children = _ref.children,
|
12993 | expanded = _ref.expanded;
|
12994 | var id = useUniqueId('SecondaryNavigation');
|
12995 | return React__default.createElement(Collapsible, {
|
12996 | id: id,
|
12997 | open: expanded
|
12998 | }, React__default.createElement("ul", {
|
12999 | className: styles$1d.List
|
13000 | }, children));
|
13001 | }
|
13002 |
|
13003 | var MatchState;
|
13004 |
|
13005 | (function (MatchState) {
|
13006 | MatchState[MatchState["MatchForced"] = 0] = "MatchForced";
|
13007 | MatchState[MatchState["MatchUrl"] = 1] = "MatchUrl";
|
13008 | MatchState[MatchState["MatchPaths"] = 2] = "MatchPaths";
|
13009 | MatchState[MatchState["Excluded"] = 3] = "Excluded";
|
13010 | MatchState[MatchState["NoMatch"] = 4] = "NoMatch";
|
13011 | })(MatchState || (MatchState = {}));
|
13012 |
|
13013 | function Item$7(_ref) {
|
13014 | var url = _ref.url,
|
13015 | icon = _ref.icon,
|
13016 | label = _ref.label,
|
13017 | _ref$subNavigationIte = _ref.subNavigationItems,
|
13018 | subNavigationItems = _ref$subNavigationIte === void 0 ? [] : _ref$subNavigationIte,
|
13019 | secondaryAction = _ref.secondaryAction,
|
13020 | disabled = _ref.disabled,
|
13021 | onClick = _ref.onClick,
|
13022 | accessibilityLabel = _ref.accessibilityLabel,
|
13023 | selectedOverride = _ref.selected,
|
13024 | badge = _ref.badge,
|
13025 | isNew = _ref.new,
|
13026 | matches = _ref.matches,
|
13027 | exactMatch = _ref.exactMatch,
|
13028 | matchPaths = _ref.matchPaths,
|
13029 | excludePaths = _ref.excludePaths;
|
13030 | var i18n = useI18n();
|
13031 |
|
13032 | var _useMediaQuery = useMediaQuery(),
|
13033 | isNavigationCollapsed = _useMediaQuery.isNavigationCollapsed;
|
13034 |
|
13035 | var _useContext = useContext(NavigationContext),
|
13036 | location = _useContext.location,
|
13037 | onNavigationDismiss = _useContext.onNavigationDismiss;
|
13038 |
|
13039 | var _useState = useState(false),
|
13040 | _useState2 = _slicedToArray(_useState, 2),
|
13041 | expanded = _useState2[0],
|
13042 | setExpanded = _useState2[1];
|
13043 |
|
13044 | useEffect(function () {
|
13045 | if (!isNavigationCollapsed && expanded) {
|
13046 | setExpanded(false);
|
13047 | }
|
13048 | }, [expanded, isNavigationCollapsed]);
|
13049 | var tabIndex = disabled ? -1 : 0;
|
13050 | var hasNewChild = subNavigationItems.filter(function (subNavigationItem) {
|
13051 | return subNavigationItem.new;
|
13052 | }).length > 0;
|
13053 | var indicatorMarkup = hasNewChild ? React__default.createElement("span", {
|
13054 | className: styles$1d.Indicator
|
13055 | }, React__default.createElement(Indicator, {
|
13056 | pulse: true
|
13057 | })) : null;
|
13058 | var iconMarkup = icon ? React__default.createElement("div", {
|
13059 | className: styles$1d.Icon
|
13060 | }, React__default.createElement(Icon, {
|
13061 | source: icon
|
13062 | })) : null;
|
13063 | var badgeMarkup = null;
|
13064 |
|
13065 | if (isNew) {
|
13066 | badgeMarkup = React__default.createElement(Badge, {
|
13067 | status: "new",
|
13068 | size: "small"
|
13069 | }, i18n.translate('Polaris.Badge.STATUS_LABELS.new'));
|
13070 | } else if (typeof badge === 'string') {
|
13071 | badgeMarkup = React__default.createElement(Badge, {
|
13072 | status: "new",
|
13073 | size: "small"
|
13074 | }, badge);
|
13075 | } else {
|
13076 | badgeMarkup = badge;
|
13077 | }
|
13078 |
|
13079 | var wrappedBadgeMarkup = badgeMarkup == null ? null : React__default.createElement("div", {
|
13080 | className: styles$1d.Badge
|
13081 | }, badgeMarkup);
|
13082 | var itemContentMarkup = React__default.createElement(Fragment, null, iconMarkup, React__default.createElement("span", {
|
13083 | className: styles$1d.Text
|
13084 | }, label, indicatorMarkup), wrappedBadgeMarkup);
|
13085 |
|
13086 | if (url == null) {
|
13087 | var _className = classNames(styles$1d.Item, disabled && styles$1d['Item-disabled']);
|
13088 |
|
13089 | return React__default.createElement("li", {
|
13090 | className: styles$1d.ListItem
|
13091 | }, React__default.createElement("button", {
|
13092 | type: "button",
|
13093 | className: _className,
|
13094 | disabled: disabled,
|
13095 | "aria-disabled": disabled,
|
13096 | "aria-label": accessibilityLabel,
|
13097 | onClick: getClickHandler(onClick)
|
13098 | }, itemContentMarkup));
|
13099 | }
|
13100 |
|
13101 | var secondaryActionMarkup = secondaryAction && React__default.createElement(UnstyledLink, {
|
13102 | external: true,
|
13103 | url: secondaryAction.url,
|
13104 | className: styles$1d.SecondaryAction,
|
13105 | tabIndex: tabIndex,
|
13106 | "aria-disabled": disabled,
|
13107 | "aria-label": secondaryAction.accessibilityLabel
|
13108 | }, React__default.createElement(Icon, {
|
13109 | source: secondaryAction.icon
|
13110 | }));
|
13111 | var matchState = matchStateForItem({
|
13112 | url,
|
13113 | matches,
|
13114 | exactMatch,
|
13115 | matchPaths,
|
13116 | excludePaths
|
13117 | }, location);
|
13118 | var matchingSubNavigationItems = subNavigationItems.filter(function (item) {
|
13119 | var subMatchState = matchStateForItem(item, location);
|
13120 | return subMatchState === MatchState.MatchForced || subMatchState === MatchState.MatchUrl || subMatchState === MatchState.MatchPaths;
|
13121 | });
|
13122 | var childIsActive = matchingSubNavigationItems.length > 0;
|
13123 | var selected = selectedOverride == null ? matchState === MatchState.MatchForced || matchState === MatchState.MatchUrl || matchState === MatchState.MatchPaths : selectedOverride;
|
13124 | var showExpanded = selected || expanded || childIsActive;
|
13125 | var itemClassName = classNames(styles$1d.Item, disabled && styles$1d['Item-disabled'], selected && subNavigationItems.length === 0 && styles$1d['Item-selected'], showExpanded && styles$1d.subNavigationActive);
|
13126 | var secondaryNavigationMarkup = null;
|
13127 |
|
13128 | if (subNavigationItems.length > 0 && showExpanded) {
|
13129 | var longestMatch = matchingSubNavigationItems.sort(function (_ref2, _ref3) {
|
13130 | var firstUrl = _ref2.url;
|
13131 | var secondUrl = _ref3.url;
|
13132 | return secondUrl.length - firstUrl.length;
|
13133 | })[0];
|
13134 | secondaryNavigationMarkup = React__default.createElement("div", {
|
13135 | className: styles$1d.SecondaryNavigation
|
13136 | }, React__default.createElement(Secondary, {
|
13137 | expanded: showExpanded
|
13138 | }, subNavigationItems.map(function (item) {
|
13139 | var label = item.label,
|
13140 | rest = __rest(item, ["label"]);
|
13141 |
|
13142 | return React__default.createElement(Item$7, Object.assign({}, rest, {
|
13143 | key: label,
|
13144 | label: label,
|
13145 | matches: item === longestMatch,
|
13146 | onClick: onNavigationDismiss
|
13147 | }));
|
13148 | })));
|
13149 | }
|
13150 |
|
13151 | var className = classNames(styles$1d.ListItem, secondaryAction && styles$1d['ListItem-hasAction']);
|
13152 | return React__default.createElement("li", {
|
13153 | className: className
|
13154 | }, React__default.createElement("div", {
|
13155 | className: styles$1d.ItemWrapper
|
13156 | }, React__default.createElement(UnstyledLink, {
|
13157 | url: url,
|
13158 | className: itemClassName,
|
13159 | tabIndex: tabIndex,
|
13160 | "aria-disabled": disabled,
|
13161 | "aria-label": accessibilityLabel,
|
13162 | onClick: getClickHandler(onClick)
|
13163 | }, itemContentMarkup), secondaryActionMarkup), secondaryNavigationMarkup);
|
13164 |
|
13165 | function getClickHandler(onClick) {
|
13166 | return function (event) {
|
13167 | var currentTarget = event.currentTarget;
|
13168 |
|
13169 | if (currentTarget.getAttribute('href') === location) {
|
13170 | event.preventDefault();
|
13171 | }
|
13172 |
|
13173 | if (subNavigationItems && subNavigationItems.length > 0 && isNavigationCollapsed) {
|
13174 | event.preventDefault();
|
13175 | setExpanded(!expanded);
|
13176 | } else if (onNavigationDismiss) {
|
13177 | onNavigationDismiss();
|
13178 |
|
13179 | if (onClick && onClick !== onNavigationDismiss) {
|
13180 | onClick();
|
13181 | }
|
13182 |
|
13183 | return;
|
13184 | }
|
13185 |
|
13186 | if (onClick) {
|
13187 | onClick();
|
13188 | }
|
13189 | };
|
13190 | }
|
13191 | }
|
13192 | function isNavigationItemActive(navigationItem, currentPath) {
|
13193 | var matchState = matchStateForItem(navigationItem, currentPath);
|
13194 | var matchingSubNavigationItems = navigationItem.subNavigationItems && navigationItem.subNavigationItems.filter(function (item) {
|
13195 | var subMatchState = matchStateForItem(item, currentPath);
|
13196 | return subMatchState === MatchState.MatchForced || subMatchState === MatchState.MatchUrl || subMatchState === MatchState.MatchPaths;
|
13197 | });
|
13198 | var childIsActive = matchingSubNavigationItems && matchingSubNavigationItems.length > 0;
|
13199 | var selected = matchState === MatchState.MatchForced || matchState === MatchState.MatchUrl || matchState === MatchState.MatchPaths;
|
13200 | return selected || childIsActive;
|
13201 | }
|
13202 |
|
13203 | function normalizePathname(pathname) {
|
13204 | var barePathname = pathname.split('?')[0].split('#')[0];
|
13205 | return barePathname.endsWith('/') ? barePathname : "".concat(barePathname, "/");
|
13206 | }
|
13207 |
|
13208 | function safeEqual(location, path) {
|
13209 | return normalizePathname(location) === normalizePathname(path);
|
13210 | }
|
13211 |
|
13212 | function safeStartsWith(location, path) {
|
13213 | return normalizePathname(location).startsWith(normalizePathname(path));
|
13214 | }
|
13215 |
|
13216 | function matchStateForItem(_ref4, location) {
|
13217 | var url = _ref4.url,
|
13218 | matches = _ref4.matches,
|
13219 | exactMatch = _ref4.exactMatch,
|
13220 | matchPaths = _ref4.matchPaths,
|
13221 | excludePaths = _ref4.excludePaths;
|
13222 |
|
13223 | if (url == null) {
|
13224 | return MatchState.NoMatch;
|
13225 | }
|
13226 |
|
13227 | if (matches) {
|
13228 | return MatchState.MatchForced;
|
13229 | }
|
13230 |
|
13231 | if (matches === false || excludePaths && excludePaths.some(function (path) {
|
13232 | return safeStartsWith(location, path);
|
13233 | })) {
|
13234 | return MatchState.Excluded;
|
13235 | }
|
13236 |
|
13237 | if (matchPaths && matchPaths.some(function (path) {
|
13238 | return safeStartsWith(location, path);
|
13239 | })) {
|
13240 | return MatchState.MatchPaths;
|
13241 | }
|
13242 |
|
13243 | var matchesUrl = exactMatch ? safeEqual(location, url) : safeStartsWith(location, url);
|
13244 | return matchesUrl ? MatchState.MatchUrl : MatchState.NoMatch;
|
13245 | }
|
13246 |
|
13247 | var createAdditionalItemsId = createUniqueIDFactory('AdditionalItems');
|
13248 | var Section$5 =
|
13249 |
|
13250 | function (_React$Component) {
|
13251 | _inherits(Section, _React$Component);
|
13252 |
|
13253 | function Section() {
|
13254 | var _this;
|
13255 |
|
13256 | _classCallCheck(this, Section);
|
13257 |
|
13258 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Section).apply(this, arguments));
|
13259 | _this.state = {
|
13260 | expanded: false
|
13261 | };
|
13262 | _this.animationFrame = null;
|
13263 |
|
13264 | _this.toggleViewAll = function () {
|
13265 | _this.setState(function (_ref) {
|
13266 | var expanded = _ref.expanded;
|
13267 | return {
|
13268 | expanded: !expanded
|
13269 | };
|
13270 | });
|
13271 | };
|
13272 |
|
13273 | return _this;
|
13274 | }
|
13275 |
|
13276 | _createClass(Section, [{
|
13277 | key: "componentWillUnmount",
|
13278 | value: function componentWillUnmount() {
|
13279 | if (this.animationFrame) {
|
13280 | cancelAnimationFrame(this.animationFrame);
|
13281 | }
|
13282 | }
|
13283 | }, {
|
13284 | key: "render",
|
13285 | value: function render() {
|
13286 | var _this2 = this;
|
13287 |
|
13288 | var _this$props = this.props,
|
13289 | title = _this$props.title,
|
13290 | fill = _this$props.fill,
|
13291 | action = _this$props.action,
|
13292 | items = _this$props.items,
|
13293 | rollup = _this$props.rollup,
|
13294 | separator = _this$props.separator;
|
13295 | var expanded = this.state.expanded;
|
13296 | var className = classNames(styles$1d.Section, separator && styles$1d['Section-withSeparator'], fill && styles$1d['Section-fill']);
|
13297 | var actionMarkup = action && React__default.createElement("button", {
|
13298 | type: "button",
|
13299 | className: styles$1d.Action,
|
13300 | "aria-label": action.accessibilityLabel,
|
13301 | onClick: action.onClick
|
13302 | }, React__default.createElement(Icon, {
|
13303 | source: action.icon
|
13304 | }));
|
13305 | var sectionHeadingMarkup = title && React__default.createElement("li", {
|
13306 | className: styles$1d.SectionHeading
|
13307 | }, React__default.createElement("span", {
|
13308 | className: styles$1d.Text
|
13309 | }, title), actionMarkup);
|
13310 | var itemsMarkup = items.map(function (item) {
|
13311 | var onClick = item.onClick,
|
13312 | label = item.label,
|
13313 | subNavigationItems = item.subNavigationItems,
|
13314 | rest = __rest(item, ["onClick", "label", "subNavigationItems"]);
|
13315 |
|
13316 | var hasSubNavItems = subNavigationItems != null && subNavigationItems.length > 0;
|
13317 | return React__default.createElement(Item$7, Object.assign({}, rest, {
|
13318 | key: label,
|
13319 | label: label,
|
13320 | subNavigationItems: subNavigationItems,
|
13321 | onClick: _this2.handleClick(onClick, hasSubNavItems)
|
13322 | }));
|
13323 | });
|
13324 | var toggleClassName = classNames(styles$1d.Item, styles$1d.RollupToggle);
|
13325 | var ariaLabel = rollup && (expanded ? rollup.hide : rollup.view);
|
13326 | var toggleRollup = rollup && items.length > rollup.after && React__default.createElement("div", {
|
13327 | className: styles$1d.ListItem,
|
13328 | key: "List Item"
|
13329 | }, React__default.createElement("button", {
|
13330 | type: "button",
|
13331 | className: toggleClassName,
|
13332 | onClick: this.toggleViewAll,
|
13333 | "aria-label": ariaLabel
|
13334 | }, React__default.createElement("span", {
|
13335 | className: styles$1d.Icon
|
13336 | }, React__default.createElement(Icon, {
|
13337 | source: HorizontalDotsMinor
|
13338 | }))));
|
13339 | var activeItemIndex = items.findIndex(function (item) {
|
13340 | if (!rollup) {
|
13341 | return false;
|
13342 | }
|
13343 |
|
13344 | return rollup.activePath === item.url || item.url && rollup.activePath.startsWith(item.url) || (item.subNavigationItems ? item.subNavigationItems.some(function (_ref2) {
|
13345 | var itemUrl = _ref2.url;
|
13346 | return rollup.activePath.startsWith(itemUrl);
|
13347 | }) : false);
|
13348 | });
|
13349 | var sectionItems = rollup ? itemsMarkup.slice(0, rollup.after) : itemsMarkup;
|
13350 | var additionalItems = rollup ? itemsMarkup.slice(rollup.after) : [];
|
13351 |
|
13352 | if (rollup && activeItemIndex !== -1 && activeItemIndex > rollup.after - 1) {
|
13353 | sectionItems.push.apply(sectionItems, _toConsumableArray(additionalItems.splice(activeItemIndex - rollup.after, 1)));
|
13354 | }
|
13355 |
|
13356 | var additionalItemsId = createAdditionalItemsId();
|
13357 | var activeItemsMarkup = rollup && additionalItems.length > 0 && React__default.createElement("li", {
|
13358 | className: styles$1d.RollupSection
|
13359 | }, React__default.createElement(Collapsible, {
|
13360 | id: additionalItemsId,
|
13361 | open: expanded
|
13362 | }, React__default.createElement("ul", {
|
13363 | className: styles$1d.List
|
13364 | }, additionalItems)), toggleRollup);
|
13365 | return React__default.createElement("ul", {
|
13366 | className: className
|
13367 | }, sectionHeadingMarkup, sectionItems, activeItemsMarkup);
|
13368 | }
|
13369 | }, {
|
13370 | key: "handleClick",
|
13371 | value: function handleClick(onClick, hasSubNavItems) {
|
13372 | var _this3 = this;
|
13373 |
|
13374 | return function () {
|
13375 | if (onClick) {
|
13376 | onClick();
|
13377 | }
|
13378 |
|
13379 | if (_this3.animationFrame) {
|
13380 | cancelAnimationFrame(_this3.animationFrame);
|
13381 | }
|
13382 |
|
13383 | if (!hasSubNavItems || !navigationBarCollapsed().matches) {
|
13384 | _this3.animationFrame = requestAnimationFrame(function () {
|
13385 | return _this3.setState({
|
13386 | expanded: false
|
13387 | });
|
13388 | });
|
13389 | }
|
13390 | };
|
13391 | }
|
13392 | }]);
|
13393 |
|
13394 | return Section;
|
13395 | }(React__default.Component);
|
13396 |
|
13397 | var Navigation$1 =
|
13398 |
|
13399 | function (_React$Component) {
|
13400 | _inherits(Navigation, _React$Component);
|
13401 |
|
13402 | function Navigation() {
|
13403 | _classCallCheck(this, Navigation);
|
13404 |
|
13405 | return _possibleConstructorReturn(this, _getPrototypeOf(Navigation).apply(this, arguments));
|
13406 | }
|
13407 |
|
13408 | _createClass(Navigation, [{
|
13409 | key: "render",
|
13410 | value: function render() {
|
13411 | var _this$props = this.props,
|
13412 | children = _this$props.children,
|
13413 | contextControl = _this$props.contextControl,
|
13414 | location = _this$props.location,
|
13415 | onDismiss = _this$props.onDismiss;
|
13416 | var contextControlMarkup = contextControl && React__default.createElement("div", {
|
13417 | className: styles$1d.ContextControl
|
13418 | }, contextControl);
|
13419 | var context = {
|
13420 | location,
|
13421 | onNavigationDismiss: onDismiss
|
13422 | };
|
13423 | return React__default.createElement(NavigationContext.Provider, {
|
13424 | value: context
|
13425 | }, React__default.createElement(WithinContentContext.Provider, {
|
13426 | value: true
|
13427 | }, React__default.createElement("nav", {
|
13428 | className: styles$1d.Navigation
|
13429 | }, contextControlMarkup, React__default.createElement(Scrollable, {
|
13430 | className: styles$1d.PrimaryNavigation
|
13431 | }, children))));
|
13432 | }
|
13433 | }]);
|
13434 |
|
13435 | return Navigation;
|
13436 | }(React__default.Component);
|
13437 | Navigation$1.Item = Item$7;
|
13438 | Navigation$1.Section = Section$5;
|
13439 |
|
13440 | var EditableTarget;
|
13441 |
|
13442 | (function (EditableTarget) {
|
13443 | EditableTarget["Input"] = "INPUT";
|
13444 | EditableTarget["Textarea"] = "TEXTAREA";
|
13445 | EditableTarget["Select"] = "SELECT";
|
13446 | EditableTarget["ContentEditable"] = "contenteditable";
|
13447 | })(EditableTarget || (EditableTarget = {}));
|
13448 |
|
13449 | function isInputFocused() {
|
13450 | if (document == null || document.activeElement == null) {
|
13451 | return false;
|
13452 | }
|
13453 |
|
13454 | var tagName = document.activeElement.tagName;
|
13455 | return tagName === EditableTarget.Input || tagName === EditableTarget.Textarea || tagName === EditableTarget.Select || document.activeElement.hasAttribute(EditableTarget.ContentEditable);
|
13456 | }
|
13457 |
|
13458 | var styles$1e = {
|
13459 | "Tooltip": "Polaris-Tooltip",
|
13460 | "measuring": "Polaris-Tooltip--measuring",
|
13461 | "positionedAbove": "Polaris-Tooltip--positionedAbove",
|
13462 | "light": "Polaris-Tooltip--light",
|
13463 | "Wrapper": "Polaris-Tooltip__Wrapper",
|
13464 | "Content": "Polaris-Tooltip__Content",
|
13465 | "Label": "Polaris-Tooltip__Label"
|
13466 | };
|
13467 |
|
13468 | var TooltipOverlay =
|
13469 |
|
13470 | function (_React$PureComponent) {
|
13471 | _inherits(TooltipOverlay, _React$PureComponent);
|
13472 |
|
13473 | function TooltipOverlay() {
|
13474 | var _this;
|
13475 |
|
13476 | _classCallCheck(this, TooltipOverlay);
|
13477 |
|
13478 | _this = _possibleConstructorReturn(this, _getPrototypeOf(TooltipOverlay).apply(this, arguments));
|
13479 |
|
13480 | _this.renderOverlay = function () {
|
13481 | var _this$props = _this.props,
|
13482 | active = _this$props.active,
|
13483 | activator = _this$props.activator,
|
13484 | _this$props$preferred = _this$props.preferredPosition,
|
13485 | preferredPosition = _this$props$preferred === void 0 ? 'below' : _this$props$preferred;
|
13486 | return React__default.createElement(PositionedOverlay, {
|
13487 | active: active,
|
13488 | activator: activator,
|
13489 | preferredPosition: preferredPosition,
|
13490 | render: _this.renderTooltip
|
13491 | });
|
13492 | };
|
13493 |
|
13494 | _this.renderTooltip = function (overlayDetails) {
|
13495 | var measuring = overlayDetails.measuring,
|
13496 | desiredHeight = overlayDetails.desiredHeight,
|
13497 | positioning = overlayDetails.positioning;
|
13498 | var _this$props2 = _this.props,
|
13499 | id = _this$props2.id,
|
13500 | children = _this$props2.children,
|
13501 | light = _this$props2.light;
|
13502 | var containerClassName = classNames(styles$1e.Tooltip, light && styles$1e.light, measuring && styles$1e.measuring, positioning === 'above' && styles$1e.positionedAbove);
|
13503 | var contentStyles = measuring ? undefined : {
|
13504 | minHeight: desiredHeight
|
13505 | };
|
13506 | return React__default.createElement("div", Object.assign({
|
13507 | className: containerClassName
|
13508 | }, layer.props), React__default.createElement("div", {
|
13509 | className: styles$1e.Wrapper
|
13510 | }, React__default.createElement("div", {
|
13511 | id: id,
|
13512 | role: "tooltip",
|
13513 | className: styles$1e.Content,
|
13514 | style: contentStyles
|
13515 | }, children)));
|
13516 | };
|
13517 |
|
13518 | return _this;
|
13519 | }
|
13520 |
|
13521 | _createClass(TooltipOverlay, [{
|
13522 | key: "render",
|
13523 | value: function render() {
|
13524 | var markup = this.props.active ? this.renderOverlay() : null;
|
13525 | return markup;
|
13526 | }
|
13527 | }]);
|
13528 |
|
13529 | return TooltipOverlay;
|
13530 | }(React__default.PureComponent);
|
13531 |
|
13532 | var getUniqueID$2 = createUniqueIDFactory('TooltipContent');
|
13533 | var Tooltip =
|
13534 |
|
13535 | function (_React$PureComponent) {
|
13536 | _inherits(Tooltip, _React$PureComponent);
|
13537 |
|
13538 | function Tooltip() {
|
13539 | var _this;
|
13540 |
|
13541 | _classCallCheck(this, Tooltip);
|
13542 |
|
13543 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Tooltip).apply(this, arguments));
|
13544 | _this.state = {
|
13545 | active: Boolean(_this.props.active),
|
13546 | activatorNode: null
|
13547 | };
|
13548 | _this.id = getUniqueID$2();
|
13549 | _this.mouseEntered = false;
|
13550 |
|
13551 | _this.setActivator = function (node) {
|
13552 | if (node == null) {
|
13553 | _this.activatorContainer = null;
|
13554 |
|
13555 | _this.setState({
|
13556 | activatorNode: null
|
13557 | });
|
13558 |
|
13559 | return;
|
13560 | }
|
13561 |
|
13562 | _this.setState({
|
13563 | activatorNode: node.firstElementChild
|
13564 | });
|
13565 |
|
13566 | _this.activatorContainer = node;
|
13567 | };
|
13568 |
|
13569 | _this.handleFocus = function () {
|
13570 | _this.setState({
|
13571 | active: true
|
13572 | });
|
13573 | };
|
13574 |
|
13575 | _this.handleBlur = function () {
|
13576 | _this.setState({
|
13577 | active: false
|
13578 | });
|
13579 | };
|
13580 |
|
13581 | _this.handleMouseEnter = function () {
|
13582 | _this.mouseEntered = true;
|
13583 |
|
13584 | _this.setState({
|
13585 | active: true
|
13586 | });
|
13587 | };
|
13588 |
|
13589 | _this.handleMouseLeave = function () {
|
13590 | _this.mouseEntered = false;
|
13591 |
|
13592 | _this.setState({
|
13593 | active: false
|
13594 | });
|
13595 | };
|
13596 |
|
13597 |
|
13598 |
|
13599 | _this.handleMouseEnterFix = function () {
|
13600 | !_this.mouseEntered && _this.handleMouseEnter();
|
13601 | };
|
13602 |
|
13603 | return _this;
|
13604 | }
|
13605 |
|
13606 | _createClass(Tooltip, [{
|
13607 | key: "componentDidMount",
|
13608 | value: function componentDidMount() {
|
13609 | this.setAccessibilityAttributes();
|
13610 | }
|
13611 | }, {
|
13612 | key: "componentDidUpdate",
|
13613 | value: function componentDidUpdate() {
|
13614 | this.setAccessibilityAttributes();
|
13615 | }
|
13616 | }, {
|
13617 | key: "render",
|
13618 | value: function render() {
|
13619 | var id = this.id;
|
13620 | var _this$props = this.props,
|
13621 | children = _this$props.children,
|
13622 | content = _this$props.content,
|
13623 | light = _this$props.light,
|
13624 | _this$props$preferred = _this$props.preferredPosition,
|
13625 | preferredPosition = _this$props$preferred === void 0 ? 'below' : _this$props$preferred,
|
13626 | _this$props$activator = _this$props.activatorWrapper,
|
13627 | WrapperComponent = _this$props$activator === void 0 ? 'span' : _this$props$activator;
|
13628 | var _this$state = this.state,
|
13629 | active = _this$state.active,
|
13630 | activatorNode = _this$state.activatorNode;
|
13631 | var portal = activatorNode ? React__default.createElement(Portal, {
|
13632 | idPrefix: "tooltip"
|
13633 | }, React__default.createElement(TooltipOverlay, {
|
13634 | id: id,
|
13635 | preferredPosition: preferredPosition,
|
13636 | activator: activatorNode,
|
13637 | active: active,
|
13638 | onClose: noop$9,
|
13639 | light: light
|
13640 | }, React__default.createElement("div", {
|
13641 | className: styles$1e.Label
|
13642 | }, content))) : null;
|
13643 | return React__default.createElement(WrapperComponent, {
|
13644 | onFocus: this.handleFocus,
|
13645 | onBlur: this.handleBlur,
|
13646 | onMouseLeave: this.handleMouseLeave,
|
13647 | onMouseOver: this.handleMouseEnterFix,
|
13648 | ref: this.setActivator
|
13649 | }, children, portal);
|
13650 | }
|
13651 | }, {
|
13652 | key: "setAccessibilityAttributes",
|
13653 | value: function setAccessibilityAttributes() {
|
13654 | var activatorContainer = this.activatorContainer,
|
13655 | id = this.id;
|
13656 |
|
13657 | if (activatorContainer == null) {
|
13658 | return;
|
13659 | }
|
13660 |
|
13661 | var firstFocusable = findFirstFocusableNode(activatorContainer);
|
13662 | var accessibilityNode = firstFocusable || activatorContainer;
|
13663 | accessibilityNode.tabIndex = 0;
|
13664 | accessibilityNode.setAttribute('aria-describedby', id);
|
13665 | }
|
13666 | }]);
|
13667 |
|
13668 | return Tooltip;
|
13669 | }(React__default.PureComponent);
|
13670 |
|
13671 | function noop$9() {}
|
13672 |
|
13673 | var styles$1f = {
|
13674 | "Pagination": "Polaris-Pagination",
|
13675 | "plain": "Polaris-Pagination--plain",
|
13676 | "Button": "Polaris-Pagination__Button",
|
13677 | "PreviousButton": "Polaris-Pagination__PreviousButton",
|
13678 | "NextButton": "Polaris-Pagination__NextButton",
|
13679 | "Label": "Polaris-Pagination__Label"
|
13680 | };
|
13681 |
|
13682 | function Pagination(_ref) {
|
13683 | var hasNext = _ref.hasNext,
|
13684 | hasPrevious = _ref.hasPrevious,
|
13685 | nextURL = _ref.nextURL,
|
13686 | previousURL = _ref.previousURL,
|
13687 | onNext = _ref.onNext,
|
13688 | onPrevious = _ref.onPrevious,
|
13689 | nextTooltip = _ref.nextTooltip,
|
13690 | previousTooltip = _ref.previousTooltip,
|
13691 | nextKeys = _ref.nextKeys,
|
13692 | previousKeys = _ref.previousKeys,
|
13693 | plain = _ref.plain,
|
13694 | accessibilityLabel = _ref.accessibilityLabel,
|
13695 | label = _ref.label;
|
13696 | var i18n = useI18n();
|
13697 | var node = React__default.createRef();
|
13698 | var navLabel = accessibilityLabel || i18n.translate('Polaris.Pagination.pagination');
|
13699 | var className = classNames(styles$1f.Pagination, plain && styles$1f.plain);
|
13700 | var previousClassName = classNames(styles$1f.Button, !label && styles$1f.PreviousButton);
|
13701 | var nextClassName = classNames(styles$1f.Button, !label && styles$1f.NextButton);
|
13702 | var previousButton = previousURL ? React__default.createElement(UnstyledLink, {
|
13703 | className: previousClassName,
|
13704 | url: previousURL,
|
13705 | onMouseUp: handleMouseUpByBlurring,
|
13706 | "aria-label": i18n.translate('Polaris.Pagination.previous'),
|
13707 | id: "previousURL"
|
13708 | }, React__default.createElement(Icon, {
|
13709 | source: ArrowLeftMinor
|
13710 | })) : React__default.createElement("button", {
|
13711 | onClick: onPrevious,
|
13712 | type: "button",
|
13713 | onMouseUp: handleMouseUpByBlurring,
|
13714 | className: previousClassName,
|
13715 | "aria-label": i18n.translate('Polaris.Pagination.previous'),
|
13716 | disabled: !hasPrevious
|
13717 | }, React__default.createElement(Icon, {
|
13718 | source: ArrowLeftMinor
|
13719 | }));
|
13720 | var nextButton = nextURL ? React__default.createElement(UnstyledLink, {
|
13721 | className: nextClassName,
|
13722 | url: nextURL,
|
13723 | onMouseUp: handleMouseUpByBlurring,
|
13724 | "aria-label": i18n.translate('Polaris.Pagination.next'),
|
13725 | id: "nextURL"
|
13726 | }, React__default.createElement(Icon, {
|
13727 | source: ArrowRightMinor
|
13728 | })) : React__default.createElement("button", {
|
13729 | onClick: onNext,
|
13730 | type: "button",
|
13731 | onMouseUp: handleMouseUpByBlurring,
|
13732 | className: nextClassName,
|
13733 | "aria-label": i18n.translate('Polaris.Pagination.next'),
|
13734 | disabled: !hasNext
|
13735 | }, React__default.createElement(Icon, {
|
13736 | source: ArrowRightMinor
|
13737 | }));
|
13738 | var constructedPrevious = previousTooltip && hasPrevious ? React__default.createElement(Tooltip, {
|
13739 | content: previousTooltip
|
13740 | }, previousButton) : previousButton;
|
13741 | var constructedNext = nextTooltip && hasNext ? React__default.createElement(Tooltip, {
|
13742 | content: nextTooltip
|
13743 | }, nextButton) : nextButton;
|
13744 | var previousButtonEvents = previousKeys && (previousURL || onPrevious) && hasPrevious && previousKeys.map(function (key) {
|
13745 | return React__default.createElement(KeypressListener, {
|
13746 | key: key,
|
13747 | keyCode: key,
|
13748 | handler: previousURL ? handleCallback(clickPaginationLink('previousURL', node)) : handleCallback(onPrevious)
|
13749 | });
|
13750 | });
|
13751 | var nextButtonEvents = nextKeys && (nextURL || onNext) && hasNext && nextKeys.map(function (key) {
|
13752 | return React__default.createElement(KeypressListener, {
|
13753 | key: key,
|
13754 | keyCode: key,
|
13755 | handler: nextURL ? handleCallback(clickPaginationLink('nextURL', node)) : handleCallback(onNext)
|
13756 | });
|
13757 | });
|
13758 | var labelTextMarkup = hasNext && hasPrevious ? React__default.createElement(TextStyle, null, label) : React__default.createElement(TextStyle, {
|
13759 | variation: "subdued"
|
13760 | }, label);
|
13761 | var labelMarkup = label ? React__default.createElement("div", {
|
13762 | className: styles$1f.Label,
|
13763 | "aria-live": "polite"
|
13764 | }, labelTextMarkup) : null;
|
13765 | return React__default.createElement("nav", {
|
13766 | className: className,
|
13767 | "aria-label": navLabel,
|
13768 | ref: node
|
13769 | }, previousButtonEvents, constructedPrevious, labelMarkup, nextButtonEvents, constructedNext);
|
13770 | }
|
13771 |
|
13772 | function clickPaginationLink(id, node) {
|
13773 | return function () {
|
13774 | if (node.current == null) {
|
13775 | return;
|
13776 | }
|
13777 |
|
13778 | var link = node.current.querySelector("#".concat(id));
|
13779 |
|
13780 | if (link) {
|
13781 | link.click();
|
13782 | }
|
13783 | };
|
13784 | }
|
13785 |
|
13786 | function handleCallback(fn) {
|
13787 | return function () {
|
13788 | if (isInputFocused()) {
|
13789 | return;
|
13790 | }
|
13791 |
|
13792 | fn();
|
13793 | };
|
13794 | }
|
13795 |
|
13796 | var styles$1g = {
|
13797 | "Title": "Polaris-Header-Title",
|
13798 | "SubTitle": "Polaris-Header-Title__SubTitle",
|
13799 | "hasThumbnail": "Polaris-Header-Title--hasThumbnail",
|
13800 | "TitleAndSubtitleWrapper": "Polaris-Header-Title__TitleAndSubtitleWrapper",
|
13801 | "TitleWithMetadataWrapper": "Polaris-Header-Title__TitleWithMetadataWrapper",
|
13802 | "TitleMetadata": "Polaris-Header-Title__TitleMetadata"
|
13803 | };
|
13804 |
|
13805 | function Title(_ref) {
|
13806 | var title = _ref.title,
|
13807 | subtitle = _ref.subtitle,
|
13808 | titleMetadata = _ref.titleMetadata,
|
13809 | thumbnail = _ref.thumbnail;
|
13810 | var titleMarkup = title ? createElement("div", {
|
13811 | className: styles$1g.Title
|
13812 | }, createElement(DisplayText, {
|
13813 | size: "large",
|
13814 | element: "h1"
|
13815 | }, title)) : null;
|
13816 | var titleMetadataMarkup = titleMetadata ? createElement("div", {
|
13817 | className: styles$1g.TitleMetadata
|
13818 | }, titleMetadata) : null;
|
13819 | var wrappedTitleMarkup = titleMetadata ? createElement("div", {
|
13820 | className: styles$1g.TitleWithMetadataWrapper
|
13821 | }, titleMarkup, titleMetadataMarkup) : titleMarkup;
|
13822 | var subtitleMarkup = subtitle ? createElement("div", {
|
13823 | className: styles$1g.SubTitle
|
13824 | }, createElement("p", null, subtitle)) : null;
|
13825 | var thumbnailMarkup = thumbnail ? createElement("div", null, thumbnail) : null;
|
13826 | var pageTitleClassName = thumbnail ? classNames(styles$1g.hasThumbnail) : undefined;
|
13827 | return createElement("div", {
|
13828 | className: pageTitleClassName
|
13829 | }, thumbnailMarkup, createElement("div", {
|
13830 | className: styles$1g.TitleAndSubtitleWrapper
|
13831 | }, wrappedTitleMarkup, subtitleMarkup));
|
13832 | }
|
13833 |
|
13834 | var styles$1h = {
|
13835 | "Header": "Polaris-Page-Header",
|
13836 | "separator": "Polaris-Page-Header--separator",
|
13837 | "titleHidden": "Polaris-Page-Header--titleHidden",
|
13838 | "Navigation": "Polaris-Page-Header__Navigation",
|
13839 | "hasActionMenu": "Polaris-Page-Header--hasActionMenu",
|
13840 | "mobileView": "Polaris-Page-Header--mobileView",
|
13841 | "BreadcrumbWrapper": "Polaris-Page-Header__BreadcrumbWrapper",
|
13842 | "PaginationWrapper": "Polaris-Page-Header__PaginationWrapper",
|
13843 | "MainContent": "Polaris-Page-Header__MainContent",
|
13844 | "TitleActionMenuWrapper": "Polaris-Page-Header__TitleActionMenuWrapper",
|
13845 | "hasNavigation": "Polaris-Page-Header--hasNavigation",
|
13846 | "PrimaryActionWrapper": "Polaris-Page-Header__PrimaryActionWrapper",
|
13847 | "ActionMenuWrapper": "Polaris-Page-Header__ActionMenuWrapper"
|
13848 | };
|
13849 |
|
13850 | function Header$2(_ref) {
|
13851 | var title = _ref.title,
|
13852 | subtitle = _ref.subtitle,
|
13853 | titleMetadata = _ref.titleMetadata,
|
13854 | thumbnail = _ref.thumbnail,
|
13855 | _ref$titleHidden = _ref.titleHidden,
|
13856 | titleHidden = _ref$titleHidden === void 0 ? false : _ref$titleHidden,
|
13857 | separator = _ref.separator,
|
13858 | primaryAction = _ref.primaryAction,
|
13859 | pagination = _ref.pagination,
|
13860 | _ref$breadcrumbs = _ref.breadcrumbs,
|
13861 | breadcrumbs = _ref$breadcrumbs === void 0 ? [] : _ref$breadcrumbs,
|
13862 | _ref$secondaryActions = _ref.secondaryActions,
|
13863 | secondaryActions = _ref$secondaryActions === void 0 ? [] : _ref$secondaryActions,
|
13864 | _ref$actionGroups = _ref.actionGroups,
|
13865 | actionGroups = _ref$actionGroups === void 0 ? [] : _ref$actionGroups;
|
13866 |
|
13867 | var _useMediaQuery = useMediaQuery(),
|
13868 | isNavigationCollapsed = _useMediaQuery.isNavigationCollapsed;
|
13869 |
|
13870 | var breadcrumbMarkup = breadcrumbs.length > 0 ? React__default.createElement("div", {
|
13871 | className: styles$1h.BreadcrumbWrapper
|
13872 | }, React__default.createElement(Breadcrumbs, {
|
13873 | breadcrumbs: breadcrumbs
|
13874 | })) : null;
|
13875 | var paginationMarkup = pagination && !isNavigationCollapsed ? React__default.createElement("div", {
|
13876 | className: styles$1h.PaginationWrapper
|
13877 | }, React__default.createElement(Pagination, Object.assign({}, pagination, {
|
13878 | plain: true
|
13879 | }))) : null;
|
13880 | var navigationMarkup = breadcrumbMarkup || paginationMarkup ? React__default.createElement("div", {
|
13881 | className: styles$1h.Navigation
|
13882 | }, breadcrumbMarkup, paginationMarkup) : null;
|
13883 | var pageTitleMarkup = React__default.createElement(Title, {
|
13884 | title: title,
|
13885 | subtitle: subtitle,
|
13886 | titleMetadata: titleMetadata,
|
13887 | thumbnail: thumbnail
|
13888 | });
|
13889 | var primary = primaryAction && (primaryAction.primary === undefined ? true : primaryAction.primary);
|
13890 | var primaryActionMarkup = primaryAction ? React__default.createElement("div", {
|
13891 | className: styles$1h.PrimaryActionWrapper
|
13892 | }, buttonsFrom(primaryAction, {
|
13893 | primary
|
13894 | })) : null;
|
13895 | var actionMenuMarkup = secondaryActions.length > 0 || hasGroupsWithActions(actionGroups) ? React__default.createElement("div", {
|
13896 | className: styles$1h.ActionMenuWrapper
|
13897 | }, React__default.createElement(ActionMenu, {
|
13898 | actions: secondaryActions,
|
13899 | groups: actionGroups,
|
13900 | rollup: isNavigationCollapsed
|
13901 | })) : null;
|
13902 | var headerClassNames = classNames(styles$1h.Header, titleHidden && styles$1h.titleHidden, separator && styles$1h.separator, navigationMarkup && styles$1h.hasNavigation, actionMenuMarkup && styles$1h.hasActionMenu, isNavigationCollapsed && styles$1h.mobileView);
|
13903 | return React__default.createElement("div", {
|
13904 | className: headerClassNames
|
13905 | }, navigationMarkup, React__default.createElement("div", {
|
13906 | className: styles$1h.MainContent
|
13907 | }, React__default.createElement("div", {
|
13908 | className: styles$1h.TitleActionMenuWrapper
|
13909 | }, pageTitleMarkup, actionMenuMarkup), primaryActionMarkup));
|
13910 | }
|
13911 |
|
13912 | var styles$1i = {
|
13913 | "Page": "Polaris-Page",
|
13914 | "fullWidth": "Polaris-Page--fullWidth",
|
13915 | "narrowWidth": "Polaris-Page--narrowWidth",
|
13916 | "Content": "Polaris-Page__Content"
|
13917 | };
|
13918 |
|
13919 | var APP_BRIDGE_PROPS$1 = ['title', 'breadcrumbs', 'secondaryActions', 'actionGroups', 'primaryAction'];
|
13920 |
|
13921 | var Page =
|
13922 |
|
13923 | function (_React$PureComponent) {
|
13924 | _inherits(Page, _React$PureComponent);
|
13925 |
|
13926 | function Page() {
|
13927 | _classCallCheck(this, Page);
|
13928 |
|
13929 | return _possibleConstructorReturn(this, _getPrototypeOf(Page).apply(this, arguments));
|
13930 | }
|
13931 |
|
13932 | _createClass(Page, [{
|
13933 | key: "componentDidMount",
|
13934 | value: function componentDidMount() {
|
13935 | if (this.delegateToAppbridge === false || !this.props.polaris.appBridge) {
|
13936 | return;
|
13937 | }
|
13938 |
|
13939 | var transformedProps = this.transformProps();
|
13940 | if (!transformedProps) return;
|
13941 |
|
13942 | console.warn('Deprecation: Using `Page` to render an embedded app title bar is deprecated and will be removed in v5.0. Use `TitleBar` from `@shopify/app-bridge-react` instead: https://help.shopify.com/en/api/embedded-apps/app-bridge/react-components/titlebar');
|
13943 | this.titlebar = TitleBar.create(this.props.polaris.appBridge, transformedProps);
|
13944 | }
|
13945 | }, {
|
13946 | key: "componentDidUpdate",
|
13947 | value: function componentDidUpdate(prevProps) {
|
13948 | if (this.titlebar == null || this.delegateToAppbridge === false) {
|
13949 | return;
|
13950 | }
|
13951 |
|
13952 | var prevAppBridgeProps = pick(prevProps, APP_BRIDGE_PROPS$1);
|
13953 | var currentAppBridgeProps = pick(this.props, APP_BRIDGE_PROPS$1);
|
13954 |
|
13955 | if (!isEqual(prevAppBridgeProps, currentAppBridgeProps)) {
|
13956 | var transformedProps = this.transformProps();
|
13957 | if (!transformedProps) return;
|
13958 | this.titlebar.unsubscribe();
|
13959 | this.titlebar.set(transformedProps);
|
13960 | }
|
13961 | }
|
13962 | }, {
|
13963 | key: "componentWillUnmount",
|
13964 | value: function componentWillUnmount() {
|
13965 | if (this.titlebar == null || this.delegateToAppbridge === false) {
|
13966 | return;
|
13967 | }
|
13968 |
|
13969 | this.titlebar.unsubscribe();
|
13970 | }
|
13971 | }, {
|
13972 | key: "render",
|
13973 | value: function render() {
|
13974 | var _a = this.props,
|
13975 | children = _a.children,
|
13976 | fullWidth = _a.fullWidth,
|
13977 | narrowWidth = _a.narrowWidth,
|
13978 | singleColumn = _a.singleColumn,
|
13979 | rest = __rest(_a, ["children", "fullWidth", "narrowWidth", "singleColumn"]);
|
13980 |
|
13981 | if (singleColumn) {
|
13982 |
|
13983 | console.warn('Deprecation: The singleColumn prop has been renamed to narrowWidth to better represents its use and will be removed in v5.0.');
|
13984 | }
|
13985 |
|
13986 | var className = classNames(styles$1i.Page, fullWidth && styles$1i.fullWidth, (narrowWidth || singleColumn) && styles$1i.narrowWidth);
|
13987 | var headerMarkup = this.delegateToAppbridge || this.hasHeaderContent() === false ? null : React__default.createElement(Header$2, rest);
|
13988 | return React__default.createElement("div", {
|
13989 | className: className
|
13990 | }, headerMarkup, React__default.createElement("div", {
|
13991 | className: styles$1i.Content
|
13992 | }, children));
|
13993 | }
|
13994 | }, {
|
13995 | key: "hasHeaderContent",
|
13996 | value: function hasHeaderContent() {
|
13997 | var _this$props = this.props,
|
13998 | title = _this$props.title,
|
13999 | primaryAction = _this$props.primaryAction,
|
14000 | secondaryActions = _this$props.secondaryActions,
|
14001 | actionGroups = _this$props.actionGroups,
|
14002 | breadcrumbs = _this$props.breadcrumbs;
|
14003 | return title != null && title !== '' || primaryAction != null || secondaryActions != null && secondaryActions.length > 0 || actionGroups != null && actionGroups.length > 0 || breadcrumbs != null && breadcrumbs.length > 0;
|
14004 | }
|
14005 | }, {
|
14006 | key: "transformProps",
|
14007 | value: function transformProps() {
|
14008 | var appBridge = this.props.polaris.appBridge;
|
14009 | if (!appBridge) return;
|
14010 | var _this$props2 = this.props,
|
14011 | title = _this$props2.title,
|
14012 | primaryAction = _this$props2.primaryAction,
|
14013 | secondaryActions = _this$props2.secondaryActions,
|
14014 | actionGroups = _this$props2.actionGroups;
|
14015 | return {
|
14016 | title,
|
14017 | buttons: transformActions(appBridge, {
|
14018 | primaryAction,
|
14019 | secondaryActions,
|
14020 | actionGroups
|
14021 | }),
|
14022 | breadcrumbs: this.transformBreadcrumbs()
|
14023 | };
|
14024 | }
|
14025 | }, {
|
14026 | key: "transformBreadcrumbs",
|
14027 | value: function transformBreadcrumbs() {
|
14028 | var appBridge = this.props.polaris.appBridge;
|
14029 | if (!appBridge) return;
|
14030 | var breadcrumbs = this.props.breadcrumbs;
|
14031 |
|
14032 | if (breadcrumbs != null && breadcrumbs.length > 0) {
|
14033 | var breadcrumb = breadcrumbs[breadcrumbs.length - 1];
|
14034 | var button = Button$1.create(appBridge, {
|
14035 | label: breadcrumb.content || ''
|
14036 | });
|
14037 | var callback = !('url' in breadcrumb) ? breadcrumb.onAction : generateRedirect(appBridge, breadcrumb.url, breadcrumb.target);
|
14038 |
|
14039 | if (callback != null) {
|
14040 | button.subscribe(Button$1.Action.CLICK, callback);
|
14041 | }
|
14042 |
|
14043 | return button;
|
14044 | } else {
|
14045 | return undefined;
|
14046 | }
|
14047 | }
|
14048 | }, {
|
14049 | key: "delegateToAppbridge",
|
14050 | get: function get() {
|
14051 | var _this$props3 = this.props,
|
14052 | appBridge = _this$props3.polaris.appBridge,
|
14053 | _this$props3$forceRen = _this$props3.forceRender,
|
14054 | forceRender = _this$props3$forceRen === void 0 ? false : _this$props3$forceRen;
|
14055 | return appBridge != null && forceRender === false;
|
14056 | }
|
14057 | }]);
|
14058 |
|
14059 | return Page;
|
14060 | }(React__default.PureComponent);
|
14061 |
|
14062 |
|
14063 |
|
14064 | var Page$1 = withAppProvider()(Page);
|
14065 |
|
14066 | var styles$1j = {
|
14067 | "PageActions": "Polaris-PageActions"
|
14068 | };
|
14069 |
|
14070 | function PageActions(_ref) {
|
14071 | var primaryAction = _ref.primaryAction,
|
14072 | secondaryActions = _ref.secondaryActions;
|
14073 | var primaryActionMarkup = primaryAction ? buttonsFrom(primaryAction, {
|
14074 | primary: true
|
14075 | }) : null;
|
14076 | var secondaryActionsMarkup = secondaryActions ? React__default.createElement(ButtonGroup, null, buttonsFrom(secondaryActions)) : null;
|
14077 | var distribution = secondaryActionsMarkup ? 'equalSpacing' : 'trailing';
|
14078 | return React__default.createElement("div", {
|
14079 | className: styles$1j.PageActions
|
14080 | }, React__default.createElement(Stack, {
|
14081 | distribution: distribution,
|
14082 | spacing: "tight"
|
14083 | }, secondaryActionsMarkup, primaryActionMarkup));
|
14084 | }
|
14085 |
|
14086 | var defaultMediaQuery = {
|
14087 | isNavigationCollapsed: false
|
14088 | };
|
14089 | function PolarisTestProvider(_ref) {
|
14090 | var strict = _ref.strict,
|
14091 | children = _ref.children,
|
14092 | i18n = _ref.i18n,
|
14093 | appBridge = _ref.appBridge,
|
14094 | link = _ref.link,
|
14095 | _ref$theme = _ref.theme,
|
14096 | theme = _ref$theme === void 0 ? {} : _ref$theme,
|
14097 | mediaQuery = _ref.mediaQuery,
|
14098 | _ref$features = _ref.features,
|
14099 | features = _ref$features === void 0 ? {} : _ref$features,
|
14100 | frame = _ref.frame;
|
14101 | var Wrapper = strict ? React__default.StrictMode : React__default.Fragment;
|
14102 | var intl = new I18n(i18n || {});
|
14103 | var scrollLockManager = new ScrollLockManager();
|
14104 | var stickyManager = new StickyManager();
|
14105 | var uniqueIdFactory = new UniqueIdFactory(globalIdGeneratorFactory);
|
14106 |
|
14107 |
|
14108 | var appBridgeApp = appBridge;
|
14109 | var _features$unstableGlo = features.unstableGlobalTheming,
|
14110 | unstableGlobalTheming = _features$unstableGlo === void 0 ? false : _features$unstableGlo;
|
14111 | var customProperties = unstableGlobalTheming ? buildCustomProperties(theme, unstableGlobalTheming) : undefined;
|
14112 | var mergedTheme = buildThemeContext(theme, customProperties);
|
14113 | var mergedFrame = createFrameContext(frame);
|
14114 | var mergedMediaQuery = merge(defaultMediaQuery, mediaQuery);
|
14115 | return React__default.createElement(Wrapper, null, React__default.createElement(FeaturesContext.Provider, {
|
14116 | value: features
|
14117 | }, React__default.createElement(I18nContext.Provider, {
|
14118 | value: intl
|
14119 | }, React__default.createElement(ScrollLockManagerContext.Provider, {
|
14120 | value: scrollLockManager
|
14121 | }, React__default.createElement(StickyManagerContext.Provider, {
|
14122 | value: stickyManager
|
14123 | }, React__default.createElement(UniqueIdFactoryContext.Provider, {
|
14124 | value: uniqueIdFactory
|
14125 | }, React__default.createElement(AppBridgeContext.Provider, {
|
14126 | value: appBridgeApp
|
14127 | }, React__default.createElement(LinkContext.Provider, {
|
14128 | value: link
|
14129 | }, React__default.createElement(ThemeContext.Provider, {
|
14130 | value: mergedTheme
|
14131 | }, React__default.createElement(MediaQueryContext.Provider, {
|
14132 | value: mergedMediaQuery
|
14133 | }, React__default.createElement(FrameContext.Provider, {
|
14134 | value: mergedFrame
|
14135 | }, children)))))))))));
|
14136 | }
|
14137 |
|
14138 | function noop$a() {}
|
14139 |
|
14140 | function createFrameContext() {
|
14141 | var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
14142 | _ref2$showToast = _ref2.showToast,
|
14143 | showToast = _ref2$showToast === void 0 ? noop$a : _ref2$showToast,
|
14144 | _ref2$hideToast = _ref2.hideToast,
|
14145 | hideToast = _ref2$hideToast === void 0 ? noop$a : _ref2$hideToast,
|
14146 | _ref2$setContextualSa = _ref2.setContextualSaveBar,
|
14147 | setContextualSaveBar = _ref2$setContextualSa === void 0 ? noop$a : _ref2$setContextualSa,
|
14148 | _ref2$removeContextua = _ref2.removeContextualSaveBar,
|
14149 | removeContextualSaveBar = _ref2$removeContextua === void 0 ? noop$a : _ref2$removeContextua,
|
14150 | _ref2$startLoading = _ref2.startLoading,
|
14151 | startLoading = _ref2$startLoading === void 0 ? noop$a : _ref2$startLoading,
|
14152 | _ref2$stopLoading = _ref2.stopLoading,
|
14153 | stopLoading = _ref2$stopLoading === void 0 ? noop$a : _ref2$stopLoading;
|
14154 |
|
14155 | return {
|
14156 | showToast,
|
14157 | hideToast,
|
14158 | setContextualSaveBar,
|
14159 | removeContextualSaveBar,
|
14160 | startLoading,
|
14161 | stopLoading
|
14162 | };
|
14163 | }
|
14164 |
|
14165 | var styles$1k = {
|
14166 | "ProgressBar": "Polaris-ProgressBar",
|
14167 | "sizeSmall": "Polaris-ProgressBar--sizeSmall",
|
14168 | "sizeMedium": "Polaris-ProgressBar--sizeMedium",
|
14169 | "sizeLarge": "Polaris-ProgressBar--sizeLarge",
|
14170 | "Indicator": "Polaris-ProgressBar__Indicator",
|
14171 | "fillup": "Polaris-ProgressBar--fillup",
|
14172 | "Progress": "Polaris-ProgressBar__Progress",
|
14173 | "Label": "Polaris-ProgressBar__Label"
|
14174 | };
|
14175 |
|
14176 | function ProgressBar(_ref) {
|
14177 | var _ref$progress = _ref.progress,
|
14178 | progress = _ref$progress === void 0 ? 0 : _ref$progress,
|
14179 | _ref$size = _ref.size,
|
14180 | size = _ref$size === void 0 ? 'medium' : _ref$size;
|
14181 | var i18n = useI18n();
|
14182 | var className = classNames(styles$1k.ProgressBar, size && styles$1k[variationName('size', size)]);
|
14183 | var warningMessage = i18n.translate(progress < 0 ? 'Polaris.ProgressBar.negativeWarningMessage' : 'Polaris.ProgressBar.exceedWarningMessage', {
|
14184 | progress
|
14185 | });
|
14186 | var parsedProgress = parseProgress(progress, warningMessage);
|
14187 | return React__default.createElement("div", {
|
14188 | className: className
|
14189 | }, React__default.createElement("progress", {
|
14190 | className: styles$1k.Progress,
|
14191 | value: parsedProgress,
|
14192 | max: "100"
|
14193 | }), React__default.createElement("div", {
|
14194 | className: styles$1k.Indicator,
|
14195 | style: {
|
14196 | width: "".concat(parsedProgress, "%")
|
14197 | }
|
14198 | }, React__default.createElement("span", {
|
14199 | className: styles$1k.Label
|
14200 | }, parsedProgress, "%")));
|
14201 | }
|
14202 |
|
14203 | function parseProgress(progress, warningMessage) {
|
14204 | var progressWidth;
|
14205 |
|
14206 | if (progress < 0) {
|
14207 | if (process.env.NODE_ENV === 'development') {
|
14208 |
|
14209 | console.warn(warningMessage);
|
14210 | }
|
14211 |
|
14212 | progressWidth = 0;
|
14213 | } else if (progress > 100) {
|
14214 | if (process.env.NODE_ENV === 'development') {
|
14215 |
|
14216 | console.warn(warningMessage);
|
14217 | }
|
14218 |
|
14219 | progressWidth = 100;
|
14220 | } else {
|
14221 | progressWidth = progress;
|
14222 | }
|
14223 |
|
14224 | return progressWidth;
|
14225 | }
|
14226 |
|
14227 | function invertNumber(number) {
|
14228 | if (Math.sign(number) === 1) {
|
14229 | return -Math.abs(number);
|
14230 | } else if (Math.sign(number) === -1) {
|
14231 | return Math.abs(number);
|
14232 | } else {
|
14233 | return 0;
|
14234 | }
|
14235 | }
|
14236 |
|
14237 | var CSS_VAR_PREFIX = '--Polaris-RangeSlider-';
|
14238 | var RangeSliderDefault;
|
14239 |
|
14240 | (function (RangeSliderDefault) {
|
14241 | RangeSliderDefault[RangeSliderDefault["Min"] = 0] = "Min";
|
14242 | RangeSliderDefault[RangeSliderDefault["Max"] = 100] = "Max";
|
14243 | RangeSliderDefault[RangeSliderDefault["Step"] = 1] = "Step";
|
14244 | })(RangeSliderDefault || (RangeSliderDefault = {}));
|
14245 |
|
14246 | var styles$1l = {
|
14247 | "Wrapper": "Polaris-RangeSlider-DualThumb__Wrapper",
|
14248 | "TrackWrapper": "Polaris-RangeSlider-DualThumb__TrackWrapper",
|
14249 | "disabled": "Polaris-RangeSlider-DualThumb--disabled",
|
14250 | "Track": "Polaris-RangeSlider-DualThumb__Track",
|
14251 | "error": "Polaris-RangeSlider-DualThumb--error",
|
14252 | "Thumbs": "Polaris-RangeSlider-DualThumb__Thumbs",
|
14253 | "Prefix": "Polaris-RangeSlider-DualThumb__Prefix",
|
14254 | "Suffix": "Polaris-RangeSlider-DualThumb__Suffix",
|
14255 | "Output": "Polaris-RangeSlider-DualThumb__Output",
|
14256 | "OutputBubble": "Polaris-RangeSlider-DualThumb__OutputBubble",
|
14257 | "OutputText": "Polaris-RangeSlider-DualThumb__OutputText"
|
14258 | };
|
14259 |
|
14260 | var Control;
|
14261 |
|
14262 | (function (Control) {
|
14263 | Control[Control["Lower"] = 0] = "Lower";
|
14264 | Control[Control["Upper"] = 1] = "Upper";
|
14265 | })(Control || (Control = {}));
|
14266 |
|
14267 | var THUMB_SIZE = 24;
|
14268 | var DualThumb =
|
14269 |
|
14270 | function (_React$Component) {
|
14271 | _inherits(DualThumb, _React$Component);
|
14272 |
|
14273 | function DualThumb() {
|
14274 | var _this;
|
14275 |
|
14276 | _classCallCheck(this, DualThumb);
|
14277 |
|
14278 | _this = _possibleConstructorReturn(this, _getPrototypeOf(DualThumb).apply(this, arguments));
|
14279 | _this.state = {
|
14280 | value: sanitizeValue(_this.props.value, _this.props.min, _this.props.max, _this.props.step),
|
14281 | trackWidth: 0,
|
14282 | trackLeft: 0
|
14283 | };
|
14284 | _this.track = React__default.createRef();
|
14285 | _this.trackWrapper = React__default.createRef();
|
14286 | _this.thumbLower = React__default.createRef();
|
14287 | _this.thumbUpper = React__default.createRef();
|
14288 | _this.setTrackPosition = debounce(function () {
|
14289 | if (_this.track.current) {
|
14290 | var _this$track$current$g = _this.track.current.getBoundingClientRect(),
|
14291 | width = _this$track$current$g.width,
|
14292 | left = _this$track$current$g.left;
|
14293 |
|
14294 | var adjustedTrackWidth = width - THUMB_SIZE;
|
14295 | var adjustedTrackLeft = left + THUMB_SIZE / 2;
|
14296 |
|
14297 | _this.setState({
|
14298 | trackWidth: adjustedTrackWidth,
|
14299 | trackLeft: adjustedTrackLeft
|
14300 | });
|
14301 | }
|
14302 | }, 40, {
|
14303 | leading: true,
|
14304 | trailing: true,
|
14305 | maxWait: 40
|
14306 | });
|
14307 |
|
14308 | _this.handleMouseDownThumbLower = function (event) {
|
14309 | if (event.button !== 0 || _this.props.disabled) return;
|
14310 | registerMouseMoveHandler(_this.handleMouseMoveThumbLower);
|
14311 | event.stopPropagation();
|
14312 | };
|
14313 |
|
14314 | _this.handleMouseMoveThumbLower = function (event) {
|
14315 | var valueUpper = _this.state.value[1];
|
14316 |
|
14317 | _this.setValue([_this.actualXPosition(event.clientX), valueUpper], Control.Upper);
|
14318 | };
|
14319 |
|
14320 | _this.handleTouchStartThumbLower = function (event) {
|
14321 | if (_this.props.disabled) return;
|
14322 | registerTouchMoveHandler(_this.handleTouchMoveThumbLower);
|
14323 | event.stopPropagation();
|
14324 | };
|
14325 |
|
14326 | _this.handleTouchMoveThumbLower = function (event) {
|
14327 | event.preventDefault();
|
14328 | var valueUpper = _this.state.value[1];
|
14329 |
|
14330 | _this.setValue([_this.actualXPosition(event.touches[0].clientX), valueUpper], Control.Upper);
|
14331 | };
|
14332 |
|
14333 | _this.handleMouseDownThumbUpper = function (event) {
|
14334 | if (event.button !== 0 || _this.props.disabled) return;
|
14335 | registerMouseMoveHandler(_this.handleMouseMoveThumbUpper);
|
14336 | event.stopPropagation();
|
14337 | };
|
14338 |
|
14339 | _this.handleMouseMoveThumbUpper = function (event) {
|
14340 | var valueLower = _this.state.value[0];
|
14341 |
|
14342 | _this.setValue([valueLower, _this.actualXPosition(event.clientX)], Control.Lower);
|
14343 | };
|
14344 |
|
14345 | _this.handleTouchStartThumbUpper = function (event) {
|
14346 | if (_this.props.disabled) return;
|
14347 | registerTouchMoveHandler(_this.handleTouchMoveThumbUpper);
|
14348 | event.stopPropagation();
|
14349 | };
|
14350 |
|
14351 | _this.handleTouchMoveThumbUpper = function (event) {
|
14352 | event.preventDefault();
|
14353 | var valueLower = _this.state.value[0];
|
14354 |
|
14355 | _this.setValue([valueLower, _this.actualXPosition(event.touches[0].clientX)], Control.Lower);
|
14356 | };
|
14357 |
|
14358 | _this.handleKeypressLower = function (event) {
|
14359 | if (_this.props.disabled) return;
|
14360 |
|
14361 | var _assertThisInitialize = _assertThisInitialized(_this),
|
14362 | incrementValueLower = _assertThisInitialize.incrementValueLower,
|
14363 | decrementValueLower = _assertThisInitialize.decrementValueLower;
|
14364 |
|
14365 | var handlerMap = {
|
14366 | [Key.UpArrow]: incrementValueLower,
|
14367 | [Key.RightArrow]: incrementValueLower,
|
14368 | [Key.DownArrow]: decrementValueLower,
|
14369 | [Key.LeftArrow]: decrementValueLower
|
14370 | };
|
14371 | var handler = handlerMap[event.keyCode];
|
14372 |
|
14373 | if (handler != null) {
|
14374 | event.preventDefault();
|
14375 | event.stopPropagation();
|
14376 | handler();
|
14377 | }
|
14378 | };
|
14379 |
|
14380 | _this.handleKeypressUpper = function (event) {
|
14381 | if (_this.props.disabled) return;
|
14382 |
|
14383 | var _assertThisInitialize2 = _assertThisInitialized(_this),
|
14384 | incrementValueUpper = _assertThisInitialize2.incrementValueUpper,
|
14385 | decrementValueUpper = _assertThisInitialize2.decrementValueUpper;
|
14386 |
|
14387 | var handlerMap = {
|
14388 | [Key.UpArrow]: incrementValueUpper,
|
14389 | [Key.RightArrow]: incrementValueUpper,
|
14390 | [Key.DownArrow]: decrementValueUpper,
|
14391 | [Key.LeftArrow]: decrementValueUpper
|
14392 | };
|
14393 | var handler = handlerMap[event.keyCode];
|
14394 |
|
14395 | if (handler != null) {
|
14396 | event.preventDefault();
|
14397 | event.stopPropagation();
|
14398 | handler();
|
14399 | }
|
14400 | };
|
14401 |
|
14402 | _this.incrementValueLower = function () {
|
14403 | _this.setValue([_this.state.value[0] + _this.props.step, _this.state.value[1]], Control.Upper);
|
14404 | };
|
14405 |
|
14406 | _this.decrementValueLower = function () {
|
14407 | _this.setValue([_this.state.value[0] - _this.props.step, _this.state.value[1]], Control.Upper);
|
14408 | };
|
14409 |
|
14410 | _this.incrementValueUpper = function () {
|
14411 | _this.setValue([_this.state.value[0], _this.state.value[1] + _this.props.step], Control.Lower);
|
14412 | };
|
14413 |
|
14414 | _this.decrementValueUpper = function () {
|
14415 | _this.setValue([_this.state.value[0], _this.state.value[1] - _this.props.step], Control.Lower);
|
14416 | };
|
14417 |
|
14418 | _this.dispatchValue = function () {
|
14419 | var _this$props = _this.props,
|
14420 | onChange = _this$props.onChange,
|
14421 | id = _this$props.id;
|
14422 | var value = _this.state.value;
|
14423 | onChange(value, id);
|
14424 | };
|
14425 |
|
14426 | _this.setValue = function (dirtyValue, control) {
|
14427 | var _assertThisInitialize3 = _assertThisInitialized(_this),
|
14428 | _assertThisInitialize4 = _assertThisInitialize3.props,
|
14429 | min = _assertThisInitialize4.min,
|
14430 | max = _assertThisInitialize4.max,
|
14431 | step = _assertThisInitialize4.step,
|
14432 | value = _assertThisInitialize3.state.value;
|
14433 |
|
14434 | var sanitizedValue = sanitizeValue(dirtyValue, min, max, step, control);
|
14435 |
|
14436 | if (isEqual(sanitizedValue, value) === false) {
|
14437 | _this.setState({
|
14438 | value: sanitizedValue
|
14439 | }, _this.dispatchValue);
|
14440 | }
|
14441 | };
|
14442 |
|
14443 | _this.handleMouseDownTrack = function (event) {
|
14444 | if (event.button !== 0 || _this.props.disabled) return;
|
14445 | event.preventDefault();
|
14446 |
|
14447 | var clickXPosition = _this.actualXPosition(event.clientX);
|
14448 |
|
14449 | var value = _this.state.value;
|
14450 | var distanceFromLowerThumb = Math.abs(value[0] - clickXPosition);
|
14451 | var distanceFromUpperThumb = Math.abs(value[1] - clickXPosition);
|
14452 |
|
14453 | if (distanceFromLowerThumb <= distanceFromUpperThumb) {
|
14454 | _this.setValue([clickXPosition, value[1]], Control.Upper);
|
14455 |
|
14456 | registerMouseMoveHandler(_this.handleMouseMoveThumbLower);
|
14457 |
|
14458 | if (_this.thumbLower.current != null) {
|
14459 | _this.thumbLower.current.focus();
|
14460 | }
|
14461 | } else {
|
14462 | _this.setValue([value[0], clickXPosition], Control.Lower);
|
14463 |
|
14464 | registerMouseMoveHandler(_this.handleMouseMoveThumbUpper);
|
14465 |
|
14466 | if (_this.thumbUpper.current != null) {
|
14467 | _this.thumbUpper.current.focus();
|
14468 | }
|
14469 | }
|
14470 | };
|
14471 |
|
14472 | _this.handleTouchStartTrack = function (event) {
|
14473 | if (_this.props.disabled) return;
|
14474 | event.preventDefault();
|
14475 |
|
14476 | var clickXPosition = _this.actualXPosition(event.touches[0].clientX);
|
14477 |
|
14478 | var value = _this.state.value;
|
14479 | var distanceFromLowerThumb = Math.abs(value[0] - clickXPosition);
|
14480 | var distanceFromUpperThumb = Math.abs(value[1] - clickXPosition);
|
14481 |
|
14482 | if (distanceFromLowerThumb <= distanceFromUpperThumb) {
|
14483 | _this.setValue([clickXPosition, value[1]], Control.Upper);
|
14484 |
|
14485 | registerTouchMoveHandler(_this.handleTouchMoveThumbLower);
|
14486 |
|
14487 | if (_this.thumbLower.current != null) {
|
14488 | _this.thumbLower.current.focus();
|
14489 | }
|
14490 | } else {
|
14491 | _this.setValue([value[0], clickXPosition], Control.Lower);
|
14492 |
|
14493 | registerTouchMoveHandler(_this.handleTouchMoveThumbUpper);
|
14494 |
|
14495 | if (_this.thumbUpper.current != null) {
|
14496 | _this.thumbUpper.current.focus();
|
14497 | }
|
14498 | }
|
14499 | };
|
14500 |
|
14501 | _this.actualXPosition = function (dirtyXPosition) {
|
14502 | if (_this.track.current) {
|
14503 | var _this$props2 = _this.props,
|
14504 | min = _this$props2.min,
|
14505 | max = _this$props2.max;
|
14506 | var _this$state = _this.state,
|
14507 | trackLeft = _this$state.trackLeft,
|
14508 | trackWidth = _this$state.trackWidth;
|
14509 | var relativeX = dirtyXPosition - trackLeft;
|
14510 | var percentageOfTrack = relativeX / trackWidth;
|
14511 | return percentageOfTrack * (max - min);
|
14512 | } else {
|
14513 | return 0;
|
14514 | }
|
14515 | };
|
14516 |
|
14517 | return _this;
|
14518 | }
|
14519 |
|
14520 | _createClass(DualThumb, [{
|
14521 | key: "componentDidMount",
|
14522 | value: function componentDidMount() {
|
14523 | this.setTrackPosition();
|
14524 |
|
14525 | if (this.trackWrapper.current != null) {
|
14526 | addEventListener(this.trackWrapper.current, 'touchstart', this.handleTouchStartTrack, {
|
14527 | passive: false
|
14528 | });
|
14529 | }
|
14530 | }
|
14531 | }, {
|
14532 | key: "componentWillUnmount",
|
14533 | value: function componentWillUnmount() {
|
14534 | if (this.trackWrapper.current != null) {
|
14535 | removeEventListener(this.trackWrapper.current, 'touchstart', this.handleTouchStartTrack);
|
14536 | }
|
14537 | }
|
14538 | }, {
|
14539 | key: "render",
|
14540 | value: function render() {
|
14541 | var _this$props3 = this.props,
|
14542 | id = _this$props3.id,
|
14543 | min = _this$props3.min,
|
14544 | max = _this$props3.max,
|
14545 | prefix = _this$props3.prefix,
|
14546 | suffix = _this$props3.suffix,
|
14547 | disabled = _this$props3.disabled,
|
14548 | output = _this$props3.output,
|
14549 | error = _this$props3.error,
|
14550 | onFocus = _this$props3.onFocus,
|
14551 | onBlur = _this$props3.onBlur,
|
14552 | label = _this$props3.label,
|
14553 | labelAction = _this$props3.labelAction,
|
14554 | labelHidden = _this$props3.labelHidden,
|
14555 | helpText = _this$props3.helpText;
|
14556 | var value = this.state.value;
|
14557 | var idLower = id;
|
14558 | var idUpper = "".concat(id, "Upper");
|
14559 | var describedBy = [];
|
14560 |
|
14561 | if (error) {
|
14562 | describedBy.push("".concat(id, "Error"));
|
14563 | }
|
14564 |
|
14565 | var ariaDescribedBy = describedBy.length ? describedBy.join(' ') : undefined;
|
14566 | var trackWrapperClassName = classNames(styles$1l.TrackWrapper, error && styles$1l.error, disabled && styles$1l.disabled);
|
14567 | var thumbLowerClassName = classNames(styles$1l.Thumbs, styles$1l.ThumbLower, disabled && styles$1l.disabled);
|
14568 | var thumbUpperClassName = classNames(styles$1l.Thumbs, styles$1l.ThumbUpper, disabled && styles$1l.disabled);
|
14569 | var trackWidth = this.state.trackWidth;
|
14570 | var range = max - min;
|
14571 | var leftPositionThumbLower = value[0] / range * trackWidth;
|
14572 | var leftPositionThumbUpper = value[1] / range * trackWidth;
|
14573 | var outputLowerClassName = classNames(styles$1l.Output, styles$1l.OutputLower);
|
14574 | var outputMarkupLower = !disabled && output ? React__default.createElement("output", {
|
14575 | htmlFor: idLower,
|
14576 | className: outputLowerClassName,
|
14577 | style: {
|
14578 | left: "".concat(leftPositionThumbLower, "px")
|
14579 | }
|
14580 | }, React__default.createElement("div", {
|
14581 | className: styles$1l.OutputBubble
|
14582 | }, React__default.createElement("span", {
|
14583 | className: styles$1l.OutputText
|
14584 | }, value[0]))) : null;
|
14585 | var outputUpperClassName = classNames(styles$1l.Output, styles$1l.OutputUpper);
|
14586 | var outputMarkupUpper = !disabled && output ? React__default.createElement("output", {
|
14587 | htmlFor: idUpper,
|
14588 | className: outputUpperClassName,
|
14589 | style: {
|
14590 | left: "".concat(leftPositionThumbUpper, "px")
|
14591 | }
|
14592 | }, React__default.createElement("div", {
|
14593 | className: styles$1l.OutputBubble
|
14594 | }, React__default.createElement("span", {
|
14595 | className: styles$1l.OutputText
|
14596 | }, value[1]))) : null;
|
14597 | var cssVars = {
|
14598 | ["".concat(CSS_VAR_PREFIX, "progress-lower")]: "".concat(leftPositionThumbLower, "px"),
|
14599 | ["".concat(CSS_VAR_PREFIX, "progress-upper")]: "".concat(leftPositionThumbUpper, "px")
|
14600 | };
|
14601 | var prefixMarkup = prefix && React__default.createElement("div", {
|
14602 | className: styles$1l.Prefix
|
14603 | }, prefix);
|
14604 | var suffixMarkup = suffix && React__default.createElement("div", {
|
14605 | className: styles$1l.Suffix
|
14606 | }, suffix);
|
14607 | return React__default.createElement(React__default.Fragment, null, React__default.createElement(Labelled, {
|
14608 | id: id,
|
14609 | label: label,
|
14610 | error: error,
|
14611 | action: labelAction,
|
14612 | labelHidden: labelHidden,
|
14613 | helpText: helpText
|
14614 | }, React__default.createElement("div", {
|
14615 | className: styles$1l.Wrapper
|
14616 | }, prefixMarkup, React__default.createElement("div", {
|
14617 | className: trackWrapperClassName,
|
14618 | onMouseDown: this.handleMouseDownTrack,
|
14619 | ref: this.trackWrapper
|
14620 | }, React__default.createElement("div", {
|
14621 | className: styles$1l.Track,
|
14622 | style: cssVars,
|
14623 | ref: this.track
|
14624 | }), React__default.createElement("button", {
|
14625 | id: idLower,
|
14626 | className: thumbLowerClassName,
|
14627 | style: {
|
14628 | left: "".concat(leftPositionThumbLower, "px")
|
14629 | },
|
14630 | role: "slider",
|
14631 | "aria-disabled": disabled,
|
14632 | "aria-valuemin": min,
|
14633 | "aria-valuemax": max,
|
14634 | "aria-valuenow": value[0],
|
14635 | "aria-invalid": Boolean(error),
|
14636 | "aria-describedby": ariaDescribedBy,
|
14637 | "aria-labelledby": labelID(id),
|
14638 | onFocus: onFocus,
|
14639 | onBlur: onBlur,
|
14640 | onKeyDown: this.handleKeypressLower,
|
14641 | onMouseDown: this.handleMouseDownThumbLower,
|
14642 | onTouchStart: this.handleTouchStartThumbLower,
|
14643 | ref: this.thumbLower
|
14644 | }), outputMarkupLower, React__default.createElement("button", {
|
14645 | id: idUpper,
|
14646 | className: thumbUpperClassName,
|
14647 | style: {
|
14648 | left: "".concat(leftPositionThumbUpper, "px")
|
14649 | },
|
14650 | role: "slider",
|
14651 | "aria-disabled": disabled,
|
14652 | "aria-valuemin": min,
|
14653 | "aria-valuemax": max,
|
14654 | "aria-valuenow": value[1],
|
14655 | "aria-invalid": Boolean(error),
|
14656 | "aria-describedby": ariaDescribedBy,
|
14657 | "aria-labelledby": labelID(id),
|
14658 | onFocus: onFocus,
|
14659 | onBlur: onBlur,
|
14660 | onKeyDown: this.handleKeypressUpper,
|
14661 | onMouseDown: this.handleMouseDownThumbUpper,
|
14662 | onTouchStart: this.handleTouchStartThumbUpper,
|
14663 | ref: this.thumbUpper
|
14664 | }), outputMarkupUpper), suffixMarkup)), React__default.createElement(EventListener, {
|
14665 | event: "resize",
|
14666 | handler: this.setTrackPosition
|
14667 | }));
|
14668 | }
|
14669 | }], [{
|
14670 | key: "getDerivedStateFromProps",
|
14671 | value: function getDerivedStateFromProps(props, state) {
|
14672 | var min = props.min,
|
14673 | step = props.step,
|
14674 | max = props.max,
|
14675 | value = props.value,
|
14676 | onChange = props.onChange,
|
14677 | id = props.id;
|
14678 | var prevValue = state.prevValue;
|
14679 |
|
14680 | if (isEqual(prevValue, value)) {
|
14681 | return null;
|
14682 | }
|
14683 |
|
14684 | var sanitizedValue = sanitizeValue(value, min, max, step);
|
14685 |
|
14686 | if (!isEqual(value, sanitizedValue)) {
|
14687 | onChange(sanitizedValue, id);
|
14688 | }
|
14689 |
|
14690 | return {
|
14691 | prevValue: value,
|
14692 | value: sanitizedValue
|
14693 | };
|
14694 | }
|
14695 | }]);
|
14696 |
|
14697 | return DualThumb;
|
14698 | }(React__default.Component);
|
14699 |
|
14700 | function registerMouseMoveHandler(handler) {
|
14701 | addEventListener(document, 'mousemove', handler);
|
14702 | addEventListener(document, 'mouseup', function () {
|
14703 | removeEventListener(document, 'mousemove', handler);
|
14704 | }, {
|
14705 | once: true
|
14706 | });
|
14707 | }
|
14708 |
|
14709 | function registerTouchMoveHandler(handler) {
|
14710 | var removeHandler = function removeHandler() {
|
14711 | removeEventListener(document, 'touchmove', handler);
|
14712 | removeEventListener(document, 'touchend', removeHandler);
|
14713 | removeEventListener(document, 'touchcancel', removeHandler);
|
14714 | };
|
14715 |
|
14716 | addEventListener(document, 'touchmove', handler, {
|
14717 | passive: false
|
14718 | });
|
14719 | addEventListener(document, 'touchend', removeHandler, {
|
14720 | once: true
|
14721 | });
|
14722 | addEventListener(document, 'touchcancel', removeHandler, {
|
14723 | once: true
|
14724 | });
|
14725 | }
|
14726 |
|
14727 | function sanitizeValue(value, min, max, step) {
|
14728 | var control = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : Control.Upper;
|
14729 | var upperValue = inBoundsUpper(roundedToStep(value[1]));
|
14730 | var lowerValue = inBoundsLower(roundedToStep(value[0]));
|
14731 | var maxLowerValue = upperValue - step;
|
14732 | var minUpperValue = lowerValue + step;
|
14733 |
|
14734 | if (control === Control.Upper && lowerValue > maxLowerValue) {
|
14735 | lowerValue = maxLowerValue;
|
14736 | } else if (control === Control.Lower && upperValue < minUpperValue) {
|
14737 | upperValue = minUpperValue;
|
14738 | }
|
14739 |
|
14740 | return [lowerValue, upperValue];
|
14741 |
|
14742 | function inBoundsUpper(value) {
|
14743 | var lowerMin = min + step;
|
14744 |
|
14745 | if (value < lowerMin) {
|
14746 | return lowerMin;
|
14747 | } else if (value > max) {
|
14748 | return max;
|
14749 | } else {
|
14750 | return value;
|
14751 | }
|
14752 | }
|
14753 |
|
14754 | function inBoundsLower(value) {
|
14755 | var upperMax = max - step;
|
14756 |
|
14757 | if (value < min) {
|
14758 | return min;
|
14759 | } else if (value > upperMax) {
|
14760 | return upperMax;
|
14761 | } else {
|
14762 | return value;
|
14763 | }
|
14764 | }
|
14765 |
|
14766 | function roundedToStep(value) {
|
14767 | return Math.round(value / step) * step;
|
14768 | }
|
14769 | }
|
14770 |
|
14771 | function clamp(number, min, max) {
|
14772 | if (number < min) return min;
|
14773 | if (number > max) return max;
|
14774 | return number;
|
14775 | }
|
14776 |
|
14777 | var styles$1m = {
|
14778 | "SingleThumb": "Polaris-RangeSlider-SingleThumb",
|
14779 | "disabled": "Polaris-RangeSlider-SingleThumb--disabled",
|
14780 | "InputWrapper": "Polaris-RangeSlider-SingleThumb__InputWrapper",
|
14781 | "Prefix": "Polaris-RangeSlider-SingleThumb__Prefix",
|
14782 | "Suffix": "Polaris-RangeSlider-SingleThumb__Suffix",
|
14783 | "Input": "Polaris-RangeSlider-SingleThumb__Input",
|
14784 | "error": "Polaris-RangeSlider-SingleThumb--error",
|
14785 | "RangeSlider": "Polaris-RangeSlider-SingleThumb__RangeSlider",
|
14786 | "Output": "Polaris-RangeSlider-SingleThumb__Output",
|
14787 | "OutputBubble": "Polaris-RangeSlider-SingleThumb__OutputBubble",
|
14788 | "OutputText": "Polaris-RangeSlider-SingleThumb__OutputText"
|
14789 | };
|
14790 |
|
14791 | function SingleThumb(props) {
|
14792 | var id = props.id,
|
14793 | error = props.error,
|
14794 | helpText = props.helpText,
|
14795 | value = props.value,
|
14796 | min = props.min,
|
14797 | max = props.max,
|
14798 | disabled = props.disabled,
|
14799 | output = props.output,
|
14800 | prefix = props.prefix,
|
14801 | suffix = props.suffix,
|
14802 | label = props.label,
|
14803 | labelAction = props.labelAction,
|
14804 | labelHidden = props.labelHidden,
|
14805 | step = props.step,
|
14806 | onBlur = props.onBlur,
|
14807 | onFocus = props.onFocus;
|
14808 | var clampedValue = clamp(value, min, max);
|
14809 | var describedBy = [];
|
14810 |
|
14811 | if (error) {
|
14812 | describedBy.push("".concat(id, "Error"));
|
14813 | }
|
14814 |
|
14815 | if (helpText) {
|
14816 | describedBy.push(helpTextID(id));
|
14817 | }
|
14818 |
|
14819 | var ariaDescribedBy = describedBy.length ? describedBy.join(' ') : undefined;
|
14820 | var sliderProgress = (clampedValue - min) * 100 / (max - min);
|
14821 | var outputFactor = invertNumber((sliderProgress - 50) / 100);
|
14822 | var cssVars = {
|
14823 | ["".concat(CSS_VAR_PREFIX, "min")]: min,
|
14824 | ["".concat(CSS_VAR_PREFIX, "max")]: max,
|
14825 | ["".concat(CSS_VAR_PREFIX, "current")]: clampedValue,
|
14826 | ["".concat(CSS_VAR_PREFIX, "progress")]: "".concat(sliderProgress, "%"),
|
14827 | ["".concat(CSS_VAR_PREFIX, "output-factor")]: "".concat(outputFactor)
|
14828 | };
|
14829 | var outputMarkup = !disabled && output && React__default.createElement("output", {
|
14830 | htmlFor: id,
|
14831 | className: styles$1m.Output
|
14832 | }, React__default.createElement("div", {
|
14833 | className: styles$1m.OutputBubble
|
14834 | }, React__default.createElement("span", {
|
14835 | className: styles$1m.OutputText
|
14836 | }, clampedValue)));
|
14837 | var prefixMarkup = prefix && React__default.createElement("div", {
|
14838 | className: styles$1m.Prefix
|
14839 | }, prefix);
|
14840 | var suffixMarkup = suffix && React__default.createElement("div", {
|
14841 | className: styles$1m.Suffix
|
14842 | }, suffix);
|
14843 | var className = classNames(styles$1m.SingleThumb, error && styles$1m.error, disabled && styles$1m.disabled);
|
14844 | return React__default.createElement(Labelled, {
|
14845 | id: id,
|
14846 | label: label,
|
14847 | error: error,
|
14848 | action: labelAction,
|
14849 | labelHidden: labelHidden,
|
14850 | helpText: helpText
|
14851 | }, React__default.createElement("div", {
|
14852 | className: className,
|
14853 | style: cssVars
|
14854 | }, prefixMarkup, React__default.createElement("div", {
|
14855 | className: styles$1m.InputWrapper
|
14856 | }, React__default.createElement("input", {
|
14857 | type: "range",
|
14858 | className: styles$1m.Input,
|
14859 | id: id,
|
14860 | name: id,
|
14861 | min: min,
|
14862 | max: max,
|
14863 | step: step,
|
14864 | value: clampedValue,
|
14865 | disabled: disabled,
|
14866 | onChange: handleChange,
|
14867 | onFocus: onFocus,
|
14868 | onBlur: onBlur,
|
14869 | "aria-valuemin": min,
|
14870 | "aria-valuemax": max,
|
14871 | "aria-valuenow": clampedValue,
|
14872 | "aria-invalid": Boolean(error),
|
14873 | "aria-describedby": ariaDescribedBy
|
14874 | }), outputMarkup), suffixMarkup));
|
14875 |
|
14876 | function handleChange(event) {
|
14877 | var onChange = props.onChange;
|
14878 | onChange && onChange(parseFloat(event.currentTarget.value), id);
|
14879 | }
|
14880 | }
|
14881 |
|
14882 | function RangeSlider(_a) {
|
14883 | var _a$min = _a.min,
|
14884 | min = _a$min === void 0 ? RangeSliderDefault.Min : _a$min,
|
14885 | _a$max = _a.max,
|
14886 | max = _a$max === void 0 ? RangeSliderDefault.Max : _a$max,
|
14887 | _a$step = _a.step,
|
14888 | step = _a$step === void 0 ? RangeSliderDefault.Step : _a$step,
|
14889 | value = _a.value,
|
14890 | rest = __rest(_a, ["min", "max", "step", "value"]);
|
14891 |
|
14892 | var id = useUniqueId('RangeSlider');
|
14893 | var sharedProps = Object.assign({
|
14894 | id,
|
14895 | min,
|
14896 | max,
|
14897 | step
|
14898 | }, rest);
|
14899 | return isDualThumb(value) ? React__default.createElement(DualThumb, Object.assign({
|
14900 | value: value
|
14901 | }, sharedProps)) : React__default.createElement(SingleThumb, Object.assign({
|
14902 | value: value
|
14903 | }, sharedProps));
|
14904 | }
|
14905 |
|
14906 | function isDualThumb(value) {
|
14907 | return Array.isArray(value);
|
14908 | }
|
14909 |
|
14910 | var styles$1n = {
|
14911 | "CheckboxWrapper": "Polaris-ResourceItem__CheckboxWrapper",
|
14912 | "ResourceItem": "Polaris-ResourceItem",
|
14913 | "persistActions": "Polaris-ResourceItem--persistActions",
|
14914 | "Actions": "Polaris-ResourceItem__Actions",
|
14915 | "selected": "Polaris-ResourceItem--selected",
|
14916 | "focused": "Polaris-ResourceItem--focused",
|
14917 | "focusedInner": "Polaris-ResourceItem--focusedInner",
|
14918 | "Link": "Polaris-ResourceItem__Link",
|
14919 | "Button": "Polaris-ResourceItem__Button",
|
14920 | "Container": "Polaris-ResourceItem__Container",
|
14921 | "Owned": "Polaris-ResourceItem__Owned",
|
14922 | "Handle": "Polaris-ResourceItem__Handle",
|
14923 | "selectMode": "Polaris-ResourceItem--selectMode",
|
14924 | "selectable": "Polaris-ResourceItem--selectable",
|
14925 | "Media": "Polaris-ResourceItem__Media",
|
14926 | "Content": "Polaris-ResourceItem__Content",
|
14927 | "Disclosure": "Polaris-ResourceItem__Disclosure"
|
14928 | };
|
14929 |
|
14930 | var getUniqueCheckboxID = createUniqueIDFactory('ResourceListItemCheckbox');
|
14931 | var getUniqueOverlayID = createUniqueIDFactory('ResourceListItemOverlay');
|
14932 |
|
14933 | var BaseResourceItem =
|
14934 |
|
14935 | function (_React$Component) {
|
14936 | _inherits(BaseResourceItem, _React$Component);
|
14937 |
|
14938 | function BaseResourceItem() {
|
14939 | var _this;
|
14940 |
|
14941 | _classCallCheck(this, BaseResourceItem);
|
14942 |
|
14943 | _this = _possibleConstructorReturn(this, _getPrototypeOf(BaseResourceItem).apply(this, arguments));
|
14944 | _this.state = {
|
14945 | actionsMenuVisible: false,
|
14946 | focused: false,
|
14947 | focusedInner: false,
|
14948 | selected: isSelected(_this.props.id, _this.props.context.selectedItems)
|
14949 | };
|
14950 | _this.node = null;
|
14951 | _this.checkboxId = getUniqueCheckboxID();
|
14952 | _this.overlayId = getUniqueOverlayID();
|
14953 | _this.buttonOverlay = React__default.createRef();
|
14954 |
|
14955 | _this.setNode = function (node) {
|
14956 | _this.node = node;
|
14957 | };
|
14958 |
|
14959 | _this.handleFocus = function (event) {
|
14960 | if (event.target === _this.buttonOverlay.current || _this.node && event.target === _this.node.querySelector("#".concat(_this.overlayId))) {
|
14961 | _this.setState({
|
14962 | focused: true,
|
14963 | focusedInner: false
|
14964 | });
|
14965 | } else if (_this.node && _this.node.contains(event.target)) {
|
14966 | _this.setState({
|
14967 | focused: true,
|
14968 | focusedInner: true
|
14969 | });
|
14970 | }
|
14971 | };
|
14972 |
|
14973 | _this.handleBlur = function (_ref) {
|
14974 | var relatedTarget = _ref.relatedTarget;
|
14975 |
|
14976 | if (_this.node && relatedTarget instanceof Element && _this.node.contains(relatedTarget)) {
|
14977 | return;
|
14978 | }
|
14979 |
|
14980 | _this.setState({
|
14981 | focused: false,
|
14982 | focusedInner: false
|
14983 | });
|
14984 | };
|
14985 |
|
14986 | _this.handleLargerSelectionArea = function (event) {
|
14987 | stopPropagation$1(event);
|
14988 |
|
14989 | _this.handleSelection(!_this.state.selected, event.nativeEvent.shiftKey);
|
14990 | };
|
14991 |
|
14992 | _this.handleSelection = function (value, shiftKey) {
|
14993 | var _this$props = _this.props,
|
14994 | id = _this$props.id,
|
14995 | sortOrder = _this$props.sortOrder,
|
14996 | onSelectionChange = _this$props.context.onSelectionChange;
|
14997 |
|
14998 | if (id == null || onSelectionChange == null) {
|
14999 | return;
|
15000 | }
|
15001 |
|
15002 | _this.setState({
|
15003 | focused: value,
|
15004 | focusedInner: value
|
15005 | });
|
15006 |
|
15007 | onSelectionChange(value, id, sortOrder, shiftKey);
|
15008 | };
|
15009 |
|
15010 | _this.handleClick = function (event) {
|
15011 | stopPropagation$1(event);
|
15012 | var _this$props2 = _this.props,
|
15013 | id = _this$props2.id,
|
15014 | onClick = _this$props2.onClick,
|
15015 | url = _this$props2.url,
|
15016 | selectMode = _this$props2.context.selectMode;
|
15017 | var _event$nativeEvent = event.nativeEvent,
|
15018 | ctrlKey = _event$nativeEvent.ctrlKey,
|
15019 | metaKey = _event$nativeEvent.metaKey;
|
15020 |
|
15021 | var anchor = _this.node && _this.node.querySelector('a');
|
15022 |
|
15023 | if (selectMode) {
|
15024 | _this.handleLargerSelectionArea(event);
|
15025 |
|
15026 | return;
|
15027 | }
|
15028 |
|
15029 | if (anchor === event.target) {
|
15030 | return;
|
15031 | }
|
15032 |
|
15033 | if (onClick) {
|
15034 | onClick(id);
|
15035 | }
|
15036 |
|
15037 | if (url && (ctrlKey || metaKey)) {
|
15038 | window.open(url, '_blank');
|
15039 | return;
|
15040 | }
|
15041 |
|
15042 | if (url && anchor) {
|
15043 | anchor.click();
|
15044 | }
|
15045 | };
|
15046 |
|
15047 |
|
15048 | _this.handleKeyUp = function (event) {
|
15049 | var _this$props3 = _this.props,
|
15050 | _this$props3$onClick = _this$props3.onClick,
|
15051 | onClick = _this$props3$onClick === void 0 ? noop$b : _this$props3$onClick,
|
15052 | selectMode = _this$props3.context.selectMode;
|
15053 | var key = event.key;
|
15054 |
|
15055 | if (key === 'Enter' && _this.props.url && !selectMode) {
|
15056 | onClick();
|
15057 | }
|
15058 | };
|
15059 |
|
15060 | _this.handleActionsClick = function () {
|
15061 | _this.setState(function (_ref2) {
|
15062 | var actionsMenuVisible = _ref2.actionsMenuVisible;
|
15063 | return {
|
15064 | actionsMenuVisible: !actionsMenuVisible
|
15065 | };
|
15066 | });
|
15067 | };
|
15068 |
|
15069 | _this.handleCloseRequest = function () {
|
15070 | _this.setState({
|
15071 | actionsMenuVisible: false
|
15072 | });
|
15073 | };
|
15074 |
|
15075 | return _this;
|
15076 | }
|
15077 |
|
15078 | _createClass(BaseResourceItem, [{
|
15079 | key: "shouldComponentUpdate",
|
15080 | value: function shouldComponentUpdate(nextProps, nextState) {
|
15081 | var _a = nextProps.context,
|
15082 | nextSelectedItems = _a.selectedItems,
|
15083 | restNextContext = __rest(_a, ["selectedItems"]),
|
15084 | restNextProps = __rest(nextProps, ["context"]);
|
15085 |
|
15086 | var _b = this.props,
|
15087 | _c = _b.context,
|
15088 | selectedItems = _c.selectedItems,
|
15089 | restContext = __rest(_c, ["selectedItems"]),
|
15090 | restProps = __rest(_b, ["context"]);
|
15091 |
|
15092 | var nextSelectMode = nextProps.context.selectMode;
|
15093 | return !isEqual(this.state, nextState) || this.props.context.selectMode !== nextSelectMode || !nextProps.context.selectMode && (!isEqual(restProps, restNextProps) || !isEqual(restContext, restNextContext));
|
15094 | }
|
15095 | }, {
|
15096 | key: "render",
|
15097 | value: function render() {
|
15098 | var _this$props4 = this.props,
|
15099 | children = _this$props4.children,
|
15100 | url = _this$props4.url,
|
15101 | external = _this$props4.external,
|
15102 | media = _this$props4.media,
|
15103 | shortcutActions = _this$props4.shortcutActions,
|
15104 | ariaControls = _this$props4.ariaControls,
|
15105 | ariaExpanded = _this$props4.ariaExpanded,
|
15106 | _this$props4$persistA = _this$props4.persistActions,
|
15107 | persistActions = _this$props4$persistA === void 0 ? false : _this$props4$persistA,
|
15108 | accessibilityLabel = _this$props4.accessibilityLabel,
|
15109 | name = _this$props4.name,
|
15110 | _this$props4$context = _this$props4.context,
|
15111 | selectable = _this$props4$context.selectable,
|
15112 | selectMode = _this$props4$context.selectMode,
|
15113 | loading = _this$props4$context.loading,
|
15114 | resourceName = _this$props4$context.resourceName,
|
15115 | i18n = _this$props4.i18n;
|
15116 | var _this$state = this.state,
|
15117 | actionsMenuVisible = _this$state.actionsMenuVisible,
|
15118 | focused = _this$state.focused,
|
15119 | focusedInner = _this$state.focusedInner,
|
15120 | selected = _this$state.selected;
|
15121 | var ownedMarkup = null;
|
15122 | var handleMarkup = null;
|
15123 | var mediaMarkup = media ? React__default.createElement("div", {
|
15124 | className: styles$1n.Media
|
15125 | }, media) : null;
|
15126 |
|
15127 | if (selectable) {
|
15128 | var checkboxAccessibilityLabel = name || accessibilityLabel || i18n.translate('Polaris.Common.checkbox');
|
15129 | handleMarkup = React__default.createElement("div", {
|
15130 | className: styles$1n.Handle,
|
15131 | onClick: this.handleLargerSelectionArea
|
15132 | }, React__default.createElement("div", {
|
15133 | onClick: stopPropagation$1,
|
15134 | className: styles$1n.CheckboxWrapper
|
15135 | }, React__default.createElement("div", {
|
15136 | onChange: this.handleLargerSelectionArea
|
15137 | }, React__default.createElement(Checkbox$1, {
|
15138 | id: this.checkboxId,
|
15139 | label: checkboxAccessibilityLabel,
|
15140 | labelHidden: true,
|
15141 | checked: selected,
|
15142 | disabled: loading
|
15143 | }))));
|
15144 | }
|
15145 |
|
15146 | if (media || selectable) {
|
15147 | ownedMarkup = React__default.createElement("div", {
|
15148 | className: styles$1n.Owned
|
15149 | }, handleMarkup, mediaMarkup);
|
15150 | }
|
15151 |
|
15152 | var className = classNames(styles$1n.ResourceItem, focused && styles$1n.focused, selectable && styles$1n.selectable, selected && styles$1n.selected, selectMode && styles$1n.selectMode, persistActions && styles$1n.persistActions, focusedInner && styles$1n.focusedInner);
|
15153 | var actionsMarkup = null;
|
15154 | var disclosureMarkup = null;
|
15155 |
|
15156 | if (shortcutActions && !loading) {
|
15157 | if (persistActions) {
|
15158 | actionsMarkup = React__default.createElement("div", {
|
15159 | className: styles$1n.Actions,
|
15160 | onClick: stopPropagation$1
|
15161 | }, React__default.createElement(ButtonGroup, null, buttonsFrom(shortcutActions, {
|
15162 | plain: true
|
15163 | })));
|
15164 | var disclosureAccessibilityLabel = name ? i18n.translate('Polaris.ResourceList.Item.actionsDropdownLabel', {
|
15165 | accessibilityLabel: name
|
15166 | }) : i18n.translate('Polaris.ResourceList.Item.actionsDropdown');
|
15167 | disclosureMarkup = React__default.createElement("div", {
|
15168 | className: styles$1n.Disclosure,
|
15169 | onClick: stopPropagation$1
|
15170 | }, React__default.createElement(Popover, {
|
15171 | activator: React__default.createElement(Button, {
|
15172 | accessibilityLabel: disclosureAccessibilityLabel,
|
15173 | onClick: this.handleActionsClick,
|
15174 | plain: true,
|
15175 | icon: HorizontalDotsMinor
|
15176 | }),
|
15177 | onClose: this.handleCloseRequest,
|
15178 | active: actionsMenuVisible
|
15179 | }, React__default.createElement(ActionList, {
|
15180 | items: shortcutActions
|
15181 | })));
|
15182 | } else {
|
15183 | actionsMarkup = React__default.createElement("div", {
|
15184 | className: styles$1n.Actions,
|
15185 | onClick: stopPropagation$1
|
15186 | }, React__default.createElement(ButtonGroup, {
|
15187 | segmented: true
|
15188 | }, buttonsFrom(shortcutActions, {
|
15189 | size: 'slim'
|
15190 | })));
|
15191 | }
|
15192 | }
|
15193 |
|
15194 | var content = children ? React__default.createElement("div", {
|
15195 | className: styles$1n.Content
|
15196 | }, children) : null;
|
15197 | var containerMarkup = React__default.createElement("div", {
|
15198 | className: styles$1n.Container,
|
15199 | id: this.props.id
|
15200 | }, ownedMarkup, content, actionsMarkup, disclosureMarkup);
|
15201 | var tabIndex = loading ? -1 : 0;
|
15202 | var ariaLabel = accessibilityLabel || i18n.translate('Polaris.ResourceList.Item.viewItem', {
|
15203 | itemName: name || resourceName && resourceName.singular || ''
|
15204 | });
|
15205 | var accessibleMarkup = url ? React__default.createElement(UnstyledLink, {
|
15206 | "aria-describedby": this.props.id,
|
15207 | "aria-label": ariaLabel,
|
15208 | className: styles$1n.Link,
|
15209 | url: url,
|
15210 | external: external,
|
15211 | tabIndex: tabIndex,
|
15212 | id: this.overlayId
|
15213 | }) : React__default.createElement("button", {
|
15214 | className: styles$1n.Button,
|
15215 | "aria-label": ariaLabel,
|
15216 | "aria-controls": ariaControls,
|
15217 | "aria-expanded": ariaExpanded,
|
15218 | onClick: this.handleClick,
|
15219 | tabIndex: tabIndex,
|
15220 | ref: this.buttonOverlay
|
15221 | });
|
15222 | return React__default.createElement("div", {
|
15223 | ref: this.setNode,
|
15224 | className: className,
|
15225 | onClick: this.handleClick,
|
15226 | onFocus: this.handleFocus,
|
15227 | onBlur: this.handleBlur,
|
15228 | onKeyUp: this.handleKeyUp,
|
15229 | "data-href": url
|
15230 | }, accessibleMarkup, containerMarkup);
|
15231 | }
|
15232 | }], [{
|
15233 | key: "getDerivedStateFromProps",
|
15234 | value: function getDerivedStateFromProps(nextProps, prevState) {
|
15235 | var selected = isSelected(nextProps.id, nextProps.context.selectedItems);
|
15236 |
|
15237 | if (prevState.selected === selected) {
|
15238 | return null;
|
15239 | }
|
15240 |
|
15241 | return {
|
15242 | selected
|
15243 | };
|
15244 | }
|
15245 | }]);
|
15246 |
|
15247 | return BaseResourceItem;
|
15248 | }(React__default.Component);
|
15249 |
|
15250 | function noop$b() {}
|
15251 |
|
15252 | function stopPropagation$1(event) {
|
15253 | event.stopPropagation();
|
15254 | }
|
15255 |
|
15256 | function isSelected(id, selectedItems) {
|
15257 | return Boolean(selectedItems && (Array.isArray(selectedItems) && selectedItems.includes(id) || selectedItems === SELECT_ALL_ITEMS));
|
15258 | }
|
15259 |
|
15260 | function ResourceItem(props) {
|
15261 | return React__default.createElement(BaseResourceItem, Object.assign({}, props, {
|
15262 | context: useContext(ResourceListContext),
|
15263 | i18n: useI18n()
|
15264 | }));
|
15265 | }
|
15266 |
|
15267 | var Sticky =
|
15268 |
|
15269 | function (_React$Component) {
|
15270 | _inherits(Sticky, _React$Component);
|
15271 |
|
15272 | function Sticky() {
|
15273 | var _this;
|
15274 |
|
15275 | _classCallCheck(this, Sticky);
|
15276 |
|
15277 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Sticky).apply(this, arguments));
|
15278 | _this.state = {
|
15279 | isSticky: false,
|
15280 | style: {}
|
15281 | };
|
15282 | _this.placeHolderNode = null;
|
15283 | _this.stickyNode = null;
|
15284 |
|
15285 | _this.setPlaceHolderNode = function (node) {
|
15286 | _this.placeHolderNode = node;
|
15287 | };
|
15288 |
|
15289 | _this.setStickyNode = function (node) {
|
15290 | _this.stickyNode = node;
|
15291 | };
|
15292 |
|
15293 | _this.handlePositioning = function (stick) {
|
15294 | var top = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
15295 | var left = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
15296 | var width = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
15297 | var isSticky = _this.state.isSticky;
|
15298 |
|
15299 | if (stick && !isSticky || !stick && isSticky) {
|
15300 | _this.adjustPlaceHolderNode(stick);
|
15301 |
|
15302 | _this.setState({
|
15303 | isSticky: !isSticky
|
15304 | });
|
15305 | }
|
15306 |
|
15307 | var style = stick ? {
|
15308 | position: 'fixed',
|
15309 | top,
|
15310 | left,
|
15311 | width
|
15312 | } : {};
|
15313 |
|
15314 | _this.setState({
|
15315 | style
|
15316 | });
|
15317 | };
|
15318 |
|
15319 | _this.adjustPlaceHolderNode = function (add) {
|
15320 | if (_this.placeHolderNode && _this.stickyNode) {
|
15321 | _this.placeHolderNode.style.paddingBottom = add ? "".concat(getRectForNode(_this.stickyNode).height, "px") : '0px';
|
15322 | }
|
15323 | };
|
15324 |
|
15325 | return _this;
|
15326 | }
|
15327 |
|
15328 | _createClass(Sticky, [{
|
15329 | key: "componentDidMount",
|
15330 | value: function componentDidMount() {
|
15331 | var _this$props = this.props,
|
15332 | boundingElement = _this$props.boundingElement,
|
15333 | _this$props$offset = _this$props.offset,
|
15334 | offset = _this$props$offset === void 0 ? false : _this$props$offset,
|
15335 | _this$props$disableWh = _this$props.disableWhenStacked,
|
15336 | disableWhenStacked = _this$props$disableWh === void 0 ? false : _this$props$disableWh,
|
15337 | stickyManager = _this$props.polaris.stickyManager;
|
15338 | if (!this.stickyNode || !this.placeHolderNode) return;
|
15339 | stickyManager.registerStickyItem({
|
15340 | stickyNode: this.stickyNode,
|
15341 | placeHolderNode: this.placeHolderNode,
|
15342 | handlePositioning: this.handlePositioning,
|
15343 | offset,
|
15344 | boundingElement,
|
15345 | disableWhenStacked
|
15346 | });
|
15347 | }
|
15348 | }, {
|
15349 | key: "componentWillUnmount",
|
15350 | value: function componentWillUnmount() {
|
15351 | var stickyManager = this.props.polaris.stickyManager;
|
15352 | if (!this.stickyNode) return;
|
15353 | stickyManager.unregisterStickyItem(this.stickyNode);
|
15354 | }
|
15355 | }, {
|
15356 | key: "render",
|
15357 | value: function render() {
|
15358 | var _this$state = this.state,
|
15359 | style = _this$state.style,
|
15360 | isSticky = _this$state.isSticky;
|
15361 | var children = this.props.children;
|
15362 | var childrenContent = isFunction(children) ? children(isSticky) : children;
|
15363 | return React__default.createElement("div", null, React__default.createElement("div", {
|
15364 | ref: this.setPlaceHolderNode
|
15365 | }), React__default.createElement("div", {
|
15366 | ref: this.setStickyNode,
|
15367 | style: style
|
15368 | }, childrenContent));
|
15369 | }
|
15370 | }]);
|
15371 |
|
15372 | return Sticky;
|
15373 | }(React__default.Component);
|
15374 |
|
15375 | function isFunction(arg) {
|
15376 | return typeof arg === 'function';
|
15377 | }
|
15378 |
|
15379 |
|
15380 |
|
15381 | var Sticky$1 = withAppProvider()(Sticky);
|
15382 |
|
15383 | var styles$1o = {
|
15384 | "Select": "Polaris-Select",
|
15385 | "disabled": "Polaris-Select--disabled",
|
15386 | "Content": "Polaris-Select__Content",
|
15387 | "InlineLabel": "Polaris-Select__InlineLabel",
|
15388 | "Icon": "Polaris-Select__Icon",
|
15389 | "Backdrop": "Polaris-Select__Backdrop",
|
15390 | "error": "Polaris-Select--error",
|
15391 | "Input": "Polaris-Select__Input",
|
15392 | "placeholder": "Polaris-Select--placeholder",
|
15393 | "SelectedOption": "Polaris-Select__SelectedOption"
|
15394 | };
|
15395 |
|
15396 | var PLACEHOLDER_VALUE = '';
|
15397 | function Select(_ref) {
|
15398 | var optionsProp = _ref.options,
|
15399 | label = _ref.label,
|
15400 | labelAction = _ref.labelAction,
|
15401 | labelHiddenProp = _ref.labelHidden,
|
15402 | labelInline = _ref.labelInline,
|
15403 | disabled = _ref.disabled,
|
15404 | helpText = _ref.helpText,
|
15405 | placeholder = _ref.placeholder,
|
15406 | idProp = _ref.id,
|
15407 | name = _ref.name,
|
15408 | _ref$value = _ref.value,
|
15409 | value = _ref$value === void 0 ? PLACEHOLDER_VALUE : _ref$value,
|
15410 | error = _ref.error,
|
15411 | onChange = _ref.onChange,
|
15412 | onFocus = _ref.onFocus,
|
15413 | onBlur = _ref.onBlur;
|
15414 | var id = useUniqueId('Select', idProp);
|
15415 | var labelHidden = labelInline ? true : labelHiddenProp;
|
15416 | var className = classNames(styles$1o.Select, error && styles$1o.error, disabled && styles$1o.disabled);
|
15417 | var handleChange = onChange ? function (event) {
|
15418 | return onChange(event.currentTarget.value, id);
|
15419 | } : undefined;
|
15420 | var describedBy = [];
|
15421 |
|
15422 | if (helpText) {
|
15423 | describedBy.push(helpTextID(id));
|
15424 | }
|
15425 |
|
15426 | if (error) {
|
15427 | describedBy.push("".concat(id, "Error"));
|
15428 | }
|
15429 |
|
15430 | var options = optionsProp || [];
|
15431 | var normalizedOptions = options.map(normalizeOption);
|
15432 |
|
15433 | if (placeholder) {
|
15434 | normalizedOptions = [{
|
15435 | label: placeholder,
|
15436 | value: PLACEHOLDER_VALUE,
|
15437 | disabled: true
|
15438 | }].concat(_toConsumableArray(normalizedOptions));
|
15439 | }
|
15440 |
|
15441 | var inlineLabelMarkup = labelInline && React__default.createElement("span", {
|
15442 | className: styles$1o.InlineLabel
|
15443 | }, label);
|
15444 | var selectedOption = getSelectedOption(normalizedOptions, value);
|
15445 | var contentMarkup = React__default.createElement("div", {
|
15446 | className: styles$1o.Content,
|
15447 | "aria-hidden": true,
|
15448 | "aria-disabled": disabled
|
15449 | }, inlineLabelMarkup, React__default.createElement("span", {
|
15450 | className: styles$1o.SelectedOption
|
15451 | }, selectedOption), React__default.createElement("span", {
|
15452 | className: styles$1o.Icon
|
15453 | }, React__default.createElement(Icon, {
|
15454 | source: ArrowUpDownMinor
|
15455 | })));
|
15456 | var optionsMarkup = normalizedOptions.map(renderOption);
|
15457 | return React__default.createElement(Labelled, {
|
15458 | id: id,
|
15459 | label: label,
|
15460 | error: error,
|
15461 | action: labelAction,
|
15462 | labelHidden: labelHidden,
|
15463 | helpText: helpText
|
15464 | }, React__default.createElement("div", {
|
15465 | className: className
|
15466 | }, React__default.createElement("select", {
|
15467 | id: id,
|
15468 | name: name,
|
15469 | value: value,
|
15470 | className: styles$1o.Input,
|
15471 | disabled: disabled,
|
15472 | onFocus: onFocus,
|
15473 | onBlur: onBlur,
|
15474 | onChange: handleChange,
|
15475 | "aria-invalid": Boolean(error),
|
15476 | "aria-describedby": describedBy.length ? describedBy.join(' ') : undefined
|
15477 | }, optionsMarkup), contentMarkup, React__default.createElement("div", {
|
15478 | className: styles$1o.Backdrop
|
15479 | })));
|
15480 | }
|
15481 |
|
15482 | function isString(option) {
|
15483 | return typeof option === 'string';
|
15484 | }
|
15485 |
|
15486 | function isGroup(option) {
|
15487 | return option.options != null;
|
15488 | }
|
15489 |
|
15490 | function normalizeStringOption(option) {
|
15491 | return {
|
15492 | label: option,
|
15493 | value: option
|
15494 | };
|
15495 | }
|
15496 |
|
15497 |
|
15498 |
|
15499 |
|
15500 |
|
15501 |
|
15502 | function normalizeOption(option) {
|
15503 | if (isString(option)) {
|
15504 | return normalizeStringOption(option);
|
15505 | } else if (isGroup(option)) {
|
15506 | var title = option.title,
|
15507 | options = option.options;
|
15508 | return {
|
15509 | title,
|
15510 | options: options.map(function (option) {
|
15511 | return isString(option) ? normalizeStringOption(option) : option;
|
15512 | })
|
15513 | };
|
15514 | }
|
15515 |
|
15516 | return option;
|
15517 | }
|
15518 |
|
15519 |
|
15520 |
|
15521 |
|
15522 |
|
15523 | function getSelectedOption(options, value) {
|
15524 | var flatOptions = flattenOptions(options);
|
15525 | var selectedOption = flatOptions.find(function (option) {
|
15526 | return value === option.value;
|
15527 | });
|
15528 |
|
15529 | if (selectedOption === undefined) {
|
15530 |
|
15531 | selectedOption = flatOptions.find(function (option) {
|
15532 | return !option.hidden;
|
15533 | });
|
15534 | }
|
15535 |
|
15536 | return selectedOption ? selectedOption.label : '';
|
15537 | }
|
15538 |
|
15539 |
|
15540 |
|
15541 |
|
15542 |
|
15543 | function flattenOptions(options) {
|
15544 | var flatOptions = [];
|
15545 | options.forEach(function (optionOrGroup) {
|
15546 | if (isGroup(optionOrGroup)) {
|
15547 | flatOptions = flatOptions.concat(optionOrGroup.options);
|
15548 | } else {
|
15549 | flatOptions.push(optionOrGroup);
|
15550 | }
|
15551 | });
|
15552 | return flatOptions;
|
15553 | }
|
15554 |
|
15555 | function renderSingleOption(option) {
|
15556 | var value = option.value,
|
15557 | label = option.label,
|
15558 | rest = __rest(option, ["value", "label"]);
|
15559 |
|
15560 | return React__default.createElement("option", Object.assign({
|
15561 | key: value,
|
15562 | value: value
|
15563 | }, rest), label);
|
15564 | }
|
15565 |
|
15566 | function renderOption(optionOrGroup) {
|
15567 | if (isGroup(optionOrGroup)) {
|
15568 | var title = optionOrGroup.title,
|
15569 | options = optionOrGroup.options;
|
15570 | return React__default.createElement("optgroup", {
|
15571 | label: title,
|
15572 | key: title
|
15573 | }, options.map(renderSingleOption));
|
15574 | }
|
15575 |
|
15576 | return renderSingleOption(optionOrGroup);
|
15577 | }
|
15578 |
|
15579 | var styles$1p = {
|
15580 | "CheckableButton": "Polaris-ResourceList-CheckableButton",
|
15581 | "globalTheming": "Polaris-ResourceList-CheckableButton--globalTheming",
|
15582 | "CheckableButton-selectMode": "Polaris-ResourceList-CheckableButton__CheckableButton--selectMode",
|
15583 | "CheckableButton-measuring": "Polaris-ResourceList-CheckableButton__CheckableButton--measuring",
|
15584 | "CheckableButton-plain": "Polaris-ResourceList-CheckableButton__CheckableButton--plain",
|
15585 | "CheckableButton-selected": "Polaris-ResourceList-CheckableButton__CheckableButton--selected",
|
15586 | "Checkbox": "Polaris-ResourceList-CheckableButton__Checkbox",
|
15587 | "Label": "Polaris-ResourceList-CheckableButton__Label"
|
15588 | };
|
15589 |
|
15590 | function CheckableButton(_ref) {
|
15591 | var accessibilityLabel = _ref.accessibilityLabel,
|
15592 | _ref$label = _ref.label,
|
15593 | label = _ref$label === void 0 ? '' : _ref$label,
|
15594 | onToggleAll = _ref.onToggleAll,
|
15595 | selected = _ref.selected,
|
15596 | selectMode = _ref.selectMode,
|
15597 | plain = _ref.plain,
|
15598 | measuring = _ref.measuring,
|
15599 | disabled = _ref.disabled,
|
15600 | smallScreen = _ref.smallScreen;
|
15601 | var checkBoxRef = useRef(null);
|
15602 |
|
15603 | var _useFeatures = useFeatures(),
|
15604 | _useFeatures$unstable = _useFeatures.unstableGlobalTheming,
|
15605 | unstableGlobalTheming = _useFeatures$unstable === void 0 ? false : _useFeatures$unstable;
|
15606 |
|
15607 | var _React$useContext = React__default.useContext(ResourceListContext),
|
15608 | registerCheckableButtons = _React$useContext.registerCheckableButtons;
|
15609 |
|
15610 | var currentKey = 'bulkLg';
|
15611 |
|
15612 | if (plain) {
|
15613 | currentKey = 'plain';
|
15614 | } else if (smallScreen) {
|
15615 | currentKey = 'bulkSm';
|
15616 | }
|
15617 |
|
15618 | useEffect(function () {
|
15619 | if (checkBoxRef.current && registerCheckableButtons) {
|
15620 | registerCheckableButtons(currentKey, checkBoxRef.current);
|
15621 | }
|
15622 | }, [currentKey, registerCheckableButtons]);
|
15623 | var className = plain ? classNames(styles$1p.CheckableButton, styles$1p['CheckableButton-plain'], unstableGlobalTheming && styles$1p.globalTheming) : classNames(styles$1p.CheckableButton, unstableGlobalTheming && styles$1p.globalTheming, selectMode && styles$1p['CheckableButton-selectMode'], selected && styles$1p['CheckableButton-selected'], measuring && styles$1p['CheckableButton-measuring']);
|
15624 | return React__default.createElement("div", {
|
15625 | className: className,
|
15626 | onClick: onToggleAll
|
15627 | }, React__default.createElement("div", {
|
15628 | className: styles$1p.Checkbox
|
15629 | }, React__default.createElement(Checkbox$1, {
|
15630 | label: accessibilityLabel,
|
15631 | labelHidden: true,
|
15632 | checked: selected,
|
15633 | disabled: disabled,
|
15634 | onChange: onToggleAll,
|
15635 | ref: checkBoxRef
|
15636 | })), React__default.createElement("span", {
|
15637 | className: styles$1p.Label
|
15638 | }, label));
|
15639 | }
|
15640 |
|
15641 | var styles$1q = {
|
15642 | "Group": "Polaris-ResourceList-BulkActions__Group",
|
15643 | "Group-measuring": "Polaris-ResourceList-BulkActions__Group--measuring",
|
15644 | "Group-entering": "Polaris-ResourceList-BulkActions__Group--entering",
|
15645 | "Group-exiting": "Polaris-ResourceList-BulkActions__Group--exiting",
|
15646 | "Group-entered": "Polaris-ResourceList-BulkActions__Group--entered",
|
15647 | "Group-exited": "Polaris-ResourceList-BulkActions__Group--exited",
|
15648 | "Group-smallScreen": "Polaris-ResourceList-BulkActions__Group--smallScreen",
|
15649 | "Group-largeScreen": "Polaris-ResourceList-BulkActions__Group--largeScreen",
|
15650 | "ButtonGroupWrapper": "Polaris-ResourceList-BulkActions__ButtonGroupWrapper",
|
15651 | "BulkActionButton": "Polaris-ResourceList-BulkActions__BulkActionButton",
|
15652 | "CheckableContainer": "Polaris-ResourceList-BulkActions__CheckableContainer",
|
15653 | "disabled": "Polaris-ResourceList-BulkActions--disabled",
|
15654 | "globalTheming": "Polaris-ResourceList-BulkActions--globalTheming",
|
15655 | "PaginatedSelectAll": "Polaris-ResourceList-BulkActions__PaginatedSelectAll",
|
15656 | "Slide": "Polaris-ResourceList-BulkActions__Slide",
|
15657 | "Slide-appear": "Polaris-ResourceList-BulkActions__Slide--appear",
|
15658 | "Slide-enter": "Polaris-ResourceList-BulkActions__Slide--enter",
|
15659 | "Slide-exit": "Polaris-ResourceList-BulkActions__Slide--exit",
|
15660 | "Slide-appearing": "Polaris-ResourceList-BulkActions__Slide--appearing",
|
15661 | "Slide-entering": "Polaris-ResourceList-BulkActions__Slide--entering"
|
15662 | };
|
15663 |
|
15664 | var BulkActionButton =
|
15665 |
|
15666 | function (_React$PureComponent) {
|
15667 | _inherits(BulkActionButton, _React$PureComponent);
|
15668 |
|
15669 | function BulkActionButton() {
|
15670 | var _this;
|
15671 |
|
15672 | _classCallCheck(this, BulkActionButton);
|
15673 |
|
15674 | _this = _possibleConstructorReturn(this, _getPrototypeOf(BulkActionButton).apply(this, arguments));
|
15675 | _this.bulkActionButton = createRef();
|
15676 | return _this;
|
15677 | }
|
15678 |
|
15679 | _createClass(BulkActionButton, [{
|
15680 | key: "componentDidMount",
|
15681 | value: function componentDidMount() {
|
15682 | var handleMeasurement = this.props.handleMeasurement;
|
15683 |
|
15684 | if (handleMeasurement && this.bulkActionButton.current) {
|
15685 | var width = this.bulkActionButton.current.getBoundingClientRect().width;
|
15686 | handleMeasurement(width);
|
15687 | }
|
15688 | }
|
15689 | }, {
|
15690 | key: "render",
|
15691 | value: function render() {
|
15692 | var _this$props = this.props,
|
15693 | url = _this$props.url,
|
15694 | external = _this$props.external,
|
15695 | onAction = _this$props.onAction,
|
15696 | content = _this$props.content,
|
15697 | disclosure = _this$props.disclosure,
|
15698 | accessibilityLabel = _this$props.accessibilityLabel,
|
15699 | disabled = _this$props.disabled;
|
15700 | return React__default.createElement("div", {
|
15701 | className: styles$1q.BulkActionButton,
|
15702 | ref: this.bulkActionButton
|
15703 | }, React__default.createElement(Button, {
|
15704 | external: external,
|
15705 | url: url,
|
15706 | "aria-label": accessibilityLabel,
|
15707 | onClick: onAction,
|
15708 | disabled: disabled,
|
15709 | disclosure: disclosure
|
15710 | }, content));
|
15711 | }
|
15712 | }]);
|
15713 |
|
15714 | return BulkActionButton;
|
15715 | }(React__default.PureComponent);
|
15716 |
|
15717 | var MAX_PROMOTED_ACTIONS = 2;
|
15718 | var slideClasses = {
|
15719 | appear: classNames(styles$1q.Slide, styles$1q['Slide-appear']),
|
15720 | appearActive: classNames(styles$1q.Slide, styles$1q['Slide-appearing']),
|
15721 | enter: classNames(styles$1q.Slide, styles$1q['Slide-enter']),
|
15722 | enterActive: classNames(styles$1q.Slide, styles$1q['Slide-entering']),
|
15723 | exit: classNames(styles$1q.Slide, styles$1q['Slide-exit'])
|
15724 | };
|
15725 |
|
15726 | var BulkActions =
|
15727 |
|
15728 | function (_React$PureComponent) {
|
15729 | _inherits(BulkActions, _React$PureComponent);
|
15730 |
|
15731 | function BulkActions() {
|
15732 | var _this;
|
15733 |
|
15734 | _classCallCheck(this, BulkActions);
|
15735 |
|
15736 | _this = _possibleConstructorReturn(this, _getPrototypeOf(BulkActions).apply(this, arguments));
|
15737 | _this.state = {
|
15738 | smallScreenPopoverVisible: false,
|
15739 | largeScreenPopoverVisible: false,
|
15740 | containerWidth: 0,
|
15741 | measuring: true
|
15742 | };
|
15743 | _this.checkableWrapperNode = createRef();
|
15744 | _this.largeScreenGroupNode = createRef();
|
15745 | _this.smallScreenGroupNode = createRef();
|
15746 | _this.promotedActionsWidths = [];
|
15747 | _this.bulkActionsWidth = 0;
|
15748 | _this.addedMoreActionsWidthForMeasuring = 0;
|
15749 | _this.handleResize = debounce(function () {
|
15750 | var _this$state = _this.state,
|
15751 | smallScreenPopoverVisible = _this$state.smallScreenPopoverVisible,
|
15752 | largeScreenPopoverVisible = _this$state.largeScreenPopoverVisible;
|
15753 |
|
15754 | if (_this.containerNode) {
|
15755 | var containerWidth = _this.containerNode.getBoundingClientRect().width;
|
15756 |
|
15757 | if (containerWidth > 0) {
|
15758 | _this.setState({
|
15759 | containerWidth
|
15760 | });
|
15761 | }
|
15762 | }
|
15763 |
|
15764 | if (smallScreenPopoverVisible || largeScreenPopoverVisible) {
|
15765 | _this.setState({
|
15766 | smallScreenPopoverVisible: false,
|
15767 | largeScreenPopoverVisible: false
|
15768 | });
|
15769 | }
|
15770 | }, 50, {
|
15771 | trailing: true
|
15772 | });
|
15773 |
|
15774 | _this.setLargeScreenButtonsNode = function (node) {
|
15775 | _this.largeScreenButtonsNode = node;
|
15776 | };
|
15777 |
|
15778 | _this.setContainerNode = function (node) {
|
15779 | _this.containerNode = node;
|
15780 | };
|
15781 |
|
15782 | _this.setMoreActionsNode = function (node) {
|
15783 | _this.moreActionsNode = node;
|
15784 | };
|
15785 |
|
15786 | _this.setSelectMode = function (val) {
|
15787 | var onSelectModeToggle = _this.props.onSelectModeToggle;
|
15788 |
|
15789 | if (onSelectModeToggle) {
|
15790 | onSelectModeToggle(val);
|
15791 | }
|
15792 | };
|
15793 |
|
15794 | _this.toggleSmallScreenPopover = function () {
|
15795 | _this.setState(function (_ref) {
|
15796 | var smallScreenPopoverVisible = _ref.smallScreenPopoverVisible;
|
15797 | return {
|
15798 | smallScreenPopoverVisible: !smallScreenPopoverVisible
|
15799 | };
|
15800 | });
|
15801 | };
|
15802 |
|
15803 | _this.toggleLargeScreenPopover = function () {
|
15804 | _this.setState(function (_ref2) {
|
15805 | var largeScreenPopoverVisible = _ref2.largeScreenPopoverVisible;
|
15806 | return {
|
15807 | largeScreenPopoverVisible: !largeScreenPopoverVisible
|
15808 | };
|
15809 | });
|
15810 | };
|
15811 |
|
15812 | _this.handleMeasurement = function (width) {
|
15813 | var measuring = _this.state.measuring;
|
15814 |
|
15815 | if (measuring) {
|
15816 | _this.promotedActionsWidths.push(width);
|
15817 | }
|
15818 | };
|
15819 |
|
15820 | _this.findLargeScreenGroupNode = function () {
|
15821 | return _this.largeScreenGroupNode.current;
|
15822 | };
|
15823 |
|
15824 | _this.findCheckableWrapperNode = function () {
|
15825 | return _this.checkableWrapperNode.current;
|
15826 | };
|
15827 |
|
15828 | _this.findSmallScreenGroupNode = function () {
|
15829 | return _this.smallScreenGroupNode.current;
|
15830 | };
|
15831 |
|
15832 | return _this;
|
15833 | }
|
15834 |
|
15835 | _createClass(BulkActions, [{
|
15836 | key: "componentDidMount",
|
15837 | value: function componentDidMount() {
|
15838 | var _this$props = this.props,
|
15839 | actions = _this$props.actions,
|
15840 | promotedActions = _this$props.promotedActions;
|
15841 |
|
15842 | if (promotedActions && !actions && this.moreActionsNode) {
|
15843 | this.addedMoreActionsWidthForMeasuring = this.moreActionsNode.getBoundingClientRect().width;
|
15844 | }
|
15845 |
|
15846 | this.bulkActionsWidth = this.largeScreenButtonsNode ? this.largeScreenButtonsNode.getBoundingClientRect().width - this.addedMoreActionsWidthForMeasuring : 0;
|
15847 |
|
15848 | if (this.containerNode) {
|
15849 | this.setState({
|
15850 | containerWidth: this.containerNode.getBoundingClientRect().width,
|
15851 | measuring: false
|
15852 | });
|
15853 | }
|
15854 | }
|
15855 | }, {
|
15856 | key: "render",
|
15857 | value: function render() {
|
15858 | var _this2 = this;
|
15859 |
|
15860 | var _this$props2 = this.props,
|
15861 | selectMode = _this$props2.selectMode,
|
15862 | accessibilityLabel = _this$props2.accessibilityLabel,
|
15863 | _this$props2$label = _this$props2.label,
|
15864 | label = _this$props2$label === void 0 ? '' : _this$props2$label,
|
15865 | onToggleAll = _this$props2.onToggleAll,
|
15866 | selected = _this$props2.selected,
|
15867 | smallScreen = _this$props2.smallScreen,
|
15868 | disabled = _this$props2.disabled,
|
15869 | promotedActions = _this$props2.promotedActions,
|
15870 | _this$props2$paginate = _this$props2.paginatedSelectAllText,
|
15871 | paginatedSelectAllText = _this$props2$paginate === void 0 ? null : _this$props2$paginate,
|
15872 | paginatedSelectAllAction = _this$props2.paginatedSelectAllAction,
|
15873 | intl = _this$props2.polaris.intl;
|
15874 |
|
15875 | if (promotedActions && promotedActions.length > MAX_PROMOTED_ACTIONS) {
|
15876 |
|
15877 | console.warn(intl.translate('Polaris.ResourceList.BulkActions.warningMessage', {
|
15878 | maxPromotedActions: MAX_PROMOTED_ACTIONS
|
15879 | }));
|
15880 | }
|
15881 |
|
15882 | var _this$state2 = this.state,
|
15883 | smallScreenPopoverVisible = _this$state2.smallScreenPopoverVisible,
|
15884 | largeScreenPopoverVisible = _this$state2.largeScreenPopoverVisible,
|
15885 | measuring = _this$state2.measuring;
|
15886 | var paginatedSelectAllActionMarkup = paginatedSelectAllAction ? React__default.createElement(Button, {
|
15887 | onClick: paginatedSelectAllAction.onAction,
|
15888 | plain: true,
|
15889 | disabled: disabled
|
15890 | }, paginatedSelectAllAction.content) : null;
|
15891 | var paginatedSelectAllTextMarkup = paginatedSelectAllText && paginatedSelectAllAction ? React__default.createElement("span", {
|
15892 | "aria-live": "polite"
|
15893 | }, paginatedSelectAllText) : paginatedSelectAllText;
|
15894 | var paginatedSelectAllMarkup = paginatedSelectAllActionMarkup || paginatedSelectAllTextMarkup ? React__default.createElement("div", {
|
15895 | className: styles$1q.PaginatedSelectAll
|
15896 | }, paginatedSelectAllTextMarkup, " ", paginatedSelectAllActionMarkup) : null;
|
15897 | var cancelButton = React__default.createElement(Button, {
|
15898 | onClick: this.setSelectMode.bind(this, false),
|
15899 | disabled: disabled
|
15900 | }, intl.translate('Polaris.Common.cancel'));
|
15901 | var numberOfPromotedActionsToRender = this.numberOfPromotedActionsToRender;
|
15902 | var allActionsPopover = this.hasActions ? React__default.createElement("div", {
|
15903 | className: styles$1q.Popover,
|
15904 | ref: this.setMoreActionsNode
|
15905 | }, React__default.createElement(Popover, {
|
15906 | active: smallScreenPopoverVisible,
|
15907 | activator: React__default.createElement(BulkActionButton, {
|
15908 | disclosure: true,
|
15909 | onAction: this.toggleSmallScreenPopover,
|
15910 | content: intl.translate('Polaris.ResourceList.BulkActions.actionsActivatorLabel'),
|
15911 | disabled: disabled
|
15912 | }),
|
15913 | onClose: this.toggleSmallScreenPopover
|
15914 | }, React__default.createElement(ActionList, {
|
15915 | items: promotedActions,
|
15916 | sections: this.actionSections,
|
15917 | onActionAnyItem: this.toggleSmallScreenPopover
|
15918 | }))) : null;
|
15919 | var promotedActionsMarkup = promotedActions && numberOfPromotedActionsToRender > 0 ? _toConsumableArray(promotedActions).slice(0, numberOfPromotedActionsToRender).map(function (action, index) {
|
15920 | return React__default.createElement(BulkActionButton, Object.assign({
|
15921 | disabled: disabled
|
15922 | }, action, {
|
15923 | key: index,
|
15924 | handleMeasurement: _this2.handleMeasurement
|
15925 | }));
|
15926 | }) : null;
|
15927 | var rolledInPromotedActions = promotedActions && numberOfPromotedActionsToRender < promotedActions.length ? _toConsumableArray(promotedActions).slice(numberOfPromotedActionsToRender) : [];
|
15928 | var activatorLabel = !promotedActions || promotedActions && numberOfPromotedActionsToRender === 0 && !measuring ? intl.translate('Polaris.ResourceList.BulkActions.actionsActivatorLabel') : intl.translate('Polaris.ResourceList.BulkActions.moreActionsActivatorLabel');
|
15929 | var combinedActions = [];
|
15930 |
|
15931 | if (this.actionSections && rolledInPromotedActions.length > 0) {
|
15932 | combinedActions = [{
|
15933 | items: rolledInPromotedActions
|
15934 | }].concat(_toConsumableArray(this.actionSections));
|
15935 | } else if (this.actionSections) {
|
15936 | combinedActions = this.actionSections;
|
15937 | } else if (rolledInPromotedActions.length > 0) {
|
15938 | combinedActions = [{
|
15939 | items: rolledInPromotedActions
|
15940 | }];
|
15941 | }
|
15942 |
|
15943 | var actionsPopover = this.actionSections || rolledInPromotedActions.length > 0 || measuring ? React__default.createElement("div", {
|
15944 | className: styles$1q.Popover,
|
15945 | ref: this.setMoreActionsNode
|
15946 | }, React__default.createElement(Popover, {
|
15947 | active: largeScreenPopoverVisible,
|
15948 | activator: React__default.createElement(BulkActionButton, {
|
15949 | disclosure: true,
|
15950 | onAction: this.toggleLargeScreenPopover,
|
15951 | content: activatorLabel,
|
15952 | disabled: disabled
|
15953 | }),
|
15954 | onClose: this.toggleLargeScreenPopover
|
15955 | }, React__default.createElement(ActionList, {
|
15956 | sections: combinedActions,
|
15957 | onActionAnyItem: this.toggleLargeScreenPopover
|
15958 | }))) : null;
|
15959 | var checkableButtonProps = {
|
15960 | accessibilityLabel,
|
15961 | label,
|
15962 | selected,
|
15963 | selectMode,
|
15964 | onToggleAll,
|
15965 | measuring,
|
15966 | disabled
|
15967 | };
|
15968 | var smallScreenGroup = smallScreen ? React__default.createElement(Transition, {
|
15969 | timeout: 0,
|
15970 | in: selectMode,
|
15971 | key: "smallGroup",
|
15972 | findDOMNode: this.findSmallScreenGroupNode
|
15973 | }, function (status) {
|
15974 | var smallScreenGroupClassName = classNames(styles$1q.Group, styles$1q['Group-smallScreen'], styles$1q["Group-".concat(status)]);
|
15975 | return React__default.createElement("div", {
|
15976 | className: smallScreenGroupClassName,
|
15977 | ref: _this2.smallScreenGroupNode
|
15978 | }, React__default.createElement("div", {
|
15979 | className: styles$1q.ButtonGroupWrapper
|
15980 | }, React__default.createElement(ButtonGroup, {
|
15981 | segmented: true
|
15982 | }, React__default.createElement(CSSTransition, {
|
15983 | findDOMNode: _this2.findCheckableWrapperNode,
|
15984 | in: selectMode,
|
15985 | timeout: durationBase,
|
15986 | classNames: slideClasses,
|
15987 | appear: !selectMode
|
15988 | }, React__default.createElement("div", {
|
15989 | className: styles$1q.CheckableContainer,
|
15990 | ref: _this2.checkableWrapperNode
|
15991 | }, React__default.createElement(CheckableButton, Object.assign({}, checkableButtonProps, {
|
15992 | smallScreen: true
|
15993 | })))), allActionsPopover, cancelButton)), paginatedSelectAllMarkup);
|
15994 | }) : null;
|
15995 | var largeGroupContent = promotedActionsMarkup || actionsPopover ? React__default.createElement(ButtonGroup, {
|
15996 | segmented: true
|
15997 | }, React__default.createElement(CheckableButton, checkableButtonProps), promotedActionsMarkup, actionsPopover) : React__default.createElement(CheckableButton, checkableButtonProps);
|
15998 | var largeScreenGroup = smallScreen ? null : React__default.createElement(Transition, {
|
15999 | timeout: 0,
|
16000 | in: selectMode,
|
16001 | key: "largeGroup",
|
16002 | findDOMNode: this.findLargeScreenGroupNode
|
16003 | }, function (status) {
|
16004 | var largeScreenGroupClassName = classNames(styles$1q.Group, styles$1q['Group-largeScreen'], !measuring && styles$1q["Group-".concat(status)], measuring && styles$1q['Group-measuring']);
|
16005 | return React__default.createElement("div", {
|
16006 | className: largeScreenGroupClassName,
|
16007 | ref: _this2.largeScreenGroupNode
|
16008 | }, React__default.createElement(EventListener, {
|
16009 | event: "resize",
|
16010 | handler: _this2.handleResize
|
16011 | }), React__default.createElement("div", {
|
16012 | className: styles$1q.ButtonGroupWrapper,
|
16013 | ref: _this2.setLargeScreenButtonsNode
|
16014 | }, largeGroupContent), paginatedSelectAllMarkup);
|
16015 | });
|
16016 | return React__default.createElement("div", {
|
16017 | ref: this.setContainerNode
|
16018 | }, smallScreenGroup, largeScreenGroup);
|
16019 | }
|
16020 | }, {
|
16021 | key: "numberOfPromotedActionsToRender",
|
16022 | get: function get() {
|
16023 | var promotedActions = this.props.promotedActions;
|
16024 | var _this$state3 = this.state,
|
16025 | containerWidth = _this$state3.containerWidth,
|
16026 | measuring = _this$state3.measuring;
|
16027 |
|
16028 | if (!promotedActions) {
|
16029 | return 0;
|
16030 | }
|
16031 |
|
16032 | if (containerWidth >= this.bulkActionsWidth || measuring) {
|
16033 | return promotedActions.length;
|
16034 | }
|
16035 |
|
16036 | var sufficientSpace = false;
|
16037 | var counter = promotedActions.length - 1;
|
16038 | var totalWidth = 0;
|
16039 |
|
16040 | while (!sufficientSpace && counter >= 0) {
|
16041 | totalWidth += this.promotedActionsWidths[counter];
|
16042 | var widthWithRemovedAction = this.bulkActionsWidth - totalWidth + this.addedMoreActionsWidthForMeasuring;
|
16043 |
|
16044 | if (containerWidth >= widthWithRemovedAction) {
|
16045 | sufficientSpace = true;
|
16046 | } else {
|
16047 | counter--;
|
16048 | }
|
16049 | }
|
16050 |
|
16051 | return counter;
|
16052 | }
|
16053 | }, {
|
16054 | key: "hasActions",
|
16055 | get: function get() {
|
16056 | var _this$props3 = this.props,
|
16057 | promotedActions = _this$props3.promotedActions,
|
16058 | actions = _this$props3.actions;
|
16059 | return Boolean(promotedActions && promotedActions.length > 0 || actions && actions.length > 0);
|
16060 | }
|
16061 | }, {
|
16062 | key: "actionSections",
|
16063 | get: function get() {
|
16064 | var actions = this.props.actions;
|
16065 |
|
16066 | if (!actions || actions.length === 0) {
|
16067 | return;
|
16068 | }
|
16069 |
|
16070 | if (instanceOfBulkActionListSectionArray(actions)) {
|
16071 | return actions;
|
16072 | }
|
16073 |
|
16074 | if (instanceOfBulkActionArray(actions)) {
|
16075 | return [{
|
16076 | items: actions
|
16077 | }];
|
16078 | }
|
16079 | }
|
16080 | }]);
|
16081 |
|
16082 | return BulkActions;
|
16083 | }(React__default.PureComponent);
|
16084 |
|
16085 | function instanceOfBulkActionListSectionArray(actions) {
|
16086 | var validList = actions.filter(function (action) {
|
16087 | return action.items;
|
16088 | });
|
16089 | return actions.length === validList.length;
|
16090 | }
|
16091 |
|
16092 | function instanceOfBulkActionArray(actions) {
|
16093 | var validList = actions.filter(function (action) {
|
16094 | return !action.items;
|
16095 | });
|
16096 | return actions.length === validList.length;
|
16097 | }
|
16098 |
|
16099 |
|
16100 |
|
16101 | var BulkActions$1 = withAppProvider()(BulkActions);
|
16102 |
|
16103 | var styles$1r = {
|
16104 | "DateTextField": "Polaris-FilterControl-DateSelector__DateTextField",
|
16105 | "DatePicker": "Polaris-FilterControl-DateSelector__DatePicker"
|
16106 | };
|
16107 |
|
16108 | var VALID_DATE_REGEX = /^\d{4}-\d{1,2}-\d{1,2}$/;
|
16109 | var DateFilterOption;
|
16110 |
|
16111 | (function (DateFilterOption) {
|
16112 | DateFilterOption["PastWeek"] = "past_week";
|
16113 | DateFilterOption["PastMonth"] = "past_month";
|
16114 | DateFilterOption["PastQuarter"] = "past_quarter";
|
16115 | DateFilterOption["PastYear"] = "past_year";
|
16116 | DateFilterOption["ComingWeek"] = "coming_week";
|
16117 | DateFilterOption["ComingMonth"] = "coming_month";
|
16118 | DateFilterOption["ComingQuarter"] = "coming_quarter";
|
16119 | DateFilterOption["ComingYear"] = "coming_year";
|
16120 | DateFilterOption["OnOrBefore"] = "on_or_before";
|
16121 | DateFilterOption["OnOrAfter"] = "on_or_after";
|
16122 | })(DateFilterOption || (DateFilterOption = {}));
|
16123 |
|
16124 | var DateSelector = memo(function DateSelector(_ref) {
|
16125 | var filterValue = _ref.filterValue,
|
16126 | filterKey = _ref.filterKey,
|
16127 | filterMinKey = _ref.filterMinKey,
|
16128 | filterMaxKey = _ref.filterMaxKey,
|
16129 | dateOptionType = _ref.dateOptionType,
|
16130 | onFilterValueChange = _ref.onFilterValueChange,
|
16131 | onFilterKeyChange = _ref.onFilterKeyChange;
|
16132 | var now = new Date();
|
16133 | var i18n = useI18n();
|
16134 | var initialConsumerFilterKey = useRef(filterKey);
|
16135 |
|
16136 | var _useState = useState(now.getMonth()),
|
16137 | _useState2 = _slicedToArray(_useState, 2),
|
16138 | datePickerMonth = _useState2[0],
|
16139 | setDatePickerMonth = _useState2[1];
|
16140 |
|
16141 | var _useState3 = useState(now.getFullYear()),
|
16142 | _useState4 = _slicedToArray(_useState3, 2),
|
16143 | datePickerYear = _useState4[0],
|
16144 | setDatePickerYear = _useState4[1];
|
16145 |
|
16146 | var _useState5 = useState(),
|
16147 | _useState6 = _slicedToArray(_useState5, 2),
|
16148 | selectedDate = _useState6[0],
|
16149 | setSelectedDate = _useState6[1];
|
16150 |
|
16151 | var _useState7 = useState(),
|
16152 | _useState8 = _slicedToArray(_useState7, 2),
|
16153 | userInputDate = _useState8[0],
|
16154 | setUserInputDate = _useState8[1];
|
16155 |
|
16156 | var _useState9 = useState(),
|
16157 | _useState10 = _slicedToArray(_useState9, 2),
|
16158 | userInputDateError = _useState10[0],
|
16159 | setUserInputDateError = _useState10[1];
|
16160 |
|
16161 | var dateTextFieldValue = getDateTextFieldValue();
|
16162 | var handleDateFieldChange = useCallback(function (value) {
|
16163 | if (value.length === 0) {
|
16164 | setSelectedDate(undefined);
|
16165 | onFilterValueChange(undefined);
|
16166 | }
|
16167 |
|
16168 | if (userInputDateError && isValidDate(value)) {
|
16169 | setUserInputDateError(undefined);
|
16170 | }
|
16171 |
|
16172 | setUserInputDate(value);
|
16173 | }, [onFilterValueChange, userInputDateError]);
|
16174 | var handleDateChanged = useCallback(function (date) {
|
16175 | if (!date) {
|
16176 | return;
|
16177 | }
|
16178 |
|
16179 | onFilterValueChange(stripTimeFromISOString(formatDateForLocalTimezone(date)));
|
16180 | }, [onFilterValueChange]);
|
16181 | var handleDateBlur = useCallback(function () {
|
16182 | if (!dateTextFieldValue || !isValidDate(dateTextFieldValue)) {
|
16183 | setSelectedDate(undefined);
|
16184 | setUserInputDateError(i18n.translate('Polaris.ResourceList.DateSelector.dateValueError'));
|
16185 | onFilterValueChange(undefined);
|
16186 | return;
|
16187 | }
|
16188 |
|
16189 | if (!userInputDate) {
|
16190 | return;
|
16191 | }
|
16192 |
|
16193 | var formattedDateForTimezone = new Date(formatDateForLocalTimezone(new Date(userInputDate)));
|
16194 | setSelectedDate(formattedDateForTimezone);
|
16195 | setDatePickerMonth(formattedDateForTimezone.getMonth());
|
16196 | setDatePickerYear(formattedDateForTimezone.getFullYear());
|
16197 | setUserInputDate(undefined);
|
16198 | setUserInputDateError(undefined);
|
16199 | handleDateChanged(formattedDateForTimezone);
|
16200 | }, [dateTextFieldValue, handleDateChanged, i18n, onFilterValueChange, userInputDate]);
|
16201 | var handleDateFilterOptionsChange = useCallback(function (newOption) {
|
16202 | if (!initialConsumerFilterKey.current) {
|
16203 | return;
|
16204 | }
|
16205 |
|
16206 | if (newOption === DateFilterOption.OnOrBefore) {
|
16207 | onFilterKeyChange(filterMaxKey);
|
16208 | onFilterValueChange(selectedDate ? stripTimeFromISOString(formatDateForLocalTimezone(selectedDate)) : undefined);
|
16209 | return;
|
16210 | }
|
16211 |
|
16212 | if (newOption === DateFilterOption.OnOrAfter) {
|
16213 | onFilterKeyChange(filterMinKey);
|
16214 | onFilterValueChange(selectedDate ? stripTimeFromISOString(formatDateForLocalTimezone(selectedDate)) : undefined);
|
16215 | return;
|
16216 | }
|
16217 |
|
16218 | onFilterKeyChange(initialConsumerFilterKey.current);
|
16219 | onFilterValueChange(newOption);
|
16220 | }, [filterMaxKey, filterMinKey, initialConsumerFilterKey, onFilterKeyChange, onFilterValueChange, selectedDate]);
|
16221 | var handleDatePickerChange = useCallback(function (_ref2) {
|
16222 | var nextDate = _ref2.end;
|
16223 | var date = new Date(nextDate);
|
16224 | setSelectedDate(date);
|
16225 | setUserInputDate(undefined);
|
16226 | setUserInputDateError(undefined);
|
16227 | handleDateChanged(date);
|
16228 | }, [handleDateChanged]);
|
16229 | var handleDatePickerMonthChange = useCallback(function (month, year) {
|
16230 | setDatePickerMonth(month);
|
16231 | setDatePickerYear(year);
|
16232 | }, []);
|
16233 | var dateFilterOption = getDateFilterOption(filterValue, filterKey, filterMinKey, filterMaxKey);
|
16234 | var showDatePredicate = dateFilterOption === DateFilterOption.OnOrBefore || dateFilterOption === DateFilterOption.OnOrAfter;
|
16235 | var datePredicateMarkup = showDatePredicate && React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
|
16236 | className: styles$1r.DateTextField
|
16237 | }, React__default.createElement(TextField, {
|
16238 | label: i18n.translate('Polaris.ResourceList.DateSelector.dateValueLabel'),
|
16239 | placeholder: i18n.translate('Polaris.ResourceList.DateSelector.dateValuePlaceholder'),
|
16240 | value: dateTextFieldValue,
|
16241 | error: userInputDateError,
|
16242 | prefix: React__default.createElement(Icon, {
|
16243 | source: CalendarMinor,
|
16244 | color: "skyDark"
|
16245 | }),
|
16246 | autoComplete: false,
|
16247 | onChange: handleDateFieldChange,
|
16248 | onBlur: handleDateBlur
|
16249 | })), React__default.createElement("div", {
|
16250 | className: styles$1r.DatePicker
|
16251 | }, React__default.createElement(DatePicker, {
|
16252 | selected: selectedDate,
|
16253 | month: datePickerMonth,
|
16254 | year: datePickerYear,
|
16255 | onChange: handleDatePickerChange,
|
16256 | onMonthChange: handleDatePickerMonthChange
|
16257 | })));
|
16258 | var dateOptionTypes = {
|
16259 | past: [].concat(_toConsumableArray(getDatePastOptions()), _toConsumableArray(getDateComparatorOptions())),
|
16260 | future: [].concat(_toConsumableArray(getDateFutureOptions()), _toConsumableArray(getDateComparatorOptions())),
|
16261 | full: [].concat(_toConsumableArray(getDatePastOptions()), _toConsumableArray(getDateFutureOptions()), _toConsumableArray(getDateComparatorOptions()))
|
16262 | };
|
16263 | return React__default.createElement(React__default.Fragment, null, React__default.createElement(Select, {
|
16264 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.dateFilterLabel'),
|
16265 | labelHidden: true,
|
16266 | options: dateOptionType ? dateOptionTypes[dateOptionType] : dateOptionTypes.full,
|
16267 | placeholder: i18n.translate('Polaris.ResourceList.FilterValueSelector.selectFilterValuePlaceholder'),
|
16268 | value: dateFilterOption,
|
16269 | onChange: handleDateFilterOptionsChange
|
16270 | }), datePredicateMarkup);
|
16271 |
|
16272 | function getDateComparatorOptions() {
|
16273 | return [{
|
16274 | value: DateFilterOption.OnOrBefore,
|
16275 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.OnOrBefore')
|
16276 | }, {
|
16277 | value: DateFilterOption.OnOrAfter,
|
16278 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.OnOrAfter')
|
16279 | }];
|
16280 | }
|
16281 |
|
16282 | function getDatePastOptions() {
|
16283 | return [{
|
16284 | value: DateFilterOption.PastWeek,
|
16285 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.PastWeek')
|
16286 | }, {
|
16287 | value: DateFilterOption.PastMonth,
|
16288 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.PastMonth')
|
16289 | }, {
|
16290 | value: DateFilterOption.PastQuarter,
|
16291 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.PastQuarter')
|
16292 | }, {
|
16293 | value: DateFilterOption.PastYear,
|
16294 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.PastYear')
|
16295 | }];
|
16296 | }
|
16297 |
|
16298 | function getDateFutureOptions() {
|
16299 | return [{
|
16300 | value: DateFilterOption.ComingWeek,
|
16301 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.ComingWeek')
|
16302 | }, {
|
16303 | value: DateFilterOption.ComingMonth,
|
16304 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.ComingMonth')
|
16305 | }, {
|
16306 | value: DateFilterOption.ComingQuarter,
|
16307 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.ComingQuarter')
|
16308 | }, {
|
16309 | value: DateFilterOption.ComingYear,
|
16310 | label: i18n.translate('Polaris.ResourceList.DateSelector.SelectOptions.ComingYear')
|
16311 | }];
|
16312 | }
|
16313 |
|
16314 | function getDateTextFieldValue() {
|
16315 | if (!userInputDate && !selectedDate) {
|
16316 | return undefined;
|
16317 | }
|
16318 |
|
16319 | if (userInputDate !== undefined) {
|
16320 | return userInputDate;
|
16321 | }
|
16322 |
|
16323 | if (selectedDate) {
|
16324 | return stripTimeFromISOString(formatDateForLocalTimezone(selectedDate));
|
16325 | }
|
16326 | }
|
16327 | });
|
16328 |
|
16329 | function isValidDate(date) {
|
16330 | if (!date) {
|
16331 | return false;
|
16332 | }
|
16333 |
|
16334 | return VALID_DATE_REGEX.test(date) && !isNaN(new Date(date).getTime());
|
16335 | }
|
16336 |
|
16337 | function getDateFilterOption(filterValue, filterKey, filterMinKey, filterMaxKey) {
|
16338 | if (filterKey === filterMaxKey) {
|
16339 | return DateFilterOption.OnOrBefore;
|
16340 | }
|
16341 |
|
16342 | if (filterKey === filterMinKey) {
|
16343 | return DateFilterOption.OnOrAfter;
|
16344 | }
|
16345 |
|
16346 | return filterValue;
|
16347 | }
|
16348 |
|
16349 | function stripTimeFromISOString(ISOString) {
|
16350 | return ISOString.slice(0, 10);
|
16351 | }
|
16352 |
|
16353 | function formatDateForLocalTimezone(date) {
|
16354 | var timezoneOffset = date.getTimezoneOffset();
|
16355 | var timezoneOffsetMs = timezoneOffset * 60 * 1000;
|
16356 | var isFringeTimezone = timezoneOffset === -720 || timezoneOffset === 720;
|
16357 | var formattedDate = new Date();
|
16358 |
|
16359 | if (isFringeTimezone && date.getHours() !== 0) {
|
16360 | return date.toISOString();
|
16361 | }
|
16362 |
|
16363 | var newTime = timezoneOffset > -1 ? date.getTime() + timezoneOffsetMs : date.getTime() - timezoneOffsetMs;
|
16364 | formattedDate.setTime(newTime);
|
16365 | return formattedDate.toISOString();
|
16366 | }
|
16367 |
|
16368 | var FilterType;
|
16369 |
|
16370 | (function (FilterType) {
|
16371 | FilterType[FilterType["Select"] = 0] = "Select";
|
16372 | FilterType[FilterType["TextField"] = 1] = "TextField";
|
16373 | FilterType[FilterType["DateSelector"] = 2] = "DateSelector";
|
16374 | })(FilterType || (FilterType = {}));
|
16375 |
|
16376 |
|
16377 |
|
16378 |
|
16379 |
|
16380 |
|
16381 |
|
16382 | function useIsMountedRef() {
|
16383 | var isMounted = useRef(false);
|
16384 | useEffect(function () {
|
16385 | isMounted.current = true;
|
16386 | return function () {
|
16387 | isMounted.current = false;
|
16388 | };
|
16389 | }, []);
|
16390 | return isMounted;
|
16391 | }
|
16392 |
|
16393 | function FilterValueSelector(_ref) {
|
16394 | var filter = _ref.filter,
|
16395 | filterKey = _ref.filterKey,
|
16396 | value = _ref.value,
|
16397 | onChange = _ref.onChange,
|
16398 | onFilterKeyChange = _ref.onFilterKeyChange;
|
16399 |
|
16400 | var _useI18n = useI18n(),
|
16401 | translate = _useI18n.translate;
|
16402 |
|
16403 | var isMounted = useIsMountedRef();
|
16404 | var operatorText = filter.operatorText,
|
16405 | type = filter.type,
|
16406 | label = filter.label;
|
16407 | var showOperatorOptions = type !== FilterType.DateSelector && operatorText && typeof operatorText !== 'string';
|
16408 | var handleOperatorOptionChange = useCallback(function (operatorKey) {
|
16409 | onFilterKeyChange(operatorKey);
|
16410 |
|
16411 | if (!value) {
|
16412 | return;
|
16413 | }
|
16414 |
|
16415 | onChange(value);
|
16416 | }, [onChange, onFilterKeyChange, value]);
|
16417 |
|
16418 | if (showOperatorOptions && operatorText.length !== 0 && !isMounted.current) {
|
16419 | handleOperatorOptionChange(operatorText[0].key);
|
16420 | }
|
16421 |
|
16422 | var operatorOptionsMarkup = showOperatorOptions ? React__default.createElement(Select, {
|
16423 | label: label,
|
16424 | labelHidden: true,
|
16425 | options: buildOperatorOptions(operatorText),
|
16426 | value: filterKey,
|
16427 | onChange: handleOperatorOptionChange
|
16428 | }) : null;
|
16429 | var selectedFilterLabel = typeof operatorText === 'string' ? operatorText : '';
|
16430 |
|
16431 | switch (filter.type) {
|
16432 | case FilterType.Select:
|
16433 | return React__default.createElement(Stack, {
|
16434 | vertical: true
|
16435 | }, operatorOptionsMarkup, React__default.createElement(Select, {
|
16436 | label: selectedFilterLabel,
|
16437 | options: filter.options,
|
16438 | placeholder: translate('Polaris.ResourceList.FilterValueSelector.selectFilterValuePlaceholder'),
|
16439 | value: value,
|
16440 | onChange: onChange
|
16441 | }));
|
16442 |
|
16443 | case FilterType.TextField:
|
16444 | return React__default.createElement(Stack, {
|
16445 | vertical: true
|
16446 | }, operatorOptionsMarkup, React__default.createElement(TextField, {
|
16447 | label: selectedFilterLabel,
|
16448 | value: value,
|
16449 | type: filter.textFieldType,
|
16450 | onChange: onChange
|
16451 | }));
|
16452 |
|
16453 | case FilterType.DateSelector:
|
16454 | return React__default.createElement(DateSelector, {
|
16455 | dateOptionType: filter.dateOptionType,
|
16456 | filterValue: value,
|
16457 | filterKey: filterKey,
|
16458 | filterMinKey: filter.minKey,
|
16459 | filterMaxKey: filter.maxKey,
|
16460 | onFilterValueChange: onChange,
|
16461 | onFilterKeyChange: onFilterKeyChange
|
16462 | });
|
16463 |
|
16464 | default:
|
16465 | return null;
|
16466 | }
|
16467 | }
|
16468 |
|
16469 | function buildOperatorOptions(operatorText) {
|
16470 | if (!operatorText || typeof operatorText === 'string') {
|
16471 | return [];
|
16472 | }
|
16473 |
|
16474 | return operatorText.map(function (_ref2) {
|
16475 | var key = _ref2.key,
|
16476 | optionLabel = _ref2.optionLabel;
|
16477 | return {
|
16478 | value: key,
|
16479 | label: optionLabel
|
16480 | };
|
16481 | });
|
16482 | }
|
16483 |
|
16484 | function FilterCreator(_ref) {
|
16485 | var filters = _ref.filters,
|
16486 | resourceName = _ref.resourceName,
|
16487 | disabled = _ref.disabled,
|
16488 | onAddFilter = _ref.onAddFilter;
|
16489 |
|
16490 | var _useForcibleToggle = useForcibleToggle(false),
|
16491 | _useForcibleToggle2 = _slicedToArray(_useForcibleToggle, 2),
|
16492 | popoverActive = _useForcibleToggle2[0],
|
16493 | _useForcibleToggle2$ = _useForcibleToggle2[1],
|
16494 | togglePopoverActive = _useForcibleToggle2$.toggle,
|
16495 | setPopoverActiveFalse = _useForcibleToggle2$.forceFalse;
|
16496 |
|
16497 | var _useState = useState(),
|
16498 | _useState2 = _slicedToArray(_useState, 2),
|
16499 | selectedFilter = _useState2[0],
|
16500 | setSelectedFilter = _useState2[1];
|
16501 |
|
16502 | var _useState3 = useState(),
|
16503 | _useState4 = _slicedToArray(_useState3, 2),
|
16504 | selectedFilterKey = _useState4[0],
|
16505 | setSelectedFilterKey = _useState4[1];
|
16506 |
|
16507 | var _useState5 = useState(),
|
16508 | _useState6 = _slicedToArray(_useState5, 2),
|
16509 | selectedFilterValue = _useState6[0],
|
16510 | setSelectedFilterValue = _useState6[1];
|
16511 |
|
16512 | var i18n = useI18n();
|
16513 | var node = useRef(null);
|
16514 | var canAddFilter = Boolean(selectedFilter && selectedFilterKey && selectedFilterValue);
|
16515 | var handleButtonFocus = useCallback(function () {
|
16516 | var event = arguments.length <= 0 ? undefined : arguments[0];
|
16517 |
|
16518 | if (!node.current && event) {
|
16519 |
|
16520 | node.current = event.target;
|
16521 | }
|
16522 | }, []);
|
16523 | var handleFilterKeyChange = useCallback(function (filterKey) {
|
16524 | var foundFilter = filters.find(function (filter) {
|
16525 | var minKey = filter.minKey,
|
16526 | maxKey = filter.maxKey,
|
16527 | operatorText = filter.operatorText;
|
16528 |
|
16529 | if (minKey || maxKey) {
|
16530 | return filter.key === filterKey || minKey === filterKey || maxKey === filterKey;
|
16531 | }
|
16532 |
|
16533 | if (operatorText && typeof operatorText !== 'string') {
|
16534 | return filter.key === filterKey || operatorText.filter(function (_ref2) {
|
16535 | var key = _ref2.key;
|
16536 | return key === filterKey;
|
16537 | }).length === 1;
|
16538 | }
|
16539 |
|
16540 | return filter.key === filterKey;
|
16541 | });
|
16542 |
|
16543 | if (!foundFilter) {
|
16544 | return;
|
16545 | }
|
16546 |
|
16547 | setSelectedFilter(foundFilter);
|
16548 | setSelectedFilterKey(filterKey);
|
16549 | setSelectedFilterValue(undefined);
|
16550 | }, [filters]);
|
16551 | var handleFilterValueChange = useCallback(function (value) {
|
16552 | setSelectedFilterValue(value);
|
16553 | }, []);
|
16554 | var handleAddFilter = useCallback(function () {
|
16555 | if (!onAddFilter || !canAddFilter || !selectedFilterKey) {
|
16556 | return;
|
16557 | }
|
16558 |
|
16559 | onAddFilter({
|
16560 | key: selectedFilterKey,
|
16561 | value: selectedFilterValue || ''
|
16562 | });
|
16563 | setPopoverActiveFalse();
|
16564 | setSelectedFilter(undefined);
|
16565 | setSelectedFilterValue(undefined);
|
16566 |
|
16567 | if (node.current != null) {
|
16568 | node.current.focus();
|
16569 | }
|
16570 | }, [canAddFilter, onAddFilter, selectedFilterKey, selectedFilterValue, setPopoverActiveFalse]);
|
16571 | var activator = React__default.createElement(Button, {
|
16572 | onClick: togglePopoverActive,
|
16573 | disclosure: true,
|
16574 | disabled: disabled,
|
16575 | onFocus: handleButtonFocus
|
16576 | }, i18n.translate('Polaris.ResourceList.FilterCreator.filterButtonLabel'));
|
16577 | var filterOptions = filters.map(function (_ref3) {
|
16578 | var key = _ref3.key,
|
16579 | label = _ref3.label;
|
16580 | return {
|
16581 | value: key,
|
16582 | label
|
16583 | };
|
16584 | });
|
16585 | var filterValueSelectionMarkup = selectedFilter ? React__default.createElement(FilterValueSelector, {
|
16586 | filter: selectedFilter,
|
16587 | filterKey: selectedFilterKey,
|
16588 | value: selectedFilterValue,
|
16589 | onFilterKeyChange: handleFilterKeyChange,
|
16590 | onChange: handleFilterValueChange
|
16591 | }) : null;
|
16592 | var addFilterButtonMarkup = selectedFilter ? React__default.createElement(Button, {
|
16593 | onClick: handleAddFilter,
|
16594 | disabled: !canAddFilter
|
16595 | }, i18n.translate('Polaris.ResourceList.FilterCreator.addFilterButtonLabel')) : null;
|
16596 | return React__default.createElement(Popover, {
|
16597 | active: popoverActive,
|
16598 | activator: activator,
|
16599 | onClose: togglePopoverActive,
|
16600 | sectioned: true,
|
16601 | fullHeight: true
|
16602 | }, React__default.createElement(Form, {
|
16603 | onSubmit: handleAddFilter
|
16604 | }, React__default.createElement(FormLayout, null, React__default.createElement(Select, {
|
16605 | label: i18n.translate('Polaris.ResourceList.FilterCreator.showAllWhere', {
|
16606 | resourceNamePlural: resourceName.plural.toLocaleLowerCase()
|
16607 | }),
|
16608 | placeholder: i18n.translate('Polaris.ResourceList.FilterCreator.selectFilterKeyPlaceholder'),
|
16609 | options: filterOptions,
|
16610 | onChange: handleFilterKeyChange,
|
16611 | value: selectedFilter && selectedFilter.key
|
16612 | }), filterValueSelectionMarkup, addFilterButtonMarkup)));
|
16613 | }
|
16614 |
|
16615 | var styles$1s = {
|
16616 | "AppliedFilters": "Polaris-ResourceList-FilterControl__AppliedFilters",
|
16617 | "AppliedFilter": "Polaris-ResourceList-FilterControl__AppliedFilter"
|
16618 | };
|
16619 |
|
16620 |
|
16621 |
|
16622 | function FilterControl(_ref) {
|
16623 | var searchValue = _ref.searchValue,
|
16624 | _ref$appliedFilters = _ref.appliedFilters,
|
16625 | appliedFilters = _ref$appliedFilters === void 0 ? [] : _ref$appliedFilters,
|
16626 | additionalAction = _ref.additionalAction,
|
16627 | _ref$focused = _ref.focused,
|
16628 | focused = _ref$focused === void 0 ? false : _ref$focused,
|
16629 | _ref$filters = _ref.filters,
|
16630 | filters = _ref$filters === void 0 ? [] : _ref$filters,
|
16631 | placeholder = _ref.placeholder,
|
16632 | onSearchBlur = _ref.onSearchBlur,
|
16633 | onSearchChange = _ref.onSearchChange,
|
16634 | onFiltersChange = _ref.onFiltersChange;
|
16635 |
|
16636 | console.warn('Deprecation: <FilterControl /> is deprecated. Use <Filters /> instead.');
|
16637 | var i18n = useI18n();
|
16638 |
|
16639 | var _React$useContext = React__default.useContext(ResourceListContext),
|
16640 | selectMode = _React$useContext.selectMode,
|
16641 | resourceName = _React$useContext.resourceName;
|
16642 |
|
16643 | var filterResourceName = resourceName || {
|
16644 | singular: i18n.translate('Polaris.ResourceList.defaultItemSingular'),
|
16645 | plural: i18n.translate('Polaris.ResourceList.defaultItemPlural')
|
16646 | };
|
16647 | var handleAddFilter = React__default.useCallback(function (newFilter) {
|
16648 | if (!onFiltersChange) {
|
16649 | return;
|
16650 | }
|
16651 |
|
16652 | var foundFilter = appliedFilters.find(function (appliedFilter) {
|
16653 | return idFromFilter(appliedFilter) === idFromFilter(newFilter);
|
16654 | });
|
16655 |
|
16656 | if (foundFilter) {
|
16657 | return;
|
16658 | }
|
16659 |
|
16660 | var newAppliedFilters = [].concat(_toConsumableArray(appliedFilters), [newFilter]);
|
16661 | onFiltersChange(newAppliedFilters);
|
16662 | }, [onFiltersChange, appliedFilters]);
|
16663 | var handleRemoveFilter = React__default.useCallback(function (filterId) {
|
16664 | if (!onFiltersChange) {
|
16665 | return;
|
16666 | }
|
16667 |
|
16668 | var foundIndex = appliedFilters.findIndex(function (appliedFilter) {
|
16669 | return idFromFilter(appliedFilter) === filterId;
|
16670 | });
|
16671 | var newAppliedFilters = foundIndex >= 0 ? [].concat(_toConsumableArray(appliedFilters.slice(0, foundIndex)), _toConsumableArray(appliedFilters.slice(foundIndex + 1, appliedFilters.length))) : _toConsumableArray(appliedFilters);
|
16672 | onFiltersChange(newAppliedFilters);
|
16673 | }, [appliedFilters, onFiltersChange]);
|
16674 | var getRemoveFilterCallback = React__default.useCallback(function (filterId) {
|
16675 | return function () {
|
16676 | handleRemoveFilter(filterId);
|
16677 | };
|
16678 | }, [handleRemoveFilter]);
|
16679 | var textFieldLabel = placeholder ? placeholder : i18n.translate('Polaris.ResourceList.FilterControl.textFieldLabel', {
|
16680 | resourceNamePlural: filterResourceName.plural.toLocaleLowerCase()
|
16681 | });
|
16682 |
|
16683 | if (additionalAction) {
|
16684 | additionalAction.disabled = selectMode;
|
16685 | }
|
16686 |
|
16687 | var additionalActionButton = additionalAction && buttonsFrom(additionalAction) || null;
|
16688 | var filterCreatorMarkup = filters.length > 0 ? React__default.createElement(FilterCreator, {
|
16689 | resourceName: filterResourceName,
|
16690 | filters: filters,
|
16691 | onAddFilter: handleAddFilter,
|
16692 | disabled: selectMode
|
16693 | }) : null;
|
16694 | var appliedFiltersMarkup = appliedFilters.map(function (appliedFilter) {
|
16695 | var activeFilterLabel = getFilterLabel(appliedFilter);
|
16696 | var filterId = idFromFilter(appliedFilter);
|
16697 | return React__default.createElement("li", {
|
16698 | className: styles$1s.AppliedFilter,
|
16699 | key: filterId
|
16700 | }, React__default.createElement(Tag, {
|
16701 | onRemove: getRemoveFilterCallback(filterId),
|
16702 | disabled: selectMode
|
16703 | }, activeFilterLabel));
|
16704 | });
|
16705 | var appliedFiltersWrapper = appliedFilters.length > 0 ? React__default.createElement("ul", {
|
16706 | className: styles$1s.AppliedFilters
|
16707 | }, appliedFiltersMarkup) : null;
|
16708 | return React__default.createElement(FormLayout, null, React__default.createElement(TextField, {
|
16709 | connectedLeft: filterCreatorMarkup,
|
16710 | connectedRight: additionalActionButton,
|
16711 | label: textFieldLabel,
|
16712 | labelHidden: true,
|
16713 | placeholder: textFieldLabel,
|
16714 | prefix: React__default.createElement(Icon, {
|
16715 | source: SearchMinor,
|
16716 | color: "skyDark"
|
16717 | }),
|
16718 | value: searchValue,
|
16719 | onChange: onSearchChange,
|
16720 | onBlur: onSearchBlur,
|
16721 | focused: focused,
|
16722 | disabled: selectMode
|
16723 | }), appliedFiltersWrapper);
|
16724 |
|
16725 | function getFilterLabel(appliedFilter) {
|
16726 | var key = appliedFilter.key,
|
16727 | value = appliedFilter.value,
|
16728 | label = appliedFilter.label;
|
16729 |
|
16730 | if (label) {
|
16731 | return label;
|
16732 | }
|
16733 |
|
16734 | var filter = filters.find(function (filter) {
|
16735 | var minKey = filter.minKey,
|
16736 | maxKey = filter.maxKey,
|
16737 | operatorText = filter.operatorText;
|
16738 |
|
16739 | if (minKey || maxKey) {
|
16740 | return filter.key === key || minKey === key || maxKey === key;
|
16741 | }
|
16742 |
|
16743 | if (operatorText && typeof operatorText !== 'string') {
|
16744 | return filter.key === key || operatorText.filter(function (_ref2) {
|
16745 | var operatorKey = _ref2.key;
|
16746 | return operatorKey === key;
|
16747 | }).length === 1;
|
16748 | }
|
16749 |
|
16750 | return filter.key === key;
|
16751 | });
|
16752 |
|
16753 | if (!filter) {
|
16754 | return value;
|
16755 | }
|
16756 |
|
16757 | var filterOperatorLabel = findOperatorLabel(filter, appliedFilter);
|
16758 | var filterLabelByType = findFilterLabelByType(filter, appliedFilter);
|
16759 |
|
16760 | if (!filterOperatorLabel) {
|
16761 | return "".concat(filter.label, " ").concat(filterLabelByType);
|
16762 | }
|
16763 |
|
16764 | return "".concat(filter.label, " ").concat(filterOperatorLabel, " ").concat(filterLabelByType);
|
16765 | }
|
16766 |
|
16767 | function findFilterLabelByType(filter, appliedFilter) {
|
16768 | var appliedFilterValue = appliedFilter.value;
|
16769 |
|
16770 | if (filter.type === FilterType.Select) {
|
16771 | var foundFilterOption = filter.options.find(function (option) {
|
16772 | return typeof option === 'string' ? option === appliedFilterValue : option.value === appliedFilterValue;
|
16773 | });
|
16774 |
|
16775 | if (foundFilterOption) {
|
16776 | return typeof foundFilterOption === 'string' ? foundFilterOption : foundFilterOption.label;
|
16777 | }
|
16778 | }
|
16779 |
|
16780 | if (filter.type === FilterType.DateSelector) {
|
16781 | if (filter.key === appliedFilter.key) {
|
16782 | var filterLabelKey = "Polaris.ResourceList.DateSelector.FilterLabelForValue.".concat(appliedFilter.value);
|
16783 | return i18n.translationKeyExists(filterLabelKey) ? i18n.translate(filterLabelKey) : appliedFilter.value;
|
16784 | }
|
16785 |
|
16786 | if (appliedFilter.key === filter.maxKey) {
|
16787 | return i18n.translate('Polaris.ResourceList.DateSelector.FilterLabelForValue.on_or_before', {
|
16788 | date: formatDateForLabelDisplay(appliedFilter.value)
|
16789 | });
|
16790 | }
|
16791 |
|
16792 | if (appliedFilter.key === filter.minKey) {
|
16793 | return i18n.translate('Polaris.ResourceList.DateSelector.FilterLabelForValue.on_or_after', {
|
16794 | date: formatDateForLabelDisplay(appliedFilter.value)
|
16795 | });
|
16796 | }
|
16797 | }
|
16798 |
|
16799 | return appliedFilterValue;
|
16800 | }
|
16801 | }
|
16802 |
|
16803 | function idFromFilter(appliedFilter) {
|
16804 | return "".concat(appliedFilter.key, "-").concat(appliedFilter.value);
|
16805 | }
|
16806 |
|
16807 | function formatDateForLabelDisplay(date) {
|
16808 | if (isNaN(new Date(date).getTime())) {
|
16809 | return date;
|
16810 | }
|
16811 |
|
16812 | return new Date(date.replace(/-/g, '/')).toLocaleDateString();
|
16813 | }
|
16814 |
|
16815 | function findOperatorLabel(filter, appliedFilter) {
|
16816 | var operatorText = filter.operatorText;
|
16817 |
|
16818 | if (filter.type === FilterType.DateSelector && (appliedFilter.key === filter.minKey || appliedFilter.key === filter.maxKey)) {
|
16819 | return '';
|
16820 | }
|
16821 |
|
16822 | if (!operatorText || typeof operatorText === 'string') {
|
16823 | return operatorText;
|
16824 | }
|
16825 |
|
16826 | var appliedOperator = operatorText.find(function (operator) {
|
16827 | return operator.key === appliedFilter.key;
|
16828 | });
|
16829 |
|
16830 | if (appliedOperator) {
|
16831 | return appliedOperator.filterLabel || appliedOperator.optionLabel;
|
16832 | }
|
16833 | }
|
16834 |
|
16835 | var styles$1t = {
|
16836 | "FiltersWrapper": "Polaris-ResourceList__FiltersWrapper",
|
16837 | "ResourceList": "Polaris-ResourceList",
|
16838 | "HeaderOuterWrapper": "Polaris-ResourceList__HeaderOuterWrapper",
|
16839 | "HeaderWrapper-disabled": "Polaris-ResourceList__HeaderWrapper--disabled",
|
16840 | "HeaderWrapper-overlay": "Polaris-ResourceList__HeaderWrapper--overlay",
|
16841 | "HeaderWrapper": "Polaris-ResourceList__HeaderWrapper",
|
16842 | "HeaderWrapper-isSticky": "Polaris-ResourceList__HeaderWrapper--isSticky",
|
16843 | "HeaderContentWrapper": "Polaris-ResourceList__HeaderContentWrapper",
|
16844 | "HeaderWrapper-inSelectMode": "Polaris-ResourceList__HeaderWrapper--inSelectMode",
|
16845 | "SortWrapper": "Polaris-ResourceList__SortWrapper",
|
16846 | "AlternateToolWrapper": "Polaris-ResourceList__AlternateToolWrapper",
|
16847 | "HeaderWrapper-hasSelect": "Polaris-ResourceList__HeaderWrapper--hasSelect",
|
16848 | "HeaderWrapper-hasAlternateTool": "Polaris-ResourceList__HeaderWrapper--hasAlternateTool",
|
16849 | "HeaderWrapper-hasSort": "Polaris-ResourceList__HeaderWrapper--hasSort",
|
16850 | "HeaderTitleWrapper": "Polaris-ResourceList__HeaderTitleWrapper",
|
16851 | "BulkActionsWrapper": "Polaris-ResourceList__BulkActionsWrapper",
|
16852 | "CheckableButtonWrapper": "Polaris-ResourceList__CheckableButtonWrapper",
|
16853 | "SelectButtonWrapper": "Polaris-ResourceList__SelectButtonWrapper",
|
16854 | "EmptySearchResultWrapper": "Polaris-ResourceList__EmptySearchResultWrapper",
|
16855 | "ResourceListWrapper": "Polaris-ResourceList__ResourceListWrapper",
|
16856 | "ItemWrapper": "Polaris-ResourceList__ItemWrapper",
|
16857 | "ItemWrapper-isLoading": "Polaris-ResourceList__ItemWrapper--isLoading",
|
16858 | "SpinnerContainer": "Polaris-ResourceList__SpinnerContainer",
|
16859 | "LoadingOverlay": "Polaris-ResourceList__LoadingOverlay",
|
16860 | "DisabledPointerEvents": "Polaris-ResourceList__DisabledPointerEvents",
|
16861 | "disableTextSelection": "Polaris-ResourceList--disableTextSelection"
|
16862 | };
|
16863 |
|
16864 | var SMALL_SCREEN_WIDTH = 458;
|
16865 | var SMALL_SPINNER_HEIGHT = 28;
|
16866 | var LARGE_SPINNER_HEIGHT = 45;
|
16867 |
|
16868 | var ResourceList =
|
16869 |
|
16870 | function (_React$Component) {
|
16871 | _inherits(ResourceList, _React$Component);
|
16872 |
|
16873 | function ResourceList(props) {
|
16874 | var _this;
|
16875 |
|
16876 | _classCallCheck(this, ResourceList);
|
16877 |
|
16878 | _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceList).call(this, props));
|
16879 | _this.listRef = React__default.createRef();
|
16880 | _this.handleResize = debounce(function () {
|
16881 | var selectedItems = _this.props.selectedItems;
|
16882 | var _this$state = _this.state,
|
16883 | selectMode = _this$state.selectMode,
|
16884 | smallScreen = _this$state.smallScreen;
|
16885 | var newSmallScreen = isSmallScreen();
|
16886 |
|
16887 | if (selectedItems && selectedItems.length === 0 && selectMode && !newSmallScreen) {
|
16888 | _this.handleSelectMode(false);
|
16889 | }
|
16890 |
|
16891 | if (smallScreen !== newSmallScreen) {
|
16892 | _this.setState({
|
16893 | smallScreen: newSmallScreen
|
16894 | });
|
16895 | }
|
16896 | }, 50, {
|
16897 | leading: true,
|
16898 | trailing: true,
|
16899 | maxWait: 50
|
16900 | });
|
16901 |
|
16902 | _this.setLoadingPosition = function () {
|
16903 | if (_this.listRef.current != null) {
|
16904 | if (typeof window === 'undefined') {
|
16905 | return;
|
16906 | }
|
16907 |
|
16908 | var overlay = _this.listRef.current.getBoundingClientRect();
|
16909 |
|
16910 | var viewportHeight = Math.max(document.documentElement ? document.documentElement.clientHeight : 0, window.innerHeight || 0);
|
16911 | var overflow = viewportHeight - overlay.height;
|
16912 | var spinnerHeight = _this.props.items.length === 1 ? SMALL_SPINNER_HEIGHT : LARGE_SPINNER_HEIGHT;
|
16913 | var spinnerPosition = overflow > 0 ? (overlay.height - spinnerHeight) / 2 : (viewportHeight - overlay.top - spinnerHeight) / 2;
|
16914 |
|
16915 | _this.setState({
|
16916 | loadingPosition: spinnerPosition
|
16917 | });
|
16918 | }
|
16919 | };
|
16920 |
|
16921 | _this.handleSelectAllItemsInStore = function () {
|
16922 | var _this$props = _this.props,
|
16923 | onSelectionChange = _this$props.onSelectionChange,
|
16924 | selectedItems = _this$props.selectedItems,
|
16925 | items = _this$props.items,
|
16926 | _this$props$idForItem = _this$props.idForItem,
|
16927 | idForItem = _this$props$idForItem === void 0 ? defaultIdForItem : _this$props$idForItem;
|
16928 | var newlySelectedItems = selectedItems === SELECT_ALL_ITEMS ? getAllItemsOnPage(items, idForItem) : SELECT_ALL_ITEMS;
|
16929 |
|
16930 | if (onSelectionChange) {
|
16931 | onSelectionChange(newlySelectedItems);
|
16932 | }
|
16933 | };
|
16934 |
|
16935 | _this.renderItem = function (item, index) {
|
16936 | var _this$props2 = _this.props,
|
16937 | renderItem = _this$props2.renderItem,
|
16938 | _this$props2$idForIte = _this$props2.idForItem,
|
16939 | idForItem = _this$props2$idForIte === void 0 ? defaultIdForItem : _this$props2$idForIte;
|
16940 | var id = idForItem(item, index);
|
16941 | return React__default.createElement("li", {
|
16942 | key: id,
|
16943 | className: styles$1t.ItemWrapper
|
16944 | }, renderItem(item, id, index));
|
16945 | };
|
16946 |
|
16947 | _this.handleMultiSelectionChange = function (lastSelected, currentSelected, resolveItemId) {
|
16948 | var min = Math.min(lastSelected, currentSelected);
|
16949 | var max = Math.max(lastSelected, currentSelected);
|
16950 | return _this.props.items.slice(min, max + 1).map(resolveItemId);
|
16951 | };
|
16952 |
|
16953 | _this.handleCheckableButtonRegistration = function (key, button) {
|
16954 | _this.setState(function (_ref) {
|
16955 | var checkableButtons = _ref.checkableButtons;
|
16956 | return {
|
16957 | checkableButtons: new Map(checkableButtons).set(key, button)
|
16958 | };
|
16959 | });
|
16960 | };
|
16961 |
|
16962 | _this.handleSelectionChange = function (selected, id, sortOrder, shiftKey) {
|
16963 | var _this$props3 = _this.props,
|
16964 | onSelectionChange = _this$props3.onSelectionChange,
|
16965 | selectedItems = _this$props3.selectedItems,
|
16966 | items = _this$props3.items,
|
16967 | _this$props3$idForIte = _this$props3.idForItem,
|
16968 | idForItem = _this$props3$idForIte === void 0 ? defaultIdForItem : _this$props3$idForIte,
|
16969 | resolveItemId = _this$props3.resolveItemId;
|
16970 | var lastSelected = _this.state.lastSelected;
|
16971 |
|
16972 | if (selectedItems == null || onSelectionChange == null) {
|
16973 | return;
|
16974 | }
|
16975 |
|
16976 | var newlySelectedItems = selectedItems === SELECT_ALL_ITEMS ? getAllItemsOnPage(items, idForItem) : _toConsumableArray(selectedItems);
|
16977 |
|
16978 | if (sortOrder !== undefined) {
|
16979 | _this.setState({
|
16980 | lastSelected: sortOrder
|
16981 | });
|
16982 | }
|
16983 |
|
16984 | var selectedIds = [id];
|
16985 |
|
16986 | if (shiftKey && lastSelected != null && sortOrder !== undefined && resolveItemId) {
|
16987 | selectedIds = _this.handleMultiSelectionChange(lastSelected, sortOrder, resolveItemId);
|
16988 | }
|
16989 |
|
16990 | newlySelectedItems = _toConsumableArray(new Set([].concat(_toConsumableArray(newlySelectedItems), _toConsumableArray(selectedIds))));
|
16991 |
|
16992 | if (!selected) {
|
16993 | var _iteratorNormalCompletion = true;
|
16994 | var _didIteratorError = false;
|
16995 | var _iteratorError = undefined;
|
16996 |
|
16997 | try {
|
16998 | for (var _iterator = selectedIds[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
16999 | var selectedId = _step.value;
|
17000 | newlySelectedItems.splice(newlySelectedItems.indexOf(selectedId), 1);
|
17001 | }
|
17002 | } catch (err) {
|
17003 | _didIteratorError = true;
|
17004 | _iteratorError = err;
|
17005 | } finally {
|
17006 | try {
|
17007 | if (!_iteratorNormalCompletion && _iterator.return != null) {
|
17008 | _iterator.return();
|
17009 | }
|
17010 | } finally {
|
17011 | if (_didIteratorError) {
|
17012 | throw _iteratorError;
|
17013 | }
|
17014 | }
|
17015 | }
|
17016 | }
|
17017 |
|
17018 | if (newlySelectedItems.length === 0 && !isSmallScreen()) {
|
17019 | _this.handleSelectMode(false);
|
17020 | } else if (newlySelectedItems.length > 0) {
|
17021 | _this.handleSelectMode(true);
|
17022 | }
|
17023 |
|
17024 | if (onSelectionChange) {
|
17025 | onSelectionChange(newlySelectedItems);
|
17026 | }
|
17027 | };
|
17028 |
|
17029 | _this.handleSelectMode = function (selectMode) {
|
17030 | var onSelectionChange = _this.props.onSelectionChange;
|
17031 |
|
17032 | _this.setState({
|
17033 | selectMode
|
17034 | });
|
17035 |
|
17036 | if (!selectMode && onSelectionChange) {
|
17037 | onSelectionChange([]);
|
17038 | }
|
17039 | };
|
17040 |
|
17041 | _this.handleToggleAll = function () {
|
17042 | var _this$props4 = _this.props,
|
17043 | onSelectionChange = _this$props4.onSelectionChange,
|
17044 | selectedItems = _this$props4.selectedItems,
|
17045 | items = _this$props4.items,
|
17046 | _this$props4$idForIte = _this$props4.idForItem,
|
17047 | idForItem = _this$props4$idForIte === void 0 ? defaultIdForItem : _this$props4$idForIte;
|
17048 | var checkableButtons = _this.state.checkableButtons;
|
17049 | var newlySelectedItems = [];
|
17050 |
|
17051 | if (Array.isArray(selectedItems) && selectedItems.length === items.length || selectedItems === SELECT_ALL_ITEMS) {
|
17052 | newlySelectedItems = [];
|
17053 | } else {
|
17054 | newlySelectedItems = items.map(function (item, index) {
|
17055 | var id = idForItem(item, index);
|
17056 | return id;
|
17057 | });
|
17058 | }
|
17059 |
|
17060 | if (newlySelectedItems.length === 0 && !isSmallScreen()) {
|
17061 | _this.handleSelectMode(false);
|
17062 | } else if (newlySelectedItems.length > 0) {
|
17063 | _this.handleSelectMode(true);
|
17064 | }
|
17065 |
|
17066 | var checkbox;
|
17067 |
|
17068 | if (isSmallScreen()) {
|
17069 | checkbox = checkableButtons.get('bulkSm');
|
17070 | } else if (newlySelectedItems.length === 0) {
|
17071 | checkbox = checkableButtons.get('plain');
|
17072 | } else {
|
17073 | checkbox = checkableButtons.get('bulkLg');
|
17074 | }
|
17075 |
|
17076 | if (onSelectionChange) {
|
17077 | onSelectionChange(newlySelectedItems);
|
17078 | }
|
17079 |
|
17080 |
|
17081 | setTimeout(function () {
|
17082 | checkbox && checkbox.focus();
|
17083 | }, 0);
|
17084 | };
|
17085 |
|
17086 | var selectedItems = props.selectedItems,
|
17087 | intl = props.polaris.intl;
|
17088 | _this.defaultResourceName = {
|
17089 | singular: intl.translate('Polaris.ResourceList.defaultItemSingular'),
|
17090 | plural: intl.translate('Polaris.ResourceList.defaultItemPlural')
|
17091 | };
|
17092 |
|
17093 | _this.state = {
|
17094 | selectMode: Boolean(selectedItems && selectedItems.length > 0),
|
17095 | loadingPosition: 0,
|
17096 | lastSelected: null,
|
17097 | smallScreen: isSmallScreen(),
|
17098 | checkableButtons: new Map()
|
17099 | };
|
17100 | return _this;
|
17101 | }
|
17102 |
|
17103 | _createClass(ResourceList, [{
|
17104 | key: "componentDidMount",
|
17105 | value: function componentDidMount() {
|
17106 | this.forceUpdate();
|
17107 |
|
17108 | if (this.props.loading) {
|
17109 | this.setLoadingPosition();
|
17110 | }
|
17111 | }
|
17112 | }, {
|
17113 | key: "componentDidUpdate",
|
17114 | value: function componentDidUpdate(_ref2) {
|
17115 | var prevLoading = _ref2.loading,
|
17116 | prevItems = _ref2.items,
|
17117 | prevSelectedItems = _ref2.selectedItems;
|
17118 | var _this$props5 = this.props,
|
17119 | selectedItems = _this$props5.selectedItems,
|
17120 | loading = _this$props5.loading;
|
17121 |
|
17122 | if (this.listRef.current && this.itemsExist() && !this.itemsExist(prevItems)) {
|
17123 | this.forceUpdate();
|
17124 | }
|
17125 |
|
17126 | if (loading && !prevLoading) {
|
17127 | this.setLoadingPosition();
|
17128 | }
|
17129 |
|
17130 | if (selectedItems && selectedItems.length > 0 && !this.state.selectMode) {
|
17131 |
|
17132 | this.setState({
|
17133 | selectMode: true
|
17134 | });
|
17135 | return;
|
17136 | }
|
17137 |
|
17138 | if (prevSelectedItems && prevSelectedItems.length > 0 && (!selectedItems || selectedItems.length === 0) && !isSmallScreen()) {
|
17139 |
|
17140 | this.setState({
|
17141 | selectMode: false
|
17142 | });
|
17143 | }
|
17144 | }
|
17145 | }, {
|
17146 | key: "render",
|
17147 | value: function render() {
|
17148 | var _this2 = this;
|
17149 |
|
17150 | var _this$props6 = this.props,
|
17151 | items = _this$props6.items,
|
17152 | promotedBulkActions = _this$props6.promotedBulkActions,
|
17153 | bulkActions = _this$props6.bulkActions,
|
17154 | filterControl = _this$props6.filterControl,
|
17155 | loading = _this$props6.loading,
|
17156 | _this$props6$showHead = _this$props6.showHeader,
|
17157 | showHeader = _this$props6$showHead === void 0 ? false : _this$props6$showHead,
|
17158 | sortOptions = _this$props6.sortOptions,
|
17159 | sortValue = _this$props6.sortValue,
|
17160 | alternateTool = _this$props6.alternateTool,
|
17161 | selectedItems = _this$props6.selectedItems,
|
17162 | _this$props6$resource = _this$props6.resourceName,
|
17163 | resourceName = _this$props6$resource === void 0 ? this.defaultResourceName : _this$props6$resource,
|
17164 | onSortChange = _this$props6.onSortChange,
|
17165 | intl = _this$props6.polaris.intl;
|
17166 | var _this$state2 = this.state,
|
17167 | selectMode = _this$state2.selectMode,
|
17168 | loadingPosition = _this$state2.loadingPosition,
|
17169 | smallScreen = _this$state2.smallScreen;
|
17170 | var filterControlMarkup = filterControl ? React__default.createElement("div", {
|
17171 | className: styles$1t.FiltersWrapper
|
17172 | }, filterControl) : null;
|
17173 | var bulkActionsMarkup = this.selectable ? React__default.createElement("div", {
|
17174 | className: styles$1t.BulkActionsWrapper
|
17175 | }, React__default.createElement(BulkActions$1, {
|
17176 | label: this.bulkActionsLabel,
|
17177 | accessibilityLabel: this.bulkActionsAccessibilityLabel,
|
17178 | selected: this.bulkSelectState,
|
17179 | onToggleAll: this.handleToggleAll,
|
17180 | selectMode: selectMode,
|
17181 | onSelectModeToggle: this.handleSelectMode,
|
17182 | promotedActions: promotedBulkActions,
|
17183 | paginatedSelectAllAction: this.paginatedSelectAllAction,
|
17184 | paginatedSelectAllText: this.paginatedSelectAllText,
|
17185 | actions: bulkActions,
|
17186 | disabled: loading,
|
17187 | smallScreen: smallScreen
|
17188 | })) : null;
|
17189 | var sortingSelectMarkup = sortOptions && sortOptions.length > 0 && !alternateTool ? React__default.createElement("div", {
|
17190 | className: styles$1t.SortWrapper
|
17191 | }, React__default.createElement(Select, {
|
17192 | label: intl.translate('Polaris.ResourceList.sortingLabel'),
|
17193 | labelInline: !smallScreen,
|
17194 | labelHidden: smallScreen,
|
17195 | options: sortOptions,
|
17196 | onChange: onSortChange,
|
17197 | value: sortValue,
|
17198 | disabled: selectMode
|
17199 | })) : null;
|
17200 | var alternateToolMarkup = alternateTool && !sortingSelectMarkup ? React__default.createElement("div", {
|
17201 | className: styles$1t.AlternateToolWrapper
|
17202 | }, alternateTool) : null;
|
17203 | var headerTitleMarkup = React__default.createElement("div", {
|
17204 | className: styles$1t.HeaderTitleWrapper
|
17205 | }, this.headerTitle);
|
17206 | var selectButtonMarkup = this.selectable ? React__default.createElement("div", {
|
17207 | className: styles$1t.SelectButtonWrapper
|
17208 | }, React__default.createElement(Button, {
|
17209 | disabled: selectMode,
|
17210 | icon: EnableSelectionMinor,
|
17211 | onClick: this.handleSelectMode.bind(this, true)
|
17212 | }, intl.translate('Polaris.ResourceList.selectButtonText'))) : null;
|
17213 | var checkableButtonMarkup = this.selectable ? React__default.createElement("div", {
|
17214 | className: styles$1t.CheckableButtonWrapper
|
17215 | }, React__default.createElement(CheckableButton, {
|
17216 | accessibilityLabel: this.bulkActionsAccessibilityLabel,
|
17217 | label: this.headerTitle,
|
17218 | onToggleAll: this.handleToggleAll,
|
17219 | plain: true,
|
17220 | disabled: loading
|
17221 | })) : null;
|
17222 | var needsHeader = this.selectable || sortOptions && sortOptions.length > 0 || alternateTool;
|
17223 | var headerWrapperOverlay = loading ? React__default.createElement("div", {
|
17224 | className: styles$1t['HeaderWrapper-overlay']
|
17225 | }) : null;
|
17226 | var showEmptyState = filterControl && !this.itemsExist() && !loading;
|
17227 | var headerMarkup = !showEmptyState && (showHeader || needsHeader) && this.listRef.current && React__default.createElement("div", {
|
17228 | className: styles$1t.HeaderOuterWrapper
|
17229 | }, React__default.createElement(Sticky$1, {
|
17230 | boundingElement: this.listRef.current
|
17231 | }, function (isSticky) {
|
17232 | var headerClassName = classNames(styles$1t.HeaderWrapper, sortOptions && sortOptions.length > 0 && !alternateTool && styles$1t['HeaderWrapper-hasSort'], alternateTool && styles$1t['HeaderWrapper-hasAlternateTool'], _this2.selectable && styles$1t['HeaderWrapper-hasSelect'], loading && styles$1t['HeaderWrapper-disabled'], _this2.selectable && selectMode && styles$1t['HeaderWrapper-inSelectMode'], isSticky && styles$1t['HeaderWrapper-isSticky']);
|
17233 | return React__default.createElement("div", {
|
17234 | className: headerClassName
|
17235 | }, React__default.createElement(EventListener, {
|
17236 | event: "resize",
|
17237 | handler: _this2.handleResize
|
17238 | }), headerWrapperOverlay, React__default.createElement("div", {
|
17239 | className: styles$1t.HeaderContentWrapper
|
17240 | }, headerTitleMarkup, checkableButtonMarkup, alternateToolMarkup, sortingSelectMarkup, selectButtonMarkup), bulkActionsMarkup);
|
17241 | }));
|
17242 | var emptyStateMarkup = showEmptyState ? React__default.createElement("div", {
|
17243 | className: styles$1t.EmptySearchResultWrapper
|
17244 | }, React__default.createElement(EmptySearchResult, Object.assign({}, this.emptySearchResultText, {
|
17245 | withIllustration: true
|
17246 | }))) : null;
|
17247 | var defaultTopPadding = 8;
|
17248 | var topPadding = loadingPosition > 0 ? loadingPosition : defaultTopPadding;
|
17249 | var spinnerStyle = {
|
17250 | paddingTop: "".concat(topPadding, "px")
|
17251 | };
|
17252 | var spinnerSize = items.length < 2 ? 'small' : 'large';
|
17253 | var loadingOverlay = loading ? React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
|
17254 | className: styles$1t.SpinnerContainer,
|
17255 | style: spinnerStyle
|
17256 | }, React__default.createElement(Spinner, {
|
17257 | size: spinnerSize,
|
17258 | accessibilityLabel: "Items are loading"
|
17259 | })), React__default.createElement("div", {
|
17260 | className: styles$1t.LoadingOverlay
|
17261 | })) : null;
|
17262 | var className = classNames(styles$1t.ItemWrapper, loading && styles$1t['ItemWrapper-isLoading']);
|
17263 | var loadingWithoutItemsMarkup = loading && !this.itemsExist() ? React__default.createElement("div", {
|
17264 | className: className,
|
17265 | tabIndex: -1
|
17266 | }, loadingOverlay) : null;
|
17267 | var resourceListClassName = classNames(styles$1t.ResourceList, loading && styles$1t.disabledPointerEvents, selectMode && styles$1t.disableTextSelection);
|
17268 | var listMarkup = this.itemsExist() ? React__default.createElement("ul", {
|
17269 | className: resourceListClassName,
|
17270 | ref: this.listRef,
|
17271 | "aria-live": "polite",
|
17272 | "aria-busy": loading
|
17273 | }, loadingOverlay, items.map(this.renderItem)) : emptyStateMarkup;
|
17274 | var context = {
|
17275 | selectable: this.selectable,
|
17276 | selectedItems,
|
17277 | selectMode,
|
17278 | resourceName,
|
17279 | loading,
|
17280 | onSelectionChange: this.handleSelectionChange,
|
17281 | registerCheckableButtons: this.handleCheckableButtonRegistration
|
17282 | };
|
17283 | return React__default.createElement(ResourceListContext.Provider, {
|
17284 | value: context
|
17285 | }, React__default.createElement("div", {
|
17286 | className: styles$1t.ResourceListWrapper
|
17287 | }, filterControlMarkup, headerMarkup, listMarkup, loadingWithoutItemsMarkup));
|
17288 | }
|
17289 | }, {
|
17290 | key: "itemsExist",
|
17291 | value: function itemsExist(items) {
|
17292 | return (items || this.props.items).length > 0;
|
17293 | }
|
17294 | }, {
|
17295 | key: "selectable",
|
17296 | get: function get() {
|
17297 | var _this$props7 = this.props,
|
17298 | promotedBulkActions = _this$props7.promotedBulkActions,
|
17299 | bulkActions = _this$props7.bulkActions,
|
17300 | selectable = _this$props7.selectable;
|
17301 | return Boolean(promotedBulkActions && promotedBulkActions.length > 0 || bulkActions && bulkActions.length > 0 || selectable);
|
17302 | }
|
17303 | }, {
|
17304 | key: "bulkSelectState",
|
17305 | get: function get() {
|
17306 | var _this$props8 = this.props,
|
17307 | selectedItems = _this$props8.selectedItems,
|
17308 | items = _this$props8.items;
|
17309 | var selectState = 'indeterminate';
|
17310 |
|
17311 | if (!selectedItems || Array.isArray(selectedItems) && selectedItems.length === 0) {
|
17312 | selectState = false;
|
17313 | } else if (selectedItems === SELECT_ALL_ITEMS || Array.isArray(selectedItems) && selectedItems.length === items.length) {
|
17314 | selectState = true;
|
17315 | }
|
17316 |
|
17317 | return selectState;
|
17318 | }
|
17319 | }, {
|
17320 | key: "headerTitle",
|
17321 | get: function get() {
|
17322 | var _this$props9 = this.props,
|
17323 | _this$props9$resource = _this$props9.resourceName,
|
17324 | resourceName = _this$props9$resource === void 0 ? this.defaultResourceName : _this$props9$resource,
|
17325 | items = _this$props9.items,
|
17326 | intl = _this$props9.polaris.intl,
|
17327 | loading = _this$props9.loading,
|
17328 | totalItemsCount = _this$props9.totalItemsCount;
|
17329 | var itemsCount = items.length;
|
17330 | var resource = !loading && (!totalItemsCount && itemsCount === 1 || totalItemsCount === 1) ? resourceName.singular : resourceName.plural;
|
17331 |
|
17332 | if (loading) {
|
17333 | return intl.translate('Polaris.ResourceList.loading', {
|
17334 | resource
|
17335 | });
|
17336 | } else if (totalItemsCount) {
|
17337 | return intl.translate('Polaris.ResourceList.showingTotalCount', {
|
17338 | itemsCount,
|
17339 | totalItemsCount,
|
17340 | resource
|
17341 | });
|
17342 | } else {
|
17343 | return intl.translate('Polaris.ResourceList.showing', {
|
17344 | itemsCount,
|
17345 | resource
|
17346 | });
|
17347 | }
|
17348 | }
|
17349 | }, {
|
17350 | key: "bulkActionsLabel",
|
17351 | get: function get() {
|
17352 | var _this$props10 = this.props,
|
17353 | _this$props10$selecte = _this$props10.selectedItems,
|
17354 | selectedItems = _this$props10$selecte === void 0 ? [] : _this$props10$selecte,
|
17355 | items = _this$props10.items,
|
17356 | intl = _this$props10.polaris.intl;
|
17357 | var selectedItemsCount = selectedItems === SELECT_ALL_ITEMS ? "".concat(items.length, "+") : selectedItems.length;
|
17358 | return intl.translate('Polaris.ResourceList.selected', {
|
17359 | selectedItemsCount
|
17360 | });
|
17361 | }
|
17362 | }, {
|
17363 | key: "bulkActionsAccessibilityLabel",
|
17364 | get: function get() {
|
17365 | var _this$props11 = this.props,
|
17366 | _this$props11$resourc = _this$props11.resourceName,
|
17367 | resourceName = _this$props11$resourc === void 0 ? this.defaultResourceName : _this$props11$resourc,
|
17368 | _this$props11$selecte = _this$props11.selectedItems,
|
17369 | selectedItems = _this$props11$selecte === void 0 ? [] : _this$props11$selecte,
|
17370 | items = _this$props11.items,
|
17371 | intl = _this$props11.polaris.intl;
|
17372 | var selectedItemsCount = selectedItems.length;
|
17373 | var totalItemsCount = items.length;
|
17374 | var allSelected = selectedItemsCount === totalItemsCount;
|
17375 |
|
17376 | if (totalItemsCount === 1 && allSelected) {
|
17377 | return intl.translate('Polaris.ResourceList.a11yCheckboxDeselectAllSingle', {
|
17378 | resourceNameSingular: resourceName.singular
|
17379 | });
|
17380 | } else if (totalItemsCount === 1) {
|
17381 | return intl.translate('Polaris.ResourceList.a11yCheckboxSelectAllSingle', {
|
17382 | resourceNameSingular: resourceName.singular
|
17383 | });
|
17384 | } else if (allSelected) {
|
17385 | return intl.translate('Polaris.ResourceList.a11yCheckboxDeselectAllMultiple', {
|
17386 | itemsLength: items.length,
|
17387 | resourceNamePlural: resourceName.plural
|
17388 | });
|
17389 | } else {
|
17390 | return intl.translate('Polaris.ResourceList.a11yCheckboxSelectAllMultiple', {
|
17391 | itemsLength: items.length,
|
17392 | resourceNamePlural: resourceName.plural
|
17393 | });
|
17394 | }
|
17395 | }
|
17396 | }, {
|
17397 | key: "paginatedSelectAllText",
|
17398 | get: function get() {
|
17399 | var _this$props12 = this.props,
|
17400 | hasMoreItems = _this$props12.hasMoreItems,
|
17401 | selectedItems = _this$props12.selectedItems,
|
17402 | items = _this$props12.items,
|
17403 | _this$props12$resourc = _this$props12.resourceName,
|
17404 | resourceName = _this$props12$resourc === void 0 ? this.defaultResourceName : _this$props12$resourc,
|
17405 | intl = _this$props12.polaris.intl;
|
17406 |
|
17407 | if (!this.selectable || !hasMoreItems) {
|
17408 | return;
|
17409 | }
|
17410 |
|
17411 | if (selectedItems === SELECT_ALL_ITEMS) {
|
17412 | return intl.translate('Polaris.ResourceList.allItemsSelected', {
|
17413 | itemsLength: items.length,
|
17414 | resourceNamePlural: resourceName.plural
|
17415 | });
|
17416 | }
|
17417 | }
|
17418 | }, {
|
17419 | key: "paginatedSelectAllAction",
|
17420 | get: function get() {
|
17421 | var _this$props13 = this.props,
|
17422 | hasMoreItems = _this$props13.hasMoreItems,
|
17423 | selectedItems = _this$props13.selectedItems,
|
17424 | items = _this$props13.items,
|
17425 | _this$props13$resourc = _this$props13.resourceName,
|
17426 | resourceName = _this$props13$resourc === void 0 ? this.defaultResourceName : _this$props13$resourc,
|
17427 | intl = _this$props13.polaris.intl;
|
17428 |
|
17429 | if (!this.selectable || !hasMoreItems) {
|
17430 | return;
|
17431 | }
|
17432 |
|
17433 | var actionText = selectedItems === SELECT_ALL_ITEMS ? intl.translate('Polaris.Common.undo') : intl.translate('Polaris.ResourceList.selectAllItems', {
|
17434 | itemsLength: items.length,
|
17435 | resourceNamePlural: resourceName.plural
|
17436 | });
|
17437 | return {
|
17438 | content: actionText,
|
17439 | onAction: this.handleSelectAllItemsInStore
|
17440 | };
|
17441 | }
|
17442 | }, {
|
17443 | key: "emptySearchResultText",
|
17444 | get: function get() {
|
17445 | var _this$props14 = this.props,
|
17446 | intl = _this$props14.polaris.intl,
|
17447 | _this$props14$resourc = _this$props14.resourceName,
|
17448 | resourceName = _this$props14$resourc === void 0 ? this.defaultResourceName : _this$props14$resourc;
|
17449 | return {
|
17450 | title: intl.translate('Polaris.ResourceList.emptySearchResultTitle', {
|
17451 | resourceNamePlural: resourceName.plural
|
17452 | }),
|
17453 | description: intl.translate('Polaris.ResourceList.emptySearchResultDescription')
|
17454 | };
|
17455 | }
|
17456 | }]);
|
17457 |
|
17458 | return ResourceList;
|
17459 | }(React__default.Component);
|
17460 |
|
17461 | ResourceList.Item = ResourceItem;
|
17462 |
|
17463 | ResourceList.FilterControl = FilterControl;
|
17464 |
|
17465 | function getAllItemsOnPage(items, idForItem) {
|
17466 | return items.map(function (item, index) {
|
17467 | return idForItem(item, index);
|
17468 | });
|
17469 | }
|
17470 |
|
17471 | function defaultIdForItem(item, index) {
|
17472 | return Object.prototype.hasOwnProperty.call(item, 'id') ? item.id : index.toString();
|
17473 | }
|
17474 |
|
17475 | function isSmallScreen() {
|
17476 | return typeof window === 'undefined' ? false : window.innerWidth < SMALL_SCREEN_WIDTH;
|
17477 | }
|
17478 |
|
17479 |
|
17480 |
|
17481 | var ResourceList$1 = withAppProvider()(ResourceList);
|
17482 |
|
17483 |
|
17484 |
|
17485 | var ResourcePicker =
|
17486 |
|
17487 | function (_React$PureComponent) {
|
17488 | _inherits(ResourcePicker, _React$PureComponent);
|
17489 |
|
17490 | function ResourcePicker() {
|
17491 | var _this;
|
17492 |
|
17493 | _classCallCheck(this, ResourcePicker);
|
17494 |
|
17495 | _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourcePicker).apply(this, arguments));
|
17496 | _this.focusReturnPoint = null;
|
17497 | return _this;
|
17498 | }
|
17499 |
|
17500 | _createClass(ResourcePicker, [{
|
17501 | key: "componentDidMount",
|
17502 | value: function componentDidMount() {
|
17503 |
|
17504 | console.warn('Deprecation: `ResourcePicker` is deprecated and will be removed in v5.0. Use `ResourcePicker` from `@shopify/app-bridge-react` instead: https://help.shopify.com/en/api/embedded-apps/app-bridge/react-components/resourcepicker');
|
17505 |
|
17506 | if (this.props.polaris.appBridge == null) {
|
17507 | return;
|
17508 | }
|
17509 |
|
17510 | var _this$props = this.props,
|
17511 | open = _this$props.open,
|
17512 | resourceType = _this$props.resourceType,
|
17513 | initialQuery = _this$props.initialQuery,
|
17514 | _this$props$showHidde = _this$props.showHidden,
|
17515 | showHidden = _this$props$showHidde === void 0 ? true : _this$props$showHidde,
|
17516 | _this$props$allowMult = _this$props.allowMultiple,
|
17517 | allowMultiple = _this$props$allowMult === void 0 ? true : _this$props$allowMult,
|
17518 | _this$props$showVaria = _this$props.showVariants,
|
17519 | showVariants = _this$props$showVaria === void 0 ? true : _this$props$showVaria,
|
17520 | onSelection = _this$props.onSelection,
|
17521 | onCancel = _this$props.onCancel;
|
17522 | var appBridge = this.props.polaris.appBridge;
|
17523 | this.appBridgeResourcePicker = ResourcePicker$2.create(appBridge, {
|
17524 | resourceType: ResourcePicker$2.ResourceType[resourceType],
|
17525 | options: {
|
17526 | initialQuery,
|
17527 | showHidden,
|
17528 | selectMultiple: allowMultiple,
|
17529 | showVariants
|
17530 | }
|
17531 | });
|
17532 |
|
17533 | if (onSelection != null) {
|
17534 | this.appBridgeResourcePicker.subscribe(ResourcePicker$2.Action.SELECT, function (_ref) {
|
17535 | var selection = _ref.selection;
|
17536 | onSelection({
|
17537 | selection
|
17538 | });
|
17539 | });
|
17540 | }
|
17541 |
|
17542 | if (onCancel != null) {
|
17543 | this.appBridgeResourcePicker.subscribe(ResourcePicker$2.Action.CANCEL, onCancel);
|
17544 | }
|
17545 |
|
17546 | if (open) {
|
17547 | this.focusReturnPoint = document.activeElement;
|
17548 | this.appBridgeResourcePicker.dispatch(ResourcePicker$2.Action.OPEN);
|
17549 | }
|
17550 | }
|
17551 | }, {
|
17552 | key: "componentDidUpdate",
|
17553 | value: function componentDidUpdate(prevProps) {
|
17554 | if (this.appBridgeResourcePicker == null) {
|
17555 | return;
|
17556 | }
|
17557 |
|
17558 | var _this$props2 = this.props,
|
17559 | open = _this$props2.open,
|
17560 | initialQuery = _this$props2.initialQuery,
|
17561 | _this$props2$showHidd = _this$props2.showHidden,
|
17562 | showHidden = _this$props2$showHidd === void 0 ? false : _this$props2$showHidd,
|
17563 | _this$props2$allowMul = _this$props2.allowMultiple,
|
17564 | allowMultiple = _this$props2$allowMul === void 0 ? true : _this$props2$allowMul,
|
17565 | _this$props2$showVari = _this$props2.showVariants,
|
17566 | showVariants = _this$props2$showVari === void 0 ? true : _this$props2$showVari,
|
17567 | onSelection = _this$props2.onSelection,
|
17568 | onCancel = _this$props2.onCancel;
|
17569 | var wasOpen = prevProps.open;
|
17570 |
|
17571 | var prevAppBridge = prevProps.polaris.appBridge,
|
17572 | prevResourcePickerProps = __rest(prevProps, ["polaris"]);
|
17573 |
|
17574 | var _a = this.props,
|
17575 | appBridge = _a.polaris.appBridge,
|
17576 | resourcePickerProps = __rest(_a, ["polaris"]);
|
17577 |
|
17578 | if (!isEqual(prevResourcePickerProps, resourcePickerProps) || !isEqual(prevAppBridge, appBridge)) {
|
17579 | this.appBridgeResourcePicker.set({
|
17580 | initialQuery,
|
17581 | showHidden,
|
17582 | selectMultiple: allowMultiple,
|
17583 | showVariants
|
17584 | });
|
17585 | }
|
17586 |
|
17587 | this.appBridgeResourcePicker.unsubscribe();
|
17588 |
|
17589 | if (onSelection != null) {
|
17590 | this.appBridgeResourcePicker.subscribe(ResourcePicker$2.Action.SELECT, function (_ref2) {
|
17591 | var selection = _ref2.selection;
|
17592 | onSelection({
|
17593 | selection
|
17594 | });
|
17595 | });
|
17596 | }
|
17597 |
|
17598 | if (onCancel != null) {
|
17599 | this.appBridgeResourcePicker.subscribe(ResourcePicker$2.Action.CANCEL, onCancel);
|
17600 | }
|
17601 |
|
17602 | if (wasOpen !== open) {
|
17603 | if (open) {
|
17604 | this.appBridgeResourcePicker.dispatch(ResourcePicker$2.Action.OPEN);
|
17605 | } else {
|
17606 | this.appBridgeResourcePicker.dispatch(ResourcePicker$2.Action.CLOSE);
|
17607 | }
|
17608 | }
|
17609 |
|
17610 | if (!wasOpen && open) {
|
17611 | this.focusReturnPoint = document.activeElement;
|
17612 | } else if (wasOpen && !open && this.focusReturnPoint != null && document.contains(this.focusReturnPoint)) {
|
17613 | this.focusReturnPoint.focus();
|
17614 | this.focusReturnPoint = null;
|
17615 | }
|
17616 | }
|
17617 | }, {
|
17618 | key: "componentWillUnmount",
|
17619 | value: function componentWillUnmount() {
|
17620 | if (this.appBridgeResourcePicker == null) {
|
17621 | return;
|
17622 | }
|
17623 |
|
17624 | this.appBridgeResourcePicker.unsubscribe();
|
17625 | }
|
17626 | }, {
|
17627 | key: "render",
|
17628 | value: function render() {
|
17629 | return null;
|
17630 | }
|
17631 | }]);
|
17632 |
|
17633 | return ResourcePicker;
|
17634 | }(React__default.PureComponent);
|
17635 |
|
17636 |
|
17637 |
|
17638 | var ResourcePicker$1 = withAppProvider()(ResourcePicker);
|
17639 |
|
17640 | function SettingToggle(_ref) {
|
17641 | var enabled = _ref.enabled,
|
17642 | action = _ref.action,
|
17643 | children = _ref.children;
|
17644 | var actionMarkup = action ? buttonFrom(action, {
|
17645 | primary: !enabled
|
17646 | }) : null;
|
17647 | return React__default.createElement(Card, {
|
17648 | sectioned: true
|
17649 | }, React__default.createElement(SettingAction, {
|
17650 | action: actionMarkup
|
17651 | }, children));
|
17652 | }
|
17653 |
|
17654 | var styles$1u = {
|
17655 | "SkeletonBodyTextContainer": "Polaris-SkeletonBodyText__SkeletonBodyTextContainer",
|
17656 | "SkeletonBodyText": "Polaris-SkeletonBodyText"
|
17657 | };
|
17658 |
|
17659 | function SkeletonBodyText(_ref) {
|
17660 | var _ref$lines = _ref.lines,
|
17661 | lines = _ref$lines === void 0 ? 3 : _ref$lines;
|
17662 | var bodyTextLines = [];
|
17663 |
|
17664 | for (var i = 0; i < lines; i++) {
|
17665 | bodyTextLines.push(React__default.createElement("div", {
|
17666 | className: styles$1u.SkeletonBodyText,
|
17667 | key: i
|
17668 | }));
|
17669 | }
|
17670 |
|
17671 | return React__default.createElement("div", {
|
17672 | className: styles$1u.SkeletonBodyTextContainer
|
17673 | }, bodyTextLines);
|
17674 | }
|
17675 |
|
17676 | var styles$1v = {
|
17677 | "DisplayText": "Polaris-SkeletonDisplayText__DisplayText",
|
17678 | "sizeSmall": "Polaris-SkeletonDisplayText--sizeSmall",
|
17679 | "sizeMedium": "Polaris-SkeletonDisplayText--sizeMedium",
|
17680 | "sizeLarge": "Polaris-SkeletonDisplayText--sizeLarge",
|
17681 | "sizeExtraLarge": "Polaris-SkeletonDisplayText--sizeExtraLarge"
|
17682 | };
|
17683 |
|
17684 | function SkeletonDisplayText(_ref) {
|
17685 | var _ref$size = _ref.size,
|
17686 | size = _ref$size === void 0 ? 'medium' : _ref$size;
|
17687 | var className = classNames(styles$1v.DisplayText, size && styles$1v[variationName('size', size)]);
|
17688 | return React__default.createElement("div", {
|
17689 | className: className
|
17690 | });
|
17691 | }
|
17692 |
|
17693 | var styles$1w = {
|
17694 | "Page": "Polaris-SkeletonPage__Page",
|
17695 | "fullWidth": "Polaris-SkeletonPage--fullWidth",
|
17696 | "narrowWidth": "Polaris-SkeletonPage--narrowWidth",
|
17697 | "Content": "Polaris-SkeletonPage__Content",
|
17698 | "Header": "Polaris-SkeletonPage__Header",
|
17699 | "Header-hasSecondaryActions": "Polaris-SkeletonPage__Header--hasSecondaryActions",
|
17700 | "BreadcrumbAction": "Polaris-SkeletonPage__BreadcrumbAction",
|
17701 | "TitleAndPrimaryAction": "Polaris-SkeletonPage__TitleAndPrimaryAction",
|
17702 | "Title": "Polaris-SkeletonPage__Title",
|
17703 | "PrimaryAction": "Polaris-SkeletonPage__PrimaryAction",
|
17704 | "Actions": "Polaris-SkeletonPage__Actions",
|
17705 | "Action": "Polaris-SkeletonPage__Action"
|
17706 | };
|
17707 |
|
17708 | function SkeletonPage(_ref) {
|
17709 | var children = _ref.children,
|
17710 | fullWidth = _ref.fullWidth,
|
17711 | narrowWidth = _ref.narrowWidth,
|
17712 | singleColumn = _ref.singleColumn,
|
17713 | primaryAction = _ref.primaryAction,
|
17714 | secondaryActions = _ref.secondaryActions,
|
17715 | _ref$title = _ref.title,
|
17716 | title = _ref$title === void 0 ? '' : _ref$title,
|
17717 | breadcrumbs = _ref.breadcrumbs;
|
17718 |
|
17719 | if (singleColumn) {
|
17720 |
|
17721 | console.warn('Deprecation: The singleColumn prop has been renamed to narrowWidth to better represents its use and will be removed in v5.0.');
|
17722 | }
|
17723 |
|
17724 | var i18n = useI18n();
|
17725 | var appBridge = useAppBridge();
|
17726 | var className = classNames(styles$1w.Page, fullWidth && styles$1w.fullWidth, (narrowWidth || singleColumn) && styles$1w.narrowWidth);
|
17727 | var headerClassName = classNames(styles$1w.Header, breadcrumbs && styles$1w['Header-hasBreadcrumbs'], secondaryActions && styles$1w['Header-hasSecondaryActions']);
|
17728 | var titleMarkup = title !== null ? renderTitle(title) : null;
|
17729 | var primaryActionMarkup = primaryAction ? React__default.createElement("div", {
|
17730 | className: styles$1w.PrimaryAction
|
17731 | }, React__default.createElement(SkeletonDisplayText, {
|
17732 | size: "large"
|
17733 | })) : null;
|
17734 | var secondaryActionsMarkup = secondaryActions ? renderSecondaryActions(secondaryActions) : null;
|
17735 | var breadcrumbMarkup = breadcrumbs ? React__default.createElement("div", {
|
17736 | className: styles$1w.BreadcrumbAction,
|
17737 | style: {
|
17738 | width: 60
|
17739 | }
|
17740 | }, React__default.createElement(SkeletonBodyText, {
|
17741 | lines: 1
|
17742 | })) : null;
|
17743 | var headerMarkup = !appBridge ? React__default.createElement("div", {
|
17744 | className: headerClassName
|
17745 | }, breadcrumbMarkup, React__default.createElement("div", {
|
17746 | className: styles$1w.TitleAndPrimaryAction
|
17747 | }, titleMarkup, primaryActionMarkup), secondaryActionsMarkup) : null;
|
17748 | return React__default.createElement("div", {
|
17749 | className: className,
|
17750 | role: "status",
|
17751 | "aria-label": i18n.translate('Polaris.SkeletonPage.loadingLabel')
|
17752 | }, headerMarkup, React__default.createElement("div", {
|
17753 | className: styles$1w.Content
|
17754 | }, children));
|
17755 | }
|
17756 |
|
17757 | function renderSecondaryActions(actionCount) {
|
17758 | var actions = [];
|
17759 |
|
17760 | for (var i = 0; i < actionCount; i++) {
|
17761 | var width = Math.round(Math.random() * 40 + 60);
|
17762 | actions.push(React__default.createElement("div", {
|
17763 | className: styles$1w.Action,
|
17764 | style: {
|
17765 | width
|
17766 | },
|
17767 | key: i
|
17768 | }, React__default.createElement(SkeletonBodyText, {
|
17769 | lines: 1
|
17770 | })));
|
17771 | }
|
17772 |
|
17773 | return React__default.createElement("div", {
|
17774 | className: styles$1w.Actions
|
17775 | }, actions);
|
17776 | }
|
17777 |
|
17778 | function renderTitle(title) {
|
17779 | var titleContent = title === '' ? React__default.createElement(SkeletonDisplayText, {
|
17780 | size: "large"
|
17781 | }) : React__default.createElement(DisplayText, {
|
17782 | size: "large",
|
17783 | element: "h1"
|
17784 | }, title);
|
17785 | return React__default.createElement("div", {
|
17786 | className: styles$1w.Title
|
17787 | }, titleContent);
|
17788 | }
|
17789 |
|
17790 | var styles$1x = {
|
17791 | "SkeletonThumbnail": "Polaris-SkeletonThumbnail",
|
17792 | "sizeSmall": "Polaris-SkeletonThumbnail--sizeSmall",
|
17793 | "sizeMedium": "Polaris-SkeletonThumbnail--sizeMedium",
|
17794 | "sizeLarge": "Polaris-SkeletonThumbnail--sizeLarge"
|
17795 | };
|
17796 |
|
17797 | function SkeletonThumbnail(_ref) {
|
17798 | var _ref$size = _ref.size,
|
17799 | size = _ref$size === void 0 ? 'medium' : _ref$size;
|
17800 | var className = classNames(styles$1x.SkeletonThumbnail, size && styles$1x[variationName('size', size)]);
|
17801 | return React__default.createElement("div", {
|
17802 | className: className
|
17803 | });
|
17804 | }
|
17805 |
|
17806 | function getVisibleAndHiddenTabIndices(tabs, selected, disclosureWidth, tabWidths, containerWidth) {
|
17807 | var sumTabWidths = tabWidths.reduce(function (sum, width) {
|
17808 | return sum + width;
|
17809 | }, 0);
|
17810 | var arrayOfTabIndices = tabs.map(function (_, index) {
|
17811 | return index;
|
17812 | });
|
17813 | var visibleTabs = [];
|
17814 | var hiddenTabs = [];
|
17815 |
|
17816 | if (containerWidth > sumTabWidths) {
|
17817 | visibleTabs.push.apply(visibleTabs, _toConsumableArray(arrayOfTabIndices));
|
17818 | } else {
|
17819 | visibleTabs.push(selected);
|
17820 | var tabListWidth = tabWidths[selected];
|
17821 | arrayOfTabIndices.forEach(function (currentTabIndex) {
|
17822 | if (currentTabIndex !== selected) {
|
17823 | var currentTabWidth = tabWidths[currentTabIndex];
|
17824 |
|
17825 | if (tabListWidth + currentTabWidth > containerWidth - disclosureWidth) {
|
17826 | hiddenTabs.push(currentTabIndex);
|
17827 | return;
|
17828 | }
|
17829 |
|
17830 | visibleTabs.push(currentTabIndex);
|
17831 | tabListWidth += currentTabWidth;
|
17832 | }
|
17833 | });
|
17834 | }
|
17835 |
|
17836 | return {
|
17837 | visibleTabs,
|
17838 | hiddenTabs
|
17839 | };
|
17840 | }
|
17841 |
|
17842 | var styles$1y = {
|
17843 | "Tabs": "Polaris-Tabs",
|
17844 | "fitted": "Polaris-Tabs--fitted",
|
17845 | "TabContainer": "Polaris-Tabs__TabContainer",
|
17846 | "Tab": "Polaris-Tabs__Tab",
|
17847 | "Title": "Polaris-Tabs__Title",
|
17848 | "fillSpace": "Polaris-Tabs--fillSpace",
|
17849 | "Tab-selected": "Polaris-Tabs__Tab--selected",
|
17850 | "Panel": "Polaris-Tabs__Panel",
|
17851 | "Panel-hidden": "Polaris-Tabs__Panel--hidden",
|
17852 | "List": "Polaris-Tabs__List",
|
17853 | "Item": "Polaris-Tabs__Item",
|
17854 | "DisclosureTab": "Polaris-Tabs__DisclosureTab",
|
17855 | "DisclosureTab-visible": "Polaris-Tabs__DisclosureTab--visible",
|
17856 | "DisclosureActivator": "Polaris-Tabs__DisclosureActivator",
|
17857 | "TabMeasurer": "Polaris-Tabs__TabMeasurer"
|
17858 | };
|
17859 |
|
17860 | var Item$8 =
|
17861 |
|
17862 | function (_React$PureComponent) {
|
17863 | _inherits(Item, _React$PureComponent);
|
17864 |
|
17865 | function Item() {
|
17866 | var _this;
|
17867 |
|
17868 | _classCallCheck(this, Item);
|
17869 |
|
17870 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Item).apply(this, arguments));
|
17871 | _this.focusedNode = null;
|
17872 |
|
17873 | _this.setFocusedNode = function (node) {
|
17874 | _this.focusedNode = node;
|
17875 | };
|
17876 |
|
17877 | return _this;
|
17878 | }
|
17879 |
|
17880 | _createClass(Item, [{
|
17881 | key: "componentDidMount",
|
17882 | value: function componentDidMount() {
|
17883 | var focusedNode = this.focusedNode;
|
17884 | var focused = this.props.focused;
|
17885 |
|
17886 | if (focusedNode && focusedNode instanceof HTMLElement && focused) {
|
17887 | focusedNode.focus();
|
17888 | }
|
17889 | }
|
17890 | }, {
|
17891 | key: "componentDidUpdate",
|
17892 | value: function componentDidUpdate() {
|
17893 | var focusedNode = this.focusedNode;
|
17894 | var focused = this.props.focused;
|
17895 |
|
17896 | if (focusedNode && focusedNode instanceof HTMLElement && focused) {
|
17897 | focusedNode.focus();
|
17898 | }
|
17899 | }
|
17900 | }, {
|
17901 | key: "render",
|
17902 | value: function render() {
|
17903 | var _this$props = this.props,
|
17904 | id = _this$props.id,
|
17905 | panelID = _this$props.panelID,
|
17906 | children = _this$props.children,
|
17907 | url = _this$props.url,
|
17908 | accessibilityLabel = _this$props.accessibilityLabel,
|
17909 | _this$props$onClick = _this$props.onClick,
|
17910 | onClick = _this$props$onClick === void 0 ? noop$c : _this$props$onClick;
|
17911 | var sharedProps = {
|
17912 | id,
|
17913 | ref: this.setFocusedNode,
|
17914 | onClick,
|
17915 | className: styles$1y.Item,
|
17916 | 'aria-controls': panelID,
|
17917 | 'aria-selected': false,
|
17918 | 'aria-label': accessibilityLabel
|
17919 | };
|
17920 | var markup = url ? React__default.createElement(UnstyledLink, Object.assign({}, sharedProps, {
|
17921 | url: url
|
17922 | }), children) : React__default.createElement("button", Object.assign({}, sharedProps, {
|
17923 | type: "button"
|
17924 | }), children);
|
17925 | return React__default.createElement("li", null, markup);
|
17926 | }
|
17927 | }]);
|
17928 |
|
17929 | return Item;
|
17930 | }(React__default.PureComponent);
|
17931 |
|
17932 | function noop$c() {}
|
17933 |
|
17934 | var List$1 =
|
17935 |
|
17936 | function (_React$PureComponent) {
|
17937 | _inherits(List, _React$PureComponent);
|
17938 |
|
17939 | function List() {
|
17940 | var _this;
|
17941 |
|
17942 | _classCallCheck(this, List);
|
17943 |
|
17944 | _this = _possibleConstructorReturn(this, _getPrototypeOf(List).apply(this, arguments));
|
17945 |
|
17946 | _this.handleKeypress = function (event) {
|
17947 | var _this$props$onKeyPres = _this.props.onKeyPress,
|
17948 | onKeyPress = _this$props$onKeyPres === void 0 ? noop$d : _this$props$onKeyPres;
|
17949 | onKeyPress(event);
|
17950 | };
|
17951 |
|
17952 | return _this;
|
17953 | }
|
17954 |
|
17955 | _createClass(List, [{
|
17956 | key: "render",
|
17957 | value: function render() {
|
17958 | var _this$props = this.props,
|
17959 | focusIndex = _this$props.focusIndex,
|
17960 | disclosureTabs = _this$props.disclosureTabs,
|
17961 | _this$props$onClick = _this$props.onClick,
|
17962 | onClick = _this$props$onClick === void 0 ? noop$d : _this$props$onClick;
|
17963 | var tabs = disclosureTabs.map(function (_a, index) {
|
17964 | var id = _a.id,
|
17965 | content = _a.content,
|
17966 | tabProps = __rest(_a, ["id", "content"]);
|
17967 |
|
17968 | return React__default.createElement(Item$8, Object.assign({}, tabProps, {
|
17969 | key: id,
|
17970 | id: id,
|
17971 | focused: index === focusIndex,
|
17972 | onClick: onClick.bind(null, id)
|
17973 | }), content);
|
17974 | });
|
17975 | return React__default.createElement("ul", {
|
17976 | className: styles$1y.List,
|
17977 | onKeyDown: handleKeyDown$1,
|
17978 | onKeyUp: this.handleKeypress
|
17979 | }, tabs);
|
17980 | }
|
17981 | }]);
|
17982 |
|
17983 | return List;
|
17984 | }(React__default.PureComponent);
|
17985 |
|
17986 | function noop$d() {}
|
17987 |
|
17988 | function handleKeyDown$1(event) {
|
17989 | var key = event.key;
|
17990 |
|
17991 | if (key === 'ArrowUp' || key === 'ArrowDown' || key === 'ArrowLeft' || key === 'ArrowRight') {
|
17992 | event.preventDefault();
|
17993 | event.stopPropagation();
|
17994 | }
|
17995 | }
|
17996 |
|
17997 | function Panel(_ref) {
|
17998 | var hidden = _ref.hidden,
|
17999 | id = _ref.id,
|
18000 | tabID = _ref.tabID,
|
18001 | children = _ref.children;
|
18002 | var className = classNames(styles$1y.Panel, hidden && styles$1y['Panel-hidden']);
|
18003 | return React__default.createElement("div", {
|
18004 | className: className,
|
18005 | id: id,
|
18006 | role: "tabpanel",
|
18007 | "aria-labelledby": tabID,
|
18008 | tabIndex: -1
|
18009 | }, children);
|
18010 | }
|
18011 |
|
18012 | function Tab(_ref) {
|
18013 | var id = _ref.id,
|
18014 | focused = _ref.focused,
|
18015 | siblingTabHasFocus = _ref.siblingTabHasFocus,
|
18016 | children = _ref.children,
|
18017 | onClick = _ref.onClick,
|
18018 | selected = _ref.selected,
|
18019 | url = _ref.url,
|
18020 | panelID = _ref.panelID,
|
18021 | measuring = _ref.measuring,
|
18022 | accessibilityLabel = _ref.accessibilityLabel;
|
18023 | var wasSelected = useRef(selected);
|
18024 | var panelFocused = useRef(false);
|
18025 | var node = useRef(null);
|
18026 |
|
18027 |
|
18028 |
|
18029 | useEffect(function () {
|
18030 | if (measuring) {
|
18031 | return;
|
18032 | }
|
18033 |
|
18034 |
|
18035 |
|
18036 |
|
18037 | var itemHadFocus = focused || document.activeElement && document.activeElement.id === id;
|
18038 |
|
18039 |
|
18040 | if (itemHadFocus && selected && panelID != null && !panelFocused.current) {
|
18041 | focusPanelID(panelID);
|
18042 | panelFocused.current = true;
|
18043 | }
|
18044 |
|
18045 | if (selected && !wasSelected.current && panelID != null) {
|
18046 | focusPanelID(panelID);
|
18047 | } else if (focused && node.current != null) {
|
18048 | focusFirstFocusableNode(node.current);
|
18049 | }
|
18050 |
|
18051 | wasSelected.current = selected;
|
18052 | }, [focused, id, measuring, panelID, selected]);
|
18053 | var handleClick = onClick && onClick.bind(null, id);
|
18054 | var className = classNames(styles$1y.Tab, selected && styles$1y['Tab-selected']);
|
18055 | var tabIndex;
|
18056 |
|
18057 | if (selected && !siblingTabHasFocus && !measuring) {
|
18058 | tabIndex = 0;
|
18059 | } else if (focused && !measuring) {
|
18060 | tabIndex = 0;
|
18061 | } else {
|
18062 | tabIndex = -1;
|
18063 | }
|
18064 |
|
18065 | var markup = url ? React__default.createElement(UnstyledLink, {
|
18066 | id: id,
|
18067 | url: url,
|
18068 | role: "tab",
|
18069 | tabIndex: tabIndex,
|
18070 | onClick: handleClick,
|
18071 | className: className,
|
18072 | "aria-selected": selected,
|
18073 | "aria-controls": panelID,
|
18074 | "aria-label": accessibilityLabel,
|
18075 | onMouseUp: handleMouseUpByBlurring
|
18076 | }, React__default.createElement("span", {
|
18077 | className: styles$1y.Title
|
18078 | }, children)) : React__default.createElement("button", {
|
18079 | id: id,
|
18080 | role: "tab",
|
18081 | type: "button",
|
18082 | tabIndex: tabIndex,
|
18083 | className: className,
|
18084 | onClick: handleClick,
|
18085 | "aria-selected": selected,
|
18086 | "aria-controls": panelID,
|
18087 | "aria-label": accessibilityLabel,
|
18088 | onMouseUp: handleMouseUpByBlurring
|
18089 | }, React__default.createElement("span", {
|
18090 | className: styles$1y.Title
|
18091 | }, children));
|
18092 | return React__default.createElement("li", {
|
18093 | className: styles$1y.TabContainer,
|
18094 | ref: node
|
18095 | }, markup);
|
18096 | }
|
18097 |
|
18098 | function focusPanelID(panelID) {
|
18099 | var panel = document.getElementById(panelID);
|
18100 |
|
18101 | if (panel) {
|
18102 | panel.focus({
|
18103 | preventScroll: true
|
18104 | });
|
18105 | }
|
18106 | }
|
18107 |
|
18108 | var TabMeasurer =
|
18109 |
|
18110 | function (_React$PureComponent) {
|
18111 | _inherits(TabMeasurer, _React$PureComponent);
|
18112 |
|
18113 | function TabMeasurer() {
|
18114 | var _this;
|
18115 |
|
18116 | _classCallCheck(this, TabMeasurer);
|
18117 |
|
18118 | _this = _possibleConstructorReturn(this, _getPrototypeOf(TabMeasurer).apply(this, arguments));
|
18119 | _this.containerNode = React__default.createRef();
|
18120 | _this.animationFrame = null;
|
18121 |
|
18122 | _this.handleMeasurement = function () {
|
18123 | if (_this.animationFrame) {
|
18124 | cancelAnimationFrame(_this.animationFrame);
|
18125 | }
|
18126 |
|
18127 | _this.animationFrame = requestAnimationFrame(function () {
|
18128 | if (!_this.containerNode.current) {
|
18129 | return;
|
18130 | }
|
18131 |
|
18132 | var handleMeasurement = _this.props.handleMeasurement;
|
18133 | var containerWidth = _this.containerNode.current.offsetWidth;
|
18134 | var hiddenTabNodes = _this.containerNode.current.children;
|
18135 | var hiddenTabNodesArray = Array.from(hiddenTabNodes);
|
18136 | var hiddenTabWidths = hiddenTabNodesArray.map(function (node) {
|
18137 | return node.getBoundingClientRect().width;
|
18138 | });
|
18139 | var disclosureWidth = hiddenTabWidths.pop();
|
18140 | handleMeasurement({
|
18141 | containerWidth,
|
18142 | disclosureWidth,
|
18143 | hiddenTabWidths
|
18144 | });
|
18145 | });
|
18146 | };
|
18147 |
|
18148 | return _this;
|
18149 | }
|
18150 |
|
18151 | _createClass(TabMeasurer, [{
|
18152 | key: "componentDidMount",
|
18153 | value: function componentDidMount() {
|
18154 | this.handleMeasurement();
|
18155 |
|
18156 | if (process.env.NODE_ENV === 'development') {
|
18157 |
|
18158 |
|
18159 | setTimeout(this.handleMeasurement, 0);
|
18160 | }
|
18161 | }
|
18162 | }, {
|
18163 | key: "componentDidUpdate",
|
18164 | value: function componentDidUpdate(prevProps) {
|
18165 | if (prevProps.tabs !== this.props.tabs) {
|
18166 | this.handleMeasurement();
|
18167 | }
|
18168 | }
|
18169 | }, {
|
18170 | key: "render",
|
18171 | value: function render() {
|
18172 | var _this$props = this.props,
|
18173 | selected = _this$props.selected,
|
18174 | tabs = _this$props.tabs,
|
18175 | activator = _this$props.activator,
|
18176 | tabToFocus = _this$props.tabToFocus,
|
18177 | siblingTabHasFocus = _this$props.siblingTabHasFocus;
|
18178 | var tabsMarkup = tabs.map(function (tab, index) {
|
18179 | return React__default.createElement(Tab, {
|
18180 | measuring: true,
|
18181 | key: "".concat(index).concat(tab.id, "Hidden"),
|
18182 | id: "".concat(tab.id, "Measurer"),
|
18183 | siblingTabHasFocus: siblingTabHasFocus,
|
18184 | focused: index === tabToFocus,
|
18185 | selected: index === selected,
|
18186 | onClick: noop$e,
|
18187 | url: tab.url
|
18188 | }, tab.content);
|
18189 | });
|
18190 | var classname = classNames(styles$1y.Tabs, styles$1y.TabMeasurer);
|
18191 | return React__default.createElement("div", {
|
18192 | className: classname,
|
18193 | ref: this.containerNode
|
18194 | }, React__default.createElement(EventListener, {
|
18195 | event: "resize",
|
18196 | handler: this.handleMeasurement
|
18197 | }), tabsMarkup, activator);
|
18198 | }
|
18199 | }]);
|
18200 |
|
18201 | return TabMeasurer;
|
18202 | }(React__default.PureComponent);
|
18203 |
|
18204 | function noop$e() {}
|
18205 |
|
18206 | var Tabs =
|
18207 |
|
18208 | function (_React$PureComponent) {
|
18209 | _inherits(Tabs, _React$PureComponent);
|
18210 |
|
18211 | function Tabs() {
|
18212 | var _this;
|
18213 |
|
18214 | _classCallCheck(this, Tabs);
|
18215 |
|
18216 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Tabs).apply(this, arguments));
|
18217 | _this.state = {
|
18218 | disclosureWidth: 0,
|
18219 | containerWidth: Infinity,
|
18220 | tabWidths: [],
|
18221 | visibleTabs: [],
|
18222 | hiddenTabs: [],
|
18223 | showDisclosure: false,
|
18224 | tabToFocus: -1
|
18225 | };
|
18226 |
|
18227 | _this.handleKeyPress = function (event) {
|
18228 | var _this$state = _this.state,
|
18229 | tabToFocus = _this$state.tabToFocus,
|
18230 | visibleTabs = _this$state.visibleTabs,
|
18231 | hiddenTabs = _this$state.hiddenTabs,
|
18232 | showDisclosure = _this$state.showDisclosure;
|
18233 | var key = event.key;
|
18234 | var tabsArrayInOrder = showDisclosure ? visibleTabs.concat(hiddenTabs) : _toConsumableArray(visibleTabs);
|
18235 | var newFocus = tabsArrayInOrder.indexOf(tabToFocus);
|
18236 |
|
18237 | if (key === 'ArrowRight' || key === 'ArrowDown') {
|
18238 | newFocus += 1;
|
18239 |
|
18240 | if (newFocus === tabsArrayInOrder.length) {
|
18241 | newFocus = 0;
|
18242 | }
|
18243 | }
|
18244 |
|
18245 | if (key === 'ArrowLeft' || key === 'ArrowUp') {
|
18246 | if (newFocus === -1 || newFocus === 0) {
|
18247 | newFocus = tabsArrayInOrder.length - 1;
|
18248 | } else {
|
18249 | newFocus -= 1;
|
18250 | }
|
18251 | }
|
18252 |
|
18253 | _this.setState({
|
18254 | tabToFocus: tabsArrayInOrder[newFocus]
|
18255 | });
|
18256 | };
|
18257 |
|
18258 | _this.renderTabMarkup = function (tab, index) {
|
18259 | var selected = _this.props.selected;
|
18260 | var tabToFocus = _this.state.tabToFocus;
|
18261 | return React__default.createElement(Tab, {
|
18262 | key: "".concat(index, "-").concat(tab.id),
|
18263 | id: tab.id,
|
18264 | siblingTabHasFocus: tabToFocus > -1,
|
18265 | focused: index === tabToFocus,
|
18266 | selected: index === selected,
|
18267 | onClick: _this.handleTabClick,
|
18268 | panelID: tab.panelID || "".concat(tab.id, "-panel"),
|
18269 | accessibilityLabel: tab.accessibilityLabel,
|
18270 | url: tab.url
|
18271 | }, tab.content);
|
18272 | };
|
18273 |
|
18274 | _this.handleFocus = function (event) {
|
18275 | var _this$props = _this.props,
|
18276 | selected = _this$props.selected,
|
18277 | tabs = _this$props.tabs;
|
18278 |
|
18279 | var target = event.target;
|
18280 |
|
18281 | if (target.classList.contains(styles$1y.Tab) || target.classList.contains(styles$1y.Item)) {
|
18282 | var tabToFocus = -1;
|
18283 | tabs.every(function (tab, index) {
|
18284 | if (tab.id === target.id) {
|
18285 | tabToFocus = index;
|
18286 | return false;
|
18287 | }
|
18288 |
|
18289 | return true;
|
18290 | });
|
18291 |
|
18292 | _this.setState({
|
18293 | tabToFocus
|
18294 | });
|
18295 |
|
18296 | return;
|
18297 | }
|
18298 |
|
18299 | if (target.classList.contains(styles$1y.DisclosureActivator)) {
|
18300 | return;
|
18301 | }
|
18302 |
|
18303 |
|
18304 |
|
18305 |
|
18306 | if (!event.relatedTarget) {
|
18307 | _this.setState({
|
18308 | tabToFocus: selected
|
18309 | });
|
18310 |
|
18311 | return;
|
18312 | }
|
18313 |
|
18314 | var relatedTarget = event.relatedTarget;
|
18315 |
|
18316 | if (!relatedTarget.classList.contains(styles$1y.Tab) && !relatedTarget.classList.contains(styles$1y.Item) && !relatedTarget.classList.contains(styles$1y.DisclosureActivator)) {
|
18317 | _this.setState({
|
18318 | tabToFocus: selected
|
18319 | });
|
18320 | }
|
18321 | };
|
18322 |
|
18323 | _this.handleBlur = function (event) {
|
18324 |
|
18325 | if (event.relatedTarget == null) {
|
18326 | _this.setState({
|
18327 | tabToFocus: -1
|
18328 | });
|
18329 |
|
18330 | return;
|
18331 | }
|
18332 |
|
18333 | var target = event.relatedTarget;
|
18334 |
|
18335 | if (!target.classList.contains(styles$1y.Tab) && !target.classList.contains(styles$1y.Item)) {
|
18336 | _this.setState({
|
18337 | tabToFocus: -1
|
18338 | });
|
18339 | }
|
18340 | };
|
18341 |
|
18342 | _this.handleDisclosureActivatorClick = function () {
|
18343 | _this.setState(function (_ref) {
|
18344 | var showDisclosure = _ref.showDisclosure;
|
18345 | return {
|
18346 | showDisclosure: !showDisclosure
|
18347 | };
|
18348 | });
|
18349 | };
|
18350 |
|
18351 | _this.handleClose = function () {
|
18352 | _this.setState({
|
18353 | showDisclosure: false
|
18354 | });
|
18355 | };
|
18356 |
|
18357 | _this.handleMeasurement = function (measurements) {
|
18358 | var _this$props2 = _this.props,
|
18359 | tabs = _this$props2.tabs,
|
18360 | selected = _this$props2.selected;
|
18361 | var tabToFocus = _this.state.tabToFocus;
|
18362 | var tabWidths = measurements.hiddenTabWidths,
|
18363 | containerWidth = measurements.containerWidth,
|
18364 | disclosureWidth = measurements.disclosureWidth;
|
18365 |
|
18366 | var _getVisibleAndHiddenT = getVisibleAndHiddenTabIndices(tabs, selected, disclosureWidth, tabWidths, containerWidth),
|
18367 | visibleTabs = _getVisibleAndHiddenT.visibleTabs,
|
18368 | hiddenTabs = _getVisibleAndHiddenT.hiddenTabs;
|
18369 |
|
18370 | _this.setState({
|
18371 | tabToFocus: tabToFocus === -1 ? -1 : selected,
|
18372 | visibleTabs,
|
18373 | hiddenTabs,
|
18374 | disclosureWidth,
|
18375 | containerWidth,
|
18376 | tabWidths
|
18377 | });
|
18378 | };
|
18379 |
|
18380 | _this.handleTabClick = function (id) {
|
18381 | var _this$props3 = _this.props,
|
18382 | tabs = _this$props3.tabs,
|
18383 | _this$props3$onSelect = _this$props3.onSelect,
|
18384 | onSelect = _this$props3$onSelect === void 0 ? noop$f : _this$props3$onSelect;
|
18385 | var tab = tabs.find(function (aTab) {
|
18386 | return aTab.id === id;
|
18387 | });
|
18388 |
|
18389 | if (tab == null) {
|
18390 | return;
|
18391 | }
|
18392 |
|
18393 | var selectedIndex = tabs.indexOf(tab);
|
18394 | onSelect(selectedIndex);
|
18395 | };
|
18396 |
|
18397 | return _this;
|
18398 | }
|
18399 |
|
18400 | _createClass(Tabs, [{
|
18401 | key: "render",
|
18402 | value: function render() {
|
18403 | var _this2 = this;
|
18404 |
|
18405 | var _this$props4 = this.props,
|
18406 | tabs = _this$props4.tabs,
|
18407 | selected = _this$props4.selected,
|
18408 | fitted = _this$props4.fitted,
|
18409 | children = _this$props4.children,
|
18410 | intl = _this$props4.polaris.intl;
|
18411 | var _this$state2 = this.state,
|
18412 | tabToFocus = _this$state2.tabToFocus,
|
18413 | visibleTabs = _this$state2.visibleTabs,
|
18414 | hiddenTabs = _this$state2.hiddenTabs,
|
18415 | showDisclosure = _this$state2.showDisclosure;
|
18416 | var disclosureTabs = hiddenTabs.map(function (tabIndex) {
|
18417 | return tabs[tabIndex];
|
18418 | });
|
18419 | var panelMarkup = children ? tabs.map(function (_tab, index) {
|
18420 | return selected === index ? React__default.createElement(Panel, {
|
18421 | id: tabs[index].panelID || "".concat(tabs[index].id, "-panel"),
|
18422 | tabID: tabs[index].id,
|
18423 | key: tabs[index].id
|
18424 | }, children) : React__default.createElement(Panel, {
|
18425 | id: tabs[index].panelID || "".concat(tabs[index].id, "-panel"),
|
18426 | tabID: tabs[index].id,
|
18427 | key: tabs[index].id,
|
18428 | hidden: true
|
18429 | });
|
18430 | }) : null;
|
18431 | var tabsMarkup = visibleTabs.sort(function (tabA, tabB) {
|
18432 | return tabA - tabB;
|
18433 | }).map(function (tabIndex) {
|
18434 | return _this2.renderTabMarkup(tabs[tabIndex], tabIndex);
|
18435 | });
|
18436 | var disclosureActivatorVisible = visibleTabs.length < tabs.length;
|
18437 | var classname = classNames(styles$1y.Tabs, fitted && styles$1y.fitted, disclosureActivatorVisible && styles$1y.fillSpace);
|
18438 | var disclosureTabClassName = classNames(styles$1y.DisclosureTab, disclosureActivatorVisible && styles$1y['DisclosureTab-visible']);
|
18439 | var activator = React__default.createElement("button", {
|
18440 | type: "button",
|
18441 | className: styles$1y.DisclosureActivator,
|
18442 | onClick: this.handleDisclosureActivatorClick,
|
18443 | "aria-label": intl.translate('Polaris.Tabs.toggleTabsLabel')
|
18444 | }, React__default.createElement("span", {
|
18445 | className: styles$1y.Title
|
18446 | }, React__default.createElement(Icon, {
|
18447 | source: HorizontalDotsMinor
|
18448 | })));
|
18449 | return React__default.createElement("div", null, React__default.createElement("ul", {
|
18450 | role: "tablist",
|
18451 | className: classname,
|
18452 | onFocus: this.handleFocus,
|
18453 | onBlur: this.handleBlur,
|
18454 | onKeyDown: handleKeyDown$2,
|
18455 | onKeyUp: this.handleKeyPress
|
18456 | }, tabsMarkup, React__default.createElement("li", {
|
18457 | className: disclosureTabClassName
|
18458 | }, React__default.createElement(Popover, {
|
18459 | preferredPosition: "below",
|
18460 | activator: activator,
|
18461 | active: disclosureActivatorVisible && showDisclosure,
|
18462 | onClose: this.handleClose
|
18463 | }, React__default.createElement(List$1, {
|
18464 | focusIndex: hiddenTabs.indexOf(tabToFocus),
|
18465 | disclosureTabs: disclosureTabs,
|
18466 | onClick: this.handleTabClick,
|
18467 | onKeyPress: this.handleKeyPress
|
18468 | })))), React__default.createElement(TabMeasurer, {
|
18469 | tabToFocus: tabToFocus,
|
18470 | activator: activator,
|
18471 | selected: selected,
|
18472 | tabs: tabs,
|
18473 | siblingTabHasFocus: tabToFocus > -1,
|
18474 | handleMeasurement: this.handleMeasurement
|
18475 | }), panelMarkup);
|
18476 | }
|
18477 | }], [{
|
18478 | key: "getDerivedStateFromProps",
|
18479 | value: function getDerivedStateFromProps(nextProps, prevState) {
|
18480 | var disclosureWidth = prevState.disclosureWidth,
|
18481 | tabWidths = prevState.tabWidths,
|
18482 | containerWidth = prevState.containerWidth;
|
18483 |
|
18484 | var _getVisibleAndHiddenT2 = getVisibleAndHiddenTabIndices(nextProps.tabs, nextProps.selected, disclosureWidth, tabWidths, containerWidth),
|
18485 | visibleTabs = _getVisibleAndHiddenT2.visibleTabs,
|
18486 | hiddenTabs = _getVisibleAndHiddenT2.hiddenTabs;
|
18487 |
|
18488 | return {
|
18489 | visibleTabs,
|
18490 | hiddenTabs,
|
18491 | selected: nextProps.selected
|
18492 | };
|
18493 | }
|
18494 | }]);
|
18495 |
|
18496 | return Tabs;
|
18497 | }(React__default.PureComponent);
|
18498 |
|
18499 | function noop$f() {}
|
18500 |
|
18501 | function handleKeyDown$2(event) {
|
18502 | var key = event.key;
|
18503 |
|
18504 | if (key === 'ArrowUp' || key === 'ArrowDown' || key === 'ArrowLeft' || key === 'ArrowRight') {
|
18505 | event.preventDefault();
|
18506 | event.stopPropagation();
|
18507 | }
|
18508 | }
|
18509 |
|
18510 |
|
18511 |
|
18512 | var Tabs$1 = withAppProvider()(Tabs);
|
18513 |
|
18514 | var styles$1z = {
|
18515 | "Thumbnail": "Polaris-Thumbnail",
|
18516 | "sizeSmall": "Polaris-Thumbnail--sizeSmall",
|
18517 | "sizeMedium": "Polaris-Thumbnail--sizeMedium",
|
18518 | "sizeLarge": "Polaris-Thumbnail--sizeLarge",
|
18519 | "Image": "Polaris-Thumbnail__Image"
|
18520 | };
|
18521 |
|
18522 | function Thumbnail(_ref) {
|
18523 | var source = _ref.source,
|
18524 | alt = _ref.alt,
|
18525 | _ref$size = _ref.size,
|
18526 | size = _ref$size === void 0 ? 'medium' : _ref$size;
|
18527 | var className = classNames(styles$1z.Thumbnail, size && styles$1z[variationName('size', size)]);
|
18528 | return React__default.createElement("span", {
|
18529 | className: className
|
18530 | }, React__default.createElement(Image, {
|
18531 | alt: alt,
|
18532 | source: source,
|
18533 | className: styles$1z.Image
|
18534 | }));
|
18535 | }
|
18536 |
|
18537 | var Toast$1 = React__default.memo(function Toast(props) {
|
18538 | var id = useUniqueId('Toast');
|
18539 | var appBridgeToast = useRef();
|
18540 |
|
18541 | var _useFrame = useFrame(),
|
18542 | showToast = _useFrame.showToast,
|
18543 | hideToast = _useFrame.hideToast;
|
18544 |
|
18545 | var appBridge = useAppBridge();
|
18546 | useDeepEffect(function () {
|
18547 | var error = props.error,
|
18548 | content = props.content,
|
18549 | _props$duration = props.duration,
|
18550 | duration = _props$duration === void 0 ? DEFAULT_TOAST_DURATION : _props$duration,
|
18551 | onDismiss = props.onDismiss;
|
18552 |
|
18553 | if (appBridge == null) {
|
18554 | showToast(Object.assign({
|
18555 | id
|
18556 | }, props));
|
18557 | } else {
|
18558 |
|
18559 | console.warn('Deprecation: Using `Toast` in an embedded app is deprecated and will be removed in v5.0. Use `Toast` from `@shopify/app-bridge-react` instead: https://help.shopify.com/en/api/embedded-apps/app-bridge/react-components/toast');
|
18560 | appBridgeToast.current = Toast$2.create(appBridge, {
|
18561 | message: content,
|
18562 | duration,
|
18563 | isError: error
|
18564 | });
|
18565 | appBridgeToast.current.subscribe(Toast$2.Action.CLEAR, onDismiss);
|
18566 | appBridgeToast.current.dispatch(Toast$2.Action.SHOW);
|
18567 | }
|
18568 |
|
18569 | return function () {
|
18570 | if (appBridge == null) {
|
18571 | hideToast({
|
18572 | id
|
18573 | });
|
18574 | } else if (appBridgeToast.current != null) {
|
18575 | appBridgeToast.current.unsubscribe();
|
18576 | }
|
18577 | };
|
18578 | }, [appBridge, props]);
|
18579 | return null;
|
18580 | });
|
18581 |
|
18582 | var styles$1A = {
|
18583 | "Search": "Polaris-TopBar-Search",
|
18584 | "visible": "Polaris-TopBar-Search--visible",
|
18585 | "Overlay": "Polaris-TopBar-Search__Overlay"
|
18586 | };
|
18587 |
|
18588 | var Search =
|
18589 |
|
18590 | function (_React$PureComponent) {
|
18591 | _inherits(Search, _React$PureComponent);
|
18592 |
|
18593 | function Search() {
|
18594 | var _this;
|
18595 |
|
18596 | _classCallCheck(this, Search);
|
18597 |
|
18598 | _this = _possibleConstructorReturn(this, _getPrototypeOf(Search).apply(this, arguments));
|
18599 | _this.node = React__default.createRef();
|
18600 |
|
18601 | _this.handleDismiss = function (_ref) {
|
18602 | var target = _ref.target;
|
18603 | var onDismiss = _this.props.onDismiss;
|
18604 |
|
18605 | if (onDismiss != null && target === _this.node.current) {
|
18606 | onDismiss();
|
18607 | }
|
18608 | };
|
18609 |
|
18610 | return _this;
|
18611 | }
|
18612 |
|
18613 | _createClass(Search, [{
|
18614 | key: "render",
|
18615 | value: function render() {
|
18616 | var _this$props = this.props,
|
18617 | visible = _this$props.visible,
|
18618 | children = _this$props.children;
|
18619 | var searchClassName = classNames(styles$1A.Search, visible && styles$1A.visible);
|
18620 | return React__default.createElement("div", {
|
18621 | ref: this.node,
|
18622 | className: searchClassName,
|
18623 | onClick: this.handleDismiss
|
18624 | }, React__default.createElement("div", {
|
18625 | className: styles$1A.Overlay
|
18626 | }, children));
|
18627 | }
|
18628 | }]);
|
18629 |
|
18630 | return Search;
|
18631 | }(React__default.PureComponent);
|
18632 |
|
18633 | var styles$1B = {
|
18634 | "SearchField": "Polaris-TopBar-SearchField",
|
18635 | "focused": "Polaris-TopBar-SearchField--focused",
|
18636 | "Input": "Polaris-TopBar-SearchField__Input",
|
18637 | "Backdrop": "Polaris-TopBar-SearchField__Backdrop",
|
18638 | "Icon": "Polaris-TopBar-SearchField__Icon",
|
18639 | "Clear": "Polaris-TopBar-SearchField__Clear",
|
18640 | "toLightBackground": "Polaris-TopBar-SearchField--toLightBackground"
|
18641 | };
|
18642 |
|
18643 | function SearchField(_ref) {
|
18644 | var value = _ref.value,
|
18645 | focused = _ref.focused,
|
18646 | active = _ref.active,
|
18647 | placeholder = _ref.placeholder,
|
18648 | onChange = _ref.onChange,
|
18649 | onFocus = _ref.onFocus,
|
18650 | onBlur = _ref.onBlur,
|
18651 | onCancel = _ref.onCancel;
|
18652 | var i18n = useI18n();
|
18653 | var input = useRef(null);
|
18654 | var searchId = useUniqueId('SearchField');
|
18655 | var handleChange = useCallback(function (_ref2) {
|
18656 | var currentTarget = _ref2.currentTarget;
|
18657 | onChange(currentTarget.value);
|
18658 | }, [onChange]);
|
18659 | var handleFocus = useCallback(function () {
|
18660 | return onFocus && onFocus();
|
18661 | }, [onFocus]);
|
18662 | var handleBlur = useCallback(function () {
|
18663 | return onBlur && onBlur();
|
18664 | }, [onBlur]);
|
18665 | var handleClear = useCallback(function () {
|
18666 | onCancel && onCancel();
|
18667 |
|
18668 | if (!input.current) {
|
18669 | return;
|
18670 | }
|
18671 |
|
18672 | input.current.value = '';
|
18673 | onChange('');
|
18674 | input.current.focus();
|
18675 | }, [onCancel, onChange]);
|
18676 | useEffect(function () {
|
18677 | if (!input.current) {
|
18678 | return;
|
18679 | }
|
18680 |
|
18681 | if (focused) {
|
18682 | input.current.focus();
|
18683 | } else {
|
18684 | input.current.blur();
|
18685 | }
|
18686 | }, [focused]);
|
18687 | var clearMarkup = value !== '' && React__default.createElement("button", {
|
18688 | type: "button",
|
18689 | "aria-label": i18n.translate('Polaris.TopBar.SearchField.clearButtonLabel'),
|
18690 | className: styles$1B.Clear,
|
18691 | onClick: handleClear
|
18692 | }, React__default.createElement(Icon, {
|
18693 | source: CircleCancelMinor
|
18694 | }));
|
18695 | var className = classNames(styles$1B.SearchField, (focused || active) && styles$1B.focused);
|
18696 | return React__default.createElement("div", {
|
18697 | className: className,
|
18698 | onFocus: handleFocus,
|
18699 | onBlur: handleBlur
|
18700 | }, React__default.createElement(VisuallyHidden, null, React__default.createElement("label", {
|
18701 | htmlFor: searchId
|
18702 | }, i18n.translate('Polaris.TopBar.SearchField.search'))), React__default.createElement("input", {
|
18703 | id: searchId,
|
18704 | className: styles$1B.Input,
|
18705 | placeholder: placeholder,
|
18706 | type: "search",
|
18707 | autoCapitalize: "off",
|
18708 | autoComplete: "off",
|
18709 | autoCorrect: "off",
|
18710 | ref: input,
|
18711 | value: value,
|
18712 | onChange: handleChange,
|
18713 | onKeyDown: preventDefault
|
18714 | }), React__default.createElement("span", {
|
18715 | className: styles$1B.Icon
|
18716 | }, React__default.createElement(Icon, {
|
18717 | source: SearchMinor
|
18718 | })), clearMarkup, React__default.createElement("div", {
|
18719 | className: styles$1B.Backdrop
|
18720 | }));
|
18721 | }
|
18722 |
|
18723 | function preventDefault(event) {
|
18724 | if (event.key === 'Enter') {
|
18725 | event.preventDefault();
|
18726 | }
|
18727 | }
|
18728 |
|
18729 | var styles$1C = {
|
18730 | "MessageIndicatorWrapper": "Polaris-MessageIndicator__MessageIndicatorWrapper",
|
18731 | "MessageIndicator": "Polaris-MessageIndicator"
|
18732 | };
|
18733 |
|
18734 | function MessageIndicator(_ref) {
|
18735 | var children = _ref.children,
|
18736 | active = _ref.active;
|
18737 | var indicatorMarkup = active && React__default.createElement("div", {
|
18738 | className: styles$1C.MessageIndicator
|
18739 | });
|
18740 | return React__default.createElement("div", {
|
18741 | className: styles$1C.MessageIndicatorWrapper
|
18742 | }, indicatorMarkup, children);
|
18743 | }
|
18744 |
|
18745 | var styles$1D = {
|
18746 | "Section": "Polaris-Menu-Message__Section"
|
18747 | };
|
18748 |
|
18749 | function Message(_ref) {
|
18750 | var title = _ref.title,
|
18751 | description = _ref.description,
|
18752 | action = _ref.action,
|
18753 | link = _ref.link,
|
18754 | badge = _ref.badge;
|
18755 | var badgeMarkup = badge && React__default.createElement(Badge, {
|
18756 | status: badge.status
|
18757 | }, badge.content);
|
18758 | var to = link.to,
|
18759 | linkContent = link.content;
|
18760 | var onClick = action.onClick,
|
18761 | actionContent = action.content;
|
18762 | return React__default.createElement("div", {
|
18763 | className: styles$1D.Section
|
18764 | }, React__default.createElement(Popover.Section, null, React__default.createElement(Stack, {
|
18765 | vertical: true,
|
18766 | spacing: "tight"
|
18767 | }, React__default.createElement(TextContainer, null, React__default.createElement(Heading, null, title, badgeMarkup), React__default.createElement("p", null, description)), React__default.createElement(Link, {
|
18768 | url: to
|
18769 | }, linkContent), React__default.createElement(Button, {
|
18770 | plain: true,
|
18771 | onClick: onClick
|
18772 | }, actionContent))));
|
18773 | }
|
18774 |
|
18775 | var styles$1E = {
|
18776 | "ActivatorWrapper": "Polaris-TopBar-Menu__ActivatorWrapper",
|
18777 | "Activator": "Polaris-TopBar-Menu__Activator",
|
18778 | "Section": "Polaris-TopBar-Menu__Section"
|
18779 | };
|
18780 |
|
18781 | function Menu(props) {
|
18782 | var actions = props.actions,
|
18783 | onOpen = props.onOpen,
|
18784 | onClose = props.onClose,
|
18785 | open = props.open,
|
18786 | activatorContent = props.activatorContent,
|
18787 | message = props.message;
|
18788 | var badgeProps = message && message.badge && {
|
18789 | content: message.badge.content,
|
18790 | status: message.badge.status
|
18791 | };
|
18792 | var messageMarkup = message && React__default.createElement(Message, {
|
18793 | title: message.title,
|
18794 | description: message.description,
|
18795 | action: {
|
18796 | onClick: message.action.onClick,
|
18797 | content: message.action.content
|
18798 | },
|
18799 | link: {
|
18800 | to: message.link.to,
|
18801 | content: message.link.content
|
18802 | },
|
18803 | badge: badgeProps
|
18804 | });
|
18805 | var isFullHeight = Boolean(message);
|
18806 | return React__default.createElement(Popover, {
|
18807 | activator: React__default.createElement("div", {
|
18808 | className: styles$1E.ActivatorWrapper
|
18809 | }, React__default.createElement("button", {
|
18810 | type: "button",
|
18811 | className: styles$1E.Activator,
|
18812 | onClick: onOpen
|
18813 | }, activatorContent)),
|
18814 | active: open,
|
18815 | onClose: onClose,
|
18816 | fixed: true,
|
18817 | fullHeight: isFullHeight
|
18818 | }, React__default.createElement(ActionList, {
|
18819 | onActionAnyItem: onClose,
|
18820 | sections: actions
|
18821 | }), messageMarkup);
|
18822 | }
|
18823 |
|
18824 | var styles$1F = {
|
18825 | "Details": "Polaris-TopBar-UserMenu__Details",
|
18826 | "Name": "Polaris-TopBar-UserMenu__Name",
|
18827 | "Detail": "Polaris-TopBar-UserMenu__Detail"
|
18828 | };
|
18829 |
|
18830 | function UserMenu(_ref) {
|
18831 | var name = _ref.name,
|
18832 | detail = _ref.detail,
|
18833 | avatar = _ref.avatar,
|
18834 | initials = _ref.initials,
|
18835 | actions = _ref.actions,
|
18836 | message = _ref.message,
|
18837 | onToggle = _ref.onToggle,
|
18838 | open = _ref.open;
|
18839 | var showIndicator = Boolean(message);
|
18840 | var activatorContentMarkup = React__default.createElement(React__default.Fragment, null, React__default.createElement(MessageIndicator, {
|
18841 | active: showIndicator
|
18842 | }, React__default.createElement(Avatar, {
|
18843 | size: "small",
|
18844 | source: avatar,
|
18845 | initials: initials && initials.replace(' ', '')
|
18846 | })), React__default.createElement("span", {
|
18847 | className: styles$1F.Details
|
18848 | }, React__default.createElement("p", {
|
18849 | className: styles$1F.Name
|
18850 | }, name), React__default.createElement("p", {
|
18851 | className: styles$1F.Detail
|
18852 | }, detail)));
|
18853 | return React__default.createElement(Menu, {
|
18854 | activatorContent: activatorContentMarkup,
|
18855 | open: open,
|
18856 | onOpen: onToggle,
|
18857 | onClose: onToggle,
|
18858 | actions: actions,
|
18859 | message: message
|
18860 | });
|
18861 | }
|
18862 |
|
18863 | var styles$1G = {
|
18864 | "TopBar": "Polaris-TopBar",
|
18865 | "LogoContainer": "Polaris-TopBar__LogoContainer",
|
18866 | "ContextControl": "Polaris-TopBar__ContextControl",
|
18867 | "Logo": "Polaris-TopBar__Logo",
|
18868 | "LogoLink": "Polaris-TopBar__LogoLink",
|
18869 | "NavigationIcon": "Polaris-TopBar__NavigationIcon",
|
18870 | "focused": "Polaris-TopBar--focused",
|
18871 | "Contents": "Polaris-TopBar__Contents",
|
18872 | "SearchField": "Polaris-TopBar__SearchField",
|
18873 | "SecondaryMenu": "Polaris-TopBar__SecondaryMenu"
|
18874 | };
|
18875 |
|
18876 |
|
18877 |
|
18878 |
|
18879 |
|
18880 | var TopBar = function TopBar(_ref) {
|
18881 | var showNavigationToggle = _ref.showNavigationToggle,
|
18882 | userMenu = _ref.userMenu,
|
18883 | searchResults = _ref.searchResults,
|
18884 | searchField = _ref.searchField,
|
18885 | secondaryMenu = _ref.secondaryMenu,
|
18886 | searchResultsVisible = _ref.searchResultsVisible,
|
18887 | onNavigationToggle = _ref.onNavigationToggle,
|
18888 | onSearchResultsDismiss = _ref.onSearchResultsDismiss,
|
18889 | contextControl = _ref.contextControl;
|
18890 | var i18n = useI18n();
|
18891 |
|
18892 | var _useTheme = useTheme(),
|
18893 | logo = _useTheme.logo;
|
18894 |
|
18895 | var _useForcibleToggle = useForcibleToggle(false),
|
18896 | _useForcibleToggle2 = _slicedToArray(_useForcibleToggle, 2),
|
18897 | focused = _useForcibleToggle2[0],
|
18898 | _useForcibleToggle2$ = _useForcibleToggle2[1],
|
18899 | forceTrueFocused = _useForcibleToggle2$.forceTrue,
|
18900 | forceFalseFocused = _useForcibleToggle2$.forceFalse;
|
18901 |
|
18902 | var className = classNames(styles$1G.NavigationIcon, focused && styles$1G.focused);
|
18903 | var navigationButtonMarkup = showNavigationToggle ? React__default.createElement("button", {
|
18904 | type: "button",
|
18905 | className: className,
|
18906 | onClick: onNavigationToggle,
|
18907 | onFocus: forceTrueFocused,
|
18908 | onBlur: forceFalseFocused,
|
18909 | "aria-label": i18n.translate('Polaris.TopBar.toggleMenuLabel')
|
18910 | }, React__default.createElement(Icon, {
|
18911 | source: MobileHamburgerMajorMonotone,
|
18912 | color: "white"
|
18913 | })) : null;
|
18914 | var width = getWidth(logo, 104);
|
18915 | var contextMarkup;
|
18916 |
|
18917 | if (contextControl) {
|
18918 | contextMarkup = React__default.createElement("div", {
|
18919 | className: styles$1G.ContextControl
|
18920 | }, contextControl);
|
18921 | } else if (logo) {
|
18922 | contextMarkup = React__default.createElement("div", {
|
18923 | className: styles$1G.LogoContainer
|
18924 | }, React__default.createElement(UnstyledLink, {
|
18925 | url: logo.url || '',
|
18926 | className: styles$1G.LogoLink,
|
18927 | style: {
|
18928 | width
|
18929 | }
|
18930 | }, React__default.createElement(Image, {
|
18931 | source: logo.topBarSource || '',
|
18932 | alt: logo.accessibilityLabel || '',
|
18933 | className: styles$1G.Logo,
|
18934 | style: {
|
18935 | width
|
18936 | }
|
18937 | })));
|
18938 | }
|
18939 |
|
18940 | var searchResultsMarkup = searchResults && searchResultsVisible ? React__default.createElement(Search, {
|
18941 | visible: searchResultsVisible,
|
18942 | onDismiss: onSearchResultsDismiss
|
18943 | }, searchResults) : null;
|
18944 | var searchMarkup = searchField ? React__default.createElement(React__default.Fragment, null, searchField, searchResultsMarkup) : null;
|
18945 | return React__default.createElement("div", {
|
18946 | className: styles$1G.TopBar
|
18947 | }, navigationButtonMarkup, contextMarkup, React__default.createElement("div", {
|
18948 | className: styles$1G.Contents
|
18949 | }, React__default.createElement("div", {
|
18950 | className: styles$1G.SearchField
|
18951 | }, searchMarkup), React__default.createElement("div", {
|
18952 | className: styles$1G.SecondaryMenu
|
18953 | }, secondaryMenu), userMenu));
|
18954 | };
|
18955 | TopBar.Menu = Menu;
|
18956 | TopBar.SearchField = SearchField;
|
18957 | TopBar.UserMenu = UserMenu;
|
18958 |
|
18959 |
|
18960 |
|
18961 | export { AccountConnection, ActionList, ActionMenu, AppBridgeContext, AppProvider, Autocomplete, Avatar, Backdrop, Badge, Banner, Breadcrumbs, Button, ButtonGroup, CalloutCard, Caption, Card, Checkbox$1 as Checkbox, ChoiceList, Collapsible, ColorPicker, Connected, ContextualSaveBar, DATA_ATTRIBUTE, DEFAULT_TOAST_DURATION, DEFAULT_TOAST_DURATION_WITH_ACTION, DataTable$1 as DataTable, DatePicker, DescriptionList, DisplayText, DropZone, EmptySearchResult, EmptyState, EventListener, ExceptionList, FilterType, Filters$1 as Filters, Focus, FooterHelp, Form, FormLayout, Frame$1 as Frame, Heading, Icon, Image, Indicator, InlineError, Key, KeyboardKey, KeypressListener, Label, Labelled, Layout, Link, List, Loading$1 as Loading, Modal$1 as Modal, Navigation$1 as Navigation, OptionList, Page$1 as Page, PageActions, Pagination, PolarisTestProvider, Popover, CloseSource as PopoverCloseSource, Portal, ProgressBar, RadioButton, RangeSlider, ResourceItem, ResourceList$1 as ResourceList, ResourcePicker$1 as ResourcePicker, ScrollLock, Scrollable, Select, SettingToggle, Sheet, SkeletonBodyText, SkeletonDisplayText, SkeletonPage, SkeletonThumbnail, Spinner, Stack, Sticky$1 as Sticky, Subheading, Tabs$1 as Tabs, Tag, TextContainer, TextField, TextStyle, ThemeProvider, Thumbnail, Toast$1 as Toast, Tooltip, TopBar, TrapFocus, Truncate, TypeOf, UNSTABLE_Color, Tokens as UNSTABLE_Tokens, buildColors as UNSTABLE_buildColors, roleVariants as UNSTABLE_roleVariants, toCssCustomPropertySyntax as UNSTABLE_toCssCustomPropertySyntax, UnstyledLink, VisuallyHidden, ScrollLockManagerContext as _SECRET_INTERNAL_SCROLL_LOCK_MANAGER_CONTEXT, WithinContentContext as _SECRET_INTERNAL_WITHIN_CONTENT_CONTEXT, buttonFrom, buttonsFrom, errorTextID, hsbToHex, hsbToRgb, hslToRgb, isNavigationItemActive, rgbString, rgbToHex, rgbToHsb, rgbToHsl, rgbaString };
|