PluginProbe
Gutenberg / 8.5.1
Gutenberg v8.5.1
24.0.0 23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 All 403 releases
← All changes | build/compose/index.js +1 -4796 12.6.0 → 8.5.1 View file →
@@ -1,4796 +1 @@
1 -/******/ (function() { // webpackBootstrap
2 -/******/ var __webpack_modules__ = ({
3 -
4 -/***/ 2152:
5 -/***/ (function(module) {
6 -
7 -/*!
8 - * clipboard.js v2.0.8
9 - * https://clipboardjs.com/
10 - *
11 - * Licensed MIT © Zeno Rocha
12 - */
13 -(function webpackUniversalModuleDefinition(root, factory) {
14 - if(true)
15 - module.exports = factory();
16 - else {}
17 -})(this, function() {
18 -return /******/ (function() { // webpackBootstrap
19 -/******/ var __webpack_modules__ = ({
20 -
21 -/***/ 134:
22 -/***/ (function(__unused_webpack_module, __webpack_exports__, __nested_webpack_require_622__) {
23 -
24 -"use strict";
25 -
26 -// EXPORTS
27 -__nested_webpack_require_622__.d(__webpack_exports__, {
28 - "default": function() { return /* binding */ clipboard; }
29 -});
30 -
31 -// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js
32 -var tiny_emitter = __nested_webpack_require_622__(279);
33 -var tiny_emitter_default = /*#__PURE__*/__nested_webpack_require_622__.n(tiny_emitter);
34 -// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js
35 -var listen = __nested_webpack_require_622__(370);
36 -var listen_default = /*#__PURE__*/__nested_webpack_require_622__.n(listen);
37 -// EXTERNAL MODULE: ./node_modules/select/src/select.js
38 -var src_select = __nested_webpack_require_622__(817);
39 -var select_default = /*#__PURE__*/__nested_webpack_require_622__.n(src_select);
40 -;// CONCATENATED MODULE: ./src/clipboard-action.js
41 -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
42 -
43 -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
44 -
45 -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
46 -
47 -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
48 -
49 -
50 -/**
51 - * Inner class which performs selection from either `text` or `target`
52 - * properties and then executes copy or cut operations.
53 - */
54 -
55 -var ClipboardAction = /*#__PURE__*/function () {
56 - /**
57 - * @param {Object} options
58 - */
59 - function ClipboardAction(options) {
60 - _classCallCheck(this, ClipboardAction);
61 -
62 - this.resolveOptions(options);
63 - this.initSelection();
64 - }
65 - /**
66 - * Defines base properties passed from constructor.
67 - * @param {Object} options
68 - */
69 -
70 -
71 - _createClass(ClipboardAction, [{
72 - key: "resolveOptions",
73 - value: function resolveOptions() {
74 - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
75 - this.action = options.action;
76 - this.container = options.container;
77 - this.emitter = options.emitter;
78 - this.target = options.target;
79 - this.text = options.text;
80 - this.trigger = options.trigger;
81 - this.selectedText = '';
82 - }
83 - /**
84 - * Decides which selection strategy is going to be applied based
85 - * on the existence of `text` and `target` properties.
86 - */
87 -
88 - }, {
89 - key: "initSelection",
90 - value: function initSelection() {
91 - if (this.text) {
92 - this.selectFake();
93 - } else if (this.target) {
94 - this.selectTarget();
95 - }
96 - }
97 - /**
98 - * Creates a fake textarea element, sets its value from `text` property,
99 - */
100 -
101 - }, {
102 - key: "createFakeElement",
103 - value: function createFakeElement() {
104 - var isRTL = document.documentElement.getAttribute('dir') === 'rtl';
105 - this.fakeElem = document.createElement('textarea'); // Prevent zooming on iOS
106 -
107 - this.fakeElem.style.fontSize = '12pt'; // Reset box model
108 -
109 - this.fakeElem.style.border = '0';
110 - this.fakeElem.style.padding = '0';
111 - this.fakeElem.style.margin = '0'; // Move element out of screen horizontally
112 -
113 - this.fakeElem.style.position = 'absolute';
114 - this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically
115 -
116 - var yPosition = window.pageYOffset || document.documentElement.scrollTop;
117 - this.fakeElem.style.top = "".concat(yPosition, "px");
118 - this.fakeElem.setAttribute('readonly', '');
119 - this.fakeElem.value = this.text;
120 - return this.fakeElem;
121 - }
122 - /**
123 - * Get's the value of fakeElem,
124 - * and makes a selection on it.
125 - */
126 -
127 - }, {
128 - key: "selectFake",
129 - value: function selectFake() {
130 - var _this = this;
131 -
132 - var fakeElem = this.createFakeElement();
133 -
134 - this.fakeHandlerCallback = function () {
135 - return _this.removeFake();
136 - };
137 -
138 - this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;
139 - this.container.appendChild(fakeElem);
140 - this.selectedText = select_default()(fakeElem);
141 - this.copyText();
142 - this.removeFake();
143 - }
144 - /**
145 - * Only removes the fake element after another click event, that way
146 - * a user can hit `Ctrl+C` to copy because selection still exists.
147 - */
148 -
149 - }, {
150 - key: "removeFake",
151 - value: function removeFake() {
152 - if (this.fakeHandler) {
153 - this.container.removeEventListener('click', this.fakeHandlerCallback);
154 - this.fakeHandler = null;
155 - this.fakeHandlerCallback = null;
156 - }
157 -
158 - if (this.fakeElem) {
159 - this.container.removeChild(this.fakeElem);
160 - this.fakeElem = null;
161 - }
162 - }
163 - /**
164 - * Selects the content from element passed on `target` property.
165 - */
166 -
167 - }, {
168 - key: "selectTarget",
169 - value: function selectTarget() {
170 - this.selectedText = select_default()(this.target);
171 - this.copyText();
172 - }
173 - /**
174 - * Executes the copy operation based on the current selection.
175 - */
176 -
177 - }, {
178 - key: "copyText",
179 - value: function copyText() {
180 - var succeeded;
181 -
182 - try {
183 - succeeded = document.execCommand(this.action);
184 - } catch (err) {
185 - succeeded = false;
186 - }
187 -
188 - this.handleResult(succeeded);
189 - }
190 - /**
191 - * Fires an event based on the copy operation result.
192 - * @param {Boolean} succeeded
193 - */
194 -
195 - }, {
196 - key: "handleResult",
197 - value: function handleResult(succeeded) {
198 - this.emitter.emit(succeeded ? 'success' : 'error', {
199 - action: this.action,
200 - text: this.selectedText,
201 - trigger: this.trigger,
202 - clearSelection: this.clearSelection.bind(this)
203 - });
204 - }
205 - /**
206 - * Moves focus away from `target` and back to the trigger, removes current selection.
207 - */
208 -
209 - }, {
210 - key: "clearSelection",
211 - value: function clearSelection() {
212 - if (this.trigger) {
213 - this.trigger.focus();
214 - }
215 -
216 - document.activeElement.blur();
217 - window.getSelection().removeAllRanges();
218 - }
219 - /**
220 - * Sets the `action` to be performed which can be either 'copy' or 'cut'.
221 - * @param {String} action
222 - */
223 -
224 - }, {
225 - key: "destroy",
226 -
227 - /**
228 - * Destroy lifecycle.
229 - */
230 - value: function destroy() {
231 - this.removeFake();
232 - }
233 - }, {
234 - key: "action",
235 - set: function set() {
236 - var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';
237 - this._action = action;
238 -
239 - if (this._action !== 'copy' && this._action !== 'cut') {
240 - throw new Error('Invalid "action" value, use either "copy" or "cut"');
241 - }
242 - }
243 - /**
244 - * Gets the `action` property.
245 - * @return {String}
246 - */
247 - ,
248 - get: function get() {
249 - return this._action;
250 - }
251 - /**
252 - * Sets the `target` property using an element
253 - * that will be have its content copied.
254 - * @param {Element} target
255 - */
256 -
257 - }, {
258 - key: "target",
259 - set: function set(target) {
260 - if (target !== undefined) {
261 - if (target && _typeof(target) === 'object' && target.nodeType === 1) {
262 - if (this.action === 'copy' && target.hasAttribute('disabled')) {
263 - throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
264 - }
265 -
266 - if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {
267 - throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
268 - }
269 -
270 - this._target = target;
271 - } else {
272 - throw new Error('Invalid "target" value, use a valid Element');
273 - }
274 - }
275 - }
276 - /**
277 - * Gets the `target` property.
278 - * @return {String|HTMLElement}
279 - */
280 - ,
281 - get: function get() {
282 - return this._target;
283 - }
284 - }]);
285 -
286 - return ClipboardAction;
287 -}();
288 -
289 -/* harmony default export */ var clipboard_action = (ClipboardAction);
290 -;// CONCATENATED MODULE: ./src/clipboard.js
291 -function clipboard_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return clipboard_typeof(obj); }
292 -
293 -function clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
294 -
295 -function clipboard_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
296 -
297 -function clipboard_createClass(Constructor, protoProps, staticProps) { if (protoProps) clipboard_defineProperties(Constructor.prototype, protoProps); if (staticProps) clipboard_defineProperties(Constructor, staticProps); return Constructor; }
298 -
299 -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
300 -
301 -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
302 -
303 -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
304 -
305 -function _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
306 -
307 -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
308 -
309 -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
310 -
311 -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
312 -
313 -
314 -
315 -
316 -/**
317 - * Helper function to retrieve attribute value.
318 - * @param {String} suffix
319 - * @param {Element} element
320 - */
321 -
322 -function getAttributeValue(suffix, element) {
323 - var attribute = "data-clipboard-".concat(suffix);
324 -
325 - if (!element.hasAttribute(attribute)) {
326 - return;
327 - }
328 -
329 - return element.getAttribute(attribute);
330 -}
331 -/**
332 - * Base class which takes one or more elements, adds event listeners to them,
333 - * and instantiates a new `ClipboardAction` on each click.
334 - */
335 -
336 -
337 -var Clipboard = /*#__PURE__*/function (_Emitter) {
338 - _inherits(Clipboard, _Emitter);
339 -
340 - var _super = _createSuper(Clipboard);
341 -
342 - /**
343 - * @param {String|HTMLElement|HTMLCollection|NodeList} trigger
344 - * @param {Object} options
345 - */
346 - function Clipboard(trigger, options) {
347 - var _this;
348 -
349 - clipboard_classCallCheck(this, Clipboard);
350 -
351 - _this = _super.call(this);
352 -
353 - _this.resolveOptions(options);
354 -
355 - _this.listenClick(trigger);
356 -
357 - return _this;
358 - }
359 - /**
360 - * Defines if attributes would be resolved using internal setter functions
361 - * or custom functions that were passed in the constructor.
362 - * @param {Object} options
363 - */
364 -
365 -
366 - clipboard_createClass(Clipboard, [{
367 - key: "resolveOptions",
368 - value: function resolveOptions() {
369 - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
370 - this.action = typeof options.action === 'function' ? options.action : this.defaultAction;
371 - this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;
372 - this.text = typeof options.text === 'function' ? options.text : this.defaultText;
373 - this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;
374 - }
375 - /**
376 - * Adds a click event listener to the passed trigger.
377 - * @param {String|HTMLElement|HTMLCollection|NodeList} trigger
378 - */
379 -
380 - }, {
381 - key: "listenClick",
382 - value: function listenClick(trigger) {
383 - var _this2 = this;
384 -
385 - this.listener = listen_default()(trigger, 'click', function (e) {
386 - return _this2.onClick(e);
387 - });
388 - }
389 - /**
390 - * Defines a new `ClipboardAction` on each click event.
391 - * @param {Event} e
392 - */
393 -
394 - }, {
395 - key: "onClick",
396 - value: function onClick(e) {
397 - var trigger = e.delegateTarget || e.currentTarget;
398 -
399 - if (this.clipboardAction) {
400 - this.clipboardAction = null;
401 - }
402 -
403 - this.clipboardAction = new clipboard_action({
404 - action: this.action(trigger),
405 - target: this.target(trigger),
406 - text: this.text(trigger),
407 - container: this.container,
408 - trigger: trigger,
409 - emitter: this
410 - });
411 - }
412 - /**
413 - * Default `action` lookup function.
414 - * @param {Element} trigger
415 - */
416 -
417 - }, {
418 - key: "defaultAction",
419 - value: function defaultAction(trigger) {
420 - return getAttributeValue('action', trigger);
421 - }
422 - /**
423 - * Default `target` lookup function.
424 - * @param {Element} trigger
425 - */
426 -
427 - }, {
428 - key: "defaultTarget",
429 - value: function defaultTarget(trigger) {
430 - var selector = getAttributeValue('target', trigger);
431 -
432 - if (selector) {
433 - return document.querySelector(selector);
434 - }
435 - }
436 - /**
437 - * Returns the support of the given action, or all actions if no action is
438 - * given.
439 - * @param {String} [action]
440 - */
441 -
442 - }, {
443 - key: "defaultText",
444 -
445 - /**
446 - * Default `text` lookup function.
447 - * @param {Element} trigger
448 - */
449 - value: function defaultText(trigger) {
450 - return getAttributeValue('text', trigger);
451 - }
452 - /**
453 - * Destroy lifecycle.
454 - */
455 -
456 - }, {
457 - key: "destroy",
458 - value: function destroy() {
459 - this.listener.destroy();
460 -
461 - if (this.clipboardAction) {
462 - this.clipboardAction.destroy();
463 - this.clipboardAction = null;
464 - }
465 - }
466 - }], [{
467 - key: "isSupported",
468 - value: function isSupported() {
469 - var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];
470 - var actions = typeof action === 'string' ? [action] : action;
471 - var support = !!document.queryCommandSupported;
472 - actions.forEach(function (action) {
473 - support = support && !!document.queryCommandSupported(action);
474 - });
475 - return support;
476 - }
477 - }]);
478 -
479 - return Clipboard;
480 -}((tiny_emitter_default()));
481 -
482 -/* harmony default export */ var clipboard = (Clipboard);
483 -
484 -/***/ }),
485 -
486 -/***/ 828:
487 -/***/ (function(module) {
488 -
489 -var DOCUMENT_NODE_TYPE = 9;
490 -
491 -/**
492 - * A polyfill for Element.matches()
493 - */
494 -if (typeof Element !== 'undefined' && !Element.prototype.matches) {
495 - var proto = Element.prototype;
496 -
497 - proto.matches = proto.matchesSelector ||
498 - proto.mozMatchesSelector ||
499 - proto.msMatchesSelector ||
500 - proto.oMatchesSelector ||
501 - proto.webkitMatchesSelector;
502 -}
503 -
504 -/**
505 - * Finds the closest parent that matches a selector.
506 - *
507 - * @param {Element} element
508 - * @param {String} selector
509 - * @return {Function}
510 - */
511 -function closest (element, selector) {
512 - while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {
513 - if (typeof element.matches === 'function' &&
514 - element.matches(selector)) {
515 - return element;
516 - }
517 - element = element.parentNode;
518 - }
519 -}
520 -
521 -module.exports = closest;
522 -
523 -
524 -/***/ }),
525 -
526 -/***/ 438:
527 -/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_17417__) {
528 -
529 -var closest = __nested_webpack_require_17417__(828);
530 -
531 -/**
532 - * Delegates event to a selector.
533 - *
534 - * @param {Element} element
535 - * @param {String} selector
536 - * @param {String} type
537 - * @param {Function} callback
538 - * @param {Boolean} useCapture
539 - * @return {Object}
540 - */
541 -function _delegate(element, selector, type, callback, useCapture) {
542 - var listenerFn = listener.apply(this, arguments);
543 -
544 - element.addEventListener(type, listenerFn, useCapture);
545 -
546 - return {
547 - destroy: function() {
548 - element.removeEventListener(type, listenerFn, useCapture);
549 - }
550 - }
551 -}
552 -
553 -/**
554 - * Delegates event to a selector.
555 - *
556 - * @param {Element|String|Array} [elements]
557 - * @param {String} selector
558 - * @param {String} type
559 - * @param {Function} callback
560 - * @param {Boolean} useCapture
561 - * @return {Object}
562 - */
563 -function delegate(elements, selector, type, callback, useCapture) {
564 - // Handle the regular Element usage
565 - if (typeof elements.addEventListener === 'function') {
566 - return _delegate.apply(null, arguments);
567 - }
568 -
569 - // Handle Element-less usage, it defaults to global delegation
570 - if (typeof type === 'function') {
571 - // Use `document` as the first parameter, then apply arguments
572 - // This is a short way to .unshift `arguments` without running into deoptimizations
573 - return _delegate.bind(null, document).apply(null, arguments);
574 - }
575 -
576 - // Handle Selector-based usage
577 - if (typeof elements === 'string') {
578 - elements = document.querySelectorAll(elements);
579 - }
580 -
581 - // Handle Array-like based usage
582 - return Array.prototype.map.call(elements, function (element) {
583 - return _delegate(element, selector, type, callback, useCapture);
584 - });
585 -}
586 -
587 -/**
588 - * Finds closest match and invokes callback.
589 - *
590 - * @param {Element} element
591 - * @param {String} selector
592 - * @param {String} type
593 - * @param {Function} callback
594 - * @return {Function}
595 - */
596 -function listener(element, selector, type, callback) {
597 - return function(e) {
598 - e.delegateTarget = closest(e.target, selector);
599 -
600 - if (e.delegateTarget) {
601 - callback.call(element, e);
602 - }
603 - }
604 -}
605 -
606 -module.exports = delegate;
607 -
608 -
609 -/***/ }),
610 -
611 -/***/ 879:
612 -/***/ (function(__unused_webpack_module, exports) {
613 -
614 -/**
615 - * Check if argument is a HTML element.
616 - *
617 - * @param {Object} value
618 - * @return {Boolean}
619 - */
620 -exports.node = function(value) {
621 - return value !== undefined
622 - && value instanceof HTMLElement
623 - && value.nodeType === 1;
624 -};
625 -
626 -/**
627 - * Check if argument is a list of HTML elements.
628 - *
629 - * @param {Object} value
630 - * @return {Boolean}
631 - */
632 -exports.nodeList = function(value) {
633 - var type = Object.prototype.toString.call(value);
634 -
635 - return value !== undefined
636 - && (type === '[object NodeList]' || type === '[object HTMLCollection]')
637 - && ('length' in value)
638 - && (value.length === 0 || exports.node(value[0]));
639 -};
640 -
641 -/**
642 - * Check if argument is a string.
643 - *
644 - * @param {Object} value
645 - * @return {Boolean}
646 - */
647 -exports.string = function(value) {
648 - return typeof value === 'string'
649 - || value instanceof String;
650 -};
651 -
652 -/**
653 - * Check if argument is a function.
654 - *
655 - * @param {Object} value
656 - * @return {Boolean}
657 - */
658 -exports.fn = function(value) {
659 - var type = Object.prototype.toString.call(value);
660 -
661 - return type === '[object Function]';
662 -};
663 -
664 -
665 -/***/ }),
666 -
667 -/***/ 370:
668 -/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_20781__) {
669 -
670 -var is = __nested_webpack_require_20781__(879);
671 -var delegate = __nested_webpack_require_20781__(438);
672 -
673 -/**
674 - * Validates all params and calls the right
675 - * listener function based on its target type.
676 - *
677 - * @param {String|HTMLElement|HTMLCollection|NodeList} target
678 - * @param {String} type
679 - * @param {Function} callback
680 - * @return {Object}
681 - */
682 -function listen(target, type, callback) {
683 - if (!target && !type && !callback) {
684 - throw new Error('Missing required arguments');
685 - }
686 -
687 - if (!is.string(type)) {
688 - throw new TypeError('Second argument must be a String');
689 - }
690 -
691 - if (!is.fn(callback)) {
692 - throw new TypeError('Third argument must be a Function');
693 - }
694 -
695 - if (is.node(target)) {
696 - return listenNode(target, type, callback);
697 - }
698 - else if (is.nodeList(target)) {
699 - return listenNodeList(target, type, callback);
700 - }
701 - else if (is.string(target)) {
702 - return listenSelector(target, type, callback);
703 - }
704 - else {
705 - throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');
706 - }
707 -}
708 -
709 -/**
710 - * Adds an event listener to a HTML element
711 - * and returns a remove listener function.
712 - *
713 - * @param {HTMLElement} node
714 - * @param {String} type
715 - * @param {Function} callback
716 - * @return {Object}
717 - */
718 -function listenNode(node, type, callback) {
719 - node.addEventListener(type, callback);
720 -
721 - return {
722 - destroy: function() {
723 - node.removeEventListener(type, callback);
724 - }
725 - }
726 -}
727 -
728 -/**
729 - * Add an event listener to a list of HTML elements
730 - * and returns a remove listener function.
731 - *
732 - * @param {NodeList|HTMLCollection} nodeList
733 - * @param {String} type
734 - * @param {Function} callback
735 - * @return {Object}
736 - */
737 -function listenNodeList(nodeList, type, callback) {
738 - Array.prototype.forEach.call(nodeList, function(node) {
739 - node.addEventListener(type, callback);
740 - });
741 -
742 - return {
743 - destroy: function() {
744 - Array.prototype.forEach.call(nodeList, function(node) {
745 - node.removeEventListener(type, callback);
746 - });
747 - }
748 - }
749 -}
750 -
751 -/**
752 - * Add an event listener to a selector
753 - * and returns a remove listener function.
754 - *
755 - * @param {String} selector
756 - * @param {String} type
757 - * @param {Function} callback
758 - * @return {Object}
759 - */
760 -function listenSelector(selector, type, callback) {
761 - return delegate(document.body, selector, type, callback);
762 -}
763 -
764 -module.exports = listen;
765 -
766 -
767 -/***/ }),
768 -
769 -/***/ 817:
770 -/***/ (function(module) {
771 -
772 -function select(element) {
773 - var selectedText;
774 -
775 - if (element.nodeName === 'SELECT') {
776 - element.focus();
777 -
778 - selectedText = element.value;
779 - }
780 - else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {
781 - var isReadOnly = element.hasAttribute('readonly');
782 -
783 - if (!isReadOnly) {
784 - element.setAttribute('readonly', '');
785 - }
786 -
787 - element.select();
788 - element.setSelectionRange(0, element.value.length);
789 -
790 - if (!isReadOnly) {
791 - element.removeAttribute('readonly');
792 - }
793 -
794 - selectedText = element.value;
795 - }
796 - else {
797 - if (element.hasAttribute('contenteditable')) {
798 - element.focus();
799 - }
800 -
801 - var selection = window.getSelection();
802 - var range = document.createRange();
803 -
804 - range.selectNodeContents(element);
805 - selection.removeAllRanges();
806 - selection.addRange(range);
807 -
808 - selectedText = selection.toString();
809 - }
810 -
811 - return selectedText;
812 -}
813 -
814 -module.exports = select;
815 -
816 -
817 -/***/ }),
818 -
819 -/***/ 279:
820 -/***/ (function(module) {
821 -
822 -function E () {
823 - // Keep this empty so it's easier to inherit from
824 - // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
825 -}
826 -
827 -E.prototype = {
828 - on: function (name, callback, ctx) {
829 - var e = this.e || (this.e = {});
830 -
831 - (e[name] || (e[name] = [])).push({
832 - fn: callback,
833 - ctx: ctx
834 - });
835 -
836 - return this;
837 - },
838 -
839 - once: function (name, callback, ctx) {
840 - var self = this;
841 - function listener () {
842 - self.off(name, listener);
843 - callback.apply(ctx, arguments);
844 - };
845 -
846 - listener._ = callback
847 - return this.on(name, listener, ctx);
848 - },
849 -
850 - emit: function (name) {
851 - var data = [].slice.call(arguments, 1);
852 - var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
853 - var i = 0;
854 - var len = evtArr.length;
855 -
856 - for (i; i < len; i++) {
857 - evtArr[i].fn.apply(evtArr[i].ctx, data);
858 - }
859 -
860 - return this;
861 - },
862 -
863 - off: function (name, callback) {
864 - var e = this.e || (this.e = {});
865 - var evts = e[name];
866 - var liveEvents = [];
867 -
868 - if (evts && callback) {
869 - for (var i = 0, len = evts.length; i < len; i++) {
870 - if (evts[i].fn !== callback && evts[i].fn._ !== callback)
871 - liveEvents.push(evts[i]);
872 - }
873 - }
874 -
875 - // Remove event from queue to prevent memory leak
876 - // Suggested by https://github.com/lazd
877 - // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910
878 -
879 - (liveEvents.length)
880 - ? e[name] = liveEvents
881 - : delete e[name];
882 -
883 - return this;
884 - }
885 -};
886 -
887 -module.exports = E;
888 -module.exports.TinyEmitter = E;
889 -
890 -
891 -/***/ })
892 -
893 -/******/ });
894 -/************************************************************************/
895 -/******/ // The module cache
896 -/******/ var __webpack_module_cache__ = {};
897 -/******/
898 -/******/ // The require function
899 -/******/ function __nested_webpack_require_26163__(moduleId) {
900 -/******/ // Check if module is in cache
901 -/******/ if(__webpack_module_cache__[moduleId]) {
902 -/******/ return __webpack_module_cache__[moduleId].exports;
903 -/******/ }
904 -/******/ // Create a new module (and put it into the cache)
905 -/******/ var module = __webpack_module_cache__[moduleId] = {
906 -/******/ // no module.id needed
907 -/******/ // no module.loaded needed
908 -/******/ exports: {}
909 -/******/ };
910 -/******/
911 -/******/ // Execute the module function
912 -/******/ __webpack_modules__[moduleId](module, module.exports, __nested_webpack_require_26163__);
913 -/******/
914 -/******/ // Return the exports of the module
915 -/******/ return module.exports;
916 -/******/ }
917 -/******/
918 -/************************************************************************/
919 -/******/ /* webpack/runtime/compat get default export */
920 -/******/ !function() {
921 -/******/ // getDefaultExport function for compatibility with non-harmony modules
922 -/******/ __nested_webpack_require_26163__.n = function(module) {
923 -/******/ var getter = module && module.__esModule ?
924 -/******/ function() { return module['default']; } :
925 -/******/ function() { return module; };
926 -/******/ __nested_webpack_require_26163__.d(getter, { a: getter });
927 -/******/ return getter;
928 -/******/ };
929 -/******/ }();
930 -/******/
931 -/******/ /* webpack/runtime/define property getters */
932 -/******/ !function() {
933 -/******/ // define getter functions for harmony exports
934 -/******/ __nested_webpack_require_26163__.d = function(exports, definition) {
935 -/******/ for(var key in definition) {
936 -/******/ if(__nested_webpack_require_26163__.o(definition, key) && !__nested_webpack_require_26163__.o(exports, key)) {
937 -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
938 -/******/ }
939 -/******/ }
940 -/******/ };
941 -/******/ }();
942 -/******/
943 -/******/ /* webpack/runtime/hasOwnProperty shorthand */
944 -/******/ !function() {
945 -/******/ __nested_webpack_require_26163__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
946 -/******/ }();
947 -/******/
948 -/************************************************************************/
949 -/******/ // module exports must be returned from runtime so entry inlining is disabled
950 -/******/ // startup
951 -/******/ // Load entry module and return exports
952 -/******/ return __nested_webpack_require_26163__(134);
953 -/******/ })()
954 -.default;
955 -});
956 -
957 -/***/ }),
958 -
959 -/***/ 2441:
960 -/***/ (function(module, exports, __webpack_require__) {
961 -
962 -var __WEBPACK_AMD_DEFINE_RESULT__;/*global define:false */
963 -/**
964 - * Copyright 2012-2017 Craig Campbell
965 - *
966 - * Licensed under the Apache License, Version 2.0 (the "License");
967 - * you may not use this file except in compliance with the License.
968 - * You may obtain a copy of the License at
969 - *
970 - * http://www.apache.org/licenses/LICENSE-2.0
971 - *
972 - * Unless required by applicable law or agreed to in writing, software
973 - * distributed under the License is distributed on an "AS IS" BASIS,
974 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
975 - * See the License for the specific language governing permissions and
976 - * limitations under the License.
977 - *
978 - * Mousetrap is a simple keyboard shortcut library for Javascript with
979 - * no external dependencies
980 - *
981 - * @version 1.6.5
982 - * @url craig.is/killing/mice
983 - */
984 -(function(window, document, undefined) {
985 -
986 - // Check if mousetrap is used inside browser, if not, return
987 - if (!window) {
988 - return;
989 - }
990 -
991 - /**
992 - * mapping of special keycodes to their corresponding keys
993 - *
994 - * everything in this dictionary cannot use keypress events
995 - * so it has to be here to map to the correct keycodes for
996 - * keyup/keydown events
997 - *
998 - * @type {Object}
999 - */
1000 - var _MAP = {
1001 - 8: 'backspace',
1002 - 9: 'tab',
1003 - 13: 'enter',
1004 - 16: 'shift',
1005 - 17: 'ctrl',
1006 - 18: 'alt',
1007 - 20: 'capslock',
1008 - 27: 'esc',
1009 - 32: 'space',
1010 - 33: 'pageup',
1011 - 34: 'pagedown',
1012 - 35: 'end',
1013 - 36: 'home',
1014 - 37: 'left',
1015 - 38: 'up',
1016 - 39: 'right',
1017 - 40: 'down',
1018 - 45: 'ins',
1019 - 46: 'del',
1020 - 91: 'meta',
1021 - 93: 'meta',
1022 - 224: 'meta'
1023 - };
1024 -
1025 - /**
1026 - * mapping for special characters so they can support
1027 - *
1028 - * this dictionary is only used incase you want to bind a
1029 - * keyup or keydown event to one of these keys
1030 - *
1031 - * @type {Object}
1032 - */
1033 - var _KEYCODE_MAP = {
1034 - 106: '*',
1035 - 107: '+',
1036 - 109: '-',
1037 - 110: '.',
1038 - 111 : '/',
1039 - 186: ';',
1040 - 187: '=',
1041 - 188: ',',
1042 - 189: '-',
1043 - 190: '.',
1044 - 191: '/',
1045 - 192: '`',
1046 - 219: '[',
1047 - 220: '\\',
1048 - 221: ']',
1049 - 222: '\''
1050 - };
1051 -
1052 - /**
1053 - * this is a mapping of keys that require shift on a US keypad
1054 - * back to the non shift equivelents
1055 - *
1056 - * this is so you can use keyup events with these keys
1057 - *
1058 - * note that this will only work reliably on US keyboards
1059 - *
1060 - * @type {Object}
1061 - */
1062 - var _SHIFT_MAP = {
1063 - '~': '`',
1064 - '!': '1',
1065 - '@': '2',
1066 - '#': '3',
1067 - '$': '4',
1068 - '%': '5',
1069 - '^': '6',
1070 - '&': '7',
1071 - '*': '8',
1072 - '(': '9',
1073 - ')': '0',
1074 - '_': '-',
1075 - '+': '=',
1076 - ':': ';',
1077 - '\"': '\'',
1078 - '<': ',',
1079 - '>': '.',
1080 - '?': '/',
1081 - '|': '\\'
1082 - };
1083 -
1084 - /**
1085 - * this is a list of special strings you can use to map
1086 - * to modifier keys when you specify your keyboard shortcuts
1087 - *
1088 - * @type {Object}
1089 - */
1090 - var _SPECIAL_ALIASES = {
1091 - 'option': 'alt',
1092 - 'command': 'meta',
1093 - 'return': 'enter',
1094 - 'escape': 'esc',
1095 - 'plus': '+',
1096 - 'mod': /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl'
1097 - };
1098 -
1099 - /**
1100 - * variable to store the flipped version of _MAP from above
1101 - * needed to check if we should use keypress or not when no action
1102 - * is specified
1103 - *
1104 - * @type {Object|undefined}
1105 - */
1106 - var _REVERSE_MAP;
1107 -
1108 - /**
1109 - * loop through the f keys, f1 to f19 and add them to the map
1110 - * programatically
1111 - */
1112 - for (var i = 1; i < 20; ++i) {
1113 - _MAP[111 + i] = 'f' + i;
1114 - }
1115 -
1116 - /**
1117 - * loop through to map numbers on the numeric keypad
1118 - */
1119 - for (i = 0; i <= 9; ++i) {
1120 -
1121 - // This needs to use a string cause otherwise since 0 is falsey
1122 - // mousetrap will never fire for numpad 0 pressed as part of a keydown
1123 - // event.
1124 - //
1125 - // @see https://github.com/ccampbell/mousetrap/pull/258
1126 - _MAP[i + 96] = i.toString();
1127 - }
1128 -
1129 - /**
1130 - * cross browser add event method
1131 - *
1132 - * @param {Element|HTMLDocument} object
1133 - * @param {string} type
1134 - * @param {Function} callback
1135 - * @returns void
1136 - */
1137 - function _addEvent(object, type, callback) {
1138 - if (object.addEventListener) {
1139 - object.addEventListener(type, callback, false);
1140 - return;
1141 - }
1142 -
1143 - object.attachEvent('on' + type, callback);
1144 - }
1145 -
1146 - /**
1147 - * takes the event and returns the key character
1148 - *
1149 - * @param {Event} e
1150 - * @return {string}
1151 - */
1152 - function _characterFromEvent(e) {
1153 -
1154 - // for keypress events we should return the character as is
1155 - if (e.type == 'keypress') {
1156 - var character = String.fromCharCode(e.which);
1157 -
1158 - // if the shift key is not pressed then it is safe to assume
1159 - // that we want the character to be lowercase. this means if
1160 - // you accidentally have caps lock on then your key bindings
1161 - // will continue to work
1162 - //
1163 - // the only side effect that might not be desired is if you
1164 - // bind something like 'A' cause you want to trigger an
1165 - // event when capital A is pressed caps lock will no longer
1166 - // trigger the event. shift+a will though.
1167 - if (!e.shiftKey) {
1168 - character = character.toLowerCase();
1169 - }
1170 -
1171 - return character;
1172 - }
1173 -
1174 - // for non keypress events the special maps are needed
1175 - if (_MAP[e.which]) {
1176 - return _MAP[e.which];
1177 - }
1178 -
1179 - if (_KEYCODE_MAP[e.which]) {
1180 - return _KEYCODE_MAP[e.which];
1181 - }
1182 -
1183 - // if it is not in the special map
1184 -
1185 - // with keydown and keyup events the character seems to always
1186 - // come in as an uppercase character whether you are pressing shift
1187 - // or not. we should make sure it is always lowercase for comparisons
1188 - return String.fromCharCode(e.which).toLowerCase();
1189 - }
1190 -
1191 - /**
1192 - * checks if two arrays are equal
1193 - *
1194 - * @param {Array} modifiers1
1195 - * @param {Array} modifiers2
1196 - * @returns {boolean}
1197 - */
1198 - function _modifiersMatch(modifiers1, modifiers2) {
1199 - return modifiers1.sort().join(',') === modifiers2.sort().join(',');
1200 - }
1201 -
1202 - /**
1203 - * takes a key event and figures out what the modifiers are
1204 - *
1205 - * @param {Event} e
1206 - * @returns {Array}
1207 - */
1208 - function _eventModifiers(e) {
1209 - var modifiers = [];
1210 -
1211 - if (e.shiftKey) {
1212 - modifiers.push('shift');
1213 - }
1214 -
1215 - if (e.altKey) {
1216 - modifiers.push('alt');
1217 - }
1218 -
1219 - if (e.ctrlKey) {
1220 - modifiers.push('ctrl');
1221 - }
1222 -
1223 - if (e.metaKey) {
1224 - modifiers.push('meta');
1225 - }
1226 -
1227 - return modifiers;
1228 - }
1229 -
1230 - /**
1231 - * prevents default for this event
1232 - *
1233 - * @param {Event} e
1234 - * @returns void
1235 - */
1236 - function _preventDefault(e) {
1237 - if (e.preventDefault) {
1238 - e.preventDefault();
1239 - return;
1240 - }
1241 -
1242 - e.returnValue = false;
1243 - }
1244 -
1245 - /**
1246 - * stops propogation for this event
1247 - *
1248 - * @param {Event} e
1249 - * @returns void
1250 - */
1251 - function _stopPropagation(e) {
1252 - if (e.stopPropagation) {
1253 - e.stopPropagation();
1254 - return;
1255 - }
1256 -
1257 - e.cancelBubble = true;
1258 - }
1259 -
1260 - /**
1261 - * determines if the keycode specified is a modifier key or not
1262 - *
1263 - * @param {string} key
1264 - * @returns {boolean}
1265 - */
1266 - function _isModifier(key) {
1267 - return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';
1268 - }
1269 -
1270 - /**
1271 - * reverses the map lookup so that we can look for specific keys
1272 - * to see what can and can't use keypress
1273 - *
1274 - * @return {Object}
1275 - */
1276 - function _getReverseMap() {
1277 - if (!_REVERSE_MAP) {
1278 - _REVERSE_MAP = {};
1279 - for (var key in _MAP) {
1280 -
1281 - // pull out the numeric keypad from here cause keypress should
1282 - // be able to detect the keys from the character
1283 - if (key > 95 && key < 112) {
1284 - continue;
1285 - }
1286 -
1287 - if (_MAP.hasOwnProperty(key)) {
1288 - _REVERSE_MAP[_MAP[key]] = key;
1289 - }
1290 - }
1291 - }
1292 - return _REVERSE_MAP;
1293 - }
1294 -
1295 - /**
1296 - * picks the best action based on the key combination
1297 - *
1298 - * @param {string} key - character for key
1299 - * @param {Array} modifiers
1300 - * @param {string=} action passed in
1301 - */
1302 - function _pickBestAction(key, modifiers, action) {
1303 -
1304 - // if no action was picked in we should try to pick the one
1305 - // that we think would work best for this key
1306 - if (!action) {
1307 - action = _getReverseMap()[key] ? 'keydown' : 'keypress';
1308 - }
1309 -
1310 - // modifier keys don't work as expected with keypress,
1311 - // switch to keydown
1312 - if (action == 'keypress' && modifiers.length) {
1313 - action = 'keydown';
1314 - }
1315 -
1316 - return action;
1317 - }
1318 -
1319 - /**
1320 - * Converts from a string key combination to an array
1321 - *
1322 - * @param {string} combination like "command+shift+l"
1323 - * @return {Array}
1324 - */
1325 - function _keysFromString(combination) {
1326 - if (combination === '+') {
1327 - return ['+'];
1328 - }
1329 -
1330 - combination = combination.replace(/\+{2}/g, '+plus');
1331 - return combination.split('+');
1332 - }
1333 -
1334 - /**
1335 - * Gets info for a specific key combination
1336 - *
1337 - * @param {string} combination key combination ("command+s" or "a" or "*")
1338 - * @param {string=} action
1339 - * @returns {Object}
1340 - */
1341 - function _getKeyInfo(combination, action) {
1342 - var keys;
1343 - var key;
1344 - var i;
1345 - var modifiers = [];
1346 -
1347 - // take the keys from this pattern and figure out what the actual
1348 - // pattern is all about
1349 - keys = _keysFromString(combination);
1350 -
1351 - for (i = 0; i < keys.length; ++i) {
1352 - key = keys[i];
1353 -
1354 - // normalize key names
1355 - if (_SPECIAL_ALIASES[key]) {
1356 - key = _SPECIAL_ALIASES[key];
1357 - }
1358 -
1359 - // if this is not a keypress event then we should
1360 - // be smart about using shift keys
1361 - // this will only work for US keyboards however
1362 - if (action && action != 'keypress' && _SHIFT_MAP[key]) {
1363 - key = _SHIFT_MAP[key];
1364 - modifiers.push('shift');
1365 - }
1366 -
1367 - // if this key is a modifier then add it to the list of modifiers
1368 - if (_isModifier(key)) {
1369 - modifiers.push(key);
1370 - }
1371 - }
1372 -
1373 - // depending on what the key combination is
1374 - // we will try to pick the best event for it
1375 - action = _pickBestAction(key, modifiers, action);
1376 -
1377 - return {
1378 - key: key,
1379 - modifiers: modifiers,
1380 - action: action
1381 - };
1382 - }
1383 -
1384 - function _belongsTo(element, ancestor) {
1385 - if (element === null || element === document) {
1386 - return false;
1387 - }
1388 -
1389 - if (element === ancestor) {
1390 - return true;
1391 - }
1392 -
1393 - return _belongsTo(element.parentNode, ancestor);
1394 - }
1395 -
1396 - function Mousetrap(targetElement) {
1397 - var self = this;
1398 -
1399 - targetElement = targetElement || document;
1400 -
1401 - if (!(self instanceof Mousetrap)) {
1402 - return new Mousetrap(targetElement);
1403 - }
1404 -
1405 - /**
1406 - * element to attach key events to
1407 - *
1408 - * @type {Element}
1409 - */
1410 - self.target = targetElement;
1411 -
1412 - /**
1413 - * a list of all the callbacks setup via Mousetrap.bind()
1414 - *
1415 - * @type {Object}
1416 - */
1417 - self._callbacks = {};
1418 -
1419 - /**
1420 - * direct map of string combinations to callbacks used for trigger()
1421 - *
1422 - * @type {Object}
1423 - */
1424 - self._directMap = {};
1425 -
1426 - /**
1427 - * keeps track of what level each sequence is at since multiple
1428 - * sequences can start out with the same sequence
1429 - *
1430 - * @type {Object}
1431 - */
1432 - var _sequenceLevels = {};
1433 -
1434 - /**
1435 - * variable to store the setTimeout call
1436 - *
1437 - * @type {null|number}
1438 - */
1439 - var _resetTimer;
1440 -
1441 - /**
1442 - * temporary state where we will ignore the next keyup
1443 - *
1444 - * @type {boolean|string}
1445 - */
1446 - var _ignoreNextKeyup = false;
1447 -
1448 - /**
1449 - * temporary state where we will ignore the next keypress
1450 - *
1451 - * @type {boolean}
1452 - */
1453 - var _ignoreNextKeypress = false;
1454 -
1455 - /**
1456 - * are we currently inside of a sequence?
1457 - * type of action ("keyup" or "keydown" or "keypress") or false
1458 - *
1459 - * @type {boolean|string}
1460 - */
1461 - var _nextExpectedAction = false;
1462 -
1463 - /**
1464 - * resets all sequence counters except for the ones passed in
1465 - *
1466 - * @param {Object} doNotReset
1467 - * @returns void
1468 - */
1469 - function _resetSequences(doNotReset) {
1470 - doNotReset = doNotReset || {};
1471 -
1472 - var activeSequences = false,
1473 - key;
1474 -
1475 - for (key in _sequenceLevels) {
1476 - if (doNotReset[key]) {
1477 - activeSequences = true;
1478 - continue;
1479 - }
1480 - _sequenceLevels[key] = 0;
1481 - }
1482 -
1483 - if (!activeSequences) {
1484 - _nextExpectedAction = false;
1485 - }
1486 - }
1487 -
1488 - /**
1489 - * finds all callbacks that match based on the keycode, modifiers,
1490 - * and action
1491 - *
1492 - * @param {string} character
1493 - * @param {Array} modifiers
1494 - * @param {Event|Object} e
1495 - * @param {string=} sequenceName - name of the sequence we are looking for
1496 - * @param {string=} combination
1497 - * @param {number=} level
1498 - * @returns {Array}
1499 - */
1500 - function _getMatches(character, modifiers, e, sequenceName, combination, level) {
1501 - var i;
1502 - var callback;
1503 - var matches = [];
1504 - var action = e.type;
1505 -
1506 - // if there are no events related to this keycode
1507 - if (!self._callbacks[character]) {
1508 - return [];
1509 - }
1510 -
1511 - // if a modifier key is coming up on its own we should allow it
1512 - if (action == 'keyup' && _isModifier(character)) {
1513 - modifiers = [character];
1514 - }
1515 -
1516 - // loop through all callbacks for the key that was pressed
1517 - // and see if any of them match
1518 - for (i = 0; i < self._callbacks[character].length; ++i) {
1519 - callback = self._callbacks[character][i];
1520 -
1521 - // if a sequence name is not specified, but this is a sequence at
1522 - // the wrong level then move onto the next match
1523 - if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {
1524 - continue;
1525 - }
1526 -
1527 - // if the action we are looking for doesn't match the action we got
1528 - // then we should keep going
1529 - if (action != callback.action) {
1530 - continue;
1531 - }
1532 -
1533 - // if this is a keypress event and the meta key and control key
1534 - // are not pressed that means that we need to only look at the
1535 - // character, otherwise check the modifiers as well
1536 - //
1537 - // chrome will not fire a keypress if meta or control is down
1538 - // safari will fire a keypress if meta or meta+shift is down
1539 - // firefox will fire a keypress if meta or control is down
1540 - if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {
1541 -
1542 - // when you bind a combination or sequence a second time it
1543 - // should overwrite the first one. if a sequenceName or
1544 - // combination is specified in this call it does just that
1545 - //
1546 - // @todo make deleting its own method?
1547 - var deleteCombo = !sequenceName && callback.combo == combination;
1548 - var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;
1549 - if (deleteCombo || deleteSequence) {
1550 - self._callbacks[character].splice(i, 1);
1551 - }
1552 -
1553 - matches.push(callback);
1554 - }
1555 - }
1556 -
1557 - return matches;
1558 - }
1559 -
1560 - /**
1561 - * actually calls the callback function
1562 - *
1563 - * if your callback function returns false this will use the jquery
1564 - * convention - prevent default and stop propogation on the event
1565 - *
1566 - * @param {Function} callback
1567 - * @param {Event} e
1568 - * @returns void
1569 - */
1570 - function _fireCallback(callback, e, combo, sequence) {
1571 -
1572 - // if this event should not happen stop here
1573 - if (self.stopCallback(e, e.target || e.srcElement, combo, sequence)) {
1574 - return;
1575 - }
1576 -
1577 - if (callback(e, combo) === false) {
1578 - _preventDefault(e);
1579 - _stopPropagation(e);
1580 - }
1581 - }
1582 -
1583 - /**
1584 - * handles a character key event
1585 - *
1586 - * @param {string} character
1587 - * @param {Array} modifiers
1588 - * @param {Event} e
1589 - * @returns void
1590 - */
1591 - self._handleKey = function(character, modifiers, e) {
1592 - var callbacks = _getMatches(character, modifiers, e);
1593 - var i;
1594 - var doNotReset = {};
1595 - var maxLevel = 0;
1596 - var processedSequenceCallback = false;
1597 -
1598 - // Calculate the maxLevel for sequences so we can only execute the longest callback sequence
1599 - for (i = 0; i < callbacks.length; ++i) {
1600 - if (callbacks[i].seq) {
1601 - maxLevel = Math.max(maxLevel, callbacks[i].level);
1602 - }
1603 - }
1604 -
1605 - // loop through matching callbacks for this key event
1606 - for (i = 0; i < callbacks.length; ++i) {
1607 -
1608 - // fire for all sequence callbacks
1609 - // this is because if for example you have multiple sequences
1610 - // bound such as "g i" and "g t" they both need to fire the
1611 - // callback for matching g cause otherwise you can only ever
1612 - // match the first one
1613 - if (callbacks[i].seq) {
1614 -
1615 - // only fire callbacks for the maxLevel to prevent
1616 - // subsequences from also firing
1617 - //
1618 - // for example 'a option b' should not cause 'option b' to fire
1619 - // even though 'option b' is part of the other sequence
1620 - //
1621 - // any sequences that do not match here will be discarded
1622 - // below by the _resetSequences call
1623 - if (callbacks[i].level != maxLevel) {
1624 - continue;
1625 - }
1626 -
1627 - processedSequenceCallback = true;
1628 -
1629 - // keep a list of which sequences were matches for later
1630 - doNotReset[callbacks[i].seq] = 1;
1631 - _fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);
1632 - continue;
1633 - }
1634 -
1635 - // if there were no sequence matches but we are still here
1636 - // that means this is a regular match so we should fire that
1637 - if (!processedSequenceCallback) {
1638 - _fireCallback(callbacks[i].callback, e, callbacks[i].combo);
1639 - }
1640 - }
1641 -
1642 - // if the key you pressed matches the type of sequence without
1643 - // being a modifier (ie "keyup" or "keypress") then we should
1644 - // reset all sequences that were not matched by this event
1645 - //
1646 - // this is so, for example, if you have the sequence "h a t" and you
1647 - // type "h e a r t" it does not match. in this case the "e" will
1648 - // cause the sequence to reset
1649 - //
1650 - // modifier keys are ignored because you can have a sequence
1651 - // that contains modifiers such as "enter ctrl+space" and in most
1652 - // cases the modifier key will be pressed before the next key
1653 - //
1654 - // also if you have a sequence such as "ctrl+b a" then pressing the
1655 - // "b" key will trigger a "keypress" and a "keydown"
1656 - //
1657 - // the "keydown" is expected when there is a modifier, but the
1658 - // "keypress" ends up matching the _nextExpectedAction since it occurs
1659 - // after and that causes the sequence to reset
1660 - //
1661 - // we ignore keypresses in a sequence that directly follow a keydown
1662 - // for the same character
1663 - var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;
1664 - if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {
1665 - _resetSequences(doNotReset);
1666 - }
1667 -
1668 - _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';
1669 - };
1670 -
1671 - /**
1672 - * handles a keydown event
1673 - *
1674 - * @param {Event} e
1675 - * @returns void
1676 - */
1677 - function _handleKeyEvent(e) {
1678 -
1679 - // normalize e.which for key events
1680 - // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion
1681 - if (typeof e.which !== 'number') {
1682 - e.which = e.keyCode;
1683 - }
1684 -
1685 - var character = _characterFromEvent(e);
1686 -
1687 - // no character found then stop
1688 - if (!character) {
1689 - return;
1690 - }
1691 -
1692 - // need to use === for the character check because the character can be 0
1693 - if (e.type == 'keyup' && _ignoreNextKeyup === character) {
1694 - _ignoreNextKeyup = false;
1695 - return;
1696 - }
1697 -
1698 - self.handleKey(character, _eventModifiers(e), e);
1699 - }
1700 -
1701 - /**
1702 - * called to set a 1 second timeout on the specified sequence
1703 - *
1704 - * this is so after each key press in the sequence you have 1 second
1705 - * to press the next key before you have to start over
1706 - *
1707 - * @returns void
1708 - */
1709 - function _resetSequenceTimer() {
1710 - clearTimeout(_resetTimer);
1711 - _resetTimer = setTimeout(_resetSequences, 1000);
1712 - }
1713 -
1714 - /**
1715 - * binds a key sequence to an event
1716 - *
1717 - * @param {string} combo - combo specified in bind call
1718 - * @param {Array} keys
1719 - * @param {Function} callback
1720 - * @param {string=} action
1721 - * @returns void
1722 - */
1723 - function _bindSequence(combo, keys, callback, action) {
1724 -
1725 - // start off by adding a sequence level record for this combination
1726 - // and setting the level to 0
1727 - _sequenceLevels[combo] = 0;
1728 -
1729 - /**
1730 - * callback to increase the sequence level for this sequence and reset
1731 - * all other sequences that were active
1732 - *
1733 - * @param {string} nextAction
1734 - * @returns {Function}
1735 - */
1736 - function _increaseSequence(nextAction) {
1737 - return function() {
1738 - _nextExpectedAction = nextAction;
1739 - ++_sequenceLevels[combo];
1740 - _resetSequenceTimer();
1741 - };
1742 - }
1743 -
1744 - /**
1745 - * wraps the specified callback inside of another function in order
1746 - * to reset all sequence counters as soon as this sequence is done
1747 - *
1748 - * @param {Event} e
1749 - * @returns void
1750 - */
1751 - function _callbackAndReset(e) {
1752 - _fireCallback(callback, e, combo);
1753 -
1754 - // we should ignore the next key up if the action is key down
1755 - // or keypress. this is so if you finish a sequence and
1756 - // release the key the final key will not trigger a keyup
1757 - if (action !== 'keyup') {
1758 - _ignoreNextKeyup = _characterFromEvent(e);
1759 - }
1760 -
1761 - // weird race condition if a sequence ends with the key
1762 - // another sequence begins with
1763 - setTimeout(_resetSequences, 10);
1764 - }
1765 -
1766 - // loop through keys one at a time and bind the appropriate callback
1767 - // function. for any key leading up to the final one it should
1768 - // increase the sequence. after the final, it should reset all sequences
1769 - //
1770 - // if an action is specified in the original bind call then that will
1771 - // be used throughout. otherwise we will pass the action that the
1772 - // next key in the sequence should match. this allows a sequence
1773 - // to mix and match keypress and keydown events depending on which
1774 - // ones are better suited to the key provided
1775 - for (var i = 0; i < keys.length; ++i) {
1776 - var isFinal = i + 1 === keys.length;
1777 - var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);
1778 - _bindSingle(keys[i], wrappedCallback, action, combo, i);
1779 - }
1780 - }
1781 -
1782 - /**
1783 - * binds a single keyboard combination
1784 - *
1785 - * @param {string} combination
1786 - * @param {Function} callback
1787 - * @param {string=} action
1788 - * @param {string=} sequenceName - name of sequence if part of sequence
1789 - * @param {number=} level - what part of the sequence the command is
1790 - * @returns void
1791 - */
1792 - function _bindSingle(combination, callback, action, sequenceName, level) {
1793 -
1794 - // store a direct mapped reference for use with Mousetrap.trigger
1795 - self._directMap[combination + ':' + action] = callback;
1796 -
1797 - // make sure multiple spaces in a row become a single space
1798 - combination = combination.replace(/\s+/g, ' ');
1799 -
1800 - var sequence = combination.split(' ');
1801 - var info;
1802 -
1803 - // if this pattern is a sequence of keys then run through this method
1804 - // to reprocess each pattern one key at a time
1805 - if (sequence.length > 1) {
1806 - _bindSequence(combination, sequence, callback, action);
1807 - return;
1808 - }
1809 -
1810 - info = _getKeyInfo(combination, action);
1811 -
1812 - // make sure to initialize array if this is the first time
1813 - // a callback is added for this key
1814 - self._callbacks[info.key] = self._callbacks[info.key] || [];
1815 -
1816 - // remove an existing match if there is one
1817 - _getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);
1818 -
1819 - // add this call back to the array
1820 - // if it is a sequence put it at the beginning
1821 - // if not put it at the end
1822 - //
1823 - // this is important because the way these are processed expects
1824 - // the sequence ones to come first
1825 - self._callbacks[info.key][sequenceName ? 'unshift' : 'push']({
1826 - callback: callback,
1827 - modifiers: info.modifiers,
1828 - action: info.action,
1829 - seq: sequenceName,
1830 - level: level,
1831 - combo: combination
1832 - });
1833 - }
1834 -
1835 - /**
1836 - * binds multiple combinations to the same callback
1837 - *
1838 - * @param {Array} combinations
1839 - * @param {Function} callback
1840 - * @param {string|undefined} action
1841 - * @returns void
1842 - */
1843 - self._bindMultiple = function(combinations, callback, action) {
1844 - for (var i = 0; i < combinations.length; ++i) {
1845 - _bindSingle(combinations[i], callback, action);
1846 - }
1847 - };
1848 -
1849 - // start!
1850 - _addEvent(targetElement, 'keypress', _handleKeyEvent);
1851 - _addEvent(targetElement, 'keydown', _handleKeyEvent);
1852 - _addEvent(targetElement, 'keyup', _handleKeyEvent);
1853 - }
1854 -
1855 - /**
1856 - * binds an event to mousetrap
1857 - *
1858 - * can be a single key, a combination of keys separated with +,
1859 - * an array of keys, or a sequence of keys separated by spaces
1860 - *
1861 - * be sure to list the modifier keys first to make sure that the
1862 - * correct key ends up getting bound (the last key in the pattern)
1863 - *
1864 - * @param {string|Array} keys
1865 - * @param {Function} callback
1866 - * @param {string=} action - 'keypress', 'keydown', or 'keyup'
1867 - * @returns void
1868 - */
1869 - Mousetrap.prototype.bind = function(keys, callback, action) {
1870 - var self = this;
1871 - keys = keys instanceof Array ? keys : [keys];
1872 - self._bindMultiple.call(self, keys, callback, action);
1873 - return self;
1874 - };
1875 -
1876 - /**
1877 - * unbinds an event to mousetrap
1878 - *
1879 - * the unbinding sets the callback function of the specified key combo
1880 - * to an empty function and deletes the corresponding key in the
1881 - * _directMap dict.
1882 - *
1883 - * TODO: actually remove this from the _callbacks dictionary instead
1884 - * of binding an empty function
1885 - *
1886 - * the keycombo+action has to be exactly the same as
1887 - * it was defined in the bind method
1888 - *
1889 - * @param {string|Array} keys
1890 - * @param {string} action
1891 - * @returns void
1892 - */
1893 - Mousetrap.prototype.unbind = function(keys, action) {
1894 - var self = this;
1895 - return self.bind.call(self, keys, function() {}, action);
1896 - };
1897 -
1898 - /**
1899 - * triggers an event that has already been bound
1900 - *
1901 - * @param {string} keys
1902 - * @param {string=} action
1903 - * @returns void
1904 - */
1905 - Mousetrap.prototype.trigger = function(keys, action) {
1906 - var self = this;
1907 - if (self._directMap[keys + ':' + action]) {
1908 - self._directMap[keys + ':' + action]({}, keys);
1909 - }
1910 - return self;
1911 - };
1912 -
1913 - /**
1914 - * resets the library back to its initial state. this is useful
1915 - * if you want to clear out the current keyboard shortcuts and bind
1916 - * new ones - for example if you switch to another page
1917 - *
1918 - * @returns void
1919 - */
1920 - Mousetrap.prototype.reset = function() {
1921 - var self = this;
1922 - self._callbacks = {};
1923 - self._directMap = {};
1924 - return self;
1925 - };
1926 -
1927 - /**
1928 - * should we stop this event before firing off callbacks
1929 - *
1930 - * @param {Event} e
1931 - * @param {Element} element
1932 - * @return {boolean}
1933 - */
1934 - Mousetrap.prototype.stopCallback = function(e, element) {
1935 - var self = this;
1936 -
1937 - // if the element has the class "mousetrap" then no need to stop
1938 - if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {
1939 - return false;
1940 - }
1941 -
1942 - if (_belongsTo(element, self.target)) {
1943 - return false;
1944 - }
1945 -
1946 - // Events originating from a shadow DOM are re-targetted and `e.target` is the shadow host,
1947 - // not the initial event target in the shadow tree. Note that not all events cross the
1948 - // shadow boundary.
1949 - // For shadow trees with `mode: 'open'`, the initial event target is the first element in
1950 - // the event’s composed path. For shadow trees with `mode: 'closed'`, the initial event
1951 - // target cannot be obtained.
1952 - if ('composedPath' in e && typeof e.composedPath === 'function') {
1953 - // For open shadow trees, update `element` so that the following check works.
1954 - var initialEventTarget = e.composedPath()[0];
1955 - if (initialEventTarget !== e.target) {
1956 - element = initialEventTarget;
1957 - }
1958 - }
1959 -
1960 - // stop for input, select, and textarea
1961 - return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;
1962 - };
1963 -
1964 - /**
1965 - * exposes _handleKey publicly so it can be overwritten by extensions
1966 - */
1967 - Mousetrap.prototype.handleKey = function() {
1968 - var self = this;
1969 - return self._handleKey.apply(self, arguments);
1970 - };
1971 -
1972 - /**
1973 - * allow custom key mappings
1974 - */
1975 - Mousetrap.addKeycodes = function(object) {
1976 - for (var key in object) {
1977 - if (object.hasOwnProperty(key)) {
1978 - _MAP[key] = object[key];
1979 - }
1980 - }
1981 - _REVERSE_MAP = null;
1982 - };
1983 -
1984 - /**
1985 - * Init the global mousetrap functions
1986 - *
1987 - * This method is needed to allow the global mousetrap functions to work
1988 - * now that mousetrap is a constructor function.
1989 - */
1990 - Mousetrap.init = function() {
1991 - var documentMousetrap = Mousetrap(document);
1992 - for (var method in documentMousetrap) {
1993 - if (method.charAt(0) !== '_') {
1994 - Mousetrap[method] = (function(method) {
1995 - return function() {
1996 - return documentMousetrap[method].apply(documentMousetrap, arguments);
1997 - };
1998 - } (method));
1999 - }
2000 - }
2001 - };
2002 -
2003 - Mousetrap.init();
2004 -
2005 - // expose mousetrap to the global object
2006 - window.Mousetrap = Mousetrap;
2007 -
2008 - // expose as a common js module
2009 - if ( true && module.exports) {
2010 - module.exports = Mousetrap;
2011 - }
2012 -
2013 - // expose mousetrap as an AMD module
2014 - if (true) {
2015 - !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
2016 - return Mousetrap;
2017 - }).call(exports, __webpack_require__, exports, module),
2018 - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2019 - }
2020 -}) (typeof window !== 'undefined' ? window : null, typeof window !== 'undefined' ? document : null);
2021 -
2022 -
2023 -/***/ }),
2024 -
2025 -/***/ 3956:
2026 -/***/ (function() {
2027 -
2028 -/**
2029 - * adds a bindGlobal method to Mousetrap that allows you to
2030 - * bind specific keyboard shortcuts that will still work
2031 - * inside a text input field
2032 - *
2033 - * usage:
2034 - * Mousetrap.bindGlobal('ctrl+s', _saveChanges);
2035 - */
2036 -/* global Mousetrap:true */
2037 -(function(Mousetrap) {
2038 - if (! Mousetrap) {
2039 - return;
2040 - }
2041 - var _globalCallbacks = {};
2042 - var _originalStopCallback = Mousetrap.prototype.stopCallback;
2043 -
2044 - Mousetrap.prototype.stopCallback = function(e, element, combo, sequence) {
2045 - var self = this;
2046 -
2047 - if (self.paused) {
2048 - return true;
2049 - }
2050 -
2051 - if (_globalCallbacks[combo] || _globalCallbacks[sequence]) {
2052 - return false;
2053 - }
2054 -
2055 - return _originalStopCallback.call(self, e, element, combo);
2056 - };
2057 -
2058 - Mousetrap.prototype.bindGlobal = function(keys, callback, action) {
2059 - var self = this;
2060 - self.bind(keys, callback, action);
2061 -
2062 - if (keys instanceof Array) {
2063 - for (var i = 0; i < keys.length; i++) {
2064 - _globalCallbacks[keys[i]] = true;
2065 - }
2066 - return;
2067 - }
2068 -
2069 - _globalCallbacks[keys] = true;
2070 - };
2071 -
2072 - Mousetrap.init();
2073 -}) (typeof Mousetrap !== "undefined" ? Mousetrap : undefined);
2074 -
2075 -
2076 -/***/ }),
2077 -
2078 -/***/ 5464:
2079 -/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2080 -
2081 -var e=__webpack_require__(9196),n={display:"block",opacity:0,position:"absolute",top:0,left:0,height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:-1},t=function(t){var r=t.onResize,u=e.useRef();return function(n,t){var r=function(){return n.current&&n.current.contentDocument&&n.current.contentDocument.defaultView};function u(){t();var e=r();e&&e.addEventListener("resize",t)}e.useEffect((function(){return r()?u():n.current&&n.current.addEventListener&&n.current.addEventListener("load",u),function(){var e=r();e&&"function"==typeof e.removeEventListener&&e.removeEventListener("resize",t)}}),[])}(u,(function(){return r(u)})),e.createElement("iframe",{style:n,src:"about:blank",ref:u,"aria-hidden":!0,tabIndex:-1,frameBorder:0})},r=function(e){return{width:null!=e?e.offsetWidth:null,height:null!=e?e.offsetHeight:null}};module.exports=function(n){void 0===n&&(n=r);var u=e.useState(n(null)),o=u[0],i=u[1],c=e.useCallback((function(e){return i(n(e.current))}),[n]);return[e.useMemo((function(){return e.createElement(t,{onResize:c})}),[c]),o]};
2082 -//# sourceMappingURL=index.js.map
2083 -
2084 -
2085 -/***/ }),
2086 -
2087 -/***/ 9196:
2088 -/***/ (function(module) {
2089 -
2090 -"use strict";
2091 -module.exports = window["React"];
2092 -
2093 -/***/ })
2094 -
2095 -/******/ });
2096 -/************************************************************************/
2097 -/******/ // The module cache
2098 -/******/ var __webpack_module_cache__ = {};
2099 -/******/
2100 -/******/ // The require function
2101 -/******/ function __webpack_require__(moduleId) {
2102 -/******/ // Check if module is in cache
2103 -/******/ var cachedModule = __webpack_module_cache__[moduleId];
2104 -/******/ if (cachedModule !== undefined) {
2105 -/******/ return cachedModule.exports;
2106 -/******/ }
2107 -/******/ // Create a new module (and put it into the cache)
2108 -/******/ var module = __webpack_module_cache__[moduleId] = {
2109 -/******/ // no module.id needed
2110 -/******/ // no module.loaded needed
2111 -/******/ exports: {}
2112 -/******/ };
2113 -/******/
2114 -/******/ // Execute the module function
2115 -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
2116 -/******/
2117 -/******/ // Return the exports of the module
2118 -/******/ return module.exports;
2119 -/******/ }
2120 -/******/
2121 -/************************************************************************/
2122 -/******/ /* webpack/runtime/compat get default export */
2123 -/******/ !function() {
2124 -/******/ // getDefaultExport function for compatibility with non-harmony modules
2125 -/******/ __webpack_require__.n = function(module) {
2126 -/******/ var getter = module && module.__esModule ?
2127 -/******/ function() { return module['default']; } :
2128 -/******/ function() { return module; };
2129 -/******/ __webpack_require__.d(getter, { a: getter });
2130 -/******/ return getter;
2131 -/******/ };
2132 -/******/ }();
2133 -/******/
2134 -/******/ /* webpack/runtime/define property getters */
2135 -/******/ !function() {
2136 -/******/ // define getter functions for harmony exports
2137 -/******/ __webpack_require__.d = function(exports, definition) {
2138 -/******/ for(var key in definition) {
2139 -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
2140 -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
2141 -/******/ }
2142 -/******/ }
2143 -/******/ };
2144 -/******/ }();
2145 -/******/
2146 -/******/ /* webpack/runtime/hasOwnProperty shorthand */
2147 -/******/ !function() {
2148 -/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
2149 -/******/ }();
2150 -/******/
2151 -/******/ /* webpack/runtime/make namespace object */
2152 -/******/ !function() {
2153 -/******/ // define __esModule on exports
2154 -/******/ __webpack_require__.r = function(exports) {
2155 -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
2156 -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2157 -/******/ }
2158 -/******/ Object.defineProperty(exports, '__esModule', { value: true });
2159 -/******/ };
2160 -/******/ }();
2161 -/******/
2162 -/************************************************************************/
2163 -var __webpack_exports__ = {};
2164 -// This entry need to be wrapped in an IIFE because it need to be in strict mode.
2165 -!function() {
2166 -"use strict";
2167 -// ESM COMPAT FLAG
2168 -__webpack_require__.r(__webpack_exports__);
2169 -
2170 -// EXPORTS
2171 -__webpack_require__.d(__webpack_exports__, {
2172 - "__experimentalUseDialog": function() { return /* reexport */ use_dialog; },
2173 - "__experimentalUseDisabled": function() { return /* reexport */ useDisabled; },
2174 - "__experimentalUseDragging": function() { return /* reexport */ useDragging; },
2175 - "__experimentalUseDropZone": function() { return /* reexport */ useDropZone; },
2176 - "__experimentalUseFixedWindowList": function() { return /* reexport */ useFixedWindowList; },
2177 - "__experimentalUseFocusOutside": function() { return /* reexport */ useFocusOutside; },
2178 - "compose": function() { return /* reexport */ compose; },
2179 - "createHigherOrderComponent": function() { return /* reexport */ create_higher_order_component; },
2180 - "ifCondition": function() { return /* reexport */ if_condition; },
2181 - "pure": function() { return /* reexport */ higher_order_pure; },
2182 - "useAsyncList": function() { return /* reexport */ use_async_list; },
2183 - "useConstrainedTabbing": function() { return /* reexport */ use_constrained_tabbing; },
2184 - "useCopyOnClick": function() { return /* reexport */ useCopyOnClick; },
2185 - "useCopyToClipboard": function() { return /* reexport */ useCopyToClipboard; },
2186 - "useDebounce": function() { return /* reexport */ useDebounce; },
2187 - "useFocusOnMount": function() { return /* reexport */ useFocusOnMount; },
2188 - "useFocusReturn": function() { return /* reexport */ use_focus_return; },
2189 - "useFocusableIframe": function() { return /* reexport */ useFocusableIframe; },
2190 - "useInstanceId": function() { return /* reexport */ useInstanceId; },
2191 - "useIsomorphicLayoutEffect": function() { return /* reexport */ use_isomorphic_layout_effect; },
2192 - "useKeyboardShortcut": function() { return /* reexport */ use_keyboard_shortcut; },
2193 - "useMediaQuery": function() { return /* reexport */ useMediaQuery; },
2194 - "useMergeRefs": function() { return /* reexport */ useMergeRefs; },
2195 - "usePrevious": function() { return /* reexport */ usePrevious; },
2196 - "useReducedMotion": function() { return /* reexport */ use_reduced_motion; },
2197 - "useRefEffect": function() { return /* reexport */ useRefEffect; },
2198 - "useResizeObserver": function() { return /* reexport */ use_resize_observer; },
2199 - "useThrottle": function() { return /* reexport */ useThrottle; },
2200 - "useViewportMatch": function() { return /* reexport */ use_viewport_match; },
2201 - "useWarnOnChange": function() { return /* reexport */ use_warn_on_change; },
2202 - "withGlobalEvents": function() { return /* reexport */ withGlobalEvents; },
2203 - "withInstanceId": function() { return /* reexport */ with_instance_id; },
2204 - "withSafeTimeout": function() { return /* reexport */ with_safe_timeout; },
2205 - "withState": function() { return /* reexport */ withState; }
2206 -});
2207 -
2208 -;// CONCATENATED MODULE: external "lodash"
2209 -var external_lodash_namespaceObject = window["lodash"];
2210 -;// CONCATENATED MODULE: ./packages/compose/build-module/utils/create-higher-order-component/index.js
2211 -/**
2212 - * External dependencies
2213 - */
2214 -
2215 -
2216 -/**
2217 - * Given a function mapping a component to an enhanced component and modifier
2218 - * name, returns the enhanced component augmented with a generated displayName.
2219 - *
2220 - * @param mapComponent Function mapping component to enhanced component.
2221 - * @param modifierName Seed name from which to generated display name.
2222 - *
2223 - * @return Component class with generated display name assigned.
2224 - */
2225 -function createHigherOrderComponent(mapComponent, modifierName) {
2226 - return Inner => {
2227 - const Outer = mapComponent(Inner);
2228 - const displayName = Inner.displayName || Inner.name || 'Component';
2229 - Outer.displayName = `${(0,external_lodash_namespaceObject.upperFirst)((0,external_lodash_namespaceObject.camelCase)(modifierName))}(${displayName})`;
2230 - return Outer;
2231 - };
2232 -}
2233 -
2234 -/* harmony default export */ var create_higher_order_component = (createHigherOrderComponent);
2235 -//# sourceMappingURL=index.js.map
2236 -;// CONCATENATED MODULE: ./packages/compose/build-module/higher-order/compose.js
2237 -/**
2238 - * External dependencies
2239 - */
2240 -
2241 -/**
2242 - * Composes multiple higher-order components into a single higher-order component. Performs right-to-left function
2243 - * composition, where each successive invocation is supplied the return value of the previous.
2244 - *
2245 - * This is just a re-export of `lodash`'s `flowRight` function.
2246 - *
2247 - * @see https://docs-lodash.com/v4/flow-right/
2248 - */
2249 -
2250 -/* harmony default export */ var compose = (external_lodash_namespaceObject.flowRight);
2251 -//# sourceMappingURL=compose.js.map
2252 -;// CONCATENATED MODULE: external ["wp","element"]
2253 -var external_wp_element_namespaceObject = window["wp"]["element"];
2254 -;// CONCATENATED MODULE: ./packages/compose/build-module/higher-order/if-condition/index.js
2255 -
2256 -
2257 -/**
2258 - * Internal dependencies
2259 - */
2260 -
2261 -/**
2262 - * Higher-order component creator, creating a new component which renders if
2263 - * the given condition is satisfied or with the given optional prop name.
2264 - *
2265 - * @example
2266 - * ```ts
2267 - * type Props = { foo: string };
2268 - * const Component = ( props: Props ) => <div>{ props.foo }</div>;
2269 - * const ConditionalComponent = ifCondition( ( props: Props ) => props.foo.length !== 0 )( Component );
2270 - * <ConditionalComponent foo="" />; // => null
2271 - * <ConditionalComponent foo="bar" />; // => <div>bar</div>;
2272 - * ```
2273 - *
2274 - * @param predicate Function to test condition.
2275 - *
2276 - * @return Higher-order component.
2277 - */
2278 -
2279 -const ifCondition = predicate => create_higher_order_component(WrappedComponent => props => {
2280 - if (!predicate(props)) {
2281 - return null;
2282 - }
2283 -
2284 - return (0,external_wp_element_namespaceObject.createElement)(WrappedComponent, props);
2285 -}, 'ifCondition');
2286 -
2287 -/* harmony default export */ var if_condition = (ifCondition);
2288 -//# sourceMappingURL=index.js.map
2289 -;// CONCATENATED MODULE: external ["wp","isShallowEqual"]
2290 -var external_wp_isShallowEqual_namespaceObject = window["wp"]["isShallowEqual"];
2291 -var external_wp_isShallowEqual_default = /*#__PURE__*/__webpack_require__.n(external_wp_isShallowEqual_namespaceObject);
2292 -;// CONCATENATED MODULE: ./packages/compose/build-module/higher-order/pure/index.js
2293 -
2294 -
2295 -/**
2296 - * WordPress dependencies
2297 - */
2298 -
2299 -
2300 -/**
2301 - * Internal dependencies
2302 - */
2303 -
2304 -
2305 -/**
2306 - * External dependencies
2307 - */
2308 -
2309 -/**
2310 - * Given a component returns the enhanced component augmented with a component
2311 - * only re-rendering when its props/state change
2312 - */
2313 -const pure = create_higher_order_component(Wrapped => {
2314 - if (Wrapped.prototype instanceof external_wp_element_namespaceObject.Component) {
2315 - return class extends Wrapped {
2316 - shouldComponentUpdate(nextProps, nextState) {
2317 - return !external_wp_isShallowEqual_default()(nextProps, this.props) || !external_wp_isShallowEqual_default()(nextState, this.state);
2318 - }
2319 -
2320 - };
2321 - }
2322 -
2323 - return class extends external_wp_element_namespaceObject.Component {
2324 - shouldComponentUpdate(nextProps) {
2325 - return !external_wp_isShallowEqual_default()(nextProps, this.props);
2326 - }
2327 -
2328 - render() {
2329 - return (0,external_wp_element_namespaceObject.createElement)(Wrapped, this.props);
2330 - }
2331 -
2332 - };
2333 -}, 'pure');
2334 -/* harmony default export */ var higher_order_pure = (pure);
2335 -//# sourceMappingURL=index.js.map
2336 -;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
2337 -function _extends() {
2338 - _extends = Object.assign || function (target) {
2339 - for (var i = 1; i < arguments.length; i++) {
2340 - var source = arguments[i];
2341 -
2342 - for (var key in source) {
2343 - if (Object.prototype.hasOwnProperty.call(source, key)) {
2344 - target[key] = source[key];
2345 - }
2346 - }
2347 - }
2348 -
2349 - return target;
2350 - };
2351 -
2352 - return _extends.apply(this, arguments);
2353 -}
2354 -;// CONCATENATED MODULE: external ["wp","deprecated"]
2355 -var external_wp_deprecated_namespaceObject = window["wp"]["deprecated"];
2356 -var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject);
2357 -;// CONCATENATED MODULE: ./packages/compose/build-module/higher-order/with-global-events/listener.js
2358 -/**
2359 - * External dependencies
2360 - */
2361 -
2362 -/**
2363 - * Class responsible for orchestrating event handling on the global window,
2364 - * binding a single event to be shared across all handling instances, and
2365 - * removing the handler when no instances are listening for the event.
2366 - */
2367 -
2368 -class Listener {
2369 - constructor() {
2370 - /** @type {any} */
2371 - this.listeners = {};
2372 - this.handleEvent = this.handleEvent.bind(this);
2373 - }
2374 -
2375 - add(
2376 - /** @type {any} */
2377 - eventType,
2378 - /** @type {any} */
2379 - instance) {
2380 - if (!this.listeners[eventType]) {
2381 - // Adding first listener for this type, so bind event.
2382 - window.addEventListener(eventType, this.handleEvent);
2383 - this.listeners[eventType] = [];
2384 - }
2385 -
2386 - this.listeners[eventType].push(instance);
2387 - }
2388 -
2389 - remove(
2390 - /** @type {any} */
2391 - eventType,
2392 - /** @type {any} */
2393 - instance) {
2394 - this.listeners[eventType] = (0,external_lodash_namespaceObject.without)(this.listeners[eventType], instance);
2395 -
2396 - if (!this.listeners[eventType].length) {
2397 - // Removing last listener for this type, so unbind event.
2398 - window.removeEventListener(eventType, this.handleEvent);
2399 - delete this.listeners[eventType];
2400 - }
2401 - }
2402 -
2403 - handleEvent(
2404 - /** @type {any} */
2405 - event) {
2406 - (0,external_lodash_namespaceObject.forEach)(this.listeners[event.type], instance => {
2407 - instance.handleEvent(event);
2408 - });
2409 - }
2410 -
2411 -}
2412 -
2413 -/* harmony default export */ var listener = (Listener);
2414 -//# sourceMappingURL=listener.js.map
2415 -;// CONCATENATED MODULE: ./packages/compose/build-module/higher-order/with-global-events/index.js
2416 -
2417 -
2418 -
2419 -/**
2420 - * External dependencies
2421 - */
2422 -
2423 -/**
2424 - * WordPress dependencies
2425 - */
2426 -
2427 -
2428 -
2429 -/**
2430 - * Internal dependencies
2431 - */
2432 -
2433 -
2434 -
2435 -/**
2436 - * Listener instance responsible for managing document event handling.
2437 - */
2438 -
2439 -const with_global_events_listener = new listener();
2440 -/* eslint-disable jsdoc/no-undefined-types */
2441 -
2442 -/**
2443 - * Higher-order component creator which, given an object of DOM event types and
2444 - * values corresponding to a callback function name on the component, will
2445 - * create or update a window event handler to invoke the callback when an event
2446 - * occurs. On behalf of the consuming developer, the higher-order component
2447 - * manages unbinding when the component unmounts, and binding at most a single
2448 - * event handler for the entire application.
2449 - *
2450 - * @deprecated
2451 - *
2452 - * @param {Record<keyof GlobalEventHandlersEventMap, string>} eventTypesToHandlers Object with keys of DOM
2453 - * event type, the value a
2454 - * name of the function on
2455 - * the original component's
2456 - * instance which handles
2457 - * the event.
2458 - *
2459 - * @return {any} Higher-order component.
2460 - */
2461 -
2462 -function withGlobalEvents(eventTypesToHandlers) {
2463 - external_wp_deprecated_default()('wp.compose.withGlobalEvents', {
2464 - since: '5.7',
2465 - alternative: 'useEffect'
2466 - }); // @ts-ignore We don't need to fix the type-related issues because this is deprecated.
2467 -
2468 - return create_higher_order_component(WrappedComponent => {
2469 - class Wrapper extends external_wp_element_namespaceObject.Component {
2470 - constructor(
2471 - /** @type {any} */
2472 - props) {
2473 - super(props);
2474 - this.handleEvent = this.handleEvent.bind(this);
2475 - this.handleRef = this.handleRef.bind(this);
2476 - }
2477 -
2478 - componentDidMount() {
2479 - (0,external_lodash_namespaceObject.forEach)(eventTypesToHandlers, (_, eventType) => {
2480 - with_global_events_listener.add(eventType, this);
2481 - });
2482 - }
2483 -
2484 - componentWillUnmount() {
2485 - (0,external_lodash_namespaceObject.forEach)(eventTypesToHandlers, (_, eventType) => {
2486 - with_global_events_listener.remove(eventType, this);
2487 - });
2488 - }
2489 -
2490 - handleEvent(
2491 - /** @type {any} */
2492 - event) {
2493 - const handler = eventTypesToHandlers[
2494 - /** @type {keyof GlobalEventHandlersEventMap} */
2495 - event.type
2496 - /* eslint-enable jsdoc/no-undefined-types */
2497 - ];
2498 -
2499 - if (typeof this.wrappedRef[handler] === 'function') {
2500 - this.wrappedRef[handler](event);
2501 - }
2502 - }
2503 -
2504 - handleRef(
2505 - /** @type {any} */
2506 - el) {
2507 - this.wrappedRef = el; // Any component using `withGlobalEvents` that is not setting a `ref`
2508 - // will cause `this.props.forwardedRef` to be `null`, so we need this
2509 - // check.
2510 -
2511 - if (this.props.forwardedRef) {
2512 - this.props.forwardedRef(el);
2513 - }
2514 - }
2515 -
2516 - render() {
2517 - return (0,external_wp_element_namespaceObject.createElement)(WrappedComponent, _extends({}, this.props.ownProps, {
2518 - ref: this.handleRef
2519 - }));
2520 - }
2521 -
2522 - }
2523 -
2524 - return (0,external_wp_element_namespaceObject.forwardRef)((props, ref) => {
2525 - return (0,external_wp_element_namespaceObject.createElement)(Wrapper, {
2526 - ownProps: props,
2527 - forwardedRef: ref
2528 - });
2529 - });
2530 - }, 'withGlobalEvents');
2531 -}
2532 -//# sourceMappingURL=index.js.map
2533 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-instance-id/index.js
2534 -// Disable reason: Object and object are distinctly different types in TypeScript and we mean the lowercase object in thise case
2535 -// but eslint wants to force us to use `Object`. See https://stackoverflow.com/questions/49464634/difference-between-object-and-object-in-typescript
2536 -
2537 -/* eslint-disable jsdoc/check-types */
2538 -
2539 -/**
2540 - * WordPress dependencies
2541 - */
2542 -
2543 -/**
2544 - * @type {WeakMap<object, number>}
2545 - */
2546 -
2547 -const instanceMap = new WeakMap();
2548 -/**
2549 - * Creates a new id for a given object.
2550 - *
2551 - * @param {object} object Object reference to create an id for.
2552 - * @return {number} The instance id (index).
2553 - */
2554 -
2555 -function createId(object) {
2556 - const instances = instanceMap.get(object) || 0;
2557 - instanceMap.set(object, instances + 1);
2558 - return instances;
2559 -}
2560 -/**
2561 - * Provides a unique instance ID.
2562 - *
2563 - * @param {object} object Object reference to create an id for.
2564 - * @param {string} [prefix] Prefix for the unique id.
2565 - * @param {string | number} [preferredId=''] Default ID to use.
2566 - * @return {string | number} The unique instance id.
2567 - */
2568 -
2569 -
2570 -function useInstanceId(object, prefix) {
2571 - let preferredId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
2572 - return (0,external_wp_element_namespaceObject.useMemo)(() => {
2573 - if (preferredId) return preferredId;
2574 - const id = createId(object);
2575 - return prefix ? `${prefix}-${id}` : id;
2576 - }, [object]);
2577 -}
2578 -/* eslint-enable jsdoc/check-types */
2579 -//# sourceMappingURL=index.js.map
2580 -;// CONCATENATED MODULE: ./packages/compose/build-module/higher-order/with-instance-id/index.js
2581 -
2582 -
2583 -
2584 -/**
2585 - * Internal dependencies
2586 - */
2587 -
2588 -
2589 -/**
2590 - * A Higher Order Component used to be provide a unique instance ID by
2591 - * component.
2592 - */
2593 -
2594 -const withInstanceId = create_higher_order_component(WrappedComponent => {
2595 - return props => {
2596 - const instanceId = useInstanceId(WrappedComponent); // @ts-ignore
2597 -
2598 - return (0,external_wp_element_namespaceObject.createElement)(WrappedComponent, _extends({}, props, {
2599 - instanceId: instanceId
2600 - }));
2601 - };
2602 -}, 'withInstanceId');
2603 -/* harmony default export */ var with_instance_id = (withInstanceId);
2604 -//# sourceMappingURL=index.js.map
2605 -;// CONCATENATED MODULE: ./packages/compose/build-module/higher-order/with-safe-timeout/index.js
2606 -
2607 -
2608 -/**
2609 - * External dependencies
2610 - */
2611 -
2612 -
2613 -/**
2614 - * WordPress dependencies
2615 - */
2616 -
2617 -/**
2618 - * Internal dependencies
2619 - */
2620 -
2621 -
2622 -/**
2623 - * We cannot use the `Window['setTimeout']` and `Window['clearTimeout']`
2624 - * types here because those functions include functionality that is not handled
2625 - * by this component, like the ability to pass extra arguments.
2626 - *
2627 - * In the case of this component, we only handle the simplest case where
2628 - * `setTimeout` only accepts a function (not a string) and an optional delay.
2629 - */
2630 -
2631 -/**
2632 - * A higher-order component used to provide and manage delayed function calls
2633 - * that ought to be bound to a component's lifecycle.
2634 - */
2635 -const withSafeTimeout = create_higher_order_component(OriginalComponent => {
2636 - return class WrappedComponent extends external_wp_element_namespaceObject.Component {
2637 - constructor(props) {
2638 - super(props);
2639 - this.timeouts = [];
2640 - this.setTimeout = this.setTimeout.bind(this);
2641 - this.clearTimeout = this.clearTimeout.bind(this);
2642 - }
2643 -
2644 - componentWillUnmount() {
2645 - this.timeouts.forEach(clearTimeout);
2646 - }
2647 -
2648 - setTimeout(fn, delay) {
2649 - const id = setTimeout(() => {
2650 - fn();
2651 - this.clearTimeout(id);
2652 - }, delay);
2653 - this.timeouts.push(id);
2654 - return id;
2655 - }
2656 -
2657 - clearTimeout(id) {
2658 - clearTimeout(id);
2659 - this.timeouts = (0,external_lodash_namespaceObject.without)(this.timeouts, id);
2660 - }
2661 -
2662 - render() {
2663 - const props = { ...this.props,
2664 - setTimeout: this.setTimeout,
2665 - clearTimeout: this.clearTimeout
2666 - };
2667 - return (0,external_wp_element_namespaceObject.createElement)(OriginalComponent, props);
2668 - }
2669 -
2670 - };
2671 -}, 'withSafeTimeout');
2672 -/* harmony default export */ var with_safe_timeout = (withSafeTimeout);
2673 -//# sourceMappingURL=index.js.map
2674 -;// CONCATENATED MODULE: ./packages/compose/build-module/higher-order/with-state/index.js
2675 -
2676 -
2677 -
2678 -/**
2679 - * WordPress dependencies
2680 - */
2681 -
2682 -
2683 -/**
2684 - * Internal dependencies
2685 - */
2686 -
2687 -
2688 -/**
2689 - * A Higher Order Component used to provide and manage internal component state
2690 - * via props.
2691 - *
2692 - * @deprecated Use `useState` instead.
2693 - *
2694 - * @param {any} initialState Optional initial state of the component.
2695 - *
2696 - * @return {any} A higher order component wrapper accepting a component that takes the state props + its own props + `setState` and returning a component that only accepts the own props.
2697 - */
2698 -
2699 -function withState() {
2700 - let initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2701 - external_wp_deprecated_default()('wp.compose.withState', {
2702 - since: '5.8',
2703 - alternative: 'wp.element.useState'
2704 - });
2705 - return create_higher_order_component(OriginalComponent => {
2706 - return class WrappedComponent extends external_wp_element_namespaceObject.Component {
2707 - constructor(
2708 - /** @type {any} */
2709 - props) {
2710 - super(props);
2711 - this.setState = this.setState.bind(this);
2712 - this.state = initialState;
2713 - }
2714 -
2715 - render() {
2716 - return (0,external_wp_element_namespaceObject.createElement)(OriginalComponent, _extends({}, this.props, this.state, {
2717 - setState: this.setState
2718 - }));
2719 - }
2720 -
2721 - };
2722 - }, 'withState');
2723 -}
2724 -//# sourceMappingURL=index.js.map
2725 -;// CONCATENATED MODULE: external ["wp","keycodes"]
2726 -var external_wp_keycodes_namespaceObject = window["wp"]["keycodes"];
2727 -;// CONCATENATED MODULE: external ["wp","dom"]
2728 -var external_wp_dom_namespaceObject = window["wp"]["dom"];
2729 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-ref-effect/index.js
2730 -/**
2731 - * External dependencies
2732 - */
2733 -
2734 -/**
2735 - * WordPress dependencies
2736 - */
2737 -
2738 -/**
2739 - * Effect-like ref callback. Just like with `useEffect`, this allows you to
2740 - * return a cleanup function to be run if the ref changes or one of the
2741 - * dependencies changes. The ref is provided as an argument to the callback
2742 - * functions. The main difference between this and `useEffect` is that
2743 - * the `useEffect` callback is not called when the ref changes, but this is.
2744 - * Pass the returned ref callback as the component's ref and merge multiple refs
2745 - * with `useMergeRefs`.
2746 - *
2747 - * It's worth noting that if the dependencies array is empty, there's not
2748 - * strictly a need to clean up event handlers for example, because the node is
2749 - * to be removed. It *is* necessary if you add dependencies because the ref
2750 - * callback will be called multiple times for the same node.
2751 - *
2752 - * @param callback Callback with ref as argument.
2753 - * @param dependencies Dependencies of the callback.
2754 - *
2755 - * @return Ref callback.
2756 - */
2757 -
2758 -function useRefEffect(callback, dependencies) {
2759 - const cleanup = (0,external_wp_element_namespaceObject.useRef)();
2760 - return (0,external_wp_element_namespaceObject.useCallback)(node => {
2761 - if (node) {
2762 - cleanup.current = callback(node);
2763 - } else if (cleanup.current) {
2764 - cleanup.current();
2765 - }
2766 - }, dependencies);
2767 -}
2768 -//# sourceMappingURL=index.js.map
2769 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-constrained-tabbing/index.js
2770 -/**
2771 - * WordPress dependencies
2772 - */
2773 -
2774 -
2775 -/**
2776 - * Internal dependencies
2777 - */
2778 -
2779 -
2780 -/**
2781 - * In Dialogs/modals, the tabbing must be constrained to the content of
2782 - * the wrapper element. This hook adds the behavior to the returned ref.
2783 - *
2784 - * @return {import('react').RefCallback<Element>} Element Ref.
2785 - *
2786 - * @example
2787 - * ```js
2788 - * import { useConstrainedTabbing } from '@wordpress/compose';
2789 - *
2790 - * const ConstrainedTabbingExample = () => {
2791 - * const constrainedTabbingRef = useConstrainedTabbing()
2792 - * return (
2793 - * <div ref={ constrainedTabbingRef }>
2794 - * <Button />
2795 - * <Button />
2796 - * </div>
2797 - * );
2798 - * }
2799 - * ```
2800 - */
2801 -
2802 -function useConstrainedTabbing() {
2803 - return useRefEffect((
2804 - /** @type {HTMLElement} */
2805 - node) => {
2806 - /** @type {number|undefined} */
2807 - let timeoutId;
2808 -
2809 - function onKeyDown(
2810 - /** @type {KeyboardEvent} */
2811 - event) {
2812 - const {
2813 - keyCode,
2814 - shiftKey,
2815 - target
2816 - } = event;
2817 -
2818 - if (keyCode !== external_wp_keycodes_namespaceObject.TAB) {
2819 - return;
2820 - }
2821 -
2822 - const action = shiftKey ? 'findPrevious' : 'findNext';
2823 - const nextElement = external_wp_dom_namespaceObject.focus.tabbable[action](
2824 - /** @type {HTMLElement} */
2825 - target) || null; // If the element that is about to receive focus is outside the
2826 - // area, move focus to a div and insert it at the start or end of
2827 - // the area, depending on the direction. Without preventing default
2828 - // behaviour, the browser will then move focus to the next element.
2829 -
2830 - if (node.contains(nextElement)) {
2831 - return;
2832 - }
2833 -
2834 - const domAction = shiftKey ? 'append' : 'prepend';
2835 - const {
2836 - ownerDocument
2837 - } = node;
2838 - const trap = ownerDocument.createElement('div');
2839 - trap.tabIndex = -1;
2840 - node[domAction](trap);
2841 - trap.focus(); // Remove after the browser moves focus to the next element.
2842 -
2843 - timeoutId = setTimeout(() => node.removeChild(trap));
2844 - }
2845 -
2846 - node.addEventListener('keydown', onKeyDown);
2847 - return () => {
2848 - node.removeEventListener('keydown', onKeyDown);
2849 - clearTimeout(timeoutId);
2850 - };
2851 - }, []);
2852 -}
2853 -
2854 -/* harmony default export */ var use_constrained_tabbing = (useConstrainedTabbing);
2855 -//# sourceMappingURL=index.js.map
2856 -// EXTERNAL MODULE: ./node_modules/clipboard/dist/clipboard.js
2857 -var dist_clipboard = __webpack_require__(2152);
2858 -var clipboard_default = /*#__PURE__*/__webpack_require__.n(dist_clipboard);
2859 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-copy-on-click/index.js
2860 -/**
2861 - * External dependencies
2862 - */
2863 -
2864 -/**
2865 - * WordPress dependencies
2866 - */
2867 -
2868 -
2869 -
2870 -/* eslint-disable jsdoc/no-undefined-types */
2871 -
2872 -/**
2873 - * Copies the text to the clipboard when the element is clicked.
2874 - *
2875 - * @deprecated
2876 - *
2877 - * @param {import('react').RefObject<string | Element | NodeListOf<Element>>} ref Reference with the element.
2878 - * @param {string|Function} text The text to copy.
2879 - * @param {number} [timeout] Optional timeout to reset the returned
2880 - * state. 4 seconds by default.
2881 - *
2882 - * @return {boolean} Whether or not the text has been copied. Resets after the
2883 - * timeout.
2884 - */
2885 -
2886 -function useCopyOnClick(ref, text) {
2887 - let timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 4000;
2888 -
2889 - /* eslint-enable jsdoc/no-undefined-types */
2890 - external_wp_deprecated_default()('wp.compose.useCopyOnClick', {
2891 - since: '5.8',
2892 - alternative: 'wp.compose.useCopyToClipboard'
2893 - });
2894 - /** @type {import('react').MutableRefObject<Clipboard | undefined>} */
2895 -
2896 - const clipboard = (0,external_wp_element_namespaceObject.useRef)();
2897 - const [hasCopied, setHasCopied] = (0,external_wp_element_namespaceObject.useState)(false);
2898 - (0,external_wp_element_namespaceObject.useEffect)(() => {
2899 - /** @type {number | undefined} */
2900 - let timeoutId;
2901 -
2902 - if (!ref.current) {
2903 - return;
2904 - } // Clipboard listens to click events.
2905 -
2906 -
2907 - clipboard.current = new (clipboard_default())(ref.current, {
2908 - text: () => typeof text === 'function' ? text() : text
2909 - });
2910 - clipboard.current.on('success', _ref => {
2911 - let {
2912 - clearSelection,
2913 - trigger
2914 - } = _ref;
2915 - // Clearing selection will move focus back to the triggering button,
2916 - // ensuring that it is not reset to the body, and further that it is
2917 - // kept within the rendered node.
2918 - clearSelection(); // Handle ClipboardJS focus bug, see https://github.com/zenorocha/clipboard.js/issues/680
2919 -
2920 - if (trigger) {
2921 - /** @type {HTMLElement} */
2922 - trigger.focus();
2923 - }
2924 -
2925 - if (timeout) {
2926 - setHasCopied(true);
2927 - clearTimeout(timeoutId);
2928 - timeoutId = setTimeout(() => setHasCopied(false), timeout);
2929 - }
2930 - });
2931 - return () => {
2932 - if (clipboard.current) {
2933 - clipboard.current.destroy();
2934 - }
2935 -
2936 - clearTimeout(timeoutId);
2937 - };
2938 - }, [text, timeout, setHasCopied]);
2939 - return hasCopied;
2940 -}
2941 -//# sourceMappingURL=index.js.map
2942 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-copy-to-clipboard/index.js
2943 -/**
2944 - * External dependencies
2945 - */
2946 -
2947 -/**
2948 - * WordPress dependencies
2949 - */
2950 -
2951 -
2952 -/**
2953 - * Internal dependencies
2954 - */
2955 -
2956 -
2957 -/**
2958 - * @template T
2959 - * @param {T} value
2960 - * @return {import('react').RefObject<T>} The updated ref
2961 - */
2962 -
2963 -function useUpdatedRef(value) {
2964 - const ref = (0,external_wp_element_namespaceObject.useRef)(value);
2965 - ref.current = value;
2966 - return ref;
2967 -}
2968 -/**
2969 - * Copies the given text to the clipboard when the element is clicked.
2970 - *
2971 - * @template {HTMLElement} TElementType
2972 - * @param {string | (() => string)} text The text to copy. Use a function if not
2973 - * already available and expensive to compute.
2974 - * @param {Function} onSuccess Called when to text is copied.
2975 - *
2976 - * @return {import('react').Ref<TElementType>} A ref to assign to the target element.
2977 - */
2978 -
2979 -
2980 -function useCopyToClipboard(text, onSuccess) {
2981 - // Store the dependencies as refs and continuesly update them so they're
2982 - // fresh when the callback is called.
2983 - const textRef = useUpdatedRef(text);
2984 - const onSuccessRef = useUpdatedRef(onSuccess);
2985 - return useRefEffect(node => {
2986 - // Clipboard listens to click events.
2987 - const clipboard = new (clipboard_default())(node, {
2988 - text() {
2989 - return typeof textRef.current === 'function' ? textRef.current() : textRef.current || '';
2990 - }
2991 -
2992 - });
2993 - clipboard.on('success', _ref => {
2994 - let {
2995 - clearSelection
2996 - } = _ref;
2997 - // Clearing selection will move focus back to the triggering
2998 - // button, ensuring that it is not reset to the body, and
2999 - // further that it is kept within the rendered node.
3000 - clearSelection(); // Handle ClipboardJS focus bug, see
3001 - // https://github.com/zenorocha/clipboard.js/issues/680
3002 -
3003 - node.focus();
3004 -
3005 - if (onSuccessRef.current) {
3006 - onSuccessRef.current();
3007 - }
3008 - });
3009 - return () => {
3010 - clipboard.destroy();
3011 - };
3012 - }, []);
3013 -}
3014 -//# sourceMappingURL=index.js.map
3015 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-focus-on-mount/index.js
3016 -/**
3017 - * WordPress dependencies
3018 - */
3019 -
3020 -
3021 -/**
3022 - * Hook used to focus the first tabbable element on mount.
3023 - *
3024 - * @param {boolean | 'firstElement'} focusOnMount Focus on mount mode.
3025 - * @return {import('react').RefCallback<HTMLElement>} Ref callback.
3026 - *
3027 - * @example
3028 - * ```js
3029 - * import { useFocusOnMount } from '@wordpress/compose';
3030 - *
3031 - * const WithFocusOnMount = () => {
3032 - * const ref = useFocusOnMount()
3033 - * return (
3034 - * <div ref={ ref }>
3035 - * <Button />
3036 - * <Button />
3037 - * </div>
3038 - * );
3039 - * }
3040 - * ```
3041 - */
3042 -
3043 -function useFocusOnMount() {
3044 - let focusOnMount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'firstElement';
3045 - const focusOnMountRef = (0,external_wp_element_namespaceObject.useRef)(focusOnMount);
3046 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3047 - focusOnMountRef.current = focusOnMount;
3048 - }, [focusOnMount]);
3049 - return (0,external_wp_element_namespaceObject.useCallback)(node => {
3050 - var _node$ownerDocument$a, _node$ownerDocument;
3051 -
3052 - if (!node || focusOnMountRef.current === false) {
3053 - return;
3054 - }
3055 -
3056 - if (node.contains((_node$ownerDocument$a = (_node$ownerDocument = node.ownerDocument) === null || _node$ownerDocument === void 0 ? void 0 : _node$ownerDocument.activeElement) !== null && _node$ownerDocument$a !== void 0 ? _node$ownerDocument$a : null)) {
3057 - return;
3058 - }
3059 -
3060 - let target = node;
3061 -
3062 - if (focusOnMountRef.current === 'firstElement') {
3063 - const firstTabbable = external_wp_dom_namespaceObject.focus.tabbable.find(node)[0];
3064 -
3065 - if (firstTabbable) {
3066 - target =
3067 - /** @type {HTMLElement} */
3068 - firstTabbable;
3069 - }
3070 - }
3071 -
3072 - target.focus();
3073 - }, []);
3074 -}
3075 -//# sourceMappingURL=index.js.map
3076 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-focus-return/index.js
3077 -/**
3078 - * WordPress dependencies
3079 - */
3080 -
3081 -/**
3082 - * When opening modals/sidebars/dialogs, the focus
3083 - * must move to the opened area and return to the
3084 - * previously focused element when closed.
3085 - * The current hook implements the returning behavior.
3086 - *
3087 - * @param {() => void} [onFocusReturn] Overrides the default return behavior.
3088 - * @return {import('react').RefCallback<HTMLElement>} Element Ref.
3089 - *
3090 - * @example
3091 - * ```js
3092 - * import { useFocusReturn } from '@wordpress/compose';
3093 - *
3094 - * const WithFocusReturn = () => {
3095 - * const ref = useFocusReturn()
3096 - * return (
3097 - * <div ref={ ref }>
3098 - * <Button />
3099 - * <Button />
3100 - * </div>
3101 - * );
3102 - * }
3103 - * ```
3104 - */
3105 -
3106 -function useFocusReturn(onFocusReturn) {
3107 - /** @type {import('react').MutableRefObject<null | HTMLElement>} */
3108 - const ref = (0,external_wp_element_namespaceObject.useRef)(null);
3109 - /** @type {import('react').MutableRefObject<null | Element>} */
3110 -
3111 - const focusedBeforeMount = (0,external_wp_element_namespaceObject.useRef)(null);
3112 - const onFocusReturnRef = (0,external_wp_element_namespaceObject.useRef)(onFocusReturn);
3113 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3114 - onFocusReturnRef.current = onFocusReturn;
3115 - }, [onFocusReturn]);
3116 - return (0,external_wp_element_namespaceObject.useCallback)(node => {
3117 - if (node) {
3118 - // Set ref to be used when unmounting.
3119 - ref.current = node; // Only set when the node mounts.
3120 -
3121 - if (focusedBeforeMount.current) {
3122 - return;
3123 - }
3124 -
3125 - focusedBeforeMount.current = node.ownerDocument.activeElement;
3126 - } else if (focusedBeforeMount.current) {
3127 - var _ref$current, _ref$current2, _ref$current3;
3128 -
3129 - const isFocused = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.contains((_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.ownerDocument.activeElement);
3130 -
3131 - if ((_ref$current3 = ref.current) !== null && _ref$current3 !== void 0 && _ref$current3.isConnected && !isFocused) {
3132 - return;
3133 - } // Defer to the component's own explicit focus return behavior, if
3134 - // specified. This allows for support that the `onFocusReturn`
3135 - // decides to allow the default behavior to occur under some
3136 - // conditions.
3137 -
3138 -
3139 - if (onFocusReturnRef.current) {
3140 - onFocusReturnRef.current();
3141 - } else {
3142 - var _focusedBeforeMount$c;
3143 -
3144 - /** @type {null | HTMLElement} */
3145 - (_focusedBeforeMount$c = focusedBeforeMount.current) === null || _focusedBeforeMount$c === void 0 ? void 0 : _focusedBeforeMount$c.focus();
3146 - }
3147 - }
3148 - }, []);
3149 -}
3150 -
3151 -/* harmony default export */ var use_focus_return = (useFocusReturn);
3152 -//# sourceMappingURL=index.js.map
3153 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-focus-outside/index.js
3154 -/**
3155 - * External dependencies
3156 - */
3157 -
3158 -/**
3159 - * WordPress dependencies
3160 - */
3161 -
3162 -
3163 -/**
3164 - * Input types which are classified as button types, for use in considering
3165 - * whether element is a (focus-normalized) button.
3166 - *
3167 - * @type {string[]}
3168 - */
3169 -
3170 -const INPUT_BUTTON_TYPES = ['button', 'submit'];
3171 -/**
3172 - * @typedef {HTMLButtonElement | HTMLLinkElement | HTMLInputElement} FocusNormalizedButton
3173 - */
3174 -// Disable reason: Rule doesn't support predicate return types
3175 -
3176 -/* eslint-disable jsdoc/valid-types */
3177 -
3178 -/**
3179 - * Returns true if the given element is a button element subject to focus
3180 - * normalization, or false otherwise.
3181 - *
3182 - * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus
3183 - *
3184 - * @param {EventTarget} eventTarget The target from a mouse or touch event.
3185 - *
3186 - * @return {eventTarget is FocusNormalizedButton} Whether element is a button.
3187 - */
3188 -
3189 -function isFocusNormalizedButton(eventTarget) {
3190 - if (!(eventTarget instanceof window.HTMLElement)) {
3191 - return false;
3192 - }
3193 -
3194 - switch (eventTarget.nodeName) {
3195 - case 'A':
3196 - case 'BUTTON':
3197 - return true;
3198 -
3199 - case 'INPUT':
3200 - return (0,external_lodash_namespaceObject.includes)(INPUT_BUTTON_TYPES,
3201 - /** @type {HTMLInputElement} */
3202 - eventTarget.type);
3203 - }
3204 -
3205 - return false;
3206 -}
3207 -/* eslint-enable jsdoc/valid-types */
3208 -
3209 -/**
3210 - * @typedef {import('react').SyntheticEvent} SyntheticEvent
3211 - */
3212 -
3213 -/**
3214 - * @callback EventCallback
3215 - * @param {SyntheticEvent} event input related event.
3216 - */
3217 -
3218 -/**
3219 - * @typedef FocusOutsideReactElement
3220 - * @property {EventCallback} handleFocusOutside callback for a focus outside event.
3221 - */
3222 -
3223 -/**
3224 - * @typedef {import('react').MutableRefObject<FocusOutsideReactElement | undefined>} FocusOutsideRef
3225 - */
3226 -
3227 -/**
3228 - * @typedef {Object} FocusOutsideReturnValue
3229 - * @property {EventCallback} onFocus An event handler for focus events.
3230 - * @property {EventCallback} onBlur An event handler for blur events.
3231 - * @property {EventCallback} onMouseDown An event handler for mouse down events.
3232 - * @property {EventCallback} onMouseUp An event handler for mouse up events.
3233 - * @property {EventCallback} onTouchStart An event handler for touch start events.
3234 - * @property {EventCallback} onTouchEnd An event handler for touch end events.
3235 - */
3236 -
3237 -/**
3238 - * A react hook that can be used to check whether focus has moved outside the
3239 - * element the event handlers are bound to.
3240 - *
3241 - * @param {EventCallback} onFocusOutside A callback triggered when focus moves outside
3242 - * the element the event handlers are bound to.
3243 - *
3244 - * @return {FocusOutsideReturnValue} An object containing event handlers. Bind the event handlers
3245 - * to a wrapping element element to capture when focus moves
3246 - * outside that element.
3247 - */
3248 -
3249 -
3250 -function useFocusOutside(onFocusOutside) {
3251 - const currentOnFocusOutside = (0,external_wp_element_namespaceObject.useRef)(onFocusOutside);
3252 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3253 - currentOnFocusOutside.current = onFocusOutside;
3254 - }, [onFocusOutside]);
3255 - const preventBlurCheck = (0,external_wp_element_namespaceObject.useRef)(false);
3256 - /**
3257 - * @type {import('react').MutableRefObject<number | undefined>}
3258 - */
3259 -
3260 - const blurCheckTimeoutId = (0,external_wp_element_namespaceObject.useRef)();
3261 - /**
3262 - * Cancel a blur check timeout.
3263 - */
3264 -
3265 - const cancelBlurCheck = (0,external_wp_element_namespaceObject.useCallback)(() => {
3266 - clearTimeout(blurCheckTimeoutId.current);
3267 - }, []); // Cancel blur checks on unmount.
3268 -
3269 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3270 - return () => cancelBlurCheck();
3271 - }, []); // Cancel a blur check if the callback or ref is no longer provided.
3272 -
3273 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3274 - if (!onFocusOutside) {
3275 - cancelBlurCheck();
3276 - }
3277 - }, [onFocusOutside, cancelBlurCheck]);
3278 - /**
3279 - * Handles a mousedown or mouseup event to respectively assign and
3280 - * unassign a flag for preventing blur check on button elements. Some
3281 - * browsers, namely Firefox and Safari, do not emit a focus event on
3282 - * button elements when clicked, while others do. The logic here
3283 - * intends to normalize this as treating click on buttons as focus.
3284 - *
3285 - * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus
3286 - *
3287 - * @param {SyntheticEvent} event Event for mousedown or mouseup.
3288 - */
3289 -
3290 - const normalizeButtonFocus = (0,external_wp_element_namespaceObject.useCallback)(event => {
3291 - const {
3292 - type,
3293 - target
3294 - } = event;
3295 - const isInteractionEnd = (0,external_lodash_namespaceObject.includes)(['mouseup', 'touchend'], type);
3296 -
3297 - if (isInteractionEnd) {
3298 - preventBlurCheck.current = false;
3299 - } else if (isFocusNormalizedButton(target)) {
3300 - preventBlurCheck.current = true;
3301 - }
3302 - }, []);
3303 - /**
3304 - * A callback triggered when a blur event occurs on the element the handler
3305 - * is bound to.
3306 - *
3307 - * Calls the `onFocusOutside` callback in an immediate timeout if focus has
3308 - * move outside the bound element and is still within the document.
3309 - *
3310 - * @param {SyntheticEvent} event Blur event.
3311 - */
3312 -
3313 - const queueBlurCheck = (0,external_wp_element_namespaceObject.useCallback)(event => {
3314 - // React does not allow using an event reference asynchronously
3315 - // due to recycling behavior, except when explicitly persisted.
3316 - event.persist(); // Skip blur check if clicking button. See `normalizeButtonFocus`.
3317 -
3318 - if (preventBlurCheck.current) {
3319 - return;
3320 - }
3321 -
3322 - blurCheckTimeoutId.current = setTimeout(() => {
3323 - // If document is not focused then focus should remain
3324 - // inside the wrapped component and therefore we cancel
3325 - // this blur event thereby leaving focus in place.
3326 - // https://developer.mozilla.org/en-US/docs/Web/API/Document/hasFocus.
3327 - if (!document.hasFocus()) {
3328 - event.preventDefault();
3329 - return;
3330 - }
3331 -
3332 - if ('function' === typeof currentOnFocusOutside.current) {
3333 - currentOnFocusOutside.current(event);
3334 - }
3335 - }, 0);
3336 - }, []);
3337 - return {
3338 - onFocus: cancelBlurCheck,
3339 - onMouseDown: normalizeButtonFocus,
3340 - onMouseUp: normalizeButtonFocus,
3341 - onTouchStart: normalizeButtonFocus,
3342 - onTouchEnd: normalizeButtonFocus,
3343 - onBlur: queueBlurCheck
3344 - };
3345 -}
3346 -//# sourceMappingURL=index.js.map
3347 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-merge-refs/index.js
3348 -/**
3349 - * WordPress dependencies
3350 - */
3351 -
3352 -/* eslint-disable jsdoc/valid-types */
3353 -
3354 -/**
3355 - * @template T
3356 - * @typedef {T extends import('react').Ref<infer R> ? R : never} TypeFromRef
3357 - */
3358 -
3359 -/* eslint-enable jsdoc/valid-types */
3360 -
3361 -/**
3362 - * @template T
3363 - * @param {import('react').Ref<T>} ref
3364 - * @param {T} value
3365 - */
3366 -
3367 -function assignRef(ref, value) {
3368 - if (typeof ref === 'function') {
3369 - ref(value);
3370 - } else if (ref && ref.hasOwnProperty('current')) {
3371 - /* eslint-disable jsdoc/no-undefined-types */
3372 -
3373 - /** @type {import('react').MutableRefObject<T>} */
3374 - ref.current = value;
3375 - /* eslint-enable jsdoc/no-undefined-types */
3376 - }
3377 -}
3378 -/**
3379 - * Merges refs into one ref callback.
3380 - *
3381 - * It also ensures that the merged ref callbacks are only called when they
3382 - * change (as a result of a `useCallback` dependency update) OR when the ref
3383 - * value changes, just as React does when passing a single ref callback to the
3384 - * component.
3385 - *
3386 - * As expected, if you pass a new function on every render, the ref callback
3387 - * will be called after every render.
3388 - *
3389 - * If you don't wish a ref callback to be called after every render, wrap it
3390 - * with `useCallback( callback, dependencies )`. When a dependency changes, the
3391 - * old ref callback will be called with `null` and the new ref callback will be
3392 - * called with the same value.
3393 - *
3394 - * To make ref callbacks easier to use, you can also pass the result of
3395 - * `useRefEffect`, which makes cleanup easier by allowing you to return a
3396 - * cleanup function instead of handling `null`.
3397 - *
3398 - * It's also possible to _disable_ a ref (and its behaviour) by simply not
3399 - * passing the ref.
3400 - *
3401 - * ```jsx
3402 - * const ref = useRefEffect( ( node ) => {
3403 - * node.addEventListener( ... );
3404 - * return () => {
3405 - * node.removeEventListener( ... );
3406 - * };
3407 - * }, [ ...dependencies ] );
3408 - * const otherRef = useRef();
3409 - * const mergedRefs useMergeRefs( [
3410 - * enabled && ref,
3411 - * otherRef,
3412 - * ] );
3413 - * return <div ref={ mergedRefs } />;
3414 - * ```
3415 - *
3416 - * @template {import('react').Ref<any>} TRef
3417 - * @param {Array<TRef>} refs The refs to be merged.
3418 - *
3419 - * @return {import('react').RefCallback<TypeFromRef<TRef>>} The merged ref callback.
3420 - */
3421 -
3422 -
3423 -function useMergeRefs(refs) {
3424 - const element = (0,external_wp_element_namespaceObject.useRef)();
3425 - const didElementChange = (0,external_wp_element_namespaceObject.useRef)(false);
3426 - /* eslint-disable jsdoc/no-undefined-types */
3427 -
3428 - /** @type {import('react').MutableRefObject<TRef[]>} */
3429 -
3430 - /* eslint-enable jsdoc/no-undefined-types */
3431 -
3432 - const previousRefs = (0,external_wp_element_namespaceObject.useRef)([]);
3433 - const currentRefs = (0,external_wp_element_namespaceObject.useRef)(refs); // Update on render before the ref callback is called, so the ref callback
3434 - // always has access to the current refs.
3435 -
3436 - currentRefs.current = refs; // If any of the refs change, call the previous ref with `null` and the new
3437 - // ref with the node, except when the element changes in the same cycle, in
3438 - // which case the ref callbacks will already have been called.
3439 -
3440 - (0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
3441 - if (didElementChange.current === false) {
3442 - refs.forEach((ref, index) => {
3443 - const previousRef = previousRefs.current[index];
3444 -
3445 - if (ref !== previousRef) {
3446 - assignRef(previousRef, null);
3447 - assignRef(ref, element.current);
3448 - }
3449 - });
3450 - }
3451 -
3452 - previousRefs.current = refs;
3453 - }, refs); // No dependencies, must be reset after every render so ref callbacks are
3454 - // correctly called after a ref change.
3455 -
3456 - (0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
3457 - didElementChange.current = false;
3458 - }); // There should be no dependencies so that `callback` is only called when
3459 - // the node changes.
3460 -
3461 - return (0,external_wp_element_namespaceObject.useCallback)(value => {
3462 - // Update the element so it can be used when calling ref callbacks on a
3463 - // dependency change.
3464 - assignRef(element, value);
3465 - didElementChange.current = true; // When an element changes, the current ref callback should be called
3466 - // with the new element and the previous one with `null`.
3467 -
3468 - const refsToAssign = value ? currentRefs.current : previousRefs.current; // Update the latest refs.
3469 -
3470 - for (const ref of refsToAssign) {
3471 - assignRef(ref, value);
3472 - }
3473 - }, []);
3474 -}
3475 -//# sourceMappingURL=index.js.map
3476 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-dialog/index.js
3477 -/**
3478 - * WordPress dependencies
3479 - */
3480 -
3481 -
3482 -/**
3483 - * Internal dependencies
3484 - */
3485 -
3486 -
3487 -
3488 -
3489 -
3490 -
3491 -/* eslint-disable jsdoc/valid-types */
3492 -
3493 -/**
3494 - * @typedef DialogOptions
3495 - * @property {Parameters<useFocusOnMount>[0]} focusOnMount Focus on mount arguments.
3496 - * @property {() => void} onClose Function to call when the dialog is closed.
3497 - */
3498 -
3499 -/* eslint-enable jsdoc/valid-types */
3500 -
3501 -/**
3502 - * Returns a ref and props to apply to a dialog wrapper to enable the following behaviors:
3503 - * - constrained tabbing.
3504 - * - focus on mount.
3505 - * - return focus on unmount.
3506 - * - focus outside.
3507 - *
3508 - * @param {DialogOptions} options Dialog Options.
3509 - */
3510 -
3511 -function useDialog(options) {
3512 - /**
3513 - * @type {import('react').MutableRefObject<DialogOptions | undefined>}
3514 - */
3515 - const currentOptions = (0,external_wp_element_namespaceObject.useRef)();
3516 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3517 - currentOptions.current = options;
3518 - }, Object.values(options));
3519 - const constrainedTabbingRef = use_constrained_tabbing();
3520 - const focusOnMountRef = useFocusOnMount(options.focusOnMount);
3521 - const focusReturnRef = use_focus_return();
3522 - const focusOutsideProps = useFocusOutside(event => {
3523 - var _currentOptions$curre, _currentOptions$curre2;
3524 -
3525 - // This unstable prop is here only to manage backward compatibility
3526 - // for the Popover component otherwise, the onClose should be enough.
3527 - // @ts-ignore unstable property
3528 - if ((_currentOptions$curre = currentOptions.current) !== null && _currentOptions$curre !== void 0 && _currentOptions$curre.__unstableOnClose) {
3529 - // @ts-ignore unstable property
3530 - currentOptions.current.__unstableOnClose('focus-outside', event);
3531 - } else if ((_currentOptions$curre2 = currentOptions.current) !== null && _currentOptions$curre2 !== void 0 && _currentOptions$curre2.onClose) {
3532 - currentOptions.current.onClose();
3533 - }
3534 - });
3535 - const closeOnEscapeRef = (0,external_wp_element_namespaceObject.useCallback)(node => {
3536 - if (!node) {
3537 - return;
3538 - }
3539 -
3540 - node.addEventListener('keydown', (
3541 - /** @type {KeyboardEvent} */
3542 - event) => {
3543 - var _currentOptions$curre3;
3544 -
3545 - // Close on escape
3546 - if (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE && !event.defaultPrevented && (_currentOptions$curre3 = currentOptions.current) !== null && _currentOptions$curre3 !== void 0 && _currentOptions$curre3.onClose) {
3547 - event.preventDefault();
3548 - currentOptions.current.onClose();
3549 - }
3550 - });
3551 - }, []);
3552 - return [useMergeRefs([options.focusOnMount !== false ? constrainedTabbingRef : null, options.focusOnMount !== false ? focusReturnRef : null, options.focusOnMount !== false ? focusOnMountRef : null, closeOnEscapeRef]), { ...focusOutsideProps,
3553 - tabIndex: '-1'
3554 - }];
3555 -}
3556 -
3557 -/* harmony default export */ var use_dialog = (useDialog);
3558 -//# sourceMappingURL=index.js.map
3559 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-disabled/index.js
3560 -/**
3561 - * External dependencies
3562 - */
3563 -
3564 -/**
3565 - * WordPress dependencies
3566 - */
3567 -
3568 -
3569 -
3570 -/**
3571 - * Names of control nodes which qualify for disabled behavior.
3572 - *
3573 - * See WHATWG HTML Standard: 4.10.18.5: "Enabling and disabling form controls: the disabled attribute".
3574 - *
3575 - * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#enabling-and-disabling-form-controls:-the-disabled-attribute
3576 - *
3577 - * @type {string[]}
3578 - */
3579 -
3580 -const DISABLED_ELIGIBLE_NODE_NAMES = ['BUTTON', 'FIELDSET', 'INPUT', 'OPTGROUP', 'OPTION', 'SELECT', 'TEXTAREA'];
3581 -/**
3582 - * In some circumstances, such as block previews, all focusable DOM elements
3583 - * (input fields, links, buttons, etc.) need to be disabled. This hook adds the
3584 - * behavior to disable nested DOM elements to the returned ref.
3585 - *
3586 - * @return {import('react').RefObject<HTMLElement>} Element Ref.
3587 - *
3588 - * @example
3589 - * ```js
3590 - * import { __experimentalUseDisabled as useDisabled } from '@wordpress/compose';
3591 - * const DisabledExample = () => {
3592 - * const disabledRef = useDisabled();
3593 - * return (
3594 - * <div ref={ disabledRef }>
3595 - * <a href="#">This link will have tabindex set to -1</a>
3596 - * <input placeholder="This input will have the disabled attribute added to it." type="text" />
3597 - * </div>
3598 - * );
3599 - * };
3600 - * ```
3601 - */
3602 -
3603 -function useDisabled() {
3604 - /** @type {import('react').RefObject<HTMLElement>} */
3605 - const node = (0,external_wp_element_namespaceObject.useRef)(null);
3606 -
3607 - const disable = () => {
3608 - if (!node.current) {
3609 - return;
3610 - }
3611 -
3612 - external_wp_dom_namespaceObject.focus.focusable.find(node.current).forEach(focusable => {
3613 - if ((0,external_lodash_namespaceObject.includes)(DISABLED_ELIGIBLE_NODE_NAMES, focusable.nodeName)) {
3614 - focusable.setAttribute('disabled', '');
3615 - }
3616 -
3617 - if (focusable.nodeName === 'A') {
3618 - focusable.setAttribute('tabindex', '-1');
3619 - }
3620 -
3621 - const tabIndex = focusable.getAttribute('tabindex');
3622 -
3623 - if (tabIndex !== null && tabIndex !== '-1') {
3624 - focusable.removeAttribute('tabindex');
3625 - }
3626 -
3627 - if (focusable.hasAttribute('contenteditable')) {
3628 - focusable.setAttribute('contenteditable', 'false');
3629 - }
3630 - });
3631 - }; // Debounce re-disable since disabling process itself will incur
3632 - // additional mutations which should be ignored.
3633 -
3634 -
3635 - const debouncedDisable = (0,external_wp_element_namespaceObject.useCallback)((0,external_lodash_namespaceObject.debounce)(disable, undefined, {
3636 - leading: true
3637 - }), []);
3638 - (0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
3639 - disable();
3640 - /** @type {MutationObserver | undefined} */
3641 -
3642 - let observer;
3643 -
3644 - if (node.current) {
3645 - observer = new window.MutationObserver(debouncedDisable);
3646 - observer.observe(node.current, {
3647 - childList: true,
3648 - attributes: true,
3649 - subtree: true
3650 - });
3651 - }
3652 -
3653 - return () => {
3654 - if (observer) {
3655 - observer.disconnect();
3656 - }
3657 -
3658 - debouncedDisable.cancel();
3659 - };
3660 - }, []);
3661 - return node;
3662 -}
3663 -//# sourceMappingURL=index.js.map
3664 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-isomorphic-layout-effect/index.js
3665 -/**
3666 - * WordPress dependencies
3667 - */
3668 -
3669 -/**
3670 - * Preferred over direct usage of `useLayoutEffect` when supporting
3671 - * server rendered components (SSR) because currently React
3672 - * throws a warning when using useLayoutEffect in that environment.
3673 - */
3674 -
3675 -const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? external_wp_element_namespaceObject.useLayoutEffect : external_wp_element_namespaceObject.useEffect;
3676 -/* harmony default export */ var use_isomorphic_layout_effect = (useIsomorphicLayoutEffect);
3677 -//# sourceMappingURL=index.js.map
3678 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-dragging/index.js
3679 -/**
3680 - * WordPress dependencies
3681 - */
3682 -
3683 -/**
3684 - * Internal dependencies
3685 - */
3686 -
3687 -
3688 -/**
3689 - * @param {Object} props
3690 - * @param {(e: MouseEvent) => void} props.onDragStart
3691 - * @param {(e: MouseEvent) => void} props.onDragMove
3692 - * @param {(e: MouseEvent) => void} props.onDragEnd
3693 - */
3694 -
3695 -function useDragging(_ref) {
3696 - let {
3697 - onDragStart,
3698 - onDragMove,
3699 - onDragEnd
3700 - } = _ref;
3701 - const [isDragging, setIsDragging] = (0,external_wp_element_namespaceObject.useState)(false);
3702 - const eventsRef = (0,external_wp_element_namespaceObject.useRef)({
3703 - onDragStart,
3704 - onDragMove,
3705 - onDragEnd
3706 - });
3707 - use_isomorphic_layout_effect(() => {
3708 - eventsRef.current.onDragStart = onDragStart;
3709 - eventsRef.current.onDragMove = onDragMove;
3710 - eventsRef.current.onDragEnd = onDragEnd;
3711 - }, [onDragStart, onDragMove, onDragEnd]);
3712 - const onMouseMove = (0,external_wp_element_namespaceObject.useCallback)((
3713 - /** @type {MouseEvent} */
3714 - event) => eventsRef.current.onDragMove && eventsRef.current.onDragMove(event), []);
3715 - const endDrag = (0,external_wp_element_namespaceObject.useCallback)((
3716 - /** @type {MouseEvent} */
3717 - event) => {
3718 - if (eventsRef.current.onDragEnd) {
3719 - eventsRef.current.onDragEnd(event);
3720 - }
3721 -
3722 - document.removeEventListener('mousemove', onMouseMove);
3723 - document.removeEventListener('mouseup', endDrag);
3724 - setIsDragging(false);
3725 - }, []);
3726 - const startDrag = (0,external_wp_element_namespaceObject.useCallback)((
3727 - /** @type {MouseEvent} */
3728 - event) => {
3729 - if (eventsRef.current.onDragStart) {
3730 - eventsRef.current.onDragStart(event);
3731 - }
3732 -
3733 - document.addEventListener('mousemove', onMouseMove);
3734 - document.addEventListener('mouseup', endDrag);
3735 - setIsDragging(true);
3736 - }, []); // Remove the global events when unmounting if needed.
3737 -
3738 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3739 - return () => {
3740 - if (isDragging) {
3741 - document.removeEventListener('mousemove', onMouseMove);
3742 - document.removeEventListener('mouseup', endDrag);
3743 - }
3744 - };
3745 - }, [isDragging]);
3746 - return {
3747 - startDrag,
3748 - endDrag,
3749 - isDragging
3750 - };
3751 -}
3752 -//# sourceMappingURL=index.js.map
3753 -// EXTERNAL MODULE: ./node_modules/mousetrap/mousetrap.js
3754 -var mousetrap_mousetrap = __webpack_require__(2441);
3755 -var mousetrap_default = /*#__PURE__*/__webpack_require__.n(mousetrap_mousetrap);
3756 -// EXTERNAL MODULE: ./node_modules/mousetrap/plugins/global-bind/mousetrap-global-bind.js
3757 -var mousetrap_global_bind = __webpack_require__(3956);
3758 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-keyboard-shortcut/index.js
3759 -/**
3760 - * External dependencies
3761 - */
3762 -
3763 -
3764 -
3765 -/**
3766 - * WordPress dependencies
3767 - */
3768 -
3769 -
3770 -/**
3771 - * A block selection object.
3772 - *
3773 - * @typedef {Object} WPKeyboardShortcutConfig
3774 - *
3775 - * @property {boolean} [bindGlobal] Handle keyboard events anywhere including inside textarea/input fields.
3776 - * @property {string} [eventName] Event name used to trigger the handler, defaults to keydown.
3777 - * @property {boolean} [isDisabled] Disables the keyboard handler if the value is true.
3778 - * @property {import('react').RefObject<HTMLElement>} [target] React reference to the DOM element used to catch the keyboard event.
3779 - */
3780 -
3781 -/**
3782 - * Return true if platform is MacOS.
3783 - *
3784 - * @param {Window} [_window] window object by default; used for DI testing.
3785 - *
3786 - * @return {boolean} True if MacOS; false otherwise.
3787 - */
3788 -
3789 -function isAppleOS() {
3790 - let _window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
3791 -
3792 - const {
3793 - platform
3794 - } = _window.navigator;
3795 - return platform.indexOf('Mac') !== -1 || (0,external_lodash_namespaceObject.includes)(['iPad', 'iPhone'], platform);
3796 -}
3797 -/* eslint-disable jsdoc/valid-types */
3798 -
3799 -/**
3800 - * Attach a keyboard shortcut handler.
3801 - *
3802 - * @see https://craig.is/killing/mice#api.bind for information about the `callback` parameter.
3803 - *
3804 - * @param {string[]|string} shortcuts Keyboard Shortcuts.
3805 - * @param {(e: import('mousetrap').ExtendedKeyboardEvent, combo: string) => void} callback Shortcut callback.
3806 - * @param {WPKeyboardShortcutConfig} options Shortcut options.
3807 - */
3808 -
3809 -
3810 -function useKeyboardShortcut(
3811 -/* eslint-enable jsdoc/valid-types */
3812 -shortcuts, callback) {
3813 - let {
3814 - bindGlobal = false,
3815 - eventName = 'keydown',
3816 - isDisabled = false,
3817 - // This is important for performance considerations.
3818 - target
3819 - } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
3820 - const currentCallback = (0,external_wp_element_namespaceObject.useRef)(callback);
3821 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3822 - currentCallback.current = callback;
3823 - }, [callback]);
3824 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3825 - if (isDisabled) {
3826 - return;
3827 - }
3828 -
3829 - const mousetrap = new (mousetrap_default())(target && target.current ? target.current : // We were passing `document` here previously, so to successfully cast it to Element we must cast it first to `unknown`.
3830 - // Not sure if this is a mistake but it was the behavior previous to the addition of types so we're just doing what's
3831 - // necessary to maintain the existing behavior
3832 -
3833 - /** @type {Element} */
3834 -
3835 - /** @type {unknown} */
3836 - document);
3837 - (0,external_lodash_namespaceObject.castArray)(shortcuts).forEach(shortcut => {
3838 - const keys = shortcut.split('+'); // Determines whether a key is a modifier by the length of the string.
3839 - // E.g. if I add a pass a shortcut Shift+Cmd+M, it'll determine that
3840 - // the modifiers are Shift and Cmd because they're not a single character.
3841 -
3842 - const modifiers = new Set(keys.filter(value => value.length > 1));
3843 - const hasAlt = modifiers.has('alt');
3844 - const hasShift = modifiers.has('shift'); // This should be better moved to the shortcut registration instead.
3845 -
3846 - if (isAppleOS() && (modifiers.size === 1 && hasAlt || modifiers.size === 2 && hasAlt && hasShift)) {
3847 - throw new Error(`Cannot bind ${shortcut}. Alt and Shift+Alt modifiers are reserved for character input.`);
3848 - }
3849 -
3850 - const bindFn = bindGlobal ? 'bindGlobal' : 'bind'; // @ts-ignore `bindGlobal` is an undocumented property
3851 -
3852 - mousetrap[bindFn](shortcut, function () {
3853 - return (
3854 - /* eslint-enable jsdoc/valid-types */
3855 - currentCallback.current(...arguments)
3856 - );
3857 - }, eventName);
3858 - });
3859 - return () => {
3860 - mousetrap.reset();
3861 - };
3862 - }, [shortcuts, bindGlobal, eventName, target, isDisabled]);
3863 -}
3864 -
3865 -/* harmony default export */ var use_keyboard_shortcut = (useKeyboardShortcut);
3866 -//# sourceMappingURL=index.js.map
3867 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-media-query/index.js
3868 -/**
3869 - * WordPress dependencies
3870 - */
3871 -
3872 -/**
3873 - * Runs a media query and returns its value when it changes.
3874 - *
3875 - * @param {string} [query] Media Query.
3876 - * @return {boolean} return value of the media query.
3877 - */
3878 -
3879 -function useMediaQuery(query) {
3880 - const [match, setMatch] = (0,external_wp_element_namespaceObject.useState)(() => !!(query && typeof window !== 'undefined' && window.matchMedia(query).matches));
3881 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3882 - if (!query) {
3883 - return;
3884 - }
3885 -
3886 - const updateMatch = () => setMatch(window.matchMedia(query).matches);
3887 -
3888 - updateMatch();
3889 - const list = window.matchMedia(query);
3890 - list.addListener(updateMatch);
3891 - return () => {
3892 - list.removeListener(updateMatch);
3893 - };
3894 - }, [query]);
3895 - return !!query && match;
3896 -}
3897 -//# sourceMappingURL=index.js.map
3898 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-previous/index.js
3899 -/**
3900 - * WordPress dependencies
3901 - */
3902 -
3903 -/**
3904 - * Use something's value from the previous render.
3905 - * Based on https://usehooks.com/usePrevious/.
3906 - *
3907 - * @param value The value to track.
3908 - *
3909 - * @return The value from the previous render.
3910 - */
3911 -
3912 -function usePrevious(value) {
3913 - const ref = (0,external_wp_element_namespaceObject.useRef)(); // Store current value in ref.
3914 -
3915 - (0,external_wp_element_namespaceObject.useEffect)(() => {
3916 - ref.current = value;
3917 - }, [value]); // Re-run when value changes.
3918 - // Return previous value (happens before update in useEffect above).
3919 -
3920 - return ref.current;
3921 -}
3922 -//# sourceMappingURL=index.js.map
3923 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-reduced-motion/index.js
3924 -/**
3925 - * Internal dependencies
3926 - */
3927 -
3928 -/**
3929 - * Hook returning whether the user has a preference for reduced motion.
3930 - *
3931 - * @return {boolean} Reduced motion preference value.
3932 - */
3933 -
3934 -const useReducedMotion = () => useMediaQuery('(prefers-reduced-motion: reduce)');
3935 -
3936 -/* harmony default export */ var use_reduced_motion = (useReducedMotion);
3937 -//# sourceMappingURL=index.js.map
3938 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-viewport-match/index.js
3939 -/**
3940 - * WordPress dependencies
3941 - */
3942 -
3943 -/**
3944 - * Internal dependencies
3945 - */
3946 -
3947 -
3948 -/**
3949 - * @typedef {"huge" | "wide" | "large" | "medium" | "small" | "mobile"} WPBreakpoint
3950 - */
3951 -
3952 -/**
3953 - * Hash of breakpoint names with pixel width at which it becomes effective.
3954 - *
3955 - * @see _breakpoints.scss
3956 - *
3957 - * @type {Record<WPBreakpoint, number>}
3958 - */
3959 -
3960 -const BREAKPOINTS = {
3961 - huge: 1440,
3962 - wide: 1280,
3963 - large: 960,
3964 - medium: 782,
3965 - small: 600,
3966 - mobile: 480
3967 -};
3968 -/**
3969 - * @typedef {">=" | "<"} WPViewportOperator
3970 - */
3971 -
3972 -/**
3973 - * Object mapping media query operators to the condition to be used.
3974 - *
3975 - * @type {Record<WPViewportOperator, string>}
3976 - */
3977 -
3978 -const CONDITIONS = {
3979 - '>=': 'min-width',
3980 - '<': 'max-width'
3981 -};
3982 -/**
3983 - * Object mapping media query operators to a function that given a breakpointValue and a width evaluates if the operator matches the values.
3984 - *
3985 - * @type {Record<WPViewportOperator, (breakpointValue: number, width: number) => boolean>}
3986 - */
3987 -
3988 -const OPERATOR_EVALUATORS = {
3989 - '>=': (breakpointValue, width) => width >= breakpointValue,
3990 - '<': (breakpointValue, width) => width < breakpointValue
3991 -};
3992 -const ViewportMatchWidthContext = (0,external_wp_element_namespaceObject.createContext)(
3993 -/** @type {null | number} */
3994 -null);
3995 -/**
3996 - * Returns true if the viewport matches the given query, or false otherwise.
3997 - *
3998 - * @param {WPBreakpoint} breakpoint Breakpoint size name.
3999 - * @param {WPViewportOperator} [operator=">="] Viewport operator.
4000 - *
4001 - * @example
4002 - *
4003 - * ```js
4004 - * useViewportMatch( 'huge', '<' );
4005 - * useViewportMatch( 'medium' );
4006 - * ```
4007 - *
4008 - * @return {boolean} Whether viewport matches query.
4009 - */
4010 -
4011 -const useViewportMatch = function (breakpoint) {
4012 - let operator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '>=';
4013 - const simulatedWidth = (0,external_wp_element_namespaceObject.useContext)(ViewportMatchWidthContext);
4014 - const mediaQuery = !simulatedWidth && `(${CONDITIONS[operator]}: ${BREAKPOINTS[breakpoint]}px)`;
4015 - const mediaQueryResult = useMediaQuery(mediaQuery || undefined);
4016 -
4017 - if (simulatedWidth) {
4018 - return OPERATOR_EVALUATORS[operator](BREAKPOINTS[breakpoint], simulatedWidth);
4019 - }
4020 -
4021 - return mediaQueryResult;
4022 -};
4023 -
4024 -useViewportMatch.__experimentalWidthProvider = ViewportMatchWidthContext.Provider;
4025 -/* harmony default export */ var use_viewport_match = (useViewportMatch);
4026 -//# sourceMappingURL=index.js.map
4027 -// EXTERNAL MODULE: ./node_modules/react-resize-aware/dist/index.js
4028 -var dist = __webpack_require__(5464);
4029 -var dist_default = /*#__PURE__*/__webpack_require__.n(dist);
4030 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-resize-observer/index.js
4031 -/**
4032 - * External dependencies
4033 - */
4034 -
4035 -/**
4036 - * Hook which allows to listen the resize event of any target element when it changes sizes.
4037 - * _Note: `useResizeObserver` will report `null` until after first render_
4038 - *
4039 - * Simply a re-export of `react-resize-aware` so refer to its documentation <https://github.com/FezVrasta/react-resize-aware>
4040 - * for more details.
4041 - *
4042 - * @see https://github.com/FezVrasta/react-resize-aware
4043 - *
4044 - * @example
4045 - *
4046 - * ```js
4047 - * const App = () => {
4048 - * const [ resizeListener, sizes ] = useResizeObserver();
4049 - *
4050 - * return (
4051 - * <div>
4052 - * { resizeListener }
4053 - * Your content here
4054 - * </div>
4055 - * );
4056 - * };
4057 - * ```
4058 - *
4059 - */
4060 -
4061 -/* harmony default export */ var use_resize_observer = ((dist_default()));
4062 -//# sourceMappingURL=index.js.map
4063 -;// CONCATENATED MODULE: external ["wp","priorityQueue"]
4064 -var external_wp_priorityQueue_namespaceObject = window["wp"]["priorityQueue"];
4065 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-async-list/index.js
4066 -/**
4067 - * WordPress dependencies
4068 - */
4069 -
4070 -
4071 -
4072 -/**
4073 - * Returns the first items from list that are present on state.
4074 - *
4075 - * @param list New array.
4076 - * @param state Current state.
4077 - * @return First items present iin state.
4078 - */
4079 -function getFirstItemsPresentInState(list, state) {
4080 - const firstItems = [];
4081 -
4082 - for (let i = 0; i < list.length; i++) {
4083 - const item = list[i];
4084 -
4085 - if (!state.includes(item)) {
4086 - break;
4087 - }
4088 -
4089 - firstItems.push(item);
4090 - }
4091 -
4092 - return firstItems;
4093 -}
4094 -/**
4095 - * React hook returns an array which items get asynchronously appended from a source array.
4096 - * This behavior is useful if we want to render a list of items asynchronously for performance reasons.
4097 - *
4098 - * @param list Source array.
4099 - * @param config Configuration object.
4100 - *
4101 - * @return Async array.
4102 - */
4103 -
4104 -
4105 -function useAsyncList(list) {
4106 - let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
4107 - step: 1
4108 - };
4109 - const {
4110 - step = 1
4111 - } = config;
4112 - const [current, setCurrent] = (0,external_wp_element_namespaceObject.useState)([]);
4113 - (0,external_wp_element_namespaceObject.useEffect)(() => {
4114 - // On reset, we keep the first items that were previously rendered.
4115 - let firstItems = getFirstItemsPresentInState(list, current);
4116 -
4117 - if (firstItems.length < step) {
4118 - firstItems = firstItems.concat(list.slice(firstItems.length, step));
4119 - }
4120 -
4121 - setCurrent(firstItems);
4122 - let nextIndex = firstItems.length;
4123 - const asyncQueue = (0,external_wp_priorityQueue_namespaceObject.createQueue)();
4124 -
4125 - const append = () => {
4126 - if (list.length <= nextIndex) {
4127 - return;
4128 - }
4129 -
4130 - setCurrent(state => [...state, ...list.slice(nextIndex, nextIndex + step)]);
4131 - nextIndex += step;
4132 - asyncQueue.add({}, append);
4133 - };
4134 -
4135 - asyncQueue.add({}, append);
4136 - return () => asyncQueue.reset();
4137 - }, [list]);
4138 - return current;
4139 -}
4140 -
4141 -/* harmony default export */ var use_async_list = (useAsyncList);
4142 -//# sourceMappingURL=index.js.map
4143 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-warn-on-change/index.js
4144 -/**
4145 - * Internal dependencies
4146 - */
4147 - // Disable reason: Object and object are distinctly different types in TypeScript and we mean the lowercase object in thise case
4148 -// but eslint wants to force us to use `Object`. See https://stackoverflow.com/questions/49464634/difference-between-object-and-object-in-typescript
4149 -
4150 -/* eslint-disable jsdoc/check-types */
4151 -
4152 -/**
4153 - * Hook that performs a shallow comparison between the preview value of an object
4154 - * and the new one, if there's a difference, it prints it to the console.
4155 - * this is useful in performance related work, to check why a component re-renders.
4156 - *
4157 - * @example
4158 - *
4159 - * ```jsx
4160 - * function MyComponent(props) {
4161 - * useWarnOnChange(props);
4162 - *
4163 - * return "Something";
4164 - * }
4165 - * ```
4166 - *
4167 - * @param {object} object Object which changes to compare.
4168 - * @param {string} prefix Just a prefix to show when console logging.
4169 - */
4170 -
4171 -function useWarnOnChange(object) {
4172 - let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Change detection';
4173 - const previousValues = usePrevious(object);
4174 - Object.entries(previousValues !== null && previousValues !== void 0 ? previousValues : []).forEach(_ref => {
4175 - let [key, value] = _ref;
4176 -
4177 - if (value !== object[
4178 - /** @type {keyof typeof object} */
4179 - key]) {
4180 - // eslint-disable-next-line no-console
4181 - console.warn(`${prefix}: ${key} key changed:`, value, object[
4182 - /** @type {keyof typeof object} */
4183 - key]
4184 - /* eslint-enable jsdoc/check-types */
4185 - );
4186 - }
4187 - });
4188 -}
4189 -
4190 -/* harmony default export */ var use_warn_on_change = (useWarnOnChange);
4191 -//# sourceMappingURL=index.js.map
4192 -// EXTERNAL MODULE: external "React"
4193 -var external_React_ = __webpack_require__(9196);
4194 -;// CONCATENATED MODULE: ./node_modules/use-memo-one/dist/use-memo-one.esm.js
4195 -
4196 -
4197 -function areInputsEqual(newInputs, lastInputs) {
4198 - if (newInputs.length !== lastInputs.length) {
4199 - return false;
4200 - }
4201 -
4202 - for (var i = 0; i < newInputs.length; i++) {
4203 - if (newInputs[i] !== lastInputs[i]) {
4204 - return false;
4205 - }
4206 - }
4207 -
4208 - return true;
4209 -}
4210 -
4211 -function useMemoOne(getResult, inputs) {
4212 - var initial = (0,external_React_.useState)(function () {
4213 - return {
4214 - inputs: inputs,
4215 - result: getResult()
4216 - };
4217 - })[0];
4218 - var committed = (0,external_React_.useRef)(initial);
4219 - var isInputMatch = Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));
4220 - var cache = isInputMatch ? committed.current : {
4221 - inputs: inputs,
4222 - result: getResult()
4223 - };
4224 - (0,external_React_.useEffect)(function () {
4225 - committed.current = cache;
4226 - }, [cache]);
4227 - return cache.result;
4228 -}
4229 -function useCallbackOne(callback, inputs) {
4230 - return useMemoOne(function () {
4231 - return callback;
4232 - }, inputs);
4233 -}
4234 -var useMemo = (/* unused pure expression or super */ null && (useMemoOne));
4235 -var useCallback = (/* unused pure expression or super */ null && (useCallbackOne));
4236 -
4237 -
4238 -
4239 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-debounce/index.js
4240 -/**
4241 - * External dependencies
4242 - */
4243 -
4244 -
4245 -/**
4246 - * WordPress dependencies
4247 - */
4248 -
4249 -
4250 -/* eslint-disable jsdoc/valid-types */
4251 -
4252 -/**
4253 - * Debounces a function with Lodash's `debounce`. A new debounced function will
4254 - * be returned and any scheduled calls cancelled if any of the arguments change,
4255 - * including the function to debounce, so please wrap functions created on
4256 - * render in components in `useCallback`.
4257 - *
4258 - * @see https://docs-lodash.com/v4/debounce/
4259 - *
4260 - * @template {(...args: any[]) => void} TFunc
4261 - *
4262 - * @param {TFunc} fn The function to debounce.
4263 - * @param {number} [wait] The number of milliseconds to delay.
4264 - * @param {import('lodash').DebounceSettings} [options] The options object.
4265 - * @return {import('lodash').DebouncedFunc<TFunc>} Debounced function.
4266 - */
4267 -
4268 -function useDebounce(fn, wait, options) {
4269 - /* eslint-enable jsdoc/valid-types */
4270 - const debounced = useMemoOne(() => (0,external_lodash_namespaceObject.debounce)(fn, wait, options), [fn, wait, options]);
4271 - (0,external_wp_element_namespaceObject.useEffect)(() => () => debounced.cancel(), [debounced]);
4272 - return debounced;
4273 -}
4274 -//# sourceMappingURL=index.js.map
4275 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-throttle/index.js
4276 -/**
4277 - * External dependencies
4278 - */
4279 -
4280 -
4281 -/**
4282 - * WordPress dependencies
4283 - */
4284 -
4285 -
4286 -/**
4287 - * Throttles a function with Lodash's `throttle`. A new throttled function will
4288 - * be returned and any scheduled calls cancelled if any of the arguments change,
4289 - * including the function to throttle, so please wrap functions created on
4290 - * render in components in `useCallback`.
4291 - *
4292 - * @see https://docs-lodash.com/v4/throttle/
4293 - *
4294 - * @template {(...args: any[]) => void} TFunc
4295 - *
4296 - * @param {TFunc} fn The function to throttle.
4297 - * @param {number} [wait] The number of milliseconds to throttle invocations to.
4298 - * @param {import('lodash').ThrottleSettings} [options] The options object. See linked documentation for details.
4299 - * @return {import('lodash').DebouncedFunc<TFunc>} Throttled function.
4300 - */
4301 -
4302 -function useThrottle(fn, wait, options) {
4303 - const throttled = useMemoOne(() => (0,external_lodash_namespaceObject.throttle)(fn, wait, options), [fn, wait, options]);
4304 - (0,external_wp_element_namespaceObject.useEffect)(() => () => throttled.cancel(), [throttled]);
4305 - return throttled;
4306 -}
4307 -//# sourceMappingURL=index.js.map
4308 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-drop-zone/index.js
4309 -/**
4310 - * WordPress dependencies
4311 - */
4312 -
4313 -/**
4314 - * Internal dependencies
4315 - */
4316 -
4317 -
4318 -/* eslint-disable jsdoc/valid-types */
4319 -
4320 -/**
4321 - * @template T
4322 - * @param {T} value
4323 - * @return {import('react').MutableRefObject<T>} A ref with the value.
4324 - */
4325 -
4326 -function useFreshRef(value) {
4327 - /* eslint-enable jsdoc/valid-types */
4328 -
4329 - /* eslint-disable jsdoc/no-undefined-types */
4330 -
4331 - /** @type {import('react').MutableRefObject<T>} */
4332 -
4333 - /* eslint-enable jsdoc/no-undefined-types */
4334 - // Disable reason: We're doing something pretty JavaScript-y here where the
4335 - // ref will always have a current value that is not null or undefined but it
4336 - // needs to start as undefined. We don't want to change the return type so
4337 - // it's easier to just ts-ignore this specific line that's complaining about
4338 - // undefined not being part of T.
4339 - // @ts-ignore
4340 - const ref = (0,external_wp_element_namespaceObject.useRef)();
4341 - ref.current = value;
4342 - return ref;
4343 -}
4344 -/**
4345 - * A hook to facilitate drag and drop handling.
4346 - *
4347 - * @param {Object} props Named parameters.
4348 - * @param {boolean} props.isDisabled Whether or not to disable the drop zone.
4349 - * @param {(e: DragEvent) => void} props.onDragStart Called when dragging has started.
4350 - * @param {(e: DragEvent) => void} props.onDragEnter Called when the zone is entered.
4351 - * @param {(e: DragEvent) => void} props.onDragOver Called when the zone is moved within.
4352 - * @param {(e: DragEvent) => void} props.onDragLeave Called when the zone is left.
4353 - * @param {(e: MouseEvent) => void} props.onDragEnd Called when dragging has ended.
4354 - * @param {(e: DragEvent) => void} props.onDrop Called when dropping in the zone.
4355 - *
4356 - * @return {import('react').RefCallback<HTMLElement>} Ref callback to be passed to the drop zone element.
4357 - */
4358 -
4359 -
4360 -function useDropZone(_ref) {
4361 - let {
4362 - isDisabled,
4363 - onDrop: _onDrop,
4364 - onDragStart: _onDragStart,
4365 - onDragEnter: _onDragEnter,
4366 - onDragLeave: _onDragLeave,
4367 - onDragEnd: _onDragEnd,
4368 - onDragOver: _onDragOver
4369 - } = _ref;
4370 - const onDropRef = useFreshRef(_onDrop);
4371 - const onDragStartRef = useFreshRef(_onDragStart);
4372 - const onDragEnterRef = useFreshRef(_onDragEnter);
4373 - const onDragLeaveRef = useFreshRef(_onDragLeave);
4374 - const onDragEndRef = useFreshRef(_onDragEnd);
4375 - const onDragOverRef = useFreshRef(_onDragOver);
4376 - return useRefEffect(element => {
4377 - if (isDisabled) {
4378 - return;
4379 - }
4380 -
4381 - let isDragging = false;
4382 - const {
4383 - ownerDocument
4384 - } = element;
4385 - /**
4386 - * Checks if an element is in the drop zone.
4387 - *
4388 - * @param {EventTarget|null} targetToCheck
4389 - *
4390 - * @return {boolean} True if in drop zone, false if not.
4391 - */
4392 -
4393 - function isElementInZone(targetToCheck) {
4394 - const {
4395 - defaultView
4396 - } = ownerDocument;
4397 -
4398 - if (!targetToCheck || !defaultView || !(targetToCheck instanceof defaultView.HTMLElement) || !element.contains(targetToCheck)) {
4399 - return false;
4400 - }
4401 - /** @type {HTMLElement|null} */
4402 -
4403 -
4404 - let elementToCheck = targetToCheck;
4405 -
4406 - do {
4407 - if (elementToCheck.dataset.isDropZone) {
4408 - return elementToCheck === element;
4409 - }
4410 - } while (elementToCheck = elementToCheck.parentElement);
4411 -
4412 - return false;
4413 - }
4414 -
4415 - function maybeDragStart(
4416 - /** @type {DragEvent} */
4417 - event) {
4418 - if (isDragging) {
4419 - return;
4420 - }
4421 -
4422 - isDragging = true;
4423 - ownerDocument.removeEventListener('dragenter', maybeDragStart); // Note that `dragend` doesn't fire consistently for file and
4424 - // HTML drag events where the drag origin is outside the browser
4425 - // window. In Firefox it may also not fire if the originating
4426 - // node is removed.
4427 -
4428 - ownerDocument.addEventListener('dragend', maybeDragEnd);
4429 - ownerDocument.addEventListener('mousemove', maybeDragEnd);
4430 -
4431 - if (onDragStartRef.current) {
4432 - onDragStartRef.current(event);
4433 - }
4434 - }
4435 -
4436 - function onDragEnter(
4437 - /** @type {DragEvent} */
4438 - event) {
4439 - event.preventDefault(); // The `dragenter` event will also fire when entering child
4440 - // elements, but we only want to call `onDragEnter` when
4441 - // entering the drop zone, which means the `relatedTarget`
4442 - // (element that has been left) should be outside the drop zone.
4443 -
4444 - if (element.contains(
4445 - /** @type {Node} */
4446 - event.relatedTarget)) {
4447 - return;
4448 - }
4449 -
4450 - if (onDragEnterRef.current) {
4451 - onDragEnterRef.current(event);
4452 - }
4453 - }
4454 -
4455 - function onDragOver(
4456 - /** @type {DragEvent} */
4457 - event) {
4458 - // Only call onDragOver for the innermost hovered drop zones.
4459 - if (!event.defaultPrevented && onDragOverRef.current) {
4460 - onDragOverRef.current(event);
4461 - } // Prevent the browser default while also signalling to parent
4462 - // drop zones that `onDragOver` is already handled.
4463 -
4464 -
4465 - event.preventDefault();
4466 - }
4467 -
4468 - function onDragLeave(
4469 - /** @type {DragEvent} */
4470 - event) {
4471 - // The `dragleave` event will also fire when leaving child
4472 - // elements, but we only want to call `onDragLeave` when
4473 - // leaving the drop zone, which means the `relatedTarget`
4474 - // (element that has been entered) should be outside the drop
4475 - // zone.
4476 - if (isElementInZone(event.relatedTarget)) {
4477 - return;
4478 - }
4479 -
4480 - if (onDragLeaveRef.current) {
4481 - onDragLeaveRef.current(event);
4482 - }
4483 - }
4484 -
4485 - function onDrop(
4486 - /** @type {DragEvent} */
4487 - event) {
4488 - // Don't handle drop if an inner drop zone already handled it.
4489 - if (event.defaultPrevented) {
4490 - return;
4491 - } // Prevent the browser default while also signalling to parent
4492 - // drop zones that `onDrop` is already handled.
4493 -
4494 -
4495 - event.preventDefault(); // This seemingly useless line has been shown to resolve a
4496 - // Safari issue where files dragged directly from the dock are
4497 - // not recognized.
4498 - // eslint-disable-next-line no-unused-expressions
4499 -
4500 - event.dataTransfer && event.dataTransfer.files.length;
4501 -
4502 - if (onDropRef.current) {
4503 - onDropRef.current(event);
4504 - }
4505 -
4506 - maybeDragEnd(event);
4507 - }
4508 -
4509 - function maybeDragEnd(
4510 - /** @type {MouseEvent} */
4511 - event) {
4512 - if (!isDragging) {
4513 - return;
4514 - }
4515 -
4516 - isDragging = false;
4517 - ownerDocument.addEventListener('dragenter', maybeDragStart);
4518 - ownerDocument.removeEventListener('dragend', maybeDragEnd);
4519 - ownerDocument.removeEventListener('mousemove', maybeDragEnd);
4520 -
4521 - if (onDragEndRef.current) {
4522 - onDragEndRef.current(event);
4523 - }
4524 - }
4525 -
4526 - element.dataset.isDropZone = 'true';
4527 - element.addEventListener('drop', onDrop);
4528 - element.addEventListener('dragenter', onDragEnter);
4529 - element.addEventListener('dragover', onDragOver);
4530 - element.addEventListener('dragleave', onDragLeave); // The `dragstart` event doesn't fire if the drag started outside
4531 - // the document.
4532 -
4533 - ownerDocument.addEventListener('dragenter', maybeDragStart);
4534 - return () => {
4535 - delete element.dataset.isDropZone;
4536 - element.removeEventListener('drop', onDrop);
4537 - element.removeEventListener('dragenter', onDragEnter);
4538 - element.removeEventListener('dragover', onDragOver);
4539 - element.removeEventListener('dragleave', onDragLeave);
4540 - ownerDocument.removeEventListener('dragend', maybeDragEnd);
4541 - ownerDocument.removeEventListener('mousemove', maybeDragEnd);
4542 - ownerDocument.addEventListener('dragenter', maybeDragStart);
4543 - };
4544 - }, [isDisabled]);
4545 -}
4546 -//# sourceMappingURL=index.js.map
4547 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-focusable-iframe/index.js
4548 -/**
4549 - * Internal dependencies
4550 - */
4551 -
4552 -/**
4553 - * Dispatches a bubbling focus event when the iframe receives focus. Use
4554 - * `onFocus` as usual on the iframe or a parent element.
4555 - *
4556 - * @return {Object} Ref to pass to the iframe.
4557 - */
4558 -
4559 -function useFocusableIframe() {
4560 - return useRefEffect(element => {
4561 - const {
4562 - ownerDocument
4563 - } = element;
4564 - if (!ownerDocument) return;
4565 - const {
4566 - defaultView
4567 - } = ownerDocument;
4568 - if (!defaultView) return;
4569 - /**
4570 - * Checks whether the iframe is the activeElement, inferring that it has
4571 - * then received focus, and dispatches a focus event.
4572 - */
4573 -
4574 - function checkFocus() {
4575 - if (ownerDocument && ownerDocument.activeElement === element) {
4576 - /** @type {HTMLElement} */
4577 - element.focus();
4578 - }
4579 - }
4580 -
4581 - defaultView.addEventListener('blur', checkFocus);
4582 - return () => {
4583 - defaultView.removeEventListener('blur', checkFocus);
4584 - };
4585 - }, []);
4586 -}
4587 -//# sourceMappingURL=index.js.map
4588 -;// CONCATENATED MODULE: ./packages/compose/build-module/hooks/use-fixed-window-list/index.js
4589 -/**
4590 - * External dependencies
4591 - */
4592 -
4593 -/**
4594 - * WordPress dependencies
4595 - */
4596 -
4597 -
4598 -
4599 -
4600 -const DEFAULT_INIT_WINDOW_SIZE = 30;
4601 -/**
4602 - * @typedef {Object} WPFixedWindowList
4603 - *
4604 - * @property {number} visibleItems Items visible in the current viewport
4605 - * @property {number} start Start index of the window
4606 - * @property {number} end End index of the window
4607 - * @property {(index:number)=>boolean} itemInView Returns true if item is in the window
4608 - */
4609 -
4610 -/**
4611 - * @typedef {Object} WPFixedWindowListOptions
4612 - *
4613 - * @property {number} [windowOverscan] Renders windowOverscan number of items before and after the calculated visible window.
4614 - * @property {boolean} [useWindowing] When false avoids calculating the window size
4615 - * @property {number} [initWindowSize] Initial window size to use on first render before we can calculate the window size.
4616 - */
4617 -
4618 -/**
4619 - *
4620 - * @param {import('react').RefObject<HTMLElement>} elementRef Used to find the closest scroll container that contains element.
4621 - * @param { number } itemHeight Fixed item height in pixels
4622 - * @param { number } totalItems Total items in list
4623 - * @param { WPFixedWindowListOptions } [options] Options object
4624 - * @return {[ WPFixedWindowList, setFixedListWindow:(nextWindow:WPFixedWindowList)=>void]} Array with the fixed window list and setter
4625 - */
4626 -
4627 -function useFixedWindowList(elementRef, itemHeight, totalItems, options) {
4628 - var _options$initWindowSi, _options$useWindowing;
4629 -
4630 - const initWindowSize = (_options$initWindowSi = options === null || options === void 0 ? void 0 : options.initWindowSize) !== null && _options$initWindowSi !== void 0 ? _options$initWindowSi : DEFAULT_INIT_WINDOW_SIZE;
4631 - const useWindowing = (_options$useWindowing = options === null || options === void 0 ? void 0 : options.useWindowing) !== null && _options$useWindowing !== void 0 ? _options$useWindowing : true;
4632 - const [fixedListWindow, setFixedListWindow] = (0,external_wp_element_namespaceObject.useState)({
4633 - visibleItems: initWindowSize,
4634 - start: 0,
4635 - end: initWindowSize,
4636 - itemInView: (
4637 - /** @type {number} */
4638 - index) => {
4639 - return index >= 0 && index <= initWindowSize;
4640 - }
4641 - });
4642 - (0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
4643 - var _scrollContainer$owne, _scrollContainer$owne2, _scrollContainer$owne3, _scrollContainer$owne4;
4644 -
4645 - if (!useWindowing) {
4646 - return;
4647 - }
4648 -
4649 - const scrollContainer = (0,external_wp_dom_namespaceObject.getScrollContainer)(elementRef.current);
4650 -
4651 - const measureWindow = (
4652 - /** @type {boolean | undefined} */
4653 - initRender) => {
4654 - var _options$windowOversc;
4655 -
4656 - if (!scrollContainer) {
4657 - return;
4658 - }
4659 -
4660 - const visibleItems = Math.ceil(scrollContainer.clientHeight / itemHeight); // Aim to keep opening list view fast, afterward we can optimize for scrolling
4661 -
4662 - const windowOverscan = initRender ? visibleItems : (_options$windowOversc = options === null || options === void 0 ? void 0 : options.windowOverscan) !== null && _options$windowOversc !== void 0 ? _options$windowOversc : visibleItems;
4663 - const firstViewableIndex = Math.floor(scrollContainer.scrollTop / itemHeight);
4664 - const start = Math.max(0, firstViewableIndex - windowOverscan);
4665 - const end = Math.min(totalItems - 1, firstViewableIndex + visibleItems + windowOverscan);
4666 - setFixedListWindow(lastWindow => {
4667 - const nextWindow = {
4668 - visibleItems,
4669 - start,
4670 - end,
4671 - itemInView: (
4672 - /** @type {number} */
4673 - index) => {
4674 - return start <= index && index <= end;
4675 - }
4676 - };
4677 -
4678 - if (lastWindow.start !== nextWindow.start || lastWindow.end !== nextWindow.end || lastWindow.visibleItems !== nextWindow.visibleItems) {
4679 - return nextWindow;
4680 - }
4681 -
4682 - return lastWindow;
4683 - });
4684 - };
4685 -
4686 - measureWindow(true);
4687 - const debounceMeasureList = (0,external_lodash_namespaceObject.debounce)(() => {
4688 - measureWindow();
4689 - }, 16);
4690 - scrollContainer === null || scrollContainer === void 0 ? void 0 : scrollContainer.addEventListener('scroll', debounceMeasureList);
4691 - scrollContainer === null || scrollContainer === void 0 ? void 0 : (_scrollContainer$owne = scrollContainer.ownerDocument) === null || _scrollContainer$owne === void 0 ? void 0 : (_scrollContainer$owne2 = _scrollContainer$owne.defaultView) === null || _scrollContainer$owne2 === void 0 ? void 0 : _scrollContainer$owne2.addEventListener('resize', debounceMeasureList);
4692 - scrollContainer === null || scrollContainer === void 0 ? void 0 : (_scrollContainer$owne3 = scrollContainer.ownerDocument) === null || _scrollContainer$owne3 === void 0 ? void 0 : (_scrollContainer$owne4 = _scrollContainer$owne3.defaultView) === null || _scrollContainer$owne4 === void 0 ? void 0 : _scrollContainer$owne4.addEventListener('resize', debounceMeasureList);
4693 - return () => {
4694 - var _scrollContainer$owne5, _scrollContainer$owne6;
4695 -
4696 - scrollContainer === null || scrollContainer === void 0 ? void 0 : scrollContainer.removeEventListener('scroll', debounceMeasureList);
4697 - scrollContainer === null || scrollContainer === void 0 ? void 0 : (_scrollContainer$owne5 = scrollContainer.ownerDocument) === null || _scrollContainer$owne5 === void 0 ? void 0 : (_scrollContainer$owne6 = _scrollContainer$owne5.defaultView) === null || _scrollContainer$owne6 === void 0 ? void 0 : _scrollContainer$owne6.removeEventListener('resize', debounceMeasureList);
4698 - };
4699 - }, [itemHeight, elementRef, totalItems]);
4700 - (0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
4701 - var _scrollContainer$owne7, _scrollContainer$owne8;
4702 -
4703 - if (!useWindowing) {
4704 - return;
4705 - }
4706 -
4707 - const scrollContainer = (0,external_wp_dom_namespaceObject.getScrollContainer)(elementRef.current);
4708 -
4709 - const handleKeyDown = (
4710 - /** @type {KeyboardEvent} */
4711 - event) => {
4712 - switch (event.keyCode) {
4713 - case external_wp_keycodes_namespaceObject.HOME:
4714 - {
4715 - return scrollContainer === null || scrollContainer === void 0 ? void 0 : scrollContainer.scrollTo({
4716 - top: 0
4717 - });
4718 - }
4719 -
4720 - case external_wp_keycodes_namespaceObject.END:
4721 - {
4722 - return scrollContainer === null || scrollContainer === void 0 ? void 0 : scrollContainer.scrollTo({
4723 - top: totalItems * itemHeight
4724 - });
4725 - }
4726 -
4727 - case external_wp_keycodes_namespaceObject.PAGEUP:
4728 - {
4729 - return scrollContainer === null || scrollContainer === void 0 ? void 0 : scrollContainer.scrollTo({
4730 - top: scrollContainer.scrollTop - fixedListWindow.visibleItems * itemHeight
4731 - });
4732 - }
4733 -
4734 - case external_wp_keycodes_namespaceObject.PAGEDOWN:
4735 - {
4736 - return scrollContainer === null || scrollContainer === void 0 ? void 0 : scrollContainer.scrollTo({
4737 - top: scrollContainer.scrollTop + fixedListWindow.visibleItems * itemHeight
4738 - });
4739 - }
4740 - }
4741 - };
4742 -
4743 - scrollContainer === null || scrollContainer === void 0 ? void 0 : (_scrollContainer$owne7 = scrollContainer.ownerDocument) === null || _scrollContainer$owne7 === void 0 ? void 0 : (_scrollContainer$owne8 = _scrollContainer$owne7.defaultView) === null || _scrollContainer$owne8 === void 0 ? void 0 : _scrollContainer$owne8.addEventListener('keydown', handleKeyDown);
4744 - return () => {
4745 - var _scrollContainer$owne9, _scrollContainer$owne10;
4746 -
4747 - scrollContainer === null || scrollContainer === void 0 ? void 0 : (_scrollContainer$owne9 = scrollContainer.ownerDocument) === null || _scrollContainer$owne9 === void 0 ? void 0 : (_scrollContainer$owne10 = _scrollContainer$owne9.defaultView) === null || _scrollContainer$owne10 === void 0 ? void 0 : _scrollContainer$owne10.removeEventListener('keydown', handleKeyDown);
4748 - };
4749 - }, [totalItems, itemHeight, elementRef, fixedListWindow.visibleItems]);
4750 - return [fixedListWindow, setFixedListWindow];
4751 -}
4752 -//# sourceMappingURL=index.js.map
4753 -;// CONCATENATED MODULE: ./packages/compose/build-module/index.js
4754 -// Utils
4755 - // Compose helper (aliased flowRight from Lodash)
4756 -
4757 - // Higher-order components
4758 -
4759 -
4760 -
4761 -
4762 -
4763 -
4764 - // Hooks
4765 -
4766 -
4767 -
4768 -
4769 -
4770 -
4771 -
4772 -
4773 -
4774 -
4775 -
4776 -
4777 -
4778 -
4779 -
4780 -
4781 -
4782 -
4783 -
4784 -
4785 -
4786 -
4787 -
4788 -
4789 -
4790 -
4791 -
4792 -//# sourceMappingURL=index.js.map
4793 -}();
4794 -(window.wp = window.wp || {}).compose = __webpack_exports__;
4795 -/******/ })()
4796 -;
1 +this.wp=this.wp||{},this.wp.compose=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=387)}({0:function(t,e){!function(){t.exports=this.wp.element}()},12:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var r=n(36);var o=n(29),i=n(37);function u(t,e){return Object(r.a)(t)||function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,o=!1,i=void 0;try{for(var u,c=t[Symbol.iterator]();!(r=(u=c.next()).done)&&(n.push(u.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{r||null==c.return||c.return()}finally{if(o)throw i}}return n}}(t,e)||Object(o.a)(t,e)||Object(i.a)()}},13:function(t,e,n){"use strict";function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}n.d(e,"a",(function(){return r}))},142:function(t,e,n){var r=n(17),o={display:"block",opacity:0,position:"absolute",top:0,left:0,height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:-1},i=function(t){var e=t.onResize,n=r.useRef();return function(t,e){var n=function(){return t.current&&t.current.contentDocument&&t.current.contentDocument.defaultView};function o(){e();var t=n();t&&t.addEventListener("resize",e)}r.useEffect((function(){return n()?o():t.current&&t.current.addEventListener&&t.current.addEventListener("load",o),function(){var t=n();t&&"function"==typeof t.removeEventListener&&t.removeEventListener("resize",e)}}),[])}(n,(function(){return e(n)})),r.createElement("iframe",{style:o,src:"about:blank",ref:n,"aria-hidden":!0,tabIndex:-1,frameBorder:0})},u=function(t){return{width:null!=t?t.offsetWidth:null,height:null!=t?t.offsetHeight:null}};t.exports=function(t){void 0===t&&(t=u);var e=r.useState(t(null)),n=e[0],o=e[1],c=r.useCallback((function(e){return o(t(e.current))}),[t]);return[r.useMemo((function(){return r.createElement(i,{onResize:c})}),[c]),n]}},143:function(t,e){!function(){t.exports=this.wp.priorityQueue}()},15:function(t,e,n){"use strict";function r(t){return(r=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}n.d(e,"a",(function(){return r}))},16:function(t,e,n){"use strict";n.d(e,"a",(function(){return u}));var r=n(27);var o=n(35),i=n(29);function u(t){return function(t){if(Array.isArray(t))return Object(r.a)(t)}(t)||Object(o.a)(t)||Object(i.a)(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},17:function(t,e){!function(){t.exports=this.React}()},18:function(t,e,n){"use strict";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t}n.d(e,"a",(function(){return o}))},19:function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}n.d(e,"a",(function(){return r}))},2:function(t,e){!function(){t.exports=this.lodash}()},21:function(t,e,n){"use strict";function r(t,e){return(r=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&r(t,e)}n.d(e,"a",(function(){return o}))},23:function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var r=n(40),o=n(13);function i(t,e){return!e||"object"!==Object(r.a)(e)&&"function"!=typeof e?Object(o.a)(t):e}},251:function(t,e,n){var r;r=function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.i=function(t){return t},n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){var r,o,i;o=[t,n(7)],void 0===(i="function"==typeof(r=function(t,e){"use strict";var n,r=(n=e)&&n.__esModule?n:{default:n},o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),u=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.resolveOptions(e),this.initSelection()}return i(t,[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,r.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,r.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":o(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=u})?r.apply(e,o):r)||(t.exports=i)},function(t,e,n){var r=n(6),o=n(5);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!r.string(e))throw new TypeError("Second argument must be a String");if(!r.fn(n))throw new TypeError("Third argument must be a Function");if(r.node(t))return function(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}(t,e,n);if(r.nodeList(t))return function(t,e,n){return Array.prototype.forEach.call(t,(function(t){t.addEventListener(e,n)})),{destroy:function(){Array.prototype.forEach.call(t,(function(t){t.removeEventListener(e,n)}))}}}(t,e,n);if(r.string(t))return function(t,e,n){return o(document.body,t,e,n)}(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var r=this.e||(this.e={});return(r[t]||(r[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var r=this;function o(){r.off(t,o),e.apply(n,arguments)}return o._=e,this.on(t,o,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),r=0,o=n.length;r<o;r++)n[r].fn.apply(n[r].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),r=n[t],o=[];if(r&&e)for(var i=0,u=r.length;i<u;i++)r[i].fn!==e&&r[i].fn._!==e&&o.push(r[i]);return o.length?n[t]=o:delete n[t],this}},t.exports=n},function(t,e,n){var r,o,i;o=[t,n(0),n(2),n(1)],void 0===(i="function"==typeof(r=function(t,e,n,r){"use strict";var o=c(e),i=c(n),u=c(r);function c(t){return t&&t.__esModule?t:{default:t}}var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),f=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r.resolveOptions(n),r.listenClick(t),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),s(e,[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===a(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,u.default)(t,"click",(function(t){return e.onClick(t)}))}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new o.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return l("action",t)}},{key:"defaultTarget",value:function(t){var e=l("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return l("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach((function(t){n=n&&!!document.queryCommandSupported(t)})),n}}]),e}(i.default);function l(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=f})?r.apply(e,o):r)||(t.exports=i)},function(t,e){if("undefined"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},function(t,e,n){var r=n(4);function o(t,e,n,r,o){var u=i.apply(this,arguments);return t.addEventListener(n,u,o),{destroy:function(){t.removeEventListener(n,u,o)}}}function i(t,e,n,o){return function(n){n.delegateTarget=r(n.target,e),n.delegateTarget&&o.call(t,n)}}t.exports=function(t,e,n,r,i){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,(function(t){return o(t,e,n,r,i)})))}},function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var r=window.getSelection(),o=document.createRange();o.selectNodeContents(t),r.removeAllRanges(),r.addRange(o),e=r.toString()}return e}}])},t.exports=r()},252:function(t,e,n){var r;!function(o,i,u){if(o){for(var c,a={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},s={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},f={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},l={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},d=1;d<20;++d)a[111+d]="f"+d;for(d=0;d<=9;++d)a[d+96]=d.toString();m.prototype.bind=function(t,e,n){return t=t instanceof Array?t:[t],this._bindMultiple.call(this,t,e,n),this},m.prototype.unbind=function(t,e){return this.bind.call(this,t,(function(){}),e)},m.prototype.trigger=function(t,e){return this._directMap[t+":"+e]&&this._directMap[t+":"+e]({},t),this},m.prototype.reset=function(){return this._callbacks={},this._directMap={},this},m.prototype.stopCallback=function(t,e){if((" "+e.className+" ").indexOf(" mousetrap ")>-1)return!1;if(function t(e,n){return null!==e&&e!==i&&(e===n||t(e.parentNode,n))}(e,this.target))return!1;if("composedPath"in t&&"function"==typeof t.composedPath){var n=t.composedPath()[0];n!==t.target&&(e=n)}return"INPUT"==e.tagName||"SELECT"==e.tagName||"TEXTAREA"==e.tagName||e.isContentEditable},m.prototype.handleKey=function(){var t=this;return t._handleKey.apply(t,arguments)},m.addKeycodes=function(t){for(var e in t)t.hasOwnProperty(e)&&(a[e]=t[e]);c=null},m.init=function(){var t=m(i);for(var e in t)"_"!==e.charAt(0)&&(m[e]=function(e){return function(){return t[e].apply(t,arguments)}}(e))},m.init(),o.Mousetrap=m,t.exports&&(t.exports=m),void 0===(r=function(){return m}.call(e,n,e,t))||(t.exports=r)}function p(t,e,n){t.addEventListener?t.addEventListener(e,n,!1):t.attachEvent("on"+e,n)}function h(t){if("keypress"==t.type){var e=String.fromCharCode(t.which);return t.shiftKey||(e=e.toLowerCase()),e}return a[t.which]?a[t.which]:s[t.which]?s[t.which]:String.fromCharCode(t.which).toLowerCase()}function y(t){return"shift"==t||"ctrl"==t||"alt"==t||"meta"==t}function v(t,e,n){return n||(n=function(){if(!c)for(var t in c={},a)t>95&&t<112||a.hasOwnProperty(t)&&(c[a[t]]=t);return c}()[t]?"keydown":"keypress"),"keypress"==n&&e.length&&(n="keydown"),n}function b(t,e){var n,r,o,i=[];for(n=function(t){return"+"===t?["+"]:(t=t.replace(/\+{2}/g,"+plus")).split("+")}(t),o=0;o<n.length;++o)r=n[o],l[r]&&(r=l[r]),e&&"keypress"!=e&&f[r]&&(r=f[r],i.push("shift")),y(r)&&i.push(r);return{key:r,modifiers:i,action:e=v(r,i,e)}}function m(t){var e=this;if(t=t||i,!(e instanceof m))return new m(t);e.target=t,e._callbacks={},e._directMap={};var n,r={},o=!1,u=!1,c=!1;function a(t){t=t||{};var e,n=!1;for(e in r)t[e]?n=!0:r[e]=0;n||(c=!1)}function s(t,n,o,i,u,c){var a,s,f,l,d=[],p=o.type;if(!e._callbacks[t])return[];for("keyup"==p&&y(t)&&(n=[t]),a=0;a<e._callbacks[t].length;++a)if(s=e._callbacks[t][a],(i||!s.seq||r[s.seq]==s.level)&&p==s.action&&("keypress"==p&&!o.metaKey&&!o.ctrlKey||(f=n,l=s.modifiers,f.sort().join(",")===l.sort().join(",")))){var h=!i&&s.combo==u,v=i&&s.seq==i&&s.level==c;(h||v)&&e._callbacks[t].splice(a,1),d.push(s)}return d}function f(t,n,r,o){e.stopCallback(n,n.target||n.srcElement,r,o)||!1===t(n,r)&&(function(t){t.preventDefault?t.preventDefault():t.returnValue=!1}(n),function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0}(n))}function l(t){"number"!=typeof t.which&&(t.which=t.keyCode);var n=h(t);n&&("keyup"!=t.type||o!==n?e.handleKey(n,function(t){var e=[];return t.shiftKey&&e.push("shift"),t.altKey&&e.push("alt"),t.ctrlKey&&e.push("ctrl"),t.metaKey&&e.push("meta"),e}(t),t):o=!1)}function d(t,e,i,u){function s(e){return function(){c=e,++r[t],clearTimeout(n),n=setTimeout(a,1e3)}}function l(e){f(i,e,t),"keyup"!==u&&(o=h(e)),setTimeout(a,10)}r[t]=0;for(var d=0;d<e.length;++d){var p=d+1===e.length?l:s(u||b(e[d+1]).action);v(e[d],p,u,t,d)}}function v(t,n,r,o,i){e._directMap[t+":"+r]=n;var u,c=(t=t.replace(/\s+/g," ")).split(" ");c.length>1?d(t,c,n,r):(u=b(t,r),e._callbacks[u.key]=e._callbacks[u.key]||[],s(u.key,u.modifiers,{type:u.action},o,t,i),e._callbacks[u.key][o?"unshift":"push"]({callback:n,modifiers:u.modifiers,action:u.action,seq:o,level:i,combo:t}))}e._handleKey=function(t,e,n){var r,o=s(t,e,n),i={},l=0,d=!1;for(r=0;r<o.length;++r)o[r].seq&&(l=Math.max(l,o[r].level));for(r=0;r<o.length;++r)if(o[r].seq){if(o[r].level!=l)continue;d=!0,i[o[r].seq]=1,f(o[r].callback,n,o[r].combo,o[r].seq)}else d||f(o[r].callback,n,o[r].combo);var p="keypress"==n.type&&u;n.type!=c||y(t)||p||a(i),u=d&&"keydown"==n.type},e._bindMultiple=function(t,e,n){for(var r=0;r<t.length;++r)v(t[r],e,n)},p(t,"keypress",l),p(t,"keydown",l),p(t,"keyup",l)}}("undefined"!=typeof window?window:null,"undefined"!=typeof window?document:null)},27:function(t,e,n){"use strict";function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}n.d(e,"a",(function(){return r}))},29:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var r=n(27);function o(t,e){if(t){if("string"==typeof t)return Object(r.a)(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Object(r.a)(t,e):void 0}}},35:function(t,e,n){"use strict";function r(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}n.d(e,"a",(function(){return r}))},352:function(t,e){!function(t){if(t){var e={},n=t.prototype.stopCallback;t.prototype.stopCallback=function(t,r,o,i){return!!this.paused||!e[o]&&!e[i]&&n.call(this,t,r,o)},t.prototype.bindGlobal=function(t,n,r){if(this.bind(t,n,r),t instanceof Array)for(var o=0;o<t.length;o++)e[t[o]]=!0;else e[t]=!0},t.init()}}("undefined"!=typeof Mousetrap?Mousetrap:void 0)},36:function(t,e,n){"use strict";function r(t){if(Array.isArray(t))return t}n.d(e,"a",(function(){return r}))},37:function(t,e,n){"use strict";function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(e,"a",(function(){return r}))},387:function(t,e,n){"use strict";n.r(e),n.d(e,"createHigherOrderComponent",(function(){return o})),n.d(e,"compose",(function(){return i})),n.d(e,"ifCondition",(function(){return c})),n.d(e,"pure",(function(){return b})),n.d(e,"withGlobalEvents",(function(){return j})),n.d(e,"withInstanceId",(function(){return S})),n.d(e,"withSafeTimeout",(function(){return T})),n.d(e,"withState",(function(){return R})),n.d(e,"useCopyOnClick",(function(){return L})),n.d(e,"__experimentalUseDragging",(function(){return I})),n.d(e,"useInstanceId",(function(){return E})),n.d(e,"useKeyboardShortcut",(function(){return K})),n.d(e,"useMediaQuery",(function(){return z})),n.d(e,"usePrevious",(function(){return F})),n.d(e,"useReducedMotion",(function(){return U})),n.d(e,"useViewportMatch",(function(){return X})),n.d(e,"useResizeObserver",(function(){return $})),n.d(e,"useAsyncList",(function(){return et}));var r=n(2);var o=function(t,e){return function(n){var o=t(n),i=n.displayName,u=void 0===i?n.name||"Component":i;return o.displayName="".concat(Object(r.upperFirst)(Object(r.camelCase)(e)),"(").concat(u,")"),o}},i=r.flowRight,u=n(0),c=function(t){return o((function(e){return function(n){return t(n)?Object(u.createElement)(e,n):null}}),"ifCondition")},a=n(19),s=n(18),f=n(23),l=n(15),d=n(21),p=n(53),h=n.n(p);function y(t){return function(){var e,n=Object(l.a)(t);if(v()){var r=Object(l.a)(this).constructor;e=Reflect.construct(n,arguments,r)}else e=n.apply(this,arguments);return Object(f.a)(this,e)}}function v(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}var b=o((function(t){return t.prototype instanceof u.Component?function(t){Object(d.a)(n,t);var e=y(n);function n(){return Object(a.a)(this,n),e.apply(this,arguments)}return Object(s.a)(n,[{key:"shouldComponentUpdate",value:function(t,e){return!h()(t,this.props)||!h()(e,this.state)}}]),n}(t):function(e){Object(d.a)(r,e);var n=y(r);function r(){return Object(a.a)(this,r),n.apply(this,arguments)}return Object(s.a)(r,[{key:"shouldComponentUpdate",value:function(t){return!h()(t,this.props)}},{key:"render",value:function(){return Object(u.createElement)(t,this.props)}}]),r}(u.Component)}),"pure"),m=n(8),g=n(13);function O(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}var w=new(function(){function t(){Object(a.a)(this,t),this.listeners={},this.handleEvent=this.handleEvent.bind(this)}return Object(s.a)(t,[{key:"add",value:function(t,e){this.listeners[t]||(window.addEventListener(t,this.handleEvent),this.listeners[t]=[]),this.listeners[t].push(e)}},{key:"remove",value:function(t,e){this.listeners[t]=Object(r.without)(this.listeners[t],e),this.listeners[t].length||(window.removeEventListener(t,this.handleEvent),delete this.listeners[t])}},{key:"handleEvent",value:function(t){Object(r.forEach)(this.listeners[t.type],(function(e){e.handleEvent(t)}))}}]),t}());var j=function(t){return o((function(e){var n=function(n){Object(d.a)(c,n);var o,i=(o=c,function(){var t,e=Object(l.a)(o);if(O()){var n=Object(l.a)(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return Object(f.a)(this,t)});function c(){var t;return Object(a.a)(this,c),(t=i.apply(this,arguments)).handleEvent=t.handleEvent.bind(Object(g.a)(t)),t.handleRef=t.handleRef.bind(Object(g.a)(t)),t}return Object(s.a)(c,[{key:"componentDidMount",value:function(){var e=this;Object(r.forEach)(t,(function(t,n){w.add(n,e)}))}},{key:"componentWillUnmount",value:function(){var e=this;Object(r.forEach)(t,(function(t,n){w.remove(n,e)}))}},{key:"handleEvent",value:function(e){var n=t[e.type];"function"==typeof this.wrappedRef[n]&&this.wrappedRef[n](e)}},{key:"handleRef",value:function(t){this.wrappedRef=t,this.props.forwardedRef&&this.props.forwardedRef(t)}},{key:"render",value:function(){return Object(u.createElement)(e,Object(m.a)({},this.props.ownProps,{ref:this.handleRef}))}}]),c}(u.Component);return Object(u.forwardRef)((function(t,e){return Object(u.createElement)(n,{ownProps:t,forwardedRef:e})}))}),"withGlobalEvents")},k=new WeakMap;function E(t,e){return Object(u.useMemo)((function(){var n=function(t){var e=k.get(t)||0;return k.set(t,e+1),e}(t);return e?"".concat(e,"-").concat(n):n}),[t])}var S=o((function(t){return function(e){var n=E(t);return Object(u.createElement)(t,Object(m.a)({},e,{instanceId:n}))}}),"withInstanceId");function x(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}var T=o((function(t){return function(e){Object(d.a)(i,e);var n,o=(n=i,function(){var t,e=Object(l.a)(n);if(x()){var r=Object(l.a)(this).constructor;t=Reflect.construct(e,arguments,r)}else t=e.apply(this,arguments);return Object(f.a)(this,t)});function i(){var t;return Object(a.a)(this,i),(t=o.apply(this,arguments)).timeouts=[],t.setTimeout=t.setTimeout.bind(Object(g.a)(t)),t.clearTimeout=t.clearTimeout.bind(Object(g.a)(t)),t}return Object(s.a)(i,[{key:"componentWillUnmount",value:function(){this.timeouts.forEach(clearTimeout)}},{key:"setTimeout",value:function(t){function e(e,n){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t,e){var n=this,r=setTimeout((function(){t(),n.clearTimeout(r)}),e);return this.timeouts.push(r),r}))},{key:"clearTimeout",value:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){clearTimeout(t),this.timeouts=Object(r.without)(this.timeouts,t)}))},{key:"render",value:function(){return Object(u.createElement)(t,Object(m.a)({},this.props,{setTimeout:this.setTimeout,clearTimeout:this.clearTimeout}))}}]),i}(u.Component)}),"withSafeTimeout");function _(t){return function(){var e,n=Object(l.a)(t);if(C()){var r=Object(l.a)(this).constructor;e=Reflect.construct(n,arguments,r)}else e=n.apply(this,arguments);return Object(f.a)(this,e)}}function C(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function R(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o((function(e){return function(n){Object(d.a)(o,n);var r=_(o);function o(){var e;return Object(a.a)(this,o),(e=r.apply(this,arguments)).setState=e.setState.bind(Object(g.a)(e)),e.state=t,e}return Object(s.a)(o,[{key:"render",value:function(){return Object(u.createElement)(e,Object(m.a)({},this.props,this.state,{setState:this.setState}))}}]),o}(u.Component)}),"withState")}var A=n(12),M=n(251),P=n.n(M);function L(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4e3,r=Object(u.useRef)(),o=Object(u.useState)(!1),i=Object(A.a)(o,2),c=i[0],a=i[1];return Object(u.useEffect)((function(){var o;return r.current=new P.a(t.current,{text:function(){return"function"==typeof e?e():e},container:t.current}),r.current.on("success",(function(t){(0,t.clearSelection)(),n&&(a(!0),clearTimeout(o),o=setTimeout((function(){return a(!1)}),n))})),function(){r.current.destroy(),clearTimeout(o)}}),[e,n,a]),c}var D="undefined"!=typeof window?u.useLayoutEffect:u.useEffect;function I(t){var e=t.onDragStart,n=t.onDragMove,r=t.onDragEnd,o=Object(u.useState)(!1),i=Object(A.a)(o,2),c=i[0],a=i[1],s=Object(u.useRef)({onDragStart:e,onDragMove:n,onDragEnd:r});D((function(){s.current.onDragStart=e,s.current.onDragMove=n,s.current.onDragEnd=r}),[e,n,r]);var f=Object(u.useCallback)((function(){var t;return s.current.onDragMove&&(t=s.current).onDragMove.apply(t,arguments)}),[]),l=Object(u.useCallback)((function(){var t;s.current.onDragEnd&&(t=s.current).onDragEnd.apply(t,arguments);document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",l),a(!1)}),[]),d=Object(u.useCallback)((function(){var t;s.current.onDragStart&&(t=s.current).onDragStart.apply(t,arguments);document.addEventListener("mousemove",f),document.addEventListener("mouseup",l),a(!0)}),[]);return Object(u.useEffect)((function(){return function(){c&&(document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",l))}}),[c]),{startDrag:d,endDrag:l,isDragging:c}}var N=n(252),q=n.n(N);n(352);function H(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=t.navigator.platform;return-1!==e.indexOf("Mac")||Object(r.includes)(["iPad","iPhone"],e)}var K=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n.bindGlobal,i=void 0!==o&&o,c=n.eventName,a=void 0===c?"keydown":c,s=n.isDisabled,f=void 0!==s&&s,l=n.target,d=Object(u.useRef)(e);Object(u.useEffect)((function(){d.current=e}),[e]),Object(u.useEffect)((function(){if(!f){var e=new q.a(l?l.current:document);return Object(r.castArray)(t).forEach((function(t){var n=t.split("+"),r=new Set(n.filter((function(t){return t.length>1}))),o=r.has("alt"),u=r.has("shift");if(H()&&(1===r.size&&o||2===r.size&&o&&u))throw new Error("Cannot bind ".concat(t,". Alt and Shift+Alt modifiers are reserved for character input."));e[i?"bindGlobal":"bind"](t,(function(){return d.current.apply(d,arguments)}),a)})),function(){e.reset()}}}),[t,i,a,l,f])};function z(t){var e=Object(u.useState)(t&&window.matchMedia(t).matches),n=Object(A.a)(e,2),r=n[0],o=n[1];return Object(u.useEffect)((function(){if(t){var e=function(){return o(window.matchMedia(t).matches)};e();var n=window.matchMedia(t);return n.addListener(e),function(){n.removeListener(e)}}}),[t]),t&&r}function F(t){var e=Object(u.useRef)(void 0);return Object(u.useEffect)((function(){e.current=t}),[t]),e.current}var U="undefined"!=typeof window&&window.navigator.userAgent.indexOf("Trident")>=0?function(){return!0}:function(){return z("(prefers-reduced-motion: reduce)")},G={huge:1440,wide:1280,large:960,medium:782,small:600,mobile:480},W={">=":"min-width","<":"max-width"},Q={">=":function(t,e){return e>=t},"<":function(t,e){return e<t}},V=Object(u.createContext)(null),B=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:">=",n=Object(u.useContext)(V),r=!n&&"(".concat(W[e],": ").concat(G[t],"px)"),o=z(r);return n?Q[e](G[t],n):o};B.__experimentalWidthProvider=V.Provider;var X=B,Y=n(142),$=n.n(Y).a,J=n(16),Z=n(143);function tt(t,e){return"reset"===e.type?e.list:"append"===e.type?[].concat(Object(J.a)(t),[e.item]):t}var et=function(t){var e=Object(u.useReducer)(tt,[]),n=Object(A.a)(e,2),r=n[0],o=n[1];return Object(u.useEffect)((function(){var e=function(t,e){for(var n=[],r=0;r<t.length;r++){var o=t[r];if(!e.includes(o))break;n.push(o)}return n}(t,r);o({type:"reset",list:e});var n=Object(Z.createQueue)();return n.add({},function e(r){return function(){t.length<=r||(o({type:"append",item:t[r]}),n.add({},e(r+1)))}}(e.length)),function(){return n.reset()}}),[t]),r}},40:function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}n.d(e,"a",(function(){return r}))},53:function(t,e){!function(){t.exports=this.wp.isShallowEqual}()},8:function(t,e,n){"use strict";function r(){return(r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}n.d(e,"a",(function(){return r}))}});